Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:29:26

0001 #ifndef EcalSimAlgos_ESDigitizer_h
0002 #define EcalSimAlgos_ESDigitizer_h
0003 
0004 #include "SimCalorimetry/EcalSimAlgos/interface/EcalTDigitizer.h"
0005 #include "SimCalorimetry/EcalSimAlgos/interface/EcalDigitizerTraits.h"
0006 
0007 namespace CLHEP {
0008   class RandGeneral;
0009   class HepRandomEngine;
0010 }  // namespace CLHEP
0011 
0012 #include <vector>
0013 
0014 class ESDigitizer : public EcalTDigitizer<ESDigitizerTraits> {
0015 public:
0016   typedef ESDigitizerTraits::ElectronicsSim ElectronicsSim;
0017 
0018   ESDigitizer(EcalHitResponse* hitResponse, ElectronicsSim* electronicsSim, bool addNoise);
0019 
0020   ~ESDigitizer() override;
0021 
0022   void run(ESDigiCollection& output, CLHEP::HepRandomEngine*) override;
0023 
0024   void setDetIds(const std::vector<DetId>& detIds);
0025 
0026   void setGain(const int gain);
0027 
0028 private:
0029   void createNoisyList(std::vector<DetId>& abThreshCh, CLHEP::HepRandomEngine*);
0030 
0031   const std::vector<DetId>* m_detIds;
0032   CLHEP::RandGeneral* m_ranGeneral;
0033   int m_ESGain;
0034   double m_histoBin;
0035   double m_histoInf;
0036   double m_histoWid;
0037   double m_meanNoisy;
0038 
0039   class Triplet {
0040   public:
0041     Triplet() : first(0), second(0), third(0) {}
0042     Triplet(uint32_t a0, uint32_t a1, uint32_t a2) : first(a0), second(a1), third(a2) {}
0043     ~Triplet(){};
0044     uint32_t first;
0045     uint32_t second;
0046     uint32_t third;
0047   };
0048 
0049   std::vector<Triplet> m_trip;
0050 };
0051 
0052 #endif