ATLAS Offline Software
Loading...
Searching...
No Matches
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()
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
41double TileLaserObject::getMean(int chan, int gain, int type) const{
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
49double TileLaserObject::getSigma(int chan, int gain, int type) const{
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
57int TileLaserObject::getType(int chan, int gain, int type) const{
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
64int TileLaserObject::getN(int chan, int gain, int type) const{
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
71bool TileLaserObject::isSet(int chan, int gain, int type) const{
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
81
83 return m_calibtype;
84}
85
86void 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
95int 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
109double 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
123double 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
138double 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
152double 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
166double 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
180double 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
195int 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
209int 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
223double 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
237double 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
253void 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
265void 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
280void 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
292void TileLaserObject::setTimeouts(const bool qdc,
293 const bool tdc)
294{
295 m_qdctimeout = qdc;
296 m_tdctimeout = tdc;
297}
298
299
300void 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
324void 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
344void TileLaserObject::setDaqType(const unsigned int daqtype){
345 m_daqtype = daqtype;
346}
347
348
349TileLaserObject::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}
TileLaserControl m_slowCtrl
TileLaser m_laserParameter
void setDaqType(const unsigned int daqtype)
int getCalibType() const
double getSigmaPedAlpha(const unsigned int i, const unsigned int gain=0) const
int getType(int chan, int gain, int type) const
void setCalib(int chan, int type, double sumXinQDC, double sumX2inQDC, int nevts, int gain)
std::vector< TileLaserDiode > m_diodesLG
void setPmt(const unsigned int pmt, const int pmAdc, const int tdc, const double pmPedestal, const double pmSigmaPedestal, const unsigned int gain)
std::vector< TileLaserPmt > m_pmtsLG
double getSigmaAlpha(const unsigned int i, const unsigned int gain=0) const
void setCalibType(int type)
int getN(int chan, int gain, int type) const
double getPedestalAlpha(const unsigned int i, const unsigned int gain=0) const
double getMean(int chan, int gain, int type) const
std::vector< std::vector< TileLasCalib > > m_lascalib
void setTimeouts(const bool qdc, const bool tdc)
std::vector< TileLaserDiode > m_diodesHG
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)
int getPMADC(const unsigned int j, const unsigned int gain=0) const
void setPLC(const int alphaPos, const double LVdiodes, const double HVpmts, const int shutter, const int interlock, const int alarm)
double getPMSigmaPedestal(const unsigned int j, const unsigned int gain=0) const
double getAlpha(const unsigned int i, const unsigned int gain=0) const
int getDiodeADC(const unsigned int i, const unsigned int gain=0) const
std::vector< TileLaserPmt > m_pmtsHG
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)
double getDiodeSigmaPedestal(const unsigned int i, const unsigned int gain=0) const
double getDiodePedestal(const unsigned int i, const unsigned int gain=0) const
bool isSet(int chan, int gain, int type) const
int getTDC(const unsigned int j, const unsigned int gain=0) const
TileLaserPLC m_plc
void setLaser(const int Counter, const int diodeCurrOrd, const int diodeCurrMeas, const int filtNumber, const int timingDelay, const int version)
double getSigma(int chan, int gain, int type) const
double getPMPedestal(const unsigned int j, const unsigned int gain=0) const
STL namespace.