ATLAS Offline Software
TilePulseShapes.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TILECONDITIONS_TILEPULSESHAPES_H
6 #define TILECONDITIONS_TILEPULSESHAPES_H
7 
8 #include <vector>
9 #include "GaudiKernel/MsgStream.h"
10 
12 #define MAX_PMT 48
13 
14 #define MAX_SAMPLES 16
15 
16 #define MAX_LO_PULSE_CIS 100
17 #define MAX_LO_PULSE_CIS_SMALL 100
18 #define MAX_HI_PULSE_CIS 100
19 #define MAX_HI_PULSE_CIS_SMALL 100
20 #define MAX_LO_PULSE_PHYS 401
21 #define MAX_HI_PULSE_PHYS 401
22 #define MAX_LO_PULSE_LAS 100
23 #define MAX_HI_PULSE_LAS 100
24 
25 // constants for digi data pulse fits
26 #define EPS_DG 1.0E-8
27 #define SATURATED_ADC_VALUE 1023.0
28 #define DELTA_CHI2 0.01
29 #define MAX_CHI2 1.0E+5
30 
31 typedef struct {
32 
34  std::vector<double> m_tlcis; // CIS pulse shape, big cap 100 pF
35  std::vector<double> m_ylcis;
36  std::vector<double> m_tslcis; // CIS pulse shape, small cap 5.2 pF
37  std::vector<double> m_yslcis;
38  std::vector<double> m_tleaklo;
39  std::vector<double> m_leaklo;
40  std::vector<double> m_tsleaklo;
41  std::vector<double> m_sleaklo;
42 
44  std::vector<double> m_thcis; // CIS pulse shape, big cap 100 pF
45  std::vector<double> m_yhcis;
46  std::vector<double> m_tshcis; // CIS pulse shape, small cap 5.2 pF
47  std::vector<double> m_yshcis;
48  std::vector<double> m_tleakhi;
49  std::vector<double> m_leakhi;
50  std::vector<double> m_tsleakhi;
51  std::vector<double> m_sleakhi;
52 
54  std::vector<double> m_tlphys;
55  std::vector<double> m_ylphys;
56 
58  std::vector<double> m_thphys;
59  std::vector<double> m_yhphys;
60 
62  std::vector<double> m_tllas;
63  std::vector<double> m_yllas;
64 
66  std::vector<double> m_thlas;
67  std::vector<double> m_yhlas;
68 
69  // Derivatives of the pulse shapes:
70 
72  std::vector<double> m_tdlcis;
73  std::vector<double> m_ydlcis;
74  std::vector<double> m_tdslcis;
75  std::vector<double> m_ydslcis;
76  std::vector<double> m_tdleaklo;
77  std::vector<double> m_dleaklo;
78  std::vector<double> m_tdsleaklo;
79  std::vector<double> m_dsleaklo;
80 
82  std::vector<double> m_tdhcis;
83  std::vector<double> m_ydhcis;
84  std::vector<double> m_tdshcis;
85  std::vector<double> m_ydshcis;
86  std::vector<double> m_tdleakhi;
87  std::vector<double> m_dleakhi;
88  std::vector<double> m_tdsleakhi;
89  std::vector<double> m_dsleakhi;
90 
92  std::vector<double> m_tdlphys;
93  std::vector<double> m_ydlphys;
94 
96  std::vector<double> m_tdhphys;
97  std::vector<double> m_ydhphys;
98 
100  std::vector<double> m_tdllas;
101  std::vector<double> m_ydllas;
102 
104  std::vector<double> m_tdhlas;
105  std::vector<double> m_ydhlas;
106 
107  // Digitizer noise RMS as a function of channel number
108 
110  std::vector<double> m_noiseOrigLo;
111  std::vector<double> m_noiseOrigHi;
112 
114  std::vector<double> m_noiseNkLo;
115  std::vector<double> m_noiseNkHi;
116 
118 
120 
121 friend class TileInfoLoader;
122 
123  public:
124 
125  TilePulseShapes();
127 
128  void load(MsgStream &log);
129 
130  const TilePulseShapesStruct * TilePSstruct () const { return m_shapes; }
131 
132  bool loaded() { return m_loaded; }
133 
134  private:
135 
136  // CIS Pulse shapes and derivatives
137  std::string m_filenameLoCIS;
138  std::string m_filenameLoCISDer;
139  std::string m_filenameSLoCIS;
140  std::string m_filenameSLoCISDer;
141  std::string m_filenameHiCIS;
142  std::string m_filenameHiCISDer;
143  std::string m_filenameSHiCIS;
144  std::string m_filenameSHiCISDer;
145 
146  // CIS Leakage Pulse shapes and derivatives
147  std::string m_filenameSLeakLo;
148  std::string m_filenameLeakLo;
149  std::string m_filenameDSLeakLo;
150  std::string m_filenameDLeakLo;
151  std::string m_filenameSLeakHi;
152  std::string m_filenameLeakHi;
153  std::string m_filenameDSLeakHi;
154  std::string m_filenameDLeakHi;
155 
156  // Physics Pulse shapes and derivatives
157  std::string m_filenameLoPhys;
158  std::string m_filenameHiPhys;
159  std::string m_filenameLoPhysDer;
160  std::string m_filenameHiPhysDer;
161 
162  // Laser Pulse shapes and derivatives
163  std::string m_filenameLoLas;
164  std::string m_filenameHiLas;
165  std::string m_filenameLoLasDer;
166  std::string m_filenameHiLasDer;
167 
168  // Digitizer noise RMS as a function of channel number
169  std::string m_filenameOrigNoise;
170  std::string m_filenameNkNoise;
171 
172  bool m_loaded;
174 
175  bool ReadFile(MsgStream &log, const std::string& fname, const char *xname, const char * yname,
176  std::vector<double> & x, std::vector<double> & y, int nskip=0);
177 };
178 
179 #endif // TILECONDITIONS_TILEPULSESHAPES_H
TilePulseShapesStruct::m_yllas
std::vector< double > m_yllas
Definition: TilePulseShapes.h:63
TilePulseShapesStruct::m_ydhphys
std::vector< double > m_ydhphys
Definition: TilePulseShapes.h:97
TilePulseShapesStruct::m_tllas
std::vector< double > m_tllas
Low Gain Pulse Laser.
Definition: TilePulseShapes.h:62
TilePulseShapes::m_filenameHiPhysDer
std::string m_filenameHiPhysDer
Definition: TilePulseShapes.h:160
TilePulseShapesStruct::m_tlphys
std::vector< double > m_tlphys
Low Gain Pulse Physics.
Definition: TilePulseShapes.h:54
TilePulseShapesStruct::m_tdleakhi
std::vector< double > m_tdleakhi
Definition: TilePulseShapes.h:86
TilePulseShapes::load
void load(MsgStream &log)
Definition: TilePulseShapes.cxx:23
TilePulseShapes::m_filenameLoLas
std::string m_filenameLoLas
Definition: TilePulseShapes.h:163
TilePulseShapesStruct::m_ylphys
std::vector< double > m_ylphys
Definition: TilePulseShapes.h:55
TilePulseShapes::m_filenameLoCISDer
std::string m_filenameLoCISDer
Definition: TilePulseShapes.h:138
TilePulseShapes::m_filenameDLeakLo
std::string m_filenameDLeakLo
Definition: TilePulseShapes.h:150
TilePulseShapesStruct::m_tdllas
std::vector< double > m_tdllas
Low Gain Pulse Laser.
Definition: TilePulseShapes.h:100
TilePulseShapesStruct::m_ydlphys
std::vector< double > m_ydlphys
Definition: TilePulseShapes.h:93
TilePulseShapesStruct::m_dleakhi
std::vector< double > m_dleakhi
Definition: TilePulseShapes.h:87
TilePulseShapes::m_filenameLoPhys
std::string m_filenameLoPhys
Definition: TilePulseShapes.h:157
TilePulseShapes::m_filenameHiLas
std::string m_filenameHiLas
Definition: TilePulseShapes.h:164
TilePulseShapesStruct::m_ylcis
std::vector< double > m_ylcis
Definition: TilePulseShapes.h:35
TilePulseShapesStruct::m_yhphys
std::vector< double > m_yhphys
Definition: TilePulseShapes.h:59
TilePulseShapesStruct::m_tsleaklo
std::vector< double > m_tsleaklo
Definition: TilePulseShapes.h:40
TilePulseShapesStruct::m_tdlphys
std::vector< double > m_tdlphys
Low Gain Pulse Physics.
Definition: TilePulseShapes.h:92
TilePulseShapes::m_filenameHiCISDer
std::string m_filenameHiCISDer
Definition: TilePulseShapes.h:142
TilePulseShapesStruct::m_tleakhi
std::vector< double > m_tleakhi
Definition: TilePulseShapes.h:48
TilePulseShapesStruct::m_noiseNkHi
std::vector< double > m_noiseNkHi
Definition: TilePulseShapes.h:115
TilePulseShapes::TilePulseShapes
TilePulseShapes()
Definition: TilePulseShapes.cxx:11
TilePulseShapesStruct::m_tdhcis
std::vector< double > m_tdhcis
Hi Gain Pulse CIS.
Definition: TilePulseShapes.h:82
x
#define x
TilePulseShapesStruct::m_thphys
std::vector< double > m_thphys
Hi Gain Pulse Physics.
Definition: TilePulseShapes.h:58
TilePulseShapes::m_shapes
TilePulseShapesStruct * m_shapes
Definition: TilePulseShapes.h:173
TilePulseShapesStruct::m_yhlas
std::vector< double > m_yhlas
Definition: TilePulseShapes.h:67
TilePulseShapes::m_filenameSHiCISDer
std::string m_filenameSHiCISDer
Definition: TilePulseShapes.h:144
TilePulseShapesStruct::m_tslcis
std::vector< double > m_tslcis
Definition: TilePulseShapes.h:36
TileInfoLoader
Definition: TileInfoLoader.h:53
TilePulseShapesStruct::m_ydlcis
std::vector< double > m_ydlcis
Definition: TilePulseShapes.h:73
TilePulseShapes::~TilePulseShapes
~TilePulseShapes()
Definition: TilePulseShapes.cxx:17
TilePulseShapesStruct::m_dsleaklo
std::vector< double > m_dsleaklo
Definition: TilePulseShapes.h:79
TilePulseShapes::loaded
bool loaded()
Definition: TilePulseShapes.h:132
TilePulseShapes::m_filenameSLeakLo
std::string m_filenameSLeakLo
Definition: TilePulseShapes.h:147
TilePulseShapes::m_filenameSLeakHi
std::string m_filenameSLeakHi
Definition: TilePulseShapes.h:151
TilePulseShapes::m_filenameHiPhys
std::string m_filenameHiPhys
Definition: TilePulseShapes.h:158
TilePulseShapesStruct::m_ydslcis
std::vector< double > m_ydslcis
Definition: TilePulseShapes.h:75
TilePulseShapesStruct::m_yhcis
std::vector< double > m_yhcis
Definition: TilePulseShapes.h:45
TilePulseShapes::m_filenameHiCIS
std::string m_filenameHiCIS
Definition: TilePulseShapes.h:141
TilePulseShapesStruct::m_tshcis
std::vector< double > m_tshcis
Definition: TilePulseShapes.h:46
TilePulseShapesStruct::m_dleaklo
std::vector< double > m_dleaklo
Definition: TilePulseShapes.h:77
TilePulseShapesStruct::m_yshcis
std::vector< double > m_yshcis
Definition: TilePulseShapes.h:47
TilePulseShapes::TilePSstruct
const TilePulseShapesStruct * TilePSstruct() const
Definition: TilePulseShapes.h:130
TilePulseShapesStruct::m_ydllas
std::vector< double > m_ydllas
Definition: TilePulseShapes.h:101
TilePulseShapes::m_filenameLoPhysDer
std::string m_filenameLoPhysDer
Definition: TilePulseShapes.h:159
TilePulseShapesStruct::m_noiseNkLo
std::vector< double > m_noiseNkLo
(2) Noise with resistors added to PMT channels (so-called noise-killers)
Definition: TilePulseShapes.h:114
TilePulseShapes::m_filenameSLoCIS
std::string m_filenameSLoCIS
Definition: TilePulseShapes.h:139
TilePulseShapes::m_filenameHiLasDer
std::string m_filenameHiLasDer
Definition: TilePulseShapes.h:166
TilePulseShapesStruct::m_leakhi
std::vector< double > m_leakhi
Definition: TilePulseShapes.h:49
TilePulseShapes::m_loaded
bool m_loaded
Definition: TilePulseShapes.h:172
TilePulseShapesStruct::m_thcis
std::vector< double > m_thcis
Hi Gain Pulse CIS.
Definition: TilePulseShapes.h:44
TilePulseShapes::ReadFile
bool ReadFile(MsgStream &log, const std::string &fname, const char *xname, const char *yname, std::vector< double > &x, std::vector< double > &y, int nskip=0)
Definition: TilePulseShapes.cxx:112
TilePulseShapesStruct::m_leaklo
std::vector< double > m_leaklo
Definition: TilePulseShapes.h:39
TilePulseShapes::m_filenameNkNoise
std::string m_filenameNkNoise
Definition: TilePulseShapes.h:170
TilePulseShapesStruct::m_ydhlas
std::vector< double > m_ydhlas
Definition: TilePulseShapes.h:105
TilePulseShapesStruct::m_noiseOrigHi
std::vector< double > m_noiseOrigHi
Definition: TilePulseShapes.h:111
TilePulseShapesStruct
Definition: TilePulseShapes.h:31
TilePulseShapesStruct::m_dsleakhi
std::vector< double > m_dsleakhi
Definition: TilePulseShapes.h:89
TilePulseShapesStruct::m_tdhlas
std::vector< double > m_tdhlas
Hi Gain Pulse Laser.
Definition: TilePulseShapes.h:104
TilePulseShapesStruct::m_tdsleaklo
std::vector< double > m_tdsleaklo
Definition: TilePulseShapes.h:78
TilePulseShapesStruct::m_tdhphys
std::vector< double > m_tdhphys
Hi Gain Pulse Physics.
Definition: TilePulseShapes.h:96
TilePulseShapesStruct::m_ydshcis
std::vector< double > m_ydshcis
Definition: TilePulseShapes.h:85
TilePulseShapes::m_filenameDSLeakHi
std::string m_filenameDSLeakHi
Definition: TilePulseShapes.h:153
mc.nskip
nskip
Definition: mc.PhPy8EG_Hto4l_NNLOPS_nnlo_30_ggH125_ZZ4l.py:41
TilePulseShapes::m_filenameSLoCISDer
std::string m_filenameSLoCISDer
Definition: TilePulseShapes.h:140
TilePulseShapesStruct::m_tleaklo
std::vector< double > m_tleaklo
Definition: TilePulseShapes.h:38
TilePulseShapesStruct::m_tdshcis
std::vector< double > m_tdshcis
Definition: TilePulseShapes.h:84
TilePulseShapes::m_filenameLeakLo
std::string m_filenameLeakLo
Definition: TilePulseShapes.h:148
python.AthDsoLogger.fname
string fname
Definition: AthDsoLogger.py:67
TilePulseShapes
Definition: TilePulseShapes.h:119
TilePulseShapes::m_filenameLeakHi
std::string m_filenameLeakHi
Definition: TilePulseShapes.h:152
TilePulseShapesStruct::m_tlcis
std::vector< double > m_tlcis
Low Gain Pulse CIS.
Definition: TilePulseShapes.h:34
TilePulseShapesStruct::m_sleaklo
std::vector< double > m_sleaklo
Definition: TilePulseShapes.h:41
TilePulseShapesStruct::m_tsleakhi
std::vector< double > m_tsleakhi
Definition: TilePulseShapes.h:50
y
#define y
TilePulseShapesStruct::m_yslcis
std::vector< double > m_yslcis
Definition: TilePulseShapes.h:37
TilePulseShapes::m_filenameSHiCIS
std::string m_filenameSHiCIS
Definition: TilePulseShapes.h:143
TilePulseShapesStruct::m_tdslcis
std::vector< double > m_tdslcis
Definition: TilePulseShapes.h:74
TilePulseShapesStruct::m_sleakhi
std::vector< double > m_sleakhi
Definition: TilePulseShapes.h:51
TilePulseShapes::m_filenameDLeakHi
std::string m_filenameDLeakHi
Definition: TilePulseShapes.h:154
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
TilePulseShapes::m_filenameDSLeakLo
std::string m_filenameDSLeakLo
Definition: TilePulseShapes.h:149
TilePulseShapes::m_filenameLoLasDer
std::string m_filenameLoLasDer
Definition: TilePulseShapes.h:165
TilePulseShapes::m_filenameLoCIS
std::string m_filenameLoCIS
Definition: TilePulseShapes.h:137
TilePulseShapes::m_filenameOrigNoise
std::string m_filenameOrigNoise
Definition: TilePulseShapes.h:169
TilePulseShapesStruct::m_tdsleakhi
std::vector< double > m_tdsleakhi
Definition: TilePulseShapes.h:88
TilePulseShapesStruct::m_thlas
std::vector< double > m_thlas
Hi Gain Pulse Laser.
Definition: TilePulseShapes.h:66
TilePulseShapesStruct::m_tdlcis
std::vector< double > m_tdlcis
Low Gain Pulse CIS.
Definition: TilePulseShapes.h:72
TilePulseShapesStruct::m_tdleaklo
std::vector< double > m_tdleaklo
Definition: TilePulseShapes.h:76
TilePulseShapesStruct::m_ydhcis
std::vector< double > m_ydhcis
Definition: TilePulseShapes.h:83
TilePulseShapesStruct::m_noiseOrigLo
std::vector< double > m_noiseOrigLo
(1) Original noise
Definition: TilePulseShapes.h:110