ATLAS Offline Software
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 
15 #include "InDetIdentifier/TRT_ID.h"
16 
18 
20 // MagField cache
23 
25 
27 
29 
30 #include "CLHEP/Random/RandomEngine.h"
32 
33 #include <memory>
34 #include <vector>
35 
36 class TRTDigit;
37 class TRTTimeCorrection;
38 class TRTNoise;
39 class TRTDigCondBase;
40 
41 class TRTUncompressedHit;
42 class ITRT_PAITool;
44 
45 namespace InDetDD { class TRT_DetectorManager; }
46 
47 class TRTDigSettings;
48 
55 public:
59  ITRT_PAITool*,
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 
94  void ProcessStraw (MagField::AtlasFieldCache& fieldCache,
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 
108 private:
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 
128  double m_attenuationLength = 0.0;
129 
130  bool m_useAttenuation = false;
131  bool m_useMagneticFieldMap = false;
132 
133  double m_maxCrossingTime = 0.0;
134  double m_minCrossingTime = 0.0;
135  double m_shiftOfZeroPoint = 0.0;
136 
137  double m_innerRadiusOfStraw = 0.0;
138  double m_outerRadiusOfWire = 0.0;
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 
236 protected:
238 
239 };
240 
241 #endif
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
TRTProcessingOfStraw::m_pElectronicsProcessing
TRTElectronicsProcessing * m_pElectronicsProcessing
Definition: TRTProcessingOfStraw.h:144
TRTProcessingOfStraw::m_pDigConditions
TRTDigCondBase * m_pDigConditions
Definition: TRTProcessingOfStraw.h:146
TRTProcessingOfStraw::m_drifttimes
std::vector< double > m_drifttimes
Definition: TRTProcessingOfStraw.h:224
TRTProcessingOfStraw::m_innerRadiusOfStraw
double m_innerRadiusOfStraw
Definition: TRTProcessingOfStraw.h:137
ITRT_PAITool
Definition: ITRT_PAITool.h:20
TRTProcessingOfStraw::m_detmgr
const InDetDD::TRT_DetectorManager * m_detmgr
Definition: TRTProcessingOfStraw.h:118
TRTProcessingOfStraw::m_signalPropagationSpeed
double m_signalPropagationSpeed
Definition: TRTProcessingOfStraw.h:127
TRTProcessingOfStraw::m_pPAItoolKr
ITRT_PAITool * m_pPAItoolKr
Definition: TRTProcessingOfStraw.h:121
TRT_ID.h
This is an Identifier helper class for the TRT subdetector. This class is a factory for creating comp...
TRTProcessingOfStraw::Initialize
void Initialize(const ITRT_CalDbTool *)
Initialize.
Definition: TRTProcessingOfStraw.cxx:89
TRTUncompressedHit
Definition: TRTUncompressedHit.h:11
TRTElectronicsProcessing
Electronics Processing.
Definition: TRTElectronicsProcessing.h:23
TRTProcessingOfStraw::TRTProcessingOfStraw
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.
Definition: TRTProcessingOfStraw.cxx:48
TRTProcessingOfStraw::~TRTProcessingOfStraw
~TRTProcessingOfStraw()
Destructor.
Definition: TRTProcessingOfStraw.cxx:83
TimedHitPtr< TRTUncompressedHit >
TRTProcessingOfStraw::cluster
Primary ionisation cluster.
Definition: TRTProcessingOfStraw.h:151
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
TRTProcessingOfStraw::m_id_helper
const TRT_ID * m_id_helper
Definition: TRTProcessingOfStraw.h:237
TRTProcessingOfStraw::m_randBinomialXe
std::unique_ptr< CLHEP::RandBinomialFixedP > m_randBinomialXe
Definition: TRTProcessingOfStraw.h:232
TRTProcessingOfStraw::m_maxCrossingTime
double m_maxCrossingTime
Definition: TRTProcessingOfStraw.h:133
x
#define x
TRTProcessingOfStraw::m_randBinomialAr
std::unique_ptr< CLHEP::RandBinomialFixedP > m_randBinomialAr
Definition: TRTProcessingOfStraw.h:234
TRTProcessingOfStraw::m_pSimDriftTimeTool
ITRT_SimDriftTimeTool * m_pSimDriftTimeTool
Definition: TRTProcessingOfStraw.h:122
TRTProcessingOfStraw::m_outerRadiusOfWire
double m_outerRadiusOfWire
Definition: TRTProcessingOfStraw.h:138
TRTProcessingOfStraw::addClustersFromStep
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.
Definition: TRTProcessingOfStraw.cxx:204
TRTProcessingOfStraw::m_useAttenuation
bool m_useAttenuation
Definition: TRTProcessingOfStraw.h:130
GeoPrimitives.h
TRTProcessingOfStraw::cluster::xpos
double xpos
Definition: TRTProcessingOfStraw.h:157
TRTProcessingOfStraw::TRTProcessingOfStraw
TRTProcessingOfStraw(const TRTProcessingOfStraw &)
TRTProcessingOfStraw::m_settings
const TRTDigSettings * m_settings
Definition: TRTProcessingOfStraw.h:117
TRTProcessingOfStraw::m_maxelectrons
unsigned int m_maxelectrons
Definition: TRTProcessingOfStraw.h:226
TRTProcessingOfStraw::cluster::ypos
double ypos
Definition: TRTProcessingOfStraw.h:158
TRTProcessingOfStraw::m_shiftOfZeroPoint
double m_shiftOfZeroPoint
Definition: TRTProcessingOfStraw.h:135
lumiFormat.i
int i
Definition: lumiFormat.py:85
z
#define z
TRTProcessingOfStraw::m_depositList
std::vector< TRTElectronicsProcessing::Deposit > m_depositList
Definition: TRTProcessingOfStraw.h:163
TRTProcessingOfStraw::cluster::energy
double energy
Definition: TRTProcessingOfStraw.h:154
TRTProcessingOfStraw::m_pNoise
TRTNoise * m_pNoise
Definition: TRTProcessingOfStraw.h:145
TRTNoise
Simulation of noise hits in the TRT.
Definition: TRTNoise.h:39
TRTProcessingOfStraw::m_timeCorrection
bool m_timeCorrection
Time to be corrected for flight and wire propagation delays false when beamType='cosmics'.
Definition: TRTProcessingOfStraw.h:125
AtlasFieldCache.h
TRTProcessingOfStraw::setClusterZ
double setClusterZ(double cluster_z_in, bool isLong, bool isShort, bool isEC) const
Definition: TRTProcessingOfStraw.cxx:788
TimedHitCollection.h
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
TRTProcessingOfStraw::m_pParticleTable
const HepPDT::ParticleDataTable * m_pParticleTable
Definition: TRTProcessingOfStraw.h:148
ITRT_CalDbTool.h
abstract interface to TRT calibration constants
TRTElectronicsProcessing.h
TRTProcessingOfStraw::m_clusterlist
std::vector< cluster > m_clusterlist
Definition: TRTProcessingOfStraw.h:162
TRTProcessingOfStraw::m_useMagneticFieldMap
bool m_useMagneticFieldMap
Definition: TRTProcessingOfStraw.h:131
TRTDigit
Class for TRT digits.
Definition: TRTDigit.h:11
ITRT_CalDbTool
Definition: ITRT_CalDbTool.h:30
TRTProcessingOfStraw::m_pTimeCorrection
TRTTimeCorrection * m_pTimeCorrection
Definition: TRTProcessingOfStraw.h:143
TRTProcessingOfStraw::getGlobalPosition
Amg::Vector3D getGlobalPosition(int hitID, const TimedHitPtr< TRTUncompressedHit > *theHit)
Definition: TRTProcessingOfStraw.cxx:730
TRTProcessingOfStraw::m_solenoidFieldStrength
double m_solenoidFieldStrength
Definition: TRTProcessingOfStraw.h:140
TRTProcessingOfStraw
TRT Digitization: Processing of a TRT Straws.
Definition: TRTProcessingOfStraw.h:54
TRTProcessingOfStraw::ProcessStraw
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.
Definition: TRTProcessingOfStraw.cxx:250
TRTProcessingOfStraw::hitCollConstIter
TimedHitCollection< TRTUncompressedHit >::const_iterator hitCollConstIter
Definition: TRTProcessingOfStraw.h:73
TRTProcessingOfStraw::cluster::cluster
cluster(double e, double t, double x, double y, double z)
Definition: TRTProcessingOfStraw.h:153
RandBinomialFixedP.h
TRTProcessingOfStraw::m_minCrossingTime
double m_minCrossingTime
Definition: TRTProcessingOfStraw.h:134
TRTProcessingOfStraw::m_randBinomialKr
std::unique_ptr< CLHEP::RandBinomialFixedP > m_randBinomialKr
Definition: TRTProcessingOfStraw.h:233
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
TRTProcessingOfStraw::m_attenuationLength
double m_attenuationLength
Definition: TRTProcessingOfStraw.h:128
TRT_ID
Definition: TRT_ID.h:82
TRTProcessingOfStraw::m_pPAItoolAr
ITRT_PAITool * m_pPAItoolAr
Definition: TRTProcessingOfStraw.h:120
InDetDD::TRT_DetectorManager
The Detector Manager for all TRT Detector elements, it acts as the interface to the detector elements...
Definition: TRT_DetectorManager.h:63
y
#define y
TRTUncompressedHit.h
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
AthMessaging.h
MagField::AtlasFieldCache
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Definition: AtlasFieldCache.h:43
TRTTimeCorrection
Time correction.
Definition: TRTTimeCorrection.h:26
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
TRTProcessingOfStraw::operator=
TRTProcessingOfStraw & operator=(const TRTProcessingOfStraw &)
ITRT_SimDriftTimeTool
Definition: ITRT_SimDriftTimeTool.h:30
TRTProcessingOfStraw::cluster::time
double time
Definition: TRTProcessingOfStraw.h:156
TRTDigSettings
Class containing parameters and settings used by TRT digitization.
Definition: TRTDigSettings.h:34
TRTProcessingOfStraw::cluster::zpos
double zpos
Definition: TRTProcessingOfStraw.h:159
TRTProcessingOfStraw::m_expattenuation
std::vector< double > m_expattenuation
Definition: TRTProcessingOfStraw.h:225
TimedHitCollection
Definition: TimedHitCollection.h:15
WriteCellNoiseToCool.noise
noise
Definition: WriteCellNoiseToCool.py:380
TRTProcessingOfStraw::ClustersToDeposits
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....
Definition: TRTProcessingOfStraw.cxx:521
TRTProcessingOfStraw::m_pPAItoolXe
ITRT_PAITool * m_pPAItoolXe
Definition: TRTProcessingOfStraw.h:119
TRTProcessingOfStraw::m_alreadywarnedagainstpdg0
bool m_alreadywarnedagainstpdg0
Definition: TRTProcessingOfStraw.h:228
TRTDigCondBase
Communication with CondDB.
Definition: TRTDigCondBase.h:34