1 #ifndef DIGITIZER_ILDCCALODIGI_H
2 #define DIGITIZER_ILDCCALODIGI_H 1
4 #include "marlin/Processor.h"
5 #include <IMPL/CalorimeterHitImpl.h>
6 #include <IMPL/LCFlagImpl.h>
7 #include "CalorimeterHitType.h"
14 #include "ScintillatorPpdDigi.h"
15 #include "CLHEP/Random/MTwistEngine.h"
17 using namespace lcio ;
18 using namespace marlin ;
20 const int MAX_LAYERS = 200;
21 const int MAX_STAVES = 16;
82 virtual Processor* newProcessor() {
return new ILDCaloDigi ; }
89 virtual void processRunHeader( LCRunHeader* run ) ;
91 virtual void processEvent( LCEvent * evt ) ;
93 virtual void check( LCEvent * evt ) ;
97 virtual void fillECALGaps() ;
99 float digitalHcalCalibCoeff(CHT::Layout,
float energy );
101 float analogueHcalCalibCoeff(CHT::Layout,
int layer );
103 float digitalEcalCalibCoeff(
int layer );
105 float analogueEcalCalibCoeff(
int layer );
109 float ecalEnergyDigi(
float energy,
int id0,
int id1);
110 float ahcalEnergyDigi(
float energy,
int id0,
int id1);
112 float siliconDigi(
float energy);
113 float scintillatorDigi(
float energy,
bool isEcal);
114 LCCollection* combineVirtualStripCells(LCCollection* col,
bool isBarrel,
int orientation );
116 int getNumberOfVirtualCells();
117 std::vector < std::pair <int, int> > & getLayerConfig();
118 void checkConsistency(std::string colName,
int layer);
119 std::pair < int, int > getLayerProperties( std::string colName,
int layer );
120 int getStripOrientationFromColName( std::string colName );
128 std::vector<std::string> _ecalCollections{};
129 std::vector<std::string> _hcalCollections{};
130 std::vector<std::string> _outputEcalCollections{};
131 std::vector<std::string> _outputHcalCollections{};
133 std::string _outputRelCollection{};
135 float _thresholdEcal{};
136 std::string _unitThresholdEcal{};
137 std::vector<float> _thresholdHcal{};
138 std::string _unitThresholdHcal{};
141 int _mapsEcalCorrection{};
144 bool _ECAL_stripHits{};
146 std::vector<float> _calibrCoeffEcal{};
147 std::vector<float> _calibrCoeffHcalBarrel{};
148 std::vector<float> _calibrCoeffHcalEndCap{};
149 std::vector<float> _calibrCoeffHcalOther{};
151 std::vector<int> _ecalLayers{};
152 std::vector<int> _hcalLayers{};
154 int _ecalGapCorrection{};
155 float _ecalGapCorrectionFactor{};
156 float _ecalModuleGapCorrectionFactor{};
157 float _ecalEndcapCorrectionFactor{};
158 float _hcalEndcapCorrectionFactor{};
159 int _hcalGapCorrection{};
160 float _hcalModuleGapCorrectionFactor{};
162 std::vector<CalorimeterHitImpl*> _calHitsByStaveLayer[MAX_STAVES][MAX_LAYERS];
163 std::vector<int> _calHitsByStaveLayerModule[MAX_STAVES][MAX_LAYERS];
165 float _zOfEcalEndcap{};
166 float _barrelPixelSizeT[MAX_LAYERS]{};
167 float _barrelPixelSizeZ[MAX_LAYERS]{};
168 float _endcapPixelSizeX[MAX_LAYERS]{};
169 float _endcapPixelSizeY[MAX_LAYERS]{};
170 float _barrelStaveDir[MAX_STAVES][2]{};
175 int _useEcalTiming{};
176 int _ecalCorrectTimesForPropagation{};
177 float _ecalTimeWindowMin{};
178 float _ecalBarrelTimeWindowMax{};
179 float _ecalEndcapTimeWindowMax{};
180 float _ecalDeltaTimeHitResolution{};
181 float _ecalTimeResolution{};
182 bool _ecalSimpleTimingCut{};
184 int _useHcalTiming{};
185 int _hcalCorrectTimesForPropagation{};
186 float _hcalTimeWindowMin{};
187 float _hcalBarrelTimeWindowMax{};
188 float _hcalEndcapTimeWindowMax{};
189 float _hcalDeltaTimeHitResolution{};
190 float _hcalTimeResolution{};
191 bool _hcalSimpleTimingCut{};
198 float _calibEcalMip{};
199 int _applyEcalDigi{};
200 float _ecal_PPD_pe_per_mip{};
201 int _ecal_PPD_n_pixels{};
203 float _ecal_misCalibNpix{};
205 float _misCalibEcal_uncorrel{};
206 bool _misCalibEcal_uncorrel_keep{};
207 float _misCalibEcal_correl{};
209 float _deadCellFractionEcal{};
210 bool _deadCellEcal_keep{};
212 float _strip_abs_length{};
213 float _ecal_pixSpread{};
214 float _ecal_elec_noise{};
215 float _ecalMaxDynMip{};
216 int _ecalStrip_default_nVirt{};
217 std::string _ecal_deafult_layer_config{};
220 float _calibHcalMip{};
221 int _applyHcalDigi{};
222 float _hcal_PPD_pe_per_mip{};
223 int _hcal_PPD_n_pixels{};
224 float _hcal_misCalibNpix{};
226 float _misCalibHcal_uncorrel{};
227 bool _misCalibHcal_uncorrel_keep{};
228 float _misCalibHcal_correl{};
230 float _deadCellFractionHcal{};
231 bool _deadCellHcal_keep{};
232 float _hcal_pixSpread{};
233 float _hcal_elec_noise{};
234 float _hcalMaxDynMip{};
239 std::vector < std::pair <int, int> > _layerTypes{};
240 int _strip_virt_cells{};
241 int _countWarnings{};
242 std::string _ecalLayout{};
244 float _event_correl_miscalib_ecal{};
245 float _event_correl_miscalib_hcal{};
247 CLHEP::MTwistEngine *_randomEngineDeadCellEcal{};
248 CLHEP::MTwistEngine *_randomEngineDeadCellHcal{};
250 std::map < std::pair <int, int> ,
float > _ECAL_cell_miscalibs{};
251 std::map < std::pair <int, int> ,
bool > _ECAL_cell_dead{};
252 std::map < std::pair <int, int> ,
float > _HCAL_cell_miscalibs{};
253 std::map < std::pair <int, int> ,
bool > _HCAL_cell_dead{};
257 STRIP_ALIGN_ALONG_SLAB,
258 STRIP_ALIGN_ACROSS_SLAB,
263 std::string _cellIDLayerString{};
264 std::string _cellIDModuleString{};
265 std::string _cellIDStaveString{};
266 std::string _cellIDIndexIString{};
267 std::string _cellIDIndexJString{};
279 TH2F* fHcalLayer11{};
280 TH2F* fHcalLayer21{};
281 TH2F* fHcalLayer31{};
282 TH2F* fHcalLayer41{};
283 TH2F* fHcalLayer51{};
284 TH2F* fHcalLayer61{};
285 TH2F* fHcalLayer71{};
286 TH1F* fHcalRLayer1{};
287 TH1F* fHcalRLayer11{};
288 TH1F* fHcalRLayer21{};
289 TH1F* fHcalRLayer31{};
290 TH1F* fHcalRLayer41{};
291 TH1F* fHcalRLayer51{};
292 TH1F* fHcalRLayer61{};
293 TH1F* fHcalRLayer71{};
294 TH1F* fHcalRLayerNorm{};
296 TH1F* fEcalRLayerNorm{};
298 TH2F* fEcalLayer11{};
299 TH2F* fEcalLayer21{};
300 TH1F* fEcalRLayer1{};
301 TH1F* fEcalRLayer11{};
302 TH1F* fEcalRLayer21{};
Definition: ScintillatorPpdDigi.h:4
=== ILDCaloDigi Processor === Simple calorimeter digitizer Processor.
Definition: ILDCaloDigi.h:75