ATLAS Offline Software
Loading...
Searching...
No Matches
TRTProcessingOfStraw.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRT_DIGITIZATION_TRTPROCESSINGOFSTRAW_H
6#define TRT_DIGITIZATION_TRTPROCESSINGOFSTRAW_H
7
9
10//Hit classes
12//Particle Table
13#include "HepPDT/ParticleDataTable.hh"
14
16
18
20// MagField cache
23
25
27
29
30#include "CLHEP/Random/RandomEngine.h"
32
33#include <memory>
34#include <vector>
35
36class TRTDigit;
38class TRTNoise;
39class TRTDigCondBase;
40
42class ITRT_PAITool;
44
45namespace InDetDD { class TRT_DetectorManager; }
46
47class TRTDigSettings;
48
55public:
62 TRTNoise * noise,
63 TRTDigCondBase* digcond,
64 const HepPDT::ParticleDataTable*,
65 const TRT_ID*,
66 ITRT_PAITool* = nullptr,
67 ITRT_PAITool* = nullptr,
68 const ITRT_CalDbTool* = nullptr);
71
74
97 TRTDigit& outdigit,
98 bool & m_alreadyPrintedPDGcodeWarning,
99 double m_cosmicEventPhase, //const ComTime* m_ComTime,
100 int strawGasType,
101 bool emulationArflag,
102 bool emulationKrflag,
103 CLHEP::HepRandomEngine* rndmEngine,
104 CLHEP::HepRandomEngine* elecProcRndmEngine,
105 CLHEP::HepRandomEngine* elecNoiseRndmEngine,
106 CLHEP::HepRandomEngine* paiRndmEngine );
107
108private:
109
110 //NB copy-constructor and assignment operator declared, but not defined.
113
115 void Initialize(const ITRT_CalDbTool *);
116
123
125 bool m_timeCorrection = false;
126
129
130 bool m_useAttenuation = false;
132
133 double m_maxCrossingTime = 0.0;
134 double m_minCrossingTime = 0.0;
135 double m_shiftOfZeroPoint = 0.0;
136
139
141
142
147
148 const HepPDT::ParticleDataTable* m_pParticleTable;
149
151 class cluster {
152 public:
153 cluster(double e, double t, double x, double y, double z) :
154 energy(e), time(t), xpos(x), ypos(y), zpos(z) {};
155 double energy;
156 double time;
157 double xpos;
158 double ypos;
159 double zpos;
160 };
161
162 std::vector<cluster> m_clusterlist;
163 std::vector<TRTElectronicsProcessing::Deposit> m_depositList;
164
185 void addClustersFromStep ( const double& scaledKineticEnergy,
186 const double& particleCharge,
187 const double& timeOfHit,
188 const double& prex,
189 const double& prey,
190 const double& prez,
191 const double& postx,
192 const double& posty,
193 const double& postz,
194 std::vector<cluster>& clusterlist,
195 int strawGasType,
196 CLHEP::HepRandomEngine* rndmEngine,
197 CLHEP::HepRandomEngine* paiRndmEngine);
214 void ClustersToDeposits (MagField::AtlasFieldCache& fieldCache, const int& hitID,
215 const std::vector<cluster>& clusters,
216 std::vector<TRTElectronicsProcessing::Deposit>& deposits,
217 Amg::Vector3D TRThitGlobalPos,
218 double m_cosmicEventPhase, // const ComTime* m_ComTime
219 int strawGasType,
220 CLHEP::HepRandomEngine* rndmEngine);
221
222 double setClusterZ(double cluster_z_in, bool isLong, bool isShort, bool isEC) const;
223
224 std::vector<double> m_drifttimes; // electron drift times
225 std::vector<double> m_expattenuation; // tabulation of exp()
226 unsigned int m_maxelectrons = 0U; // maximum number of them (minmum is 100 for the Gaussian approx to be ok);
227
229
231
232 std::unique_ptr<CLHEP::RandBinomialFixedP> m_randBinomialXe{};
233 std::unique_ptr<CLHEP::RandBinomialFixedP> m_randBinomialKr{};
234 std::unique_ptr<CLHEP::RandBinomialFixedP> m_randBinomialAr{};
235
236protected:
238
239};
240
241#endif
abstract interface to TRT calibration constants
This is an Identifier helper class for the TRT subdetector.
#define y
#define x
#define z
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
abstract interface to TRT calibration constants
Give and AlgTool interface to the PAI model.
The Detector Manager for all TRT Detector elements, it acts as the interface to the detector elements...
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Communication with CondDB.
Class containing parameters and settings used by TRT digitization.
Class for TRT digits.
Definition TRTDigit.h:11
Simulation of noise hits in the TRT.
Definition TRTNoise.h:39
cluster(double e, double t, double x, double y, double z)
std::unique_ptr< CLHEP::RandBinomialFixedP > m_randBinomialXe
const HepPDT::ParticleDataTable * m_pParticleTable
TRTProcessingOfStraw(const TRTDigSettings *, const InDetDD::TRT_DetectorManager *, ITRT_PAITool *, ITRT_SimDriftTimeTool *, TRTElectronicsProcessing *ep, TRTNoise *noise, TRTDigCondBase *digcond, const HepPDT::ParticleDataTable *, const TRT_ID *, ITRT_PAITool *=nullptr, ITRT_PAITool *=nullptr, const ITRT_CalDbTool *=nullptr)
Constructor: Calls Initialize method.
TRTDigCondBase * m_pDigConditions
std::unique_ptr< CLHEP::RandBinomialFixedP > m_randBinomialKr
std::vector< cluster > m_clusterlist
TRTProcessingOfStraw(const TRTProcessingOfStraw &)
void ClustersToDeposits(MagField::AtlasFieldCache &fieldCache, const int &hitID, const std::vector< cluster > &clusters, std::vector< TRTElectronicsProcessing::Deposit > &deposits, Amg::Vector3D TRThitGlobalPos, double m_cosmicEventPhase, int strawGasType, CLHEP::HepRandomEngine *rndmEngine)
Transform the ioniation clusters along the particle trajectory inside a straw to energy deposits (i....
std::unique_ptr< CLHEP::RandBinomialFixedP > m_randBinomialAr
TRTElectronicsProcessing * m_pElectronicsProcessing
void addClustersFromStep(const double &scaledKineticEnergy, const double &particleCharge, const double &timeOfHit, const double &prex, const double &prey, const double &prez, const double &postx, const double &posty, const double &postz, std::vector< cluster > &clusterlist, int strawGasType, CLHEP::HepRandomEngine *rndmEngine, CLHEP::HepRandomEngine *paiRndmEngine)
This is the main function for re-simulation of the ionisation in the active gas via the PAI model.
Amg::Vector3D getGlobalPosition(int hitID, const TimedHitPtr< TRTUncompressedHit > *theHit)
void Initialize(const ITRT_CalDbTool *)
Initialize.
std::vector< TRTElectronicsProcessing::Deposit > m_depositList
std::vector< double > m_expattenuation
bool m_timeCorrection
Time to be corrected for flight and wire propagation delays false when beamType='cosmics'.
TimedHitCollection< TRTUncompressedHit >::const_iterator hitCollConstIter
void ProcessStraw(MagField::AtlasFieldCache &fieldCache, hitCollConstIter i, hitCollConstIter e, TRTDigit &outdigit, bool &m_alreadyPrintedPDGcodeWarning, double m_cosmicEventPhase, int strawGasType, bool emulationArflag, bool emulationKrflag, CLHEP::HepRandomEngine *rndmEngine, CLHEP::HepRandomEngine *elecProcRndmEngine, CLHEP::HepRandomEngine *elecNoiseRndmEngine, CLHEP::HepRandomEngine *paiRndmEngine)
Process this straw all the way from Geant4 hit to output digit.
std::vector< double > m_drifttimes
TRTTimeCorrection * m_pTimeCorrection
const TRTDigSettings * m_settings
ITRT_SimDriftTimeTool * m_pSimDriftTimeTool
const InDetDD::TRT_DetectorManager * m_detmgr
double setClusterZ(double cluster_z_in, bool isLong, bool isShort, bool isEC) const
TRTProcessingOfStraw & operator=(const TRTProcessingOfStraw &)
Time correction.
This is an Identifier helper class for the TRT subdetector.
Definition TRT_ID.h:82
TimedVector::const_iterator const_iterator
a smart pointer to a hit that also provides access to the extended timing info of the host event.
Definition TimedHitPtr.h:18
Eigen::Matrix< double, 3, 1 > Vector3D
Message Stream Member.