File indexing completed on 2024-09-10 02:59:04
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 }
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