ATLAS Offline Software
Amplifier.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 MDT_RESPONSE_AMPLIFIER_H
6 #define MDT_RESPONSE_AMPLIFIER_H
7 
8 #include <vector>
9 
10 class Amplifier {
11  private:
12  // define internal data format
13  typedef std::vector<double> cluster_vec;
15  typedef std::vector<double>::const_iterator cluster_vec_const_it;
16 
17  public:
18  Amplifier();
20 
21  // returne t_threshold
22  double TThreshold() const;
23 
24  // returns time first electron arrived
25  double TFirst() const;
26 
27  // returns amplifier response if the amplifier has signal else -1.
28  double AdcResponse() const;
29 
30  // returns integrated charge before wilkinson adc if the amplifier has signal
31  double Charge() const;
32 
33  bool PassedThreshold() const; // check if threshold was passed
34  void Reset(); // reset amplifier signal
35 
36  // Set routines
37  void SetTriggerElectron(double el); // set threshold in fractions of triggerelectrons
38  void SetIntegrationWindow(double win); // set size integration windos
39 
40  // initialize response and signal, needs to be done before using amplifier!
41  void InitResponse(unsigned int bins, double binsize);
42 
43  bool AddClusters(const cluster_vec& clusters); // add up response functions for a set of clusters
44 
45  private:
46  void InitAmplifierParameters(); // default initialization of amplifier settings
47  static double ResponseFunction(double time);
48 
49  void DoAdcResponse(); // calculate adc response
50  double Integral(); // charge integral
51  void AddCluster(int bin,double charge);
52 
53  double m_binsize = 0.0; // binsize in ns
54  double m_triggerElectron = 0.0; // trigger electron
55  double m_threshold = 0.0; // threshold
56  int m_integrationWindow; // integration window in bins
57 
58  // maximum of the single electron response
59  double m_responseMax = 0.0;
60 
63  double m_integral;
64  double m_adcResponse;
65 
66  // iterators
67  cluster_vec_it m_signal_th{}; // iterator pointing to the first bin over threshold
71 
72  /* non linear response:
73  R = m_adcOffset + m_adcFactor*(log(Q)/log(m_adcFraction)-1) */
74  double m_adcOffset = 0.0;
75  double m_adcFactor = 0.0;
76  double m_adcFraction = 0.0;
77 
78 };
79 
80 inline double Amplifier::TThreshold() const {
81  return m_binsize*(m_signal_th-m_signal.begin());
82 }
83 inline double Amplifier::TFirst() const {
84  cluster_vec_const_it cit = m_signal.begin();
85  while( *cit == 0 )
86  ++cit;
87  return m_binsize*(cit-m_signal.begin()); ;
88 }
89 inline double Amplifier::AdcResponse() const {
90  return m_adcResponse;
91 }
92 inline double Amplifier::Charge() const {
93  return m_integral;
94 }
95 
96 inline void Amplifier::SetTriggerElectron(double el) {
99 }
100 inline void Amplifier::SetIntegrationWindow(double win) {
101  m_integrationWindow = (int)(win/m_binsize)-1;
102 }
103 inline bool Amplifier::PassedThreshold() const {
104  return m_signal.begin() != m_signal_th;
105 }
106 
107 #endif
108 
Amplifier::m_threshold
double m_threshold
Definition: Amplifier.h:55
Amplifier::m_cluster_stop
cluster_vec_const_it m_cluster_stop
Definition: Amplifier.h:69
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Amplifier
Definition: Amplifier.h:10
Amplifier::InitAmplifierParameters
void InitAmplifierParameters()
Definition: Amplifier.cxx:20
Amplifier::ResponseFunction
static double ResponseFunction(double time)
Definition: Amplifier.cxx:31
Amplifier::cluster_vec_it
std::vector< double >::iterator cluster_vec_it
Definition: Amplifier.h:14
Amplifier::TFirst
double TFirst() const
Definition: Amplifier.h:83
Amplifier::PassedThreshold
bool PassedThreshold() const
Definition: Amplifier.h:103
Amplifier::AddCluster
void AddCluster(int bin, double charge)
Definition: Amplifier.cxx:150
bin
Definition: BinsDiffFromStripMedian.h:43
Amplifier::Charge
double Charge() const
Definition: Amplifier.h:92
Amplifier::m_integrationWindow
int m_integrationWindow
Definition: Amplifier.h:56
Amplifier::DoAdcResponse
void DoAdcResponse()
Definition: Amplifier.cxx:197
Amplifier::m_integral
double m_integral
Definition: Amplifier.h:63
Amplifier::AddClusters
bool AddClusters(const cluster_vec &clusters)
Definition: Amplifier.cxx:128
Amplifier::SetTriggerElectron
void SetTriggerElectron(double el)
Definition: Amplifier.h:96
Amplifier::m_adcOffset
double m_adcOffset
Definition: Amplifier.h:74
Amplifier::InitResponse
void InitResponse(unsigned int bins, double binsize)
Definition: Amplifier.cxx:96
Amplifier::cluster_vec
std::vector< double > cluster_vec
Definition: Amplifier.h:13
Amplifier::m_adcResponse
double m_adcResponse
Definition: Amplifier.h:64
Amplifier::~Amplifier
~Amplifier()
Amplifier::TThreshold
double TThreshold() const
Definition: Amplifier.h:80
Amplifier::m_adcFactor
double m_adcFactor
Definition: Amplifier.h:75
Amplifier::m_signal_stop
cluster_vec_it m_signal_stop
Definition: Amplifier.h:68
Amplifier::m_signal
cluster_vec m_signal
Definition: Amplifier.h:62
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
Amplifier::Integral
double Integral()
Definition: Amplifier.cxx:186
plotting.yearwise_luminosity_vs_mu.bins
bins
Definition: yearwise_luminosity_vs_mu.py:30
Amplifier::m_triggerElectron
double m_triggerElectron
Definition: Amplifier.h:54
Amplifier::Reset
void Reset()
Definition: Amplifier.cxx:118
charge
double charge(const T &p)
Definition: AtlasPID.h:986
Amplifier::m_response
cluster_vec m_response
Definition: Amplifier.h:61
Amplifier::cluster_vec_const_it
std::vector< double >::const_iterator cluster_vec_const_it
Definition: Amplifier.h:15
Amplifier::AdcResponse
double AdcResponse() const
Definition: Amplifier.h:89
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
Amplifier::SetIntegrationWindow
void SetIntegrationWindow(double win)
Definition: Amplifier.h:100
Amplifier::m_binsize
double m_binsize
Definition: Amplifier.h:53
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
Amplifier::Amplifier
Amplifier()
Definition: Amplifier.cxx:9
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
Amplifier::m_adcFraction
double m_adcFraction
Definition: Amplifier.h:76
Amplifier::m_responseMax
double m_responseMax
Definition: Amplifier.h:59
Amplifier::m_cluster_begin
cluster_vec_const_it m_cluster_begin
Definition: Amplifier.h:70
Amplifier::m_signal_th
cluster_vec_it m_signal_th
Definition: Amplifier.h:67