ATLAS Offline Software
Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
Amplifier Class Reference

#include <Amplifier.h>

Collaboration diagram for Amplifier:

Public Member Functions

 Amplifier ()
 
 ~Amplifier ()
 
double TThreshold () const
 
double TFirst () const
 
double AdcResponse () const
 
double Charge () const
 
bool PassedThreshold () const
 
void Reset ()
 
void SetTriggerElectron (double el)
 
void SetIntegrationWindow (double win)
 
void InitResponse (unsigned int bins, double binsize)
 
bool AddClusters (const cluster_vec &clusters)
 

Private Types

typedef std::vector< double > cluster_vec
 
typedef std::vector< double >::iterator cluster_vec_it
 
typedef std::vector< double >::const_iterator cluster_vec_const_it
 

Private Member Functions

void InitAmplifierParameters ()
 
void DoAdcResponse ()
 
double Integral ()
 
void AddCluster (int bin, double charge)
 

Static Private Member Functions

static double ResponseFunction (double time)
 

Private Attributes

double m_binsize = 0.0
 
double m_triggerElectron = 0.0
 
double m_threshold = 0.0
 
int m_integrationWindow
 
double m_responseMax = 0.0
 
cluster_vec m_response
 
cluster_vec m_signal
 
double m_integral
 
double m_adcResponse
 
cluster_vec_it m_signal_th
 
cluster_vec_it m_signal_stop
 
cluster_vec_const_it m_cluster_stop
 
cluster_vec_const_it m_cluster_begin
 
double m_adcOffset = 0.0
 
double m_adcFactor = 0.0
 
double m_adcFraction = 0.0
 

Detailed Description

Definition at line 11 of file Amplifier.h.

Member Typedef Documentation

◆ cluster_vec

typedef std::vector<double> Amplifier::cluster_vec
private

Definition at line 14 of file Amplifier.h.

◆ cluster_vec_const_it

typedef std::vector<double>::const_iterator Amplifier::cluster_vec_const_it
private

Definition at line 16 of file Amplifier.h.

◆ cluster_vec_it

typedef std::vector<double>::iterator Amplifier::cluster_vec_it
private

Definition at line 15 of file Amplifier.h.

Constructor & Destructor Documentation

◆ Amplifier()

Amplifier::Amplifier ( )

Definition at line 9 of file Amplifier.cxx.

9  :
11  m_integral(0.),
12  m_adcResponse(0.)
13 {
15 }

◆ ~Amplifier()

Amplifier::~Amplifier ( )
default

Member Function Documentation

◆ AdcResponse()

double Amplifier::AdcResponse ( ) const
inline

Definition at line 90 of file Amplifier.h.

90  {
91  return m_adcResponse;
92 }

◆ AddCluster()

void Amplifier::AddCluster ( int  bin,
double  charge 
)
private

Definition at line 154 of file Amplifier.cxx.

155 {
156  // set start values for signal and response iterator
157  cluster_vec_it response_it = m_response.begin();
158  cluster_vec_it signal_it = m_signal.begin() + startbin;
159 
160  // fill signal vector until stop
161  while(signal_it != m_signal_stop) {
162 
163  *signal_it += *response_it*charge; // add response to signal
164  if( *signal_it > m_threshold ) { // check if signal above threshold
165 
166  // if new threshold found
167  if( signal_it - m_signal_th < 0 || m_signal_th == m_signal.begin()){
168  m_signal_th = signal_it; // store new threshold
169 
170  /* if the bin (threshold + integration window) lies
171  within the signal vector, point the stop iterator to it.
172  nessicary to make sure m_signal_stop never points beyond the m_signal.end() */
173 
174  if( m_signal.end()-signal_it > m_integrationWindow ){
177  }
178  }
179  ++signal_it;++response_it; // go to next bin
180  while(signal_it != m_signal_stop) { // loop over the remaining bins
181  *signal_it += *response_it*charge;
182  ++signal_it;++response_it;
183  }
184  break; // exit loop
185  }
186  ++signal_it;++response_it;
187  }
188 }

◆ AddClusters()

bool Amplifier::AddClusters ( const cluster_vec clusters)

Definition at line 132 of file Amplifier.cxx.

