ATLAS Offline Software
LUCID_DigitizationToolBox.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef LUCID_DIGITIZATION_TOOLBOX_H
6 #define LUCID_DIGITIZATION_TOOLBOX_H
7 
8 #include "TTree.h"
9 #include "GaudiKernel/Algorithm.h"
10 #include "GaudiKernel/ServiceHandle.h"
11 #include "GaudiKernel/ITHistSvc.h"
12 #include "GaudiKernel/MsgStream.h"
16 
17 class StoreGateSvc;
18 
20 
21  public:
22 
24  LUCID_DigitizationToolBox(int numTubes,
25  double qdcChannelsPerPE,
26  double qdcPedestal,
27  double qdcFedNoiseFactor,
28  double tdcPmtNoiseFactor,
29  double tdcFedNoiseFactor,
30  double TotalPMTgain,
31  double AmpFactor,
32  double Q1bin,
33  int NoiseCharge,
34  int numDyinodes,
35  double dynodeGammaFactor,
36  std::vector<double> pmtSmearing,
37  std::vector<double> pmtScaling,
38  std::vector<double> gasScaling,
39  std::vector<double> npeThreshold,
40  bool fillRootTree);
41 
42  StatusCode recordContainers(const ServiceHandle<StoreGateSvc>&, const std::string&);
43 
45  StatusCode fillDigitContainer(LUCID_SimHitCollection* , CLHEP::HepRandomEngine*);
46 
47  StatusCode setDebugTree(ITHistSvc*);
48 
49  protected:
50 
51  TTree* getDebugTree(){ return m_tubeInfo; }
52 
53  static unsigned int roundoff(double x);
54 
55  StatusCode createAndStoreDigit(unsigned short tubeID, CLHEP::HepRandomEngine* rndEngine);
56 
57  double DynodeChainSimulation(double npe, CLHEP::HepRandomEngine* rndEngine) const;
58  static double DynodeGainSmearing (double npe, CLHEP::HepRandomEngine* rndEngine);
59 
61 
62  int m_numTubes{};
64  double m_qdcPedestal{};
68 
69  double m_TotalPMTgain{};
70  double m_AmpFactor{};
71  double m_Q1bin{};
75 
76  double m_gainPerDynode{};
78 
79  std::vector<double> m_pmtSmearing{};
80  std::vector<double> m_pmtScaling{};
81  std::vector<double> m_gasScaling{};
82  std::vector<double> m_npeThreshold{};
83 
85 
86  unsigned short m_tubeID{};
87  double m_npe{};
88  unsigned short m_npeGas{};
89  unsigned short m_npePmt{};
90  unsigned short m_qdc{};
91  double m_tdcTot{};
92  unsigned short m_tdc{};
93 
94  TTree* m_tubeInfo{};
95 };
96 
97 #endif
LUCID_DigitizationToolBox::m_numTubes
int m_numTubes
Definition: LUCID_DigitizationToolBox.h:62
LUCID_DigitizationToolBox::DynodeGainSmearing
static double DynodeGainSmearing(double npe, CLHEP::HepRandomEngine *rndEngine)
Definition: LUCID_DigitizationToolBox.cxx:256
LUCID_DigitizationToolBox
Definition: LUCID_DigitizationToolBox.h:19
LUCID_DigitizationToolBox::m_gainPerDynode
double m_gainPerDynode
Definition: LUCID_DigitizationToolBox.h:76
LUCID_DigitContainer
Definition: LUCID_DigitContainer.h:13
LUCID_DigitizationToolBox::LUCID_DigitizationToolBox
LUCID_DigitizationToolBox()
Definition: LUCID_DigitizationToolBox.cxx:17
LUCID_DigitizationToolBox::recordContainers
StatusCode recordContainers(const ServiceHandle< StoreGateSvc > &, const std::string &)
Definition: LUCID_DigitizationToolBox.cxx:228
LUCID_DigitizationToolBox::m_pmtSmearing
std::vector< double > m_pmtSmearing
Definition: LUCID_DigitizationToolBox.h:79
AtlasHitsVector
Definition: AtlasHitsVector.h:33
LUCID_DigitizationToolBox::m_gasScaling
std::vector< double > m_gasScaling
Definition: LUCID_DigitizationToolBox.h:81
LUCID_DigitizationToolBox::m_tdc
unsigned short m_tdc
Definition: LUCID_DigitizationToolBox.h:92
LUCID_DigitizationToolBox::m_tdcFedNoiseFactor
double m_tdcFedNoiseFactor
Definition: LUCID_DigitizationToolBox.h:67
LUCID_DigitizationToolBox::setDebugTree
StatusCode setDebugTree(ITHistSvc *)
Definition: LUCID_DigitizationToolBox.cxx:99
x
#define x
LUCID_DigitizationToolBox::m_digitContainer
LUCID_DigitContainer * m_digitContainer
Definition: LUCID_DigitizationToolBox.h:60
LUCID_DigitizationToolBox::m_tdcTot
double m_tdcTot
Definition: LUCID_DigitizationToolBox.h:91
LUCID_DigitizationToolBox::m_npe
double m_npe
Definition: LUCID_DigitizationToolBox.h:87
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
LUCID_DigitizationToolBox::m_tubeInfo
TTree * m_tubeInfo
Definition: LUCID_DigitizationToolBox.h:94
LUCID_DigitizationToolBox::m_fillRootTree
bool m_fillRootTree
Definition: LUCID_DigitizationToolBox.h:84
LUCID_DigitizationToolBox::m_Q1bin
double m_Q1bin
Definition: LUCID_DigitizationToolBox.h:71
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LUCID_DigitizationToolBox::createAndStoreDigit
StatusCode createAndStoreDigit(unsigned short tubeID, CLHEP::HepRandomEngine *rndEngine)
Definition: LUCID_DigitizationToolBox.cxx:129
LUCID_DigitizationToolBox::m_npePmt
unsigned short m_npePmt
Definition: LUCID_DigitizationToolBox.h:89
TimedHitCollection.h
LUCID_DigitizationToolBox::m_dynodeGammaFactor
double m_dynodeGammaFactor
Definition: LUCID_DigitizationToolBox.h:74
LUCID_DigitizationToolBox::fillDigitContainer
StatusCode fillDigitContainer(TimedHitCollection< LUCID_SimHit > &, CLHEP::HepRandomEngine *)
Definition: LUCID_DigitizationToolBox.cxx:162
LUCID_DigitizationToolBox::m_TotalPMTgain
double m_TotalPMTgain
Definition: LUCID_DigitizationToolBox.h:69
LUCID_DigitizationToolBox::roundoff
static unsigned int roundoff(double x)
Definition: LUCID_DigitizationToolBox.cxx:118
LUCID_SimHitCollection.h
LUCID_DigitizationToolBox::m_qdc
unsigned short m_qdc
Definition: LUCID_DigitizationToolBox.h:90
LUCID_DigitizationToolBox::m_ChargeToQdcFactor
double m_ChargeToQdcFactor
Definition: LUCID_DigitizationToolBox.h:77
LUCID_DigitizationToolBox::m_NoiseCharge
int m_NoiseCharge
Definition: LUCID_DigitizationToolBox.h:72
LUCID_DigitizationToolBox::getDebugTree
TTree * getDebugTree()
Definition: LUCID_DigitizationToolBox.h:51
LUCID_DigitizationToolBox::m_qdcPedestal
double m_qdcPedestal
Definition: LUCID_DigitizationToolBox.h:64
LUCID_DigitizationToolBox::m_tubeID
unsigned short m_tubeID
Definition: LUCID_DigitizationToolBox.h:86
LUCID_DigitizationToolBox::m_npeThreshold
std::vector< double > m_npeThreshold
Definition: LUCID_DigitizationToolBox.h:82
LUCID_DigitizationToolBox::m_qdcChannelsPerPE
double m_qdcChannelsPerPE
Definition: LUCID_DigitizationToolBox.h:63
LUCID_DigitizationToolBox::m_tdcPmtNoiseFactor
double m_tdcPmtNoiseFactor
Definition: LUCID_DigitizationToolBox.h:66
LUCID_DigitizationToolBox::m_npeGas
unsigned short m_npeGas
Definition: LUCID_DigitizationToolBox.h:88
LUCID_DigitContainer.h
LUCID_DigitizationToolBox::m_numDyinodes
int m_numDyinodes
Definition: LUCID_DigitizationToolBox.h:73
LUCID_DigitizationToolBox::m_AmpFactor
double m_AmpFactor
Definition: LUCID_DigitizationToolBox.h:70
LUCID_DigitizationToolBox::DynodeChainSimulation
double DynodeChainSimulation(double npe, CLHEP::HepRandomEngine *rndEngine) const
Definition: LUCID_DigitizationToolBox.cxx:238
LUCID_DigitizationToolBox::m_pmtScaling
std::vector< double > m_pmtScaling
Definition: LUCID_DigitizationToolBox.h:80
LUCID_DigitizationToolBox::m_qdcFedNoiseFactor
double m_qdcFedNoiseFactor
Definition: LUCID_DigitizationToolBox.h:65
TimedHitCollection
Definition: TimedHitCollection.h:15
ServiceHandle< StoreGateSvc >