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;
79 virtual Processor* newProcessor() {
return new ILDCaloDigi ; }
86 virtual void processRunHeader( LCRunHeader* run ) ;
88 virtual void processEvent( LCEvent * evt ) ;
90 virtual void check( LCEvent * evt ) ;
94 virtual void fillECALGaps() ;
96 float digitalHcalCalibCoeff(CHT::Layout,
float energy );
98 float analogueHcalCalibCoeff(CHT::Layout,
int layer );
100 float digitalEcalCalibCoeff(
int layer );
102 float analogueEcalCalibCoeff(
int layer );
106 float ecalEnergyDigi(
float energy,
int id0,
int id1);
107 float ahcalEnergyDigi(
float energy,
int id0,
int id1);
109 float siliconDigi(
float energy);
110 float scintillatorDigi(
float energy,
bool isEcal);
111 LCCollection* combineVirtualStripCells(LCCollection* col,
bool isBarrel,
int orientation );
113 int getNumberOfVirtualCells();
114 std::vector < std::pair <int, int> > & getLayerConfig();
115 void checkConsistency(std::string colName,
int layer);
116 std::pair < int, int > getLayerProperties( std::string colName,
int layer );
117 int getStripOrientationFromColName( std::string colName );
125 std::vector<std::string> _ecalCollections;
126 std::vector<std::string> _hcalCollections;
127 std::vector<std::string> _outputEcalCollections;
128 std::vector<std::string> _outputHcalCollections;
130 std::string _outputRelCollection;
132 float _thresholdEcal;
133 std::string _unitThresholdEcal;
134 std::vector<float> _thresholdHcal;
135 std::string _unitThresholdHcal;
138 int _mapsEcalCorrection;
141 bool _ECAL_stripHits;
143 std::vector<float> _calibrCoeffEcal;
144 std::vector<float> _calibrCoeffHcalBarrel;
145 std::vector<float> _calibrCoeffHcalEndCap;
146 std::vector<float> _calibrCoeffHcalOther;
148 std::vector<int> _ecalLayers;
149 std::vector<int> _hcalLayers;
151 int _ecalGapCorrection;
152 float _ecalGapCorrectionFactor;
153 float _ecalModuleGapCorrectionFactor;
154 float _ecalEndcapCorrectionFactor;
155 float _hcalEndcapCorrectionFactor;
156 int _hcalGapCorrection;
157 float _hcalModuleGapCorrectionFactor;
159 std::vector<CalorimeterHitImpl*> _calHitsByStaveLayer[MAX_STAVES][MAX_LAYERS];
160 std::vector<int> _calHitsByStaveLayerModule[MAX_STAVES][MAX_LAYERS];
162 float _zOfEcalEndcap;
163 float _barrelPixelSizeT[MAX_LAYERS];
164 float _barrelPixelSizeZ[MAX_LAYERS];
165 float _endcapPixelSizeX[MAX_LAYERS];
166 float _endcapPixelSizeY[MAX_LAYERS];
167 float _barrelStaveDir[MAX_STAVES][2];
173 int _ecalCorrectTimesForPropagation;
174 float _ecalTimeWindowMin;
175 float _ecalBarrelTimeWindowMax;
176 float _ecalEndcapTimeWindowMax;
177 float _ecalDeltaTimeHitResolution;
178 float _ecalTimeResolution;
179 bool _ecalSimpleTimingCut;
182 int _hcalCorrectTimesForPropagation;
183 float _hcalTimeWindowMin;
184 float _hcalBarrelTimeWindowMax;
185 float _hcalEndcapTimeWindowMax;
186 float _hcalDeltaTimeHitResolution;
187 float _hcalTimeResolution;
188 bool _hcalSimpleTimingCut;
197 float _ecal_PPD_pe_per_mip;
198 int _ecal_PPD_n_pixels;
200 float _ecal_misCalibNpix;
202 float _misCalibEcal_uncorrel;
203 bool _misCalibEcal_uncorrel_keep;
204 float _misCalibEcal_correl;
206 float _deadCellFractionEcal;
207 bool _deadCellEcal_keep;
209 float _strip_abs_length;
210 float _ecal_pixSpread;
211 float _ecal_elec_noise;
212 float _ecalMaxDynMip;
213 int _ecalStrip_default_nVirt;
214 std::string _ecal_deafult_layer_config;
219 float _hcal_PPD_pe_per_mip;
220 int _hcal_PPD_n_pixels;
221 float _hcal_misCalibNpix;
223 float _misCalibHcal_uncorrel;
224 bool _misCalibHcal_uncorrel_keep;
225 float _misCalibHcal_correl;
227 float _deadCellFractionHcal;
228 bool _deadCellHcal_keep;
229 float _hcal_pixSpread;
230 float _hcal_elec_noise;
231 float _hcalMaxDynMip;
236 std::vector < std::pair <int, int> > _layerTypes;
237 int _strip_virt_cells;
239 std::string _ecalLayout;
241 float _event_correl_miscalib_ecal;
242 float _event_correl_miscalib_hcal;
244 CLHEP::MTwistEngine *_randomEngineDeadCellEcal;
245 CLHEP::MTwistEngine *_randomEngineDeadCellHcal;
247 std::map < std::pair <int, int> ,
float > _ECAL_cell_miscalibs;
248 std::map < std::pair <int, int> ,
bool > _ECAL_cell_dead;
249 std::map < std::pair <int, int> ,
float > _HCAL_cell_miscalibs;
250 std::map < std::pair <int, int> ,
bool > _HCAL_cell_dead;
254 STRIP_ALIGN_ALONG_SLAB,
255 STRIP_ALIGN_ACROSS_SLAB,
260 std::string _cellIDLayerString ;
261 std::string _cellIDModuleString ;
262 std::string _cellIDStaveString ;
263 std::string _cellIDIndexIString ;
264 std::string _cellIDIndexJString ;
291 TH1F* fHcalRLayerNorm;
293 TH1F* fEcalRLayerNorm;
Definition: ScintillatorPpdDigi.h:4
=== ILDCaloDigi Processor === Simple calorimeter digitizer Processor.
Definition: ILDCaloDigi.h:75