ATLAS Offline Software
TileLaserObject.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /*author Renato Febbraro*/
6 /*date 3/7/2007*/
7 /*modified 27/5/2008 adding methods for PLC*/
8 /*renato.febbraro@cern.ch*/
9 
10 /*modified 23/08/2014 to accommodate LASERII system*/
11 /*Marco van Woerden <mvanwoer@cern.ch>*/
12 
14 #include <sstream>
15 
16 
18  : m_slowCtrl()
19  , m_laserParameter()
20  , m_diodesLG(nbDiodes,TileLaserDiode())
21  , m_diodesHG(nbDiodes,TileLaserDiode())
22  , m_pmtsLG(nbPmts,TileLaserPmt())
23  , m_pmtsHG(nbPmts,TileLaserPmt())
24  , m_lascalib(nbTypes,std::vector<TileLasCalib>(16))
25  , m_plc()
26  , m_qdctimeout(false)
27  , m_tdctimeout(false)
28  , m_daqtype(0)
29  , m_BCID(0)
30  , m_version(0)
31  , m_calibtype(-1)
32 {
33 /* for(int type=0;type<nbTypes;++type){
34  m_lascalib.push_back(std::vector<TileLasCalib>());
35  for(int chan=0;chan<nbDiodes+nbPmts;++chan){
36  m_lascalib[type].push_back(TileLasCalib());
37  } // FOR
38  } // FOR*/
39 } // TileLaserObject::TileLaserObject
40 
41 double TileLaserObject::getMean(int chan, int gain, int type) const{
42  if(type-firstType<0 || type-firstType>=nbTypes) return -1.;
43  if(chan<0 || chan>=nbDiodes+nbPmts) return -1.;
44  if(gain!=0 && gain!=1) return -1.;
45  if(m_lascalib[type][chan].getType() == type) return m_lascalib[type][chan].getMean(gain);
46  return -99.;
47 } // getMean
48 
49 double TileLaserObject::getSigma(int chan, int gain, int type) const{
50  if(type-firstType<0 || type-firstType>=nbTypes) return -1.;
51  if(chan<0 || chan>=nbDiodes+nbPmts) return -1.;
52  if(gain!=0 && gain!=1) return -1.;
53  if(m_lascalib[type][chan].getType() == type) return m_lascalib[type][chan].getSigma(gain);
54  return -99.;
55 } // getSigma
56 
57 int TileLaserObject::getType(int chan, int gain, int type) const{
58  if(type-firstType<0 || type-firstType>=nbTypes) return -1;
59  if(chan<0 || chan>=nbDiodes+nbPmts) return -1;
60  if(gain!=0 && gain!=1) return -1;
61  return m_lascalib[type][chan].getType();
62 } // getMean
63 
64 int TileLaserObject::getN(int chan, int gain, int type) const{
65  if(type-firstType<0 || type-firstType>=nbTypes) return -1;
66  if(chan<0 || chan>=nbDiodes+nbPmts) return -1;
67  if(gain!=0 && gain!=1) return -1;
68  return m_lascalib[type][chan].getN();
69 } // getN
70 
71 bool TileLaserObject::isSet(int chan, int gain, int type) const{
72  if(type-firstType<0 || type-firstType>=nbTypes) return false;
73  if(chan<0 || chan>=nbDiodes+nbPmts) return false;
74  if(gain!=0 && gain!=1) return false;
75  return m_lascalib[type][chan].isSet(gain);
76 } // getSigma
77 
79  m_calibtype = type;
80 }
81 
83  return m_calibtype;
84 }
85 
86 void TileLaserObject::setCalib(int chan, int type, double sumXinQDC, double sumX2inQDC, int nevts, int gain){
87  if(!m_lascalib[type][chan].isSet(gain)){
88  m_lascalib[type][chan].setCalib(type,sumXinQDC,sumX2inQDC,nevts,gain);
89  } // IF
90 } // setCalib
91 
92 
93 
94 
95 int TileLaserObject::getDiodeADC(const unsigned int i, const unsigned int gain) const
96 {
97  if(i<nbDiodes){
98  if(gain==0){
99  return m_diodesLG[i].getDiodeADC();
100  } // IF
101  else{
102  return m_diodesHG[i].getDiodeADC();
103  } // IF
104  } else {
105  return 0;
106  }
107 }
108 
109 double TileLaserObject::getDiodePedestal(const unsigned int i, const unsigned int gain) const
110 {
111  if(i<nbDiodes){
112  if(gain==0){
113  return m_diodesLG[i].getDiodePedestal();
114  } // IF
115  else{
116  return m_diodesHG[i].getDiodePedestal();
117  } // IF
118  }else{
119  return 0.0;
120  }
121 }
122 
123 double TileLaserObject::getDiodeSigmaPedestal(const unsigned int i, const unsigned int gain) const
124 {
125  if(i<nbDiodes){
126  if(gain==0){
127  return m_diodesLG[i].getDiodeSigmaPedestal();
128  } // IF
129  else{
130  return m_diodesHG[i].getDiodeSigmaPedestal();
131  } // IF
132  }else{
133  return 0.0;
134  }
135 }
136 
137 
138 double TileLaserObject::getAlpha(const unsigned int i, const unsigned int gain) const
139 {
140  if(i<nbDiodes){
141  if(gain==0){
142  return m_diodesLG[i].getAlpha();
143  } // IF
144  else{
145  return m_diodesHG[i].getAlpha();
146  } // IF
147  }else{
148  return 0.0;
149  }
150 }
151 
152 double TileLaserObject::getSigmaAlpha(const unsigned int i, const unsigned int gain) const
153 {
154  if(i<nbDiodes){
155  if(gain==0){
156  return m_diodesLG[i].getSigmaAlpha();
157  } // IF
158  else{
159  return m_diodesHG[i].getSigmaAlpha();
160  } // IF
161  }else{
162  return 0.0;
163  }
164 }
165 
166 double TileLaserObject::getPedestalAlpha(const unsigned int i, const unsigned int gain) const
167 {
168  if(i<nbDiodes){
169  if(gain==0){
170  return m_diodesLG[i].getPedestalAlpha();
171  } // IF
172  else{
173  return m_diodesHG[i].getPedestalAlpha();
174  } // IF
175  }else{
176  return 0.0;
177  }
178 }
179 
180 double TileLaserObject::getSigmaPedAlpha(const unsigned int i, const unsigned int gain) const
181 {
182  if(i<nbDiodes){
183  if(gain==0){
184  return m_diodesLG[i].getSigmaPedAlpha();
185  } // IF
186  else{
187  return m_diodesHG[i].getSigmaPedAlpha();
188  } // IF
189  }else{
190  return 0.0;
191  }
192 }
193 
194 
195 int TileLaserObject::getPMADC(const unsigned int j, const unsigned int gain ) const
196 {
197  if(j<nbPmts){
198  if(gain==0){
199  return m_pmtsLG[j].getPMADC();
200  } // IF
201  else{
202  return m_pmtsHG[j].getPMADC();
203  } // IF
204  }else{
205  return 0;
206  }
207 }
208 
209 int TileLaserObject::getTDC(const unsigned int j, const unsigned int gain ) const
210 {
211  if(j<nbPmts){
212  if(gain==0){
213  return m_pmtsLG[j].getTDC();
214  } // IF
215  else{
216  return m_pmtsHG[j].getTDC();
217  } // IF
218  }else{
219  return 0;
220  }
221 }
222 
223 double TileLaserObject::getPMPedestal(const unsigned int j, const unsigned int gain ) const
224 {
225  if(j<nbPmts){
226  if(gain==0){
227  return m_pmtsLG[j].getPMPedestal();
228  } // IF
229  else{
230  return m_pmtsHG[j].getPMPedestal();
231  } // IF
232  }else{
233  return 0.0;
234  }
235 }
236 
237 double TileLaserObject::getPMSigmaPedestal(const unsigned int j, const unsigned int gain) const
238 {
239  if(j<nbPmts){
240  if(gain==0){
241  return m_pmtsLG[j].getPMSigmaPedestal();
242  } // IF
243  else{
244  return m_pmtsHG[j].getPMSigmaPedestal();
245  } // IF
246  }else{
247  return 0.0;
248  }
249 }
250 
251 
252 
253 void TileLaserObject::setLaser(const int Counter,
254  const int diodeCurrOrd,
255  const int diodeCurrMeas,
256  const int filtNumber,
257  const int timingDelay,
258  const int version)
259 {
260  m_laserParameter.setLaser(Counter, diodeCurrOrd, diodeCurrMeas, filtNumber, timingDelay);
261  m_version = version;
262  //ATH_MSG_ERROR("TileLaserObject::setLASER " << version);
263 }
264 
265 void TileLaserObject::setControl(const double pumpDiodeTemp,
266  const int timeLastMeasP,
267  const double diodeBoxTemp,
268  const int timeLastMeasD,
269  const double gasFlux,
270  const int timeLastMeasF,
271  const double humidity,
272  const int timeLastMeasH,
273  const time_t lastPedMeas,
274  const time_t lastAlphaMeas)
275 {
276  m_slowCtrl.setControl(pumpDiodeTemp, timeLastMeasP, diodeBoxTemp,timeLastMeasD, gasFlux, timeLastMeasF, humidity, timeLastMeasH, lastPedMeas, lastAlphaMeas);
277 }
278 
279 
280 void TileLaserObject::setPLC(const int alphaPos,
281  const double LVdiodes,
282  const double HVpmts,
283  const int shutter,
284  const int interlock,
285  const int alarm)
286 {
287 
288  m_plc.setPLC(alphaPos, LVdiodes, HVpmts, shutter, interlock, alarm);
289 
290 }
291 
292 void TileLaserObject::setTimeouts(const bool qdc,
293  const bool tdc)
294 {
295  m_qdctimeout = qdc;
296  m_tdctimeout = tdc;
297 }
298 
299 
300 void TileLaserObject::setDiode(const unsigned int diode,
301  const int diodeAdc,
302  const double diodePedestal,
303  const double diodeSigmaPedestal,
304  const double alpha,
305  const double sigmaAlpha,
306  const double pedestalAlpha,
307  const double sigmaPedAlpha,
308  const unsigned int gain)
309 {
310  //ATH_MSG_ERROR("TileLaserObject::setDiode " << diode);
311  if(diode<nbDiodes){
312  if(gain==0){
313  m_diodesLG[diode].setDiode(diodeAdc, diodePedestal, diodeSigmaPedestal, alpha, sigmaAlpha, pedestalAlpha, sigmaPedAlpha);
314  } // IF
315  else{
316  m_diodesHG[diode].setDiode(diodeAdc, diodePedestal, diodeSigmaPedestal, alpha, sigmaAlpha, pedestalAlpha, sigmaPedAlpha);
317  } // IF
318  }else{
319  // log<<MSG::ERROR<<"Exit code in method TileLaserObject::setDiode"<<endmsg;
320  std::abort();
321  }
322 }
323 
324 void TileLaserObject::setPmt(const unsigned int pmt,
325  const int pmAdc,
326  const int tdc,
327  const double pmPedestal,
328  const double pmSigmaPedestal,
329  const unsigned int gain)
330 {
331  if(pmt<nbPmts){
332  if(gain==0){
333  m_pmtsLG[pmt].setPmt(pmAdc, tdc, pmPedestal, pmSigmaPedestal);
334  } // IF
335  else{
336  m_pmtsHG[pmt].setPmt(pmAdc, tdc, pmPedestal, pmSigmaPedestal);
337  } // IF
338  }else{
339  // log<<MSG::ERROR<<"Exit code in method TileLaserObject::setPmt"<<endmsg;
340  std::abort();
341  }
342 }
343 
344 void TileLaserObject::setDaqType(const unsigned int daqtype){
345  m_daqtype = daqtype;
346 }
347 
348 
349 TileLaserObject::operator std::string() const
350 {
351  std::ostringstream text;
352  text << "TileLaserObject:\n";
353  text << " ";
354  text << "version: " << m_version << " ";
355  text << "BCID: " << m_BCID << " ";
356  text << "daqtype: " << m_daqtype << " ";
357  text << "calibtype: " << m_calibtype << "\n";
358  text << " " << static_cast<std::string> (m_slowCtrl) << "\n";
359  text << " " << static_cast<std::string> (m_laserParameter) << "\n";
360  text << " " << static_cast<std::string> (m_plc) << "\n";
361  text << " LG diodes\n";
362  for (const TileLaserDiode& d : m_diodesLG) {
363  text << " " << static_cast<std::string> (d) << "\n";
364  }
365  text << " HG diodes\n";
366  for (const TileLaserDiode& d : m_diodesHG) {
367  text << " " << static_cast<std::string> (d) << "\n";
368  }
369  text << " LG PMTs\n";
370  for (const TileLaserPmt& p : m_pmtsLG) {
371  text << " " << static_cast<std::string> (p) << "\n";
372  }
373  text << " HG PMTs\n";
374  for (const TileLaserPmt& p : m_pmtsHG) {
375  text << " " << static_cast<std::string> (p) << "\n";
376  }
377  text << " Calib\n";
378  for (const std::vector<TileLasCalib>& v : m_lascalib) {
379  text << " " << v.size() << "calibs\n";
380  for (const TileLasCalib& c : v) {
381  text << " " << static_cast<std::string> (c) << "\n";
382  }
383  }
384  return text.str();
385 }
TileLaserObject::setDaqType
void setDaqType(const unsigned int daqtype)
Definition: TileLaserObject.cxx:344
TileLaserObject::getTDC
int getTDC(const unsigned int j, const unsigned int gain=0) const
Definition: TileLaserObject.cxx:209
TileLaserObject::m_version
int m_version
Definition: TileLaserObject.h:183
TileLaserDiode
Definition: TileLaserDiode.h:16
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
TileLaserPmt
Definition: TileLaserPmt.h:16
TileLaserObject::getN
int getN(int chan, int gain, int type) const
Definition: TileLaserObject.cxx:64
TileLaserPLC::setPLC
void setPLC(const int alphaPos, const double LVdiodes, const double HVpmts, const int shutter, const int interlock, const int alarm)
Definition: TileLaserPLC.h:36
TileLaserObject::getType
int getType(int chan, int gain, int type) const
Definition: TileLaserObject.cxx:57
hist_file_dump.d
d
Definition: hist_file_dump.py:137
ReadBchFromCool.pmt
pmt
Definition: ReadBchFromCool.py:62
TileLaserObject::m_daqtype
int m_daqtype
Definition: TileLaserObject.h:174
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
TileLaserObject::getAlpha
double getAlpha(const unsigned int i, const unsigned int gain=0) const
Definition: TileLaserObject.cxx:138
TileLaserObject::setTimeouts
void setTimeouts(const bool qdc, const bool tdc)
Definition: TileLaserObject.cxx:292
TileLaserObject::m_diodesLG
std::vector< TileLaserDiode > m_diodesLG
Definition: TileLaserObject.h:165
TileLaserObject::m_slowCtrl
TileLaserControl m_slowCtrl
Definition: TileLaserObject.h:163
TileLaserObject.h
TileLaserObject::isSet
bool isSet(int chan, int gain, int type) const
Definition: TileLaserObject.cxx:71
TileLaserObject::m_tdctimeout
bool m_tdctimeout
Definition: TileLaserObject.h:172
TileLaserControl::setControl
void setControl(const double pumpDiodeTemp, const int timeLastMeasP, const double diodeBoxTemp, const int timeLastMeasD, const double gasFlux, const int timeLastMeasF, const double humidity, const int timeLastMeasH, const time_t lastPedMeas, const time_t lastAlphaMeas)
Definition: TileLaserControl.h:46
TileLaserObject::setLaser
void setLaser(const int Counter, const int diodeCurrOrd, const int diodeCurrMeas, const int filtNumber, const int timingDelay, const int version)
Definition: TileLaserObject.cxx:253
TileLaserObject::getPMADC
int getPMADC(const unsigned int j, const unsigned int gain=0) const
Definition: TileLaserObject.cxx:195
TileLaserObject::getSigmaPedAlpha
double getSigmaPedAlpha(const unsigned int i, const unsigned int gain=0) const
Definition: TileLaserObject.cxx:180
TileLaser::setLaser
void setLaser(const int Counter, const int diodeCurrOrd, const int diodeCurrMeas, const int filtNumber, const int SlamaDelay)
Definition: TileLaser.h:36
TileLaserObject::getMean
double getMean(int chan, int gain, int type) const
Definition: TileLaserObject.cxx:41
lumiFormat.i
int i
Definition: lumiFormat.py:92
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
vector
Definition: MultiHisto.h:13
TileLaserObject::TileLaserObject
TileLaserObject()
Definition: TileLaserObject.cxx:17
TileLaserObject::m_diodesHG
std::vector< TileLaserDiode > m_diodesHG
Definition: TileLaserObject.h:166
TileLaserObject::setCalibType
void setCalibType(int type)
Definition: TileLaserObject.cxx:78
TileLaserObject::getCalibType
int getCalibType() const
Definition: TileLaserObject.cxx:82
TileLaserObject::setPmt
void setPmt(const unsigned int pmt, const int pmAdc, const int tdc, const double pmPedestal, const double pmSigmaPedestal, const unsigned int gain)
Definition: TileLaserObject.cxx:324
sg-dump.nevts
nevts
Definition: sg-dump.py:146
TileLaserObject::setPLC
void setPLC(const int alphaPos, const double LVdiodes, const double HVpmts, const int shutter, const int interlock, const int alarm)
Definition: TileLaserObject.cxx:280
TileLaserObject::m_lascalib
std::vector< std::vector< TileLasCalib > > m_lascalib
Definition: TileLaserObject.h:169
TileLaserObject::m_qdctimeout
bool m_qdctimeout
Definition: TileLaserObject.h:171
TileLaserObject::getDiodeSigmaPedestal
double getDiodeSigmaPedestal(const unsigned int i, const unsigned int gain=0) const
Definition: TileLaserObject.cxx:123
TileLaserObject::getDiodeADC
int getDiodeADC(const unsigned int i, const unsigned int gain=0) const
Definition: TileLaserObject.cxx:95
TileLaserObject::getPMPedestal
double getPMPedestal(const unsigned int j, const unsigned int gain=0) const
Definition: TileLaserObject.cxx:223
TileLaserObject::m_laserParameter
TileLaser m_laserParameter
Definition: TileLaserObject.h:164
TileLasCalib
Definition: TileLasCalib.h:18
python.PyAthena.v
v
Definition: PyAthena.py:157
get_generator_info.version
version
Definition: get_generator_info.py:33
TileLaserObject::m_calibtype
int m_calibtype
Definition: TileLaserObject.h:185
TileLaserObject::nbPmts
@ nbPmts
Definition: TileLaserObject.h:45
TileLaserObject::nbDiodes
@ nbDiodes
Definition: TileLaserObject.h:46
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
TileLaserObject::getPMSigmaPedestal
double getPMSigmaPedestal(const unsigned int j, const unsigned int gain=0) const
Definition: TileLaserObject.cxx:237
TileLaserObject::getDiodePedestal
double getDiodePedestal(const unsigned int i, const unsigned int gain=0) const
Definition: TileLaserObject.cxx:109
TileLaserObject::setControl
void setControl(const double pumpDiodeTemp, const int timeLastMeasP, const double diodeBoxTemp, const int timeLastMeasD, const double gasFlux, const int timeLastMeasG, const double humidity, const int timeLastMeasH, const time_t lastPedMeas, const time_t lastAlphaMeas)
Definition: TileLaserObject.cxx:265
TileLaserObject::nbTypes
@ nbTypes
Definition: TileLaserObject.h:47
TileLaserObject::m_pmtsLG
std::vector< TileLaserPmt > m_pmtsLG
Definition: TileLaserObject.h:167
TileLaserObject::setDiode
void setDiode(const unsigned int diode, const int diodeAdc, const double diodePedestal, const double diodeSigmaPedestal, const double alpha, const double sigmaAlpha, const double pedestalAlpha, const double sigmaPedAlpha, const unsigned int gain)
Definition: TileLaserObject.cxx:300
makeTransCanvas.text
text
Definition: makeTransCanvas.py:11
TileLaserObject::setCalib
void setCalib(int chan, int type, double sumXinQDC, double sumX2inQDC, int nevts, int gain)
Definition: TileLaserObject.cxx:86
TileLaserObject::getSigmaAlpha
double getSigmaAlpha(const unsigned int i, const unsigned int gain=0) const
Definition: TileLaserObject.cxx:152
TileLaserObject::m_plc
TileLaserPLC m_plc
Definition: TileLaserObject.h:170
python.compressB64.c
def c
Definition: compressB64.py:93
TileLaserObject::m_pmtsHG
std::vector< TileLaserPmt > m_pmtsHG
Definition: TileLaserObject.h:168
TileLaserObject::getSigma
double getSigma(int chan, int gain, int type) const
Definition: TileLaserObject.cxx:49
TileLaserObject::getPedestalAlpha
double getPedestalAlpha(const unsigned int i, const unsigned int gain=0) const
Definition: TileLaserObject.cxx:166