ATLAS Offline Software
Loading...
Searching...
No Matches
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
31typedef 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
121friend class TileInfoLoader;
122
123 public:
124
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;
139 std::string m_filenameSLoCIS;
141 std::string m_filenameHiCIS;
143 std::string m_filenameSHiCIS;
145
146 // CIS Leakage Pulse shapes and derivatives
147 std::string m_filenameSLeakLo;
148 std::string m_filenameLeakLo;
150 std::string m_filenameDLeakLo;
151 std::string m_filenameSLeakHi;
152 std::string m_filenameLeakHi;
154 std::string m_filenameDLeakHi;
155
156 // Physics Pulse shapes and derivatives
157 std::string m_filenameLoPhys;
158 std::string m_filenameHiPhys;
161
162 // Laser Pulse shapes and derivatives
163 std::string m_filenameLoLas;
164 std::string m_filenameHiLas;
167
168 // Digitizer noise RMS as a function of channel number
170 std::string m_filenameNkNoise;
171
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
#define y
#define x
std::string m_filenameDSLeakHi
std::string m_filenameHiCIS
std::string m_filenameHiCISDer
std::string m_filenameLeakLo
std::string m_filenameLoCIS
std::string m_filenameLoPhys
std::string m_filenameSLoCISDer
const TilePulseShapesStruct * TilePSstruct() const
std::string m_filenameLeakHi
std::string m_filenameHiLasDer
std::string m_filenameSLoCIS
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)
friend class TileInfoLoader
TilePulseShapesStruct * m_shapes
void load(MsgStream &log)
std::string m_filenameSLeakLo
std::string m_filenameHiPhysDer
std::string m_filenameDLeakLo
std::string m_filenameSHiCISDer
std::string m_filenameDLeakHi
std::string m_filenameOrigNoise
std::string m_filenameLoPhysDer
std::string m_filenameSHiCIS
std::string m_filenameLoLas
std::string m_filenameSLeakHi
std::string m_filenameDSLeakLo
std::string m_filenameNkNoise
std::string m_filenameHiPhys
std::string m_filenameHiLas
std::string m_filenameLoCISDer
std::string m_filenameLoLasDer
std::vector< double > m_tdllas
Low Gain Pulse Laser.
std::vector< double > m_noiseNkLo
(2) Noise with resistors added to PMT channels (so-called noise-killers)
std::vector< double > m_noiseOrigHi
std::vector< double > m_leaklo
std::vector< double > m_yshcis
std::vector< double > m_tsleaklo
std::vector< double > m_tlcis
Low Gain Pulse CIS.
std::vector< double > m_leakhi
std::vector< double > m_tdsleaklo
std::vector< double > m_ylphys
std::vector< double > m_tlphys
Low Gain Pulse Physics.
std::vector< double > m_dleakhi
std::vector< double > m_yhphys
std::vector< double > m_dleaklo
std::vector< double > m_ydllas
std::vector< double > m_tdleakhi
std::vector< double > m_tllas
Low Gain Pulse Laser.
std::vector< double > m_noiseOrigLo
(1) Original noise
std::vector< double > m_tleakhi
std::vector< double > m_tdsleakhi
std::vector< double > m_tdslcis
std::vector< double > m_tsleakhi
std::vector< double > m_ydslcis
std::vector< double > m_ydhcis
std::vector< double > m_tdlphys
Low Gain Pulse Physics.
std::vector< double > m_ylcis
std::vector< double > m_dsleakhi
std::vector< double > m_ydlcis
std::vector< double > m_thphys
Hi Gain Pulse Physics.
std::vector< double > m_tdhcis
Hi Gain Pulse CIS.
std::vector< double > m_tdlcis
Low Gain Pulse CIS.
std::vector< double > m_tdleaklo
std::vector< double > m_yllas
std::vector< double > m_tleaklo
std::vector< double > m_tdshcis
std::vector< double > m_yslcis
std::vector< double > m_tdhlas
Hi Gain Pulse Laser.
std::vector< double > m_sleakhi
std::vector< double > m_yhcis
std::vector< double > m_ydshcis
std::vector< double > m_dsleaklo
std::vector< double > m_thcis
Hi Gain Pulse CIS.
std::vector< double > m_ydhphys
std::vector< double > m_tdhphys
Hi Gain Pulse Physics.
std::vector< double > m_ydlphys
std::vector< double > m_sleaklo
std::vector< double > m_tslcis
std::vector< double > m_tshcis
std::vector< double > m_thlas
Hi Gain Pulse Laser.
std::vector< double > m_ydhlas
std::vector< double > m_noiseNkHi
std::vector< double > m_yhlas