HerdSoftware  0.4.0
CaloIsCMOSDigitizerAlgo.h
Go to the documentation of this file.
1 /*
2  * CaloIsCMOSDigitizerAlgo.h
3  *
4  * Created on: 11 Nov 2022
5  * Authors: Nicola Mori
6  * Zheng Quan
7  */
8 
9 #ifndef HERD_CALOISCMOSDIGITIZERALGO_H_
10 #define HERD_CALOISCMOSDIGITIZERALGO_H_
11 
12 // HerdSoftware headers
16 
17 // EventAnalysis headers
18 #include "algorithm/Algorithm.h"
19 
20 // C++ header
21 #include <random>
22 
23 namespace Herd {
24 
25 // clang-format off
59 // clang-format on
60 class CaloIsCMOSDigitizerAlgo : public EA::Algorithm {
61 public:
66  CaloIsCMOSDigitizerAlgo(const std::string &name);
67 
72  bool Initialize() override;
73 
78  bool Process() override;
79 
80 private:
81  EA::StorePtr m_evStore, m_globStore;
82  std::mt19937 m_randomEngine;
83  std::unique_ptr<std::normal_distribution<double>> m_distPedHG, m_distPedLG;
85 
86  const double m_oneMIP = 0.0302; // GeV
87 
88  // Parameters
89  unsigned int m_seed = defaultValue<decltype(m_seed)>;
90  float m_stddevPedHG = 20.;
91  float m_stddevPedLG = 60.;
92 
93  // Utility functions
94  // Taken from original code provided by Z. Quan.
95  double GetGrayscaleHighGain(double eDep, unsigned int volumeID, CaloIsCMOSChannelInfo &chInfo);
96  double GetGrayscaleLowGain(double eDep, unsigned int volumeID, CaloIsCMOSChannelInfo &chInfo);
97  double GetNonLinHighGain(double grayscale);
98  double GetNonLinLowGain(double grayscale);
99  double GetRMSHighGain(double grayScale);
100  double GetRMSLowGain(double grayScale);
101 };
102 
103 } // namespace Herd
104 
105 #endif /* HERD_CALOISCMOSDIGITIZERALGO_H_ */
Herd::CaloIsCMOSDigitizerAlgo::GetRMSHighGain
double GetRMSHighGain(double grayScale)
Definition: CaloIsCMOSDigitizerAlgo.cpp:95
Herd::CaloIsCMOSDigitizerAlgo::GetGrayscaleLowGain
double GetGrayscaleLowGain(double eDep, unsigned int volumeID, CaloIsCMOSChannelInfo &chInfo)
Definition: CaloIsCMOSDigitizerAlgo.cpp:155
Herd::CaloIsCMOSDigitizerAlgo::Initialize
bool Initialize() override
Initialization of the algorithm.
Definition: CaloIsCMOSDigitizerAlgo.cpp:31
Herd::CaloIsCMOSDigitizerAlgo::GetNonLinHighGain
double GetNonLinHighGain(double grayscale)
Definition: CaloIsCMOSDigitizerAlgo.cpp:103
Herd::CaloIsCMOSDigitizerAlgo::m_lgfHits
CaloHits m_lgfHits
Definition: CaloIsCMOSDigitizerAlgo.h:84
Herd::CaloIsCMOSDigitizerAlgo::m_oneMIP
const double m_oneMIP
Definition: CaloIsCMOSDigitizerAlgo.h:86
Herd::CaloIsCMOSDigitizerAlgo::m_globStore
EA::StorePtr m_globStore
Definition: CaloIsCMOSDigitizerAlgo.h:81
Herd::CaloIsCMOSDigitizerAlgo
Digitization of the Monte Carlo hits of CALO based on IsCMOS readout.
Definition: CaloIsCMOSDigitizerAlgo.h:60
CaloIsCMOSChannelInfo.h
Herd
CssGeoParams.h CssGeoParams class declaration.
Definition: CaloPDCalibrationAlgo.h:22
Herd::CaloIsCMOSChannelInfo
Data structure for the CALO IsCMOS readout information.
Definition: CaloIsCMOSChannelInfo.h:31
Herd::CaloIsCMOSDigitizerAlgo::m_seed
unsigned int m_seed
Definition: CaloIsCMOSDigitizerAlgo.h:89
Herd::CaloIsCMOSDigitizerAlgo::m_stddevPedHG
float m_stddevPedHG
Definition: CaloIsCMOSDigitizerAlgo.h:90
Herd::CaloIsCMOSDigitizerAlgo::m_evStore
EA::StorePtr m_evStore
Definition: CaloIsCMOSDigitizerAlgo.h:81
Herd::CaloIsCMOSDigitizerAlgo::Process
bool Process() override
Process a single event.
Definition: CaloIsCMOSDigitizerAlgo.cpp:51
CaloHits
Container for the hits of a single CALO detector.
Herd::CaloIsCMOSDigitizerAlgo::m_distPedLG
std::unique_ptr< std::normal_distribution< double > > m_distPedLG
Definition: CaloIsCMOSDigitizerAlgo.h:83
Herd::CaloIsCMOSDigitizerAlgo::m_distPedHG
std::unique_ptr< std::normal_distribution< double > > m_distPedHG
Definition: CaloIsCMOSDigitizerAlgo.h:83
Herd::CaloIsCMOSDigitizerAlgo::GetGrayscaleHighGain
double GetGrayscaleHighGain(double eDep, unsigned int volumeID, CaloIsCMOSChannelInfo &chInfo)
Definition: CaloIsCMOSDigitizerAlgo.cpp:133
Herd::CaloIsCMOSDigitizerAlgo::GetNonLinLowGain
double GetNonLinLowGain(double grayscale)
Definition: CaloIsCMOSDigitizerAlgo.cpp:131
CaloGeoParams.h
Herd::CaloIsCMOSDigitizerAlgo::m_stddevPedLG
float m_stddevPedLG
Definition: CaloIsCMOSDigitizerAlgo.h:91
CaloHits.h
Herd::CaloIsCMOSDigitizerAlgo::m_randomEngine
std::mt19937 m_randomEngine
Definition: CaloIsCMOSDigitizerAlgo.h:82
Herd::CaloIsCMOSDigitizerAlgo::CaloIsCMOSDigitizerAlgo
CaloIsCMOSDigitizerAlgo(const std::string &name)
Constructor.
Definition: CaloIsCMOSDigitizerAlgo.cpp:23
Herd::CaloIsCMOSDigitizerAlgo::GetRMSLowGain
double GetRMSLowGain(double grayScale)
Definition: CaloIsCMOSDigitizerAlgo.cpp:99
Herd::CaloIsCMOSDigitizerAlgo::m_hgfHits
CaloHits m_hgfHits
Definition: CaloIsCMOSDigitizerAlgo.h:84