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