ATLAS Offline Software
Loading...
Searching...
No Matches
LUCID_DigitizationToolBox.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 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/MsgStream.h"
15
16class StoreGateSvc;
17
19
20 public:
21
23 LUCID_DigitizationToolBox(int numTubes,
24 double qdcChannelsPerPE,
25 double qdcPedestal,
26 double qdcFedNoiseFactor,
27 double tdcPmtNoiseFactor,
28 double tdcFedNoiseFactor,
29 double TotalPMTgain,
30 double AmpFactor,
31 double Q1bin,
32 int NoiseCharge,
33 int numDyinodes,
34 double dynodeGammaFactor,
35 std::vector<double> pmtSmearing,
36 std::vector<double> pmtScaling,
37 std::vector<double> gasScaling,
38 std::vector<double> npeThreshold,
39 bool fillRootTree);
40
41 StatusCode recordContainers(const ServiceHandle<StoreGateSvc>&, const std::string&);
42
43 StatusCode fillDigitContainer(TimedHitCollection<LUCID_SimHit>&, CLHEP::HepRandomEngine*);
44 StatusCode fillDigitContainer(LUCID_SimHitCollection* , CLHEP::HepRandomEngine*);
45
46 StatusCode setDebugTree();
47
48 protected:
49
50 TTree* getDebugTree(){ return m_tubeInfo; }
51
52 static unsigned int roundoff(double x);
53
54 StatusCode createAndStoreDigit(unsigned short tubeID, CLHEP::HepRandomEngine* rndEngine);
55
56 double DynodeChainSimulation(double npe, CLHEP::HepRandomEngine* rndEngine) const;
57 static double DynodeGainSmearing (double npe, CLHEP::HepRandomEngine* rndEngine);
58
60
61 int m_numTubes{};
63 double m_qdcPedestal{};
67
69 double m_AmpFactor{};
70 double m_Q1bin{};
74
77
78 std::vector<double> m_pmtSmearing{};
79 std::vector<double> m_pmtScaling{};
80 std::vector<double> m_gasScaling{};
81 std::vector<double> m_npeThreshold{};
82
84
85 unsigned short m_tubeID{};
86 double m_npe{};
87 unsigned short m_npeGas{};
88 unsigned short m_npePmt{};
89 unsigned short m_qdc{};
90 double m_tdcTot{};
91 unsigned short m_tdc{};
92
93 TTree* m_tubeInfo{};
94};
95
96#endif
AtlasHitsVector< LUCID_SimHit > LUCID_SimHitCollection
#define x
LUCID_DigitContainer * m_digitContainer
static double DynodeGainSmearing(double npe, CLHEP::HepRandomEngine *rndEngine)
StatusCode fillDigitContainer(TimedHitCollection< LUCID_SimHit > &, CLHEP::HepRandomEngine *)
double DynodeChainSimulation(double npe, CLHEP::HepRandomEngine *rndEngine) const
StatusCode recordContainers(const ServiceHandle< StoreGateSvc > &, const std::string &)
static unsigned int roundoff(double x)
StatusCode createAndStoreDigit(unsigned short tubeID, CLHEP::HepRandomEngine *rndEngine)
The Athena Transient Store API.