133 {
134  if(clusters.empty()){ // no clusters, no signal!
135  return false;
136  }
137 
138  // reset cluster iterators
139  m_cluster_begin = clusters.begin();
140  m_cluster_stop = clusters.end(); // stop iterator can be changed in the AddCluster-routine
142  int bin(0);
143  for( ; cit!=m_cluster_stop;++cit){ // iterate over all clusters
144  if(*cit == 0.) continue; // check if the cluster size in the current bin is not zero
145  bin = cit - m_cluster_begin; // calculate the corresponding bin number
146  AddCluster(bin,*cit); // add response of cluster to total detector response
147  }
148  Integral(); // calculate the Q-integral
149  DoAdcResponse(); // get the ADC response
150 
151  return PassedThreshold();
152 }

◆ Charge()

double Amplifier::Charge ( ) const
inline

Definition at line 93 of file Amplifier.h.

93  {
94  return m_integral;
95 }

◆ DoAdcResponse()

void Amplifier::DoAdcResponse ( )
private

Definition at line 201 of file Amplifier.cxx.

202 {
203  if(m_integral > 0){
205  }else{
206  m_adcResponse = -1000;
207  }
208 }

◆ InitAmplifierParameters()

void Amplifier::InitAmplifierParameters ( )
private

Definition at line 20 of file Amplifier.cxx.

21 {
22  m_threshold = 0.;
23  m_responseMax = 0.;
24  m_triggerElectron = 20.;
25  m_adcOffset = 30.;
26  m_adcFactor = 90.;
27  m_adcFraction = 10.;
28  m_binsize = 1.;
29  //std::cout << "Amplifier Threshold " << m_triggerElectron << std::endl;
30 }

◆ InitResponse()

void Amplifier::InitResponse ( unsigned int  bins,
double  binsize 
)

Definition at line 97 of file Amplifier.cxx.

98 {
99  m_binsize = binsize;
100  m_integrationWindow = (int)(20./binsize)-1 ;
101 
102  m_response.resize(bins);
103  m_signal.resize(bins);
104  //std::cout << "Amplifier Initialize: new response vector with " << m_response.size() << " bins" << std::endl;
105 
106  cluster_vec_it it = m_response.begin();
107  double i(0.);
108  double resp(0),max(0.);//,integral(0.);
109  while( it != m_response.end() ){
111  if(resp>max) max = resp;
112  //integral+=resp;
113  *it = resp;
114  ++it;++i;
115  }
116  m_responseMax = max;
118  //std::cout << "max " << max << " integral " << integral << " threshold " << m_threshold <<std::endl;
119  Reset();
120 }

◆ Integral()

double Amplifier::Integral ( )
private

Definition at line 190 of file Amplifier.cxx.

191 {
193  m_integral = 0.;
194  while(s != m_signal_stop){ // sum charge within integration window
195  m_integral += *s;
196  ++s;
197  }
198  return m_integral;
199 }

◆ PassedThreshold()

bool Amplifier::PassedThreshold ( ) const
inline

Definition at line 105 of file Amplifier.h.

105  {
106  return m_signal.begin() != m_signal_th;
107 }

◆ Reset()

void Amplifier::Reset ( )

Definition at line 122 of file Amplifier.cxx.

123 {
124  m_integral = -10000.;
126  for( ; dit != m_signal.end(); ++dit)
127  *dit = 0.;
128  m_signal_th = m_signal.begin();
129  m_signal_stop = m_signal.end();
130 }

◆ ResponseFunction()

double Amplifier::ResponseFunction ( double  time)
staticprivate

Definition at line 32 of file Amplifier.cxx.

