Warning, /DD4hep/DDDigi/README.md is written in an unsupported language. File is not indexed.
0001 <style>
0002 large { color: blue;font-weight: 700;font-size: 20px }
0003 </style>
0004
0005
0006 ![DDDigi](../doc/logo_small.png)
0007
0008
0009 DDDigi: The digitization tools of DD4hep
0010 ========================================
0011
0012 DDDigi is supposed to interprete the results of the detector simulation phase
0013 e.g. using the simulation toolket [DDG4](../DDG4) with its command line interface
0014 [ddsim](../DDG4/python/DDSim).
0015 This is the final phase of data processing to obtain data from the simulation
0016 branch which are as close as possible to the response of the front-end electronics
0017 of a real experimental setup.
0018
0019 The simulation phase ejects for all subdetectors and the individual
0020 sensitive elements contained the energy deposits created by particles from a
0021 primary interaction passing the sensitive volume.
0022 These data have to processed for taking into accound imperfections of the
0023 apparatus such as
0024
0025 - uncertainties in cable lengths resulting in shifts of time of signal arriving.
0026 - uncertainties in the position of sensitive volumes.
0027 - dead or hot readout channels.
0028 - conversion of the final signal data into the equivalent of ADC counts.
0029 - ...
0030
0031 In addition these effects should be computed in the presence of
0032
0033 - multiple interactions in the same beam-crossing
0034 - spillover signal from previous or following interactions due to the
0035 relaxation time of the apparatus.
0036
0037 DDDigi addresses these issues in a very modular way and implements a multi-threaded approach
0038 to perform such data processing.
0039 To support multi-threading and to avoid any complication for users due to data races
0040 the following basic assumptions were made:
0041
0042 - The signals from disjunct subdetectors are generally independent
0043 This means the detector response of any tracking subdetector is uncorrelated with
0044 the detector response of e.g. a calorimeter.
0045 - Within a subdetector the response of disjunct units are uncorrelated. This means that
0046 e.g. hits on one layer of a layered tracking device are uncorrelated
0047 with the hits produced in another layer.
0048 - Within one such a layered device the response of individual sensors is tyically uncorrelated.
0049
0050 These assumptions however are not strict, but rather require input from the designer of such
0051 a digitization application for a given appratus. These basic assumption only show the maximal
0052 level of parallelization possible when processing data signals.
0053 The parallelization can be configured for each subdetector at each level according to
0054 boundary conditions e.g. given by cross-talk or the data volume arising from the
0055 energy deposits of the simulation.
0056
0057 DDDigi Components Description
0058 =============================
0059
0060 DigiDDG4ROOT
0061 ------------
0062
0063 - Reader for ROOT files produced with DDG4. <br/>
0064 Properties: <br/>
0065
0066 |**Property** |**Data type** |**Description** |
0067 |:--- |:--- |:--- |
0068 |`.input` | vector<string> | List of input files to be processed |
0069 |`.tree` | string | Name of the main data tree. default: `EVENT` |
0070 |`.containers` | vector<string> | List of containers to be loaded to DDDigi. |
0071 | | | If empty => all. |
0072 |`.segment` | string | Name of the input segment. default: "inputs" |
0073 |`.mask` | integer | Mask of this input source in the store. default: NO_MASK (0x0) |
0074 |`.rescan` | boolean | Rescan input sources for continuous execution. default: true |
0075 |`.keep_raw` | boolean | Keep raw input as opaque objects in the DDDigi store. |
0076
0077 Functionality: self explaining
0078
0079 DigiEventAction
0080 ---------------
0081
0082 - Generic event level action which can execute workers in parallel <br/>
0083 Properties: <br/>
0084 |**Property** |**Data type** |**Description** |
0085 |:--- |:--- |:--- |
0086 |`.parallel` | boolean | Flag to indicate parallel action execution |
0087
0088 DigiContainerProcessor
0089 ----------------------
0090
0091 - Base class of all actors dealing with one of more containers sequentially.<br/>
0092
0093 DigiContainerSequence
0094 ---------------------
0095 - Sequencer of `DigiContainerProcessor` entities with container based work load splitting.<br/>
0096
0097 Properties: <br/>
0098 |**Property** |**Data type** |**Description** |
0099 |:--- |:--- |:--- |
0100 |`.parallel` | boolean | Flag to indicate parallel action execution |
0101
0102 DigiContainerSequenceAction
0103 ---------------------------
0104
0105 - Specialization of the `DigiEventAction`. <br/>
0106 Process continers from the data store according to the `input_segment` and the `input_mask`.
0107 Output of workers is delivered to the `output_segment` with mask `output_mask`. <br/>
0108
0109 Properties: Properties of the `DigiEventAction` apply! <br/>
0110
0111 |**Property** |**Data type** |**Description** |
0112 |:--- |:--- |:--- |
0113 |`.input_segment` | string | Name of the input data segment |
0114 |`.input_mask` | integer | Mask identifier of the input containers to be processed |
0115 |`.output_segment`| string | Name of the output data segment |
0116 |`.output_mask` | integer | Mask identifier of the output containers |
0117
0118 DigiMultiContainerProcessor
0119 ---------------------------
0120
0121 - Specialization of the `DigiEventAction`.
0122 Process multiple containers from the data store according to the `input_segment`
0123 and the list of `input_masks`. Allows to re-use the same container action.
0124 Output of workers is delivered to the `output_segment` with mask `output_mask`. <br/>
0125
0126 Properties: Properties of the `DigiEventAction` apply! <br/>
0127
0128 |**Property** |**Data type** |**Description** |
0129 |:--- |:--- |:--- |
0130 |`.input_segment` | string | Name of the input data segment |
0131 |`.input_mask` | integer | Mask identifier of the input containers to be processed |
0132 |`.output_segment`| string | Name of the output data segment |
0133 |`.output_mask` | integer | Mask identifier of the output containers |
0134
0135 DigiAttenuator
0136 --------------
0137
0138 - Deposit attenuator for energy deposits according to decay time constant. <br/>
0139 Action functor of the `DigiAttenuatorSequence` <br/>
0140 Properties: Properties of the `DigiContainerSequenceProcessor` apply! <br/>
0141 |**Property** |**Data type** |**Description** |
0142 |:--- |:--- |:--- |
0143 |`.factor` | double | Signal reduction factor applied to all entries processed |
0144
0145 DigiAttenuatorSequence
0146 ----------------------
0147
0148 - Container sequencer to attenuate a list of containers. <br/>
0149 Properties: Properties of the `DigiContainerSequenceAction` apply! <br/>
0150 |**Property** |**Data type** |**Description** |
0151 |:--- |:--- |:--- |
0152 |`.processor_type`| string | Processor type used for single container attenuation. |
0153 | | | default: `DigiAttenuator` |
0154 |`.containers` | vector<string> | List of containers to be attenuated. |
0155 |`.signal_decay` | string | Decay function. default: `exponential` |
0156 |`.t0` | double | Time constant for exponential signal decay. |
0157
0158 DigiDepositSmearPositionTrack
0159 -----------------------------
0160 - Smear energy deposit positions by an ellipse of the track passing in the
0161 x-y plane.
0162
0163
0164 ![HORIZON2020](../doc/usermanuals/DD4hep/figures/AIDAinnova.png)