ATLAS Offline Software
TRTElectronicsProcessing.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRT_DIGITIZATION_TRTELECTRONICSPROCESSING_H
6 #define TRT_DIGITIZATION_TRTELECTRONICSPROCESSING_H
7 
9 #include "GaudiKernel/ServiceHandle.h"
10 
11 #include "CLHEP/Random/RandomEngine.h"
12 
13 #include <atomic>
14 #include <vector>
15 
16 class TRTDigSettings;
17 class TRTDigit;
19 
24 public:
26  TRTElectronicsNoise * electronicsnoise );
28 
32  class Deposit {
33  public:
37  Deposit(const double& e, const double& t): m_energy(e), m_time(t) {}
38 
39  double energy() const { return m_energy; }
40  double time() const { return m_time; }
43  private:
44  double m_energy;
45  double m_time;
46  };
47 
63  void ProcessDeposits( const std::vector<Deposit>&,
64  const int& hitID,
65  TRTDigit& outdigit,
66  double lowthreshold,
67  const double& noiseamplitude,
68  int strawGasType,
69  CLHEP::HepRandomEngine* rndmEngine,
70  CLHEP::HepRandomEngine* elecNoiseRndmEngine,
71  double highthreshold = -1.0
72  );
73 
74  double getHighThreshold ( int hitID, int strawGasType );
75  void LTt0Shift ( int hitID, int strawGasType );
76  void HTt0Shift ( int hitID );
77 
78 private:
79  //NB copy-constructor and assignment operator declared, but not defined.
82 
83  //--- Initialization methods
84 
88  void Initialize();
89 
94  void TabulateSignalShape();
95 
96  //---
97 
104  void SignalShaping(int strawGasType);
105 
114  void DiscriminatorResponse(const double& lowthreshold,
115  const double& highthreshold);
116 
125  unsigned EncodeDigit() const;
126 
128 
130 
131  double m_timeInterval = 0.0;
137  double m_binWidth = 0.0;
144  // 0:Xe,1:Kr,2:Ar
145  double m_lowThresholdBar[3]{};
146  double m_lowThresholdEC[3]{};
147  std::vector<double> m_lowThresholdSignalShape[3];
148  std::vector<double> m_highThresholdSignalShape[3];
149 
150  // unsigned int m_maskA; /**< mask - ever used? */
151  // unsigned int m_maskB; /**< mask - ever used? */
152  // unsigned int m_maskC; /**< mask - ever used? */
153  // unsigned int m_maskHT; /**< mask - ever used? */
154 
155  // Deposit energy in timed bins before shaping.
156  double* m_energyDistribution = nullptr;
157 
158  // LT and HT signals after shaping
159  std::vector<double> m_lowThresholdSignal;
160  std::vector<double> m_highThresholdSignal;
161 
162  // LT and HT discriminated signals (bits).
166  mutable std::atomic<bool> m_first{true};
167 };
168 
169 #endif
TRTElectronicsProcessing::m_highThresholdDiscriminator
int * m_highThresholdDiscriminator
Signal after discrimination.
Definition: TRTElectronicsProcessing.h:164
TRTElectronicsProcessing::m_lowThresholdBar
double m_lowThresholdBar[3]
Definition: TRTElectronicsProcessing.h:145
TRTElectronicsProcessing::m_minDiscriminatorWidthInBinWidths
int m_minDiscriminatorWidthInBinWidths
Min.
Definition: TRTElectronicsProcessing.h:139
TRTElectronicsProcessing::m_lowThresholdSignal
std::vector< double > m_lowThresholdSignal
Definition: TRTElectronicsProcessing.h:159
TRTElectronicsProcessing::m_lowThresholdSignalShape
std::vector< double > m_lowThresholdSignalShape[3]
Definition: TRTElectronicsProcessing.h:147
TRTElectronicsProcessing::m_minWidthMinusSettlingTimeInBinWidths
int m_minWidthMinusSettlingTimeInBinWidths
Min.
Definition: TRTElectronicsProcessing.h:142
TRTElectronicsProcessing
Electronics Processing.
Definition: TRTElectronicsProcessing.h:23
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
TRTElectronicsProcessing::m_settings
const TRTDigSettings * m_settings
Definition: TRTElectronicsProcessing.h:127
TRTElectronicsProcessing::Deposit::time
double time() const
Get time of deposit.
Definition: TRTElectronicsProcessing.h:40
TRTElectronicsProcessing::m_highThresholdSignalShape
std::vector< double > m_highThresholdSignalShape[3]
Definition: TRTElectronicsProcessing.h:148
TRTElectronicsProcessing::Deposit::m_time
double m_time
Time
Definition: TRTElectronicsProcessing.h:45
TRTElectronicsProcessing::SignalShaping
void SignalShaping(int strawGasType)
Shape electron drift signal according to appropriate signal shapes.
Definition: TRTElectronicsProcessing.cxx:308
TRTElectronicsNoise
Simulate TRT Electronics Noise For description of metod, see Thomas Kittelmanns PhD thesis chapters ...
Definition: TRTElectronicsNoise.h:18
TRTElectronicsProcessing::TRTElectronicsProcessing
TRTElectronicsProcessing(const TRTElectronicsProcessing &)
TRTElectronicsProcessing::m_totalNumberOfBins
int m_totalNumberOfBins
Total no.
Definition: TRTElectronicsProcessing.h:133
TRTElectronicsProcessing::TRTElectronicsProcessing
TRTElectronicsProcessing(const TRTDigSettings *digset, TRTElectronicsNoise *electronicsnoise)
Definition: TRTElectronicsProcessing.cxx:21
TRTElectronicsProcessing::m_lowThresholdEC
double m_lowThresholdEC[3]
Definition: TRTElectronicsProcessing.h:146
TRTElectronicsProcessing::HTt0Shift
void HTt0Shift(int hitID)
Definition: TRTElectronicsProcessing.cxx:505
TRTElectronicsProcessing::getHighThreshold
double getHighThreshold(int hitID, int strawGasType)
Definition: TRTElectronicsProcessing.cxx:490
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
TRTElectronicsProcessing::m_energyDistribution
double * m_energyDistribution
Definition: TRTElectronicsProcessing.h:156
TRTElectronicsProcessing::m_pElectronicsNoise
TRTElectronicsNoise * m_pElectronicsNoise
Definition: TRTElectronicsProcessing.h:129
TRTElectronicsProcessing::m_discriminatorDeadTimeInBinWidths
int m_discriminatorDeadTimeInBinWidths
Discriminator dead time [int.
Definition: TRTElectronicsProcessing.h:141
TRTElectronicsProcessing::TabulateSignalShape
void TabulateSignalShape()
Tabulate low and high level signal shapes from functions LowThresholdSignalShape() and HighThresholdS...
Definition: TRTElectronicsProcessing.cxx:89
TRTDigit
Class for TRT digits.
Definition: TRTDigit.h:11
TRTElectronicsProcessing::Initialize
void Initialize()
Initialize constants.
Definition: TRTElectronicsProcessing.cxx:41
TRTElectronicsProcessing::Deposit::Deposit
Deposit(const double &e, const double &t)
Create deposit.
Definition: TRTElectronicsProcessing.h:37
TRTElectronicsProcessing::Deposit
TRT energy deposit.
Definition: TRTElectronicsProcessing.h:32
TRTElectronicsProcessing::m_timeInterval
double m_timeInterval
Time interval covered by digit [75 ns].
Definition: TRTElectronicsProcessing.h:131
TRTElectronicsProcessing::m_lowThresholdDiscriminator
int * m_lowThresholdDiscriminator
Signal after discrimination.
Definition: TRTElectronicsProcessing.h:163
TRTElectronicsProcessing::Deposit::energy
double energy() const
Get energy of deposit.
Definition: TRTElectronicsProcessing.h:39
TRTElectronicsProcessing::m_numberOfPostZeroBins
int m_numberOfPostZeroBins
No.
Definition: TRTElectronicsProcessing.h:135
TRTElectronicsProcessing::~TRTElectronicsProcessing
~TRTElectronicsProcessing()
Definition: TRTElectronicsProcessing.cxx:31
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
TRTElectronicsProcessing::m_binWidth
double m_binWidth
Time interval corresponding to each internal bin.
Definition: TRTElectronicsProcessing.h:137
TRTElectronicsProcessing::ProcessDeposits
void ProcessDeposits(const std::vector< Deposit > &, const int &hitID, TRTDigit &outdigit, double lowthreshold, const double &noiseamplitude, int strawGasType, CLHEP::HepRandomEngine *rndmEngine, CLHEP::HepRandomEngine *elecNoiseRndmEngine, double highthreshold=-1.0)
Process deposits in a straw.
Definition: TRTElectronicsProcessing.cxx:203
TRTElectronicsProcessing::m_first
std::atomic< bool > m_first
Definition: TRTElectronicsProcessing.h:166
AthMessaging.h
TRTDigSettings
Class containing parameters and settings used by TRT digitization.
Definition: TRTDigSettings.h:35
TRTElectronicsProcessing::m_highThresholdSignal
std::vector< double > m_highThresholdSignal
Definition: TRTElectronicsProcessing.h:160
TRTElectronicsProcessing::DiscriminatorResponse
void DiscriminatorResponse(const double &lowthreshold, const double &highthreshold)
Simulate discriminator response.
Definition: TRTElectronicsProcessing.cxx:332
TRTElectronicsProcessing::m_discriminatorSettlingTimeInBinWidths
int m_discriminatorSettlingTimeInBinWidths
Discriminator settling time [bins]
Definition: TRTElectronicsProcessing.h:140
TRTElectronicsProcessing::m_numberOfPreZeroBins
int m_numberOfPreZeroBins
No.
Definition: TRTElectronicsProcessing.h:134
TRTElectronicsProcessing::operator=
TRTElectronicsProcessing & operator=(const TRTElectronicsProcessing &)
TRTElectronicsProcessing::LTt0Shift
void LTt0Shift(int hitID, int strawGasType)
Definition: TRTElectronicsProcessing.cxx:550
TRTElectronicsProcessing::EncodeDigit
unsigned EncodeDigit() const
Encode 27 bit digit from discriminator response [8 low + 1 high + 8 low + 1 high + 8 low + 1 high]:
Definition: TRTElectronicsProcessing.cxx:449
TRTElectronicsProcessing::Deposit::m_energy
double m_energy
Energy.
Definition: TRTElectronicsProcessing.h:44