33 {
34  /*
35  amplifier f(t) = (t/tau)**3 exp(-t/tau) u(t)
36 
37  signal I(t) = I0/(t+t0) u(t)
38 
39  u(t) step function
40  tau 15 ns, t0=12 nsec, I0=1
41 
42  */
43  //double TP=20.;
44  double TP=15.;
45  double T0=12./2.;
46  /*
47  FI1=1./3.
48  FI2=2./3.
49  signal = ( FI1 exp(t/t0)/t0 + FI2 exp(-t/(9*t0))/(9*t0))
50  ion/electron fraction electron delta function ion signal
51  */
52  double FI1=1./3.;
53  double FI2=2./3.;
54  double face=2.0;
55 
56  /* third order amplifier
57 
58  f(t)= u(t) * t/tau**3* exp(-t/tau)/3!/tau
59  I(t)= u(t) * exp(-t/t0)/ t0
60 
61  */
62  double TAU=TP/3.;
63  double a=1./TAU;
64  double b =1./T0;
65  double a4 = a*a*a*a;
66  double ab4 = a-b;
67  ab4 = ab4*ab4*ab4*ab4;
68  double dt = (a-b)*time;
69  double dt2 = dt*dt;
70  double dt3 = dt2*dt;
71  // double dt4 = dt2*dt2; // not used
72 
73  double F3 = a4*time*time*time*exp(-a*time)/6.;
74  double xnor = b*a4/ab4;
75  double res31= xnor*(exp(-b*time) - exp(-a*time)
76  -dt*exp(-a*time)
77  -dt2/2.*exp(-a*time)
78  -dt3/6.*exp(-a*time));
79 
80  b =1./T0/9.;
81  ab4 = a-b;
82  ab4 = ab4*ab4*ab4*ab4;
83  dt = (a-b)*time;
84  dt2 = dt*dt;
85  dt3 = dt2*dt;
86  // dt4 = dt2*dt2; // not used
87  xnor = b*a4/ ab4;
88  double res32= xnor*(exp(-b*time) - exp(-a*time)
89  -dt*exp(-a*time)
90  -dt2/2.*exp(-a*time)
91  -dt3/6.*exp(-a*time));
92  double resolution=(face*(res31*FI1+res32*FI2)+F3)/(1.+face);
93 
94  return resolution;
95 }

◆ SetIntegrationWindow()

void Amplifier::SetIntegrationWindow ( double  win)
inline

Definition at line 102 of file Amplifier.h.

102  {
103  m_integrationWindow = (int)(win/m_binsize)-1;
104 }

◆ SetTriggerElectron()

void Amplifier::SetTriggerElectron ( double  el)
inline

Definition at line 97 of file Amplifier.h.

97  {
100  //std::cout << "Amplifier: Changing threshold: now triggering on " << el << "th electron " << "new threshold " << m_threshold << std::endl;
101 }

◆ TFirst()

double Amplifier::TFirst ( ) const
inline

Definition at line 84 of file Amplifier.h.

84  {
85  cluster_vec_const_it cit = m_signal.begin();
86  while( *cit == 0 )
87  ++cit;
88  return m_binsize*(cit-m_signal.begin()); ;
89 }

◆ TThreshold()

double Amplifier::TThreshold ( ) const
inline

Definition at line 81 of file Amplifier.h.

81  {
82  return m_binsize*(m_signal_th-m_signal.begin());
83 }

Member Data Documentation

◆ m_adcFactor

double Amplifier::m_adcFactor = 0.0
private

Definition at line 76 of file Amplifier.h.

◆ m_adcFraction

double Amplifier::m_adcFraction = 0.0
private

Definition at line 77 of file Amplifier.h.

◆ m_adcOffset

double Amplifier::m_adcOffset = 0.0
private

Definition at line 75 of file Amplifier.h.

◆ m_adcResponse

double Amplifier::m_adcResponse
private

Definition at line 65 of file Amplifier.h.

◆ m_binsize

double Amplifier::m_binsize = 0.0
private

Definition at line 54 of file Amplifier.h.

◆ m_cluster_begin

cluster_vec_const_it Amplifier::m_cluster_begin
private

Definition at line 71 of file Amplifier.h.

◆ m_cluster_stop

cluster_vec_const_it Amplifier::m_cluster_stop
private

Definition at line 70 of file Amplifier.h.

◆ m_integral

double Amplifier::m_integral
private

Definition at line 64 of file Amplifier.h.

◆ m_integrationWindow

int Amplifier::m_integrationWindow
private

Definition at line 57 of file Amplifier.h.

◆ m_response

cluster_vec Amplifier::m_response
private

Definition at line 62 of file Amplifier.h.

◆ m_responseMax

double Amplifier::m_responseMax = 0.0
private

Definition at line 60 of file Amplifier.h.

◆ m_signal

cluster_vec Amplifier::m_signal
private

Definition at line 63 of file Amplifier.h.

◆ m_signal_stop

cluster_vec_it Amplifier::m_signal_stop
private

Definition at line 69 of file Amplifier.h.

◆ m_signal_th

cluster_vec_it Amplifier::m_signal_th
private

Definition at line 68 of file Amplifier.h.

◆ m_threshold

double Amplifier::m_threshold = 0.0
private

Definition at line 56 of file Amplifier.h.

◆ m_triggerElectron

double Amplifier::m_triggerElectron = 0.0
private

Definition at line 55 of file Amplifier.h.


The documentation for this class was generated from the following files:
Amplifier::m_threshold
double m_threshold
Definition: Amplifier.h:56
Amplifier::m_cluster_stop
cluster_vec_const_it m_cluster_stop
Definition: Amplifier.h:70
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Amplifier::InitAmplifierParameters
void InitAmplifierParameters()
Definition: Amplifier.cxx:20
Amplifier::ResponseFunction
static double ResponseFunction(double time)
Definition: Amplifier.cxx:32
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
max
#define max(a, b)
Definition: cfImp.cxx:41
Amplifier::cluster_vec_it
std::vector< double >::iterator cluster_vec_it
Definition: Amplifier.h:15
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
python.App.bins
bins
Definition: App.py:410
Amplifier::PassedThreshold
bool PassedThreshold() const
Definition: Amplifier.h:105
Amplifier::AddCluster
void AddCluster(int bin, double charge)
Definition: Amplifier.cxx:154
skel.it
it
Definition: skel.GENtoEVGEN.py:423
bin
Definition: BinsDiffFromStripMedian.h:43
Amplifier::m_integrationWindow
int m_integrationWindow
Definition: Amplifier.h:57
Amplifier::DoAdcResponse
void DoAdcResponse()
Definition: Amplifier.cxx:201
Amplifier::m_integral
double m_integral
Definition: Amplifier.h:64
Amplifier::m_adcOffset
double m_adcOffset
Definition: Amplifier.h:75
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
Dedxcorrection::resolution
double resolution[nGasTypes][nParametersResolution]
Definition: TRT_ToT_Corrections.h:46
TCS::TAU
@ TAU
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/L1TopoCommon/Types.h:18
Amplifier::m_adcResponse
double m_adcResponse
Definition: Amplifier.h:65
lumiFormat.i
int i
Definition: lumiFormat.py:92
Amplifier::m_adcFactor
double m_adcFactor
Definition: Amplifier.h:76
Amplifier::m_signal_stop
cluster_vec_it m_signal_stop
Definition: Amplifier.h:69
CaloNoise_fillDB.dt
dt
Definition: CaloNoise_fillDB.py:58
Amplifier::m_signal
cluster_vec m_signal
Definition: Amplifier.h:63
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
Amplifier::Integral
double Integral()
Definition: Amplifier.cxx:190
Amplifier::m_triggerElectron
double m_triggerElectron
Definition: Amplifier.h:55
Amplifier::Reset
void Reset()
Definition: Amplifier.cxx:122
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
plotBeamSpotVxVal.bin
int bin
Definition: plotBeamSpotVxVal.py:83
charge
double charge(const T &p)
Definition: AtlasPID.h:494
Amplifier::m_response
cluster_vec m_response
Definition: Amplifier.h:62
a
TList * a
Definition: liststreamerinfos.cxx:10
Amplifier::cluster_vec_const_it
std::vector< double >::const_iterator cluster_vec_const_it
Definition: Amplifier.h:16
Amplifier::m_binsize
double m_binsize
Definition: Amplifier.h:54
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
Amplifier::m_adcFraction
double m_adcFraction
Definition: Amplifier.h:77
Amplifier::m_responseMax
double m_responseMax
Definition: Amplifier.h:60
Amplifier::m_cluster_begin
cluster_vec_const_it m_cluster_begin
Definition: Amplifier.h:71
Amplifier::m_signal_th
cluster_vec_it m_signal_th
Definition: Amplifier.h:68