HerdSoftware  0.4.0
FitDigitizerAlgo.h
Go to the documentation of this file.
1 /*
2  * FitDigitizerAlgo.h
3  *
4  * Created on: 20 Feb 2020
5  * Author: Valerio Formato (based on code by Junjing Wang)
6  */
7 
8 #ifndef HERD_FITDIGITIZERALGO_H_
9 #define HERD_FITDIGITIZERALGO_H_
10 
11 // HerdSoftware headers
21 
22 // EventAnalysis headers
23 #include "algorithm/Algorithm.h"
24 
25 namespace Herd {
26 
27 // clang-format off
76 // clang-format on
77 
78 class FitDigitizerAlgo : public EA::Algorithm {
79 public:
84  FitDigitizerAlgo(const std::string &name);
85 
90  bool Initialize() override;
91 
98  bool Process() override;
99 
100 private:
101  EA::StorePtr m_evStore, m_globStore;
102 
104  EA::observer_ptr<FitGeoParamsColl> m_origFitGeoParamsColl;
105  std::shared_ptr<FitGeoParamsColl> m_digFitGeoParamsColl;
106  std::shared_ptr<FitChannelInfoColl> m_digFitChannelInfoColl;
107 
108  FitGeoParams createGeoParams(const FitGeoParams &origGeoParams);
109  FitChannelInfo createChannelInfo(const FitGeoParams &digGeoParams);
110  std::vector<float> generateSipmGains(const FitGeoParams &digGeoParams);
111 
113 
114  // Parameters
115  unsigned int m_seed = defaultValue<decltype(m_seed)>;
116  bool m_publishChannelInfo = true;
117  bool m_simulateNoise = true;
119  unsigned int m_nTopMatsPerLayer = 11;
120  unsigned int m_nSideShortMatsPerLayer = 10;
121  unsigned int m_nSideLongMatsPerLayer = 7;
122  float m_topMatsSize = defaultValue<float>;
123  float m_sideShortMatsSize = defaultValue<float>;
124  float m_sideLongMatsSize = defaultValue<float>;
125 
126  double m_sipmGainVariation = 0.0125; // relative fluctuation of the gain
127  double m_adcNoise = 0.1; // Sigma of the noise in the electronics ADC conversion
128 
129  // utility tools
130  std::unique_ptr<FitDigitizationTools::PhotonTool> m_photonTool;
131  std::unique_ptr<FitDigitizationTools::DistributionFiberTool> m_distrFiberTool;
132  std::unique_ptr<FitDigitizationTools::SiPMTool> m_sipmTool;
133 
134  std::mt19937 m_generator;
135  std::normal_distribution<double> m_gauss_dist;
136 };
137 
138 } // namespace Herd
139 
140 #endif /* HERD_FITDIGITIZERALGO_H_ */
Herd::FitChannelInfo
Definition: FitChannelInfo.h:19
Herd::FitDigitizerAlgo::m_evStore
EA::StorePtr m_evStore
Definition: FitDigitizerAlgo.h:101
FitHitsColl.h
Herd::FitDigitizerAlgo::m_globStore
EA::StorePtr m_globStore
Definition: FitDigitizerAlgo.h:101
DistributionChannelTool.h
PhotonTool.h
Herd::FitDigitizerAlgo::m_adcNoise
double m_adcNoise
Definition: FitDigitizerAlgo.h:127
FitGeoParamsColl.h
Herd::FitDigitizerAlgo::m_nTopMatsPerLayer
unsigned int m_nTopMatsPerLayer
Definition: FitDigitizerAlgo.h:119
Herd::FitDigitizerAlgo::m_generator
std::mt19937 m_generator
Definition: FitDigitizerAlgo.h:134
Herd::FitDigitizerAlgo::createChannelInfo
FitChannelInfo createChannelInfo(const FitGeoParams &digGeoParams)
Definition: FitDigitizerAlgo.cpp:404
Herd::FitDigitizerAlgo::m_sideShortMatsSize
float m_sideShortMatsSize
Definition: FitDigitizerAlgo.h:123
Herd::FitDigitizerAlgo::m_gauss_dist
std::normal_distribution< double > m_gauss_dist
Definition: FitDigitizerAlgo.h:135
Herd::FitDigitizerAlgo::m_seed
unsigned int m_seed
Definition: FitDigitizerAlgo.h:115
Herd::FitDigitizerAlgo::Process
bool Process() override
Process a single event.
Definition: FitDigitizerAlgo.cpp:111
Herd::FitDigitizerAlgo::m_distrFiberTool
std::unique_ptr< FitDigitizationTools::DistributionFiberTool > m_distrFiberTool
Definition: FitDigitizerAlgo.h:131
Herd::FitDigitizerAlgo::m_sipmGains
SidesArray< std::vector< std::vector< float > > > m_sipmGains
Definition: FitDigitizerAlgo.h:112
Herd::FitDigitizerAlgo::m_origFitGeoParamsColl
EA::observer_ptr< FitGeoParamsColl > m_origFitGeoParamsColl
Definition: FitDigitizerAlgo.h:104
Herd::FitDigitizerAlgo::m_topMatsSize
float m_topMatsSize
Definition: FitDigitizerAlgo.h:122
Herd
CssGeoParams.h CssGeoParams class declaration.
Definition: CaloPDCalibrationAlgo.h:22
Herd::FitDigitizerAlgo::m_sideLongMatsSize
float m_sideLongMatsSize
Definition: FitDigitizerAlgo.h:124
Herd::FitDigitizerAlgo::m_simulateNoise
bool m_simulateNoise
Definition: FitDigitizerAlgo.h:117
Herd::FitDigitizerAlgo::generateSipmGains
std::vector< float > generateSipmGains(const FitGeoParams &digGeoParams)
Definition: FitDigitizerAlgo.cpp:426
FitChannelInfoColl.h
FitParticleHitsColl.h
Herd::FitDigitizerAlgo::FitDigitizerAlgo
FitDigitizerAlgo(const std::string &name)
Constructor.
Definition: FitDigitizerAlgo.cpp:22
Herd::FitDigitizerAlgo
Algorithm that digitizes the Monte Carlo FIT hits simulating the response of the SIPM reading.
Definition: FitDigitizerAlgo.h:78
AttenuationTool.h
Herd::FitDigitizerAlgo::m_publishChannelInfo
bool m_publishChannelInfo
Definition: FitDigitizerAlgo.h:116
SiPMTool.h
Herd::FitGeoParams
Data structure for single silicon layer geometry parameters.
Definition: FitGeoParams.h:66
Herd::FitDigitizerAlgo::m_digFitChannelInfoColl
std::shared_ptr< FitChannelInfoColl > m_digFitChannelInfoColl
Definition: FitDigitizerAlgo.h:106
Herd::FitDigitizerAlgo::m_sipmTool
std::unique_ptr< FitDigitizationTools::SiPMTool > m_sipmTool
Definition: FitDigitizerAlgo.h:132
Herd::FitDigitizerAlgo::Initialize
bool Initialize() override
Initialization of the algorithm.
Definition: FitDigitizerAlgo.cpp:40
Herd::FitDigitizerAlgo::m_digFitGeoParamsColl
std::shared_ptr< FitGeoParamsColl > m_digFitGeoParamsColl
Definition: FitDigitizerAlgo.h:105
DistributionFiberTool.h
Herd::FitDigitizerAlgo::m_nSideLongMatsPerLayer
unsigned int m_nSideLongMatsPerLayer
Definition: FitDigitizerAlgo.h:121
Herd::FitDigitizerAlgo::createGeoParams
FitGeoParams createGeoParams(const FitGeoParams &origGeoParams)
Definition: FitDigitizerAlgo.cpp:314
Herd::FitDigitizerAlgo::m_simulateIntraChannelXTalk
bool m_simulateIntraChannelXTalk
Definition: FitDigitizerAlgo.h:118
Herd::FitDigitizerAlgo::m_nSideShortMatsPerLayer
unsigned int m_nSideShortMatsPerLayer
Definition: FitDigitizerAlgo.h:120
Herd::FitDigitizerAlgo::m_sipmGainVariation
double m_sipmGainVariation
Definition: FitDigitizerAlgo.h:126
Herd::SidesArray< FitHits >
Herd::FitDigitizerAlgo::m_fitParticleHitsColl
FitHitsColl m_fitParticleHitsColl
Definition: FitDigitizerAlgo.h:103
Herd::FitDigitizerAlgo::m_photonTool
std::unique_ptr< FitDigitizationTools::PhotonTool > m_photonTool
Definition: FitDigitizerAlgo.h:130