ATLAS Offline Software
LArCaliWaveBuilder.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
9 
12 
14 
17 
18 #include <fstream>
19 
20 
21 using CLHEP::megahertz;
22 using CLHEP::ns;
23 
24 
25 LArCaliWaveBuilder::LArCaliWaveBuilder(const std::string& name, ISvcLocator* pSvcLocator)
26  : AthAlgorithm(name, pSvcLocator),
27  m_groupingType("ExtendedFeedThrough"), // SubDetector, Single, FeedThrough
28  m_onlineID(nullptr),
29  m_event_counter(0)
30 {
31  declareProperty("UseAccumulatedDigits", m_useAccumulatedDigits=true);
33  declareProperty("KeyOutput", m_keyoutput="LArCaliWave");
34  declareProperty("SubtractPed", m_pedSub=true);
35  declareProperty("NBaseline", m_baseline=1);
36  declareProperty("SamplingPeriod", m_SamplingPeriod=1./(40.08*megahertz));
37  declareProperty("NSteps", m_NStep=24); // Number of Delay Steps. FIXME: Try to get this information for somewhere else
38  declareProperty("ADCsaturation", m_ADCsatur=0) ;
39  declareProperty("GroupingType", m_groupingType);
40  declareProperty("UseDacAndIsPulsedIndex", m_useDacAndIsPulsedIndex=false);
41  declareProperty("CheckEmptyPhases", m_checkEmptyPhases=false);
42  declareProperty("RecAllCells", m_recAll=false);
43  declareProperty("UsePattern", m_usePatt=-1);
44  declareProperty("UseParams", m_useParams=false); // Read LArCalibParams from DetStore ?
45  declareProperty("isSC", m_isSC=false);
46 
47 
49 
51 
52 }
53 
55 = default;
56 
58 {
59  if (m_keylistproperty.empty()) {
60  m_keylistproperty.emplace_back("HIGH");
61  m_keylistproperty.emplace_back("MEDIUM");
62  m_keylistproperty.emplace_back("LOW");
63  }
65 
66  //FIXME probably useless because m_wave isn't written anywhere
67  StatusCode sc=m_waves.setGroupingType(m_groupingType,msg());
68  if (sc.isFailure()) {
69  ATH_MSG_ERROR( "Failed to set groupingType for LArCaliWave intermediate object" );
70  return sc;
71  }
72 
73  ATH_MSG_INFO( "Initialize intermediate Wave object" );
75  if (sc.isFailure()) {
76  ATH_MSG_ERROR( "Failed initialize LArCaliWave intermediate object" );
77  return sc;
78  }
79 
80  m_event_counter=0;
82 
83 
85  ATH_MSG_INFO( "Empty phases check selected." );
86 
87  //Get pedestal from CondStore
89 
90  //Get Online helper from DetStore
91  if ( m_isSC ) {
93  ATH_CHECK( detStore()->retrieve(ll, "LArOnline_SuperCellID") );
94  m_onlineID = (const LArOnlineID_Base*)ll;
95  ATH_MSG_DEBUG(" Found the LArOnline_SuperCellID helper. ");
96  } else { // m_isSC
97  const LArOnlineID* ll;
98  ATH_CHECK( detStore()->retrieve(ll, "LArOnlineID") );
99  m_onlineID = (const LArOnlineID_Base*)ll;
100  ATH_MSG_DEBUG(" Found the LArOnlineID helper. ");
101  }
102 
105 
106  if(m_usePatt >= 0 && !m_useParams) {
107  ATH_MSG_ERROR("Inconsistent configuration, for UsePattern > 0 the UseParams must be true");
108  return StatusCode::FAILURE;
109  }
110 
112 
113  return StatusCode::SUCCESS;
114 }
115 
116 
118 {
119  // using EvtId
120  const EventContext& ctx = getContext();
121  m_event_counter=ctx.eventID().event_number();
122 
123  const LArCalibParams* calibParams = nullptr;
124  const LArCalibLineMapping *clcabling=nullptr;
125  if(m_useParams) { // we have to check in which event we are, reading only ones corresponding
126  // to our pattern
127  ATH_CHECK(detStore()->retrieve(calibParams,"LArCalibParams"));
128  unsigned numPatt=calibParams->getNumberPatterns(HWIdentifier(0));
129 
131  if(m_useAccumulatedDigits) counter /= calibParams->NTrigger(HWIdentifier(1007091712));
132  if(m_usePatt >= 0 && static_cast<int>(counter % numPatt) != m_usePatt) {
133  return StatusCode::SUCCESS;
134  }
135  ATH_MSG_DEBUG("Good event "<<m_event_counter<<" for pattern " << m_usePatt << " out of " << numPatt << " patterns " << calibParams->NTrigger(HWIdentifier(1007091712)) <<" triggers ");
136 
137  const EventContext& ctx = Gaudi::Hive::currentContext();
139  clcabling =*clHdl;
140  if(!clcabling) {
141  ATH_MSG_WARNING( "Do not have calib line mapping from key " << m_calibMapKey.key() );
142  return StatusCode::FAILURE;
143  }
144 
145  }
146 
147  if ( m_event_counter < 100 || m_event_counter%100==0 )
148  ATH_MSG_INFO( "Processing event " << m_event_counter );
149 
150  if (m_keylist.empty()) {
151  ATH_MSG_ERROR( "Key list is empty! No containers to process!" );
152  return StatusCode::FAILURE;
153  }
154 
155 
156  // execute() method...
158  return executeWithAccumulatedDigits(calibParams, clcabling);
159  else
160  return executeWithStandardDigits(calibParams, clcabling);
161 }
162 
164 {
165  StatusCode sc;
166 
167  const LArAccumulatedCalibDigitContainer* larAccumulatedCalibDigitContainer = nullptr;
168 
169  std::vector<std::string>::const_iterator key_it=m_keylist.begin();
170  std::vector<std::string>::const_iterator key_it_e=m_keylist.end();
171  int foundkey = 0;
172  for (;key_it!=key_it_e; ++key_it) { //Loop over all containers that are to be processed (e.g. different gains)
173 
174  sc = evtStore()->retrieve(larAccumulatedCalibDigitContainer,*key_it);
175  if (sc.isFailure()) {
176  ATH_MSG_WARNING( "Cannot read LArAccumulatedCalibDigitContainer from StoreGate! key=" << *key_it );
177  if ( (std::next(key_it) == key_it_e) && foundkey==0 ){
178  ATH_MSG_ERROR("None of the provided LArAccumulatedDigitContainer keys could be read");
179  return StatusCode::FAILURE;
180  }else{
181  continue;
182  }
183  }
184  foundkey+=1;
185 
186  const LArFebErrorSummary* febErrSum=nullptr;
187  if (evtStore()->contains<LArFebErrorSummary>("LArFebErrorSummary")) {
188  sc=evtStore()->retrieve(febErrSum);
189  if (sc.isFailure()) {
190  ATH_MSG_ERROR( "Failed to retrieve FebErrorSummary object!" );
191  return sc;
192  }
193  }
194  else
195  if (m_event_counter==0)
196  ATH_MSG_WARNING( "No FebErrorSummaryObject found! Feb errors not checked!" );
197 
198  HWIdentifier lastFailedFEB(0);
199  LArAccumulatedCalibDigitContainer::const_iterator it=larAccumulatedCalibDigitContainer->begin();
200  LArAccumulatedCalibDigitContainer::const_iterator it_end=larAccumulatedCalibDigitContainer->end();
201 
202  if (it == it_end) {
203  ATH_MSG_DEBUG("LArAccumulatedCalibDigitContainer with key=" << *key_it << " is empty ");
204  continue; // at this event LArAccumulatedCalibDigitContainer is empty, do not even try to loop on it...
205  }
206 
207  const float delayScale = larAccumulatedCalibDigitContainer->getDelayScale();
208  const float deltaDelay = 25*ns/(delayScale*m_NStep);
209 
210  for (;it!=it_end; ++it) { // Loop over all cells
211 
212  bool ispulsed=false;
213  if(m_useParams && calibParams) { // got LArCalibParams from DetStore
214  const std::vector<HWIdentifier>& calibLineLeg = clcabling->calibSlotLine((*it)->hardwareID());
215  for (const HWIdentifier &calibLineHWID : calibLineLeg) {// loop calib lines
216  ispulsed |= calibParams->isPulsed(m_event_counter,calibLineHWID);
217  }
218  } else {
219  ispulsed=(*it)->isPulsed();
220  }
221  if ( (!m_recAll) && !ispulsed ) {
222  ATH_MSG_DEBUG( "Non pulsed cell " << m_onlineID->channel_name((*it)->hardwareID())<<" in evt. "<<m_event_counter );
223  continue; // Check if cell is pulsed
224  }
225  HWIdentifier chid=(*it)->hardwareID();
226  HWIdentifier febid=m_onlineID->feb_Id(chid);
227  if (febErrSum) {
228  const uint16_t febErrs=febErrSum->feb_error(febid);
229  if (febErrs & m_fatalFebErrorPattern) {
230  if (febid!=lastFailedFEB) {
231  lastFailedFEB=febid;
232  ATH_MSG_ERROR( "Event " << m_event_counter << " Feb " << m_onlineID->channel_name(febid)
233  << " reports error(s):" << febErrSum->error_to_string(febErrs) << ". Data ignored." );
234  }
235  continue;
236  }
237  }
238  CaloGain::CaloGain gain=(*it)->gain();
239 
240  if (gain<0 || gain>CaloGain::LARNGAIN) {
241  ATH_MSG_ERROR( "Found not-matching gain number ("<< (int)gain <<")" );
242  return StatusCode::FAILURE;
243  }
244 
245  // transform sampleSum vector from uint32_t to double
246  std::vector<double> samplesum;
247  std::vector < uint64_t >::const_iterator samplesum_it=(*it)->sampleSum().begin();
248  std::vector < uint64_t >::const_iterator samplesum_it_e=(*it)->sampleSum().end();
249  for (;samplesum_it!=samplesum_it_e; ++samplesum_it)
250  samplesum.push_back((double)(*samplesum_it));
251 
252  // transform sample2Sum vector from uint32_t to double
253  std::vector<double> sample2sum;
254  std::vector < uint64_t >::const_iterator sample2sum_it=(*it)->sample2Sum().begin();
255  std::vector < uint64_t >::const_iterator sample2sum_it_e=(*it)->sample2Sum().end();
256  for (;sample2sum_it!=sample2sum_it_e; ++sample2sum_it)
257  sample2sum.push_back((double)(*sample2sum_it));
258 
259  WaveMap& waveMap = m_waves.get(chid,gain);
260 
261  //make dacPulsed which has dac and four bits of is pulsed info
262  int dacPulsed;
263  float delay = (*it)->delay();
264  int dac=(*it)->DAC();
265  int index;
266  int pulsed=0;
267  if(m_useParams && calibParams && clcabling) { // get LArCalibParams from DetStore
268  const std::vector<HWIdentifier>& calibLineLeg = clcabling->calibSlotLine((*it)->hardwareID());
269  if(calibLineLeg.empty()) {
270  ATH_MSG_WARNING("Why do not have calib lines for "<<(*it)->hardwareID()<<" ?");
271  continue;
272  }
273  dac=calibParams->DAC(m_event_counter,calibLineLeg[0]);
274  dacPulsed=dac;
275  delay = calibParams->Delay(m_event_counter,calibLineLeg[0]);
276  for (unsigned i=0; i<calibLineLeg.size(); ++i) {// loop calib lines
277  if(calibParams->isPulsed(m_event_counter,calibLineLeg[i])){
278  ATH_MSG_DEBUG("GR: line pulsed true, line="<<i+1);
279  dacPulsed=(dacPulsed | (0x1 << (15+i+1)));
280  pulsed=(pulsed | (0x1 << (15+i+1)));
281  }
282 
283  }
284  } else {
285  dacPulsed=(*it)->DAC();
286  for(int iLine=1;iLine<5;iLine++){
287  if((*it)->isPulsed(iLine)){
288  ATH_MSG_DEBUG("GR: line pulsed true, line="<<iLine);
289  dacPulsed=(dacPulsed | (0x1 << (15+iLine)));
290  pulsed=(pulsed | (0x1 << (15+iLine)));
291  }
292  }
293  }
294 
295  if(m_useDacAndIsPulsedIndex){//switch used to turn on the option to have indexs that are DAC and isPulsed info
296  index = dacPulsed;
297  } else {
298  index = dac;
299  }
300 
301  ATH_MSG_DEBUG( "Pulsed cell " << m_onlineID->channel_name(chid) << " gain: "<<gain );
302  ATH_MSG_DEBUG( "with " << (*it)->sampleSum().size() << " samples " << index << " DAC " << delay << " delay " << dacPulsed << " dacPulsed " );
303 
304  WaveMap::iterator itm = waveMap.find(index);
305 
306  if ( itm == waveMap.end() ) { // A new LArCaliWave is booked
307  LArCaliWave wave(samplesum.size()*m_NStep, m_dt, dac, pulsed, LArWave::meas);
308  itm = (waveMap.insert(WaveMap::value_type(index,wave))).first;
309  ATH_MSG_DEBUG("index: "<<index<<" new wave inserted");
310  }
311  (*itm).second.addAccumulatedEvent(int(std::roundf(delay/deltaDelay)), m_NStep,
312  samplesum, sample2sum, (*it)->nTriggers());
313 
314  } //End loop over all cells
315  } //End loop over all containers
316 
317  return StatusCode::SUCCESS;
318 }
319 
320 
322 {
323  StatusCode sc;
324 
325  const LArCalibDigitContainer* larCalibDigitContainer = nullptr;
326 
327  std::vector<std::string>::const_iterator key_it=m_keylist.begin();
328  std::vector<std::string>::const_iterator key_it_e=m_keylist.end();
329 
330  for (;key_it!=key_it_e; ++key_it) { //Loop over all containers that are to be processed (e.g. different gains)
331 
332  sc = evtStore()->retrieve(larCalibDigitContainer,*key_it);
333  if (sc.isFailure()) {
334  ATH_MSG_WARNING( "Cannot read LArCalibDigitContainer from StoreGate! key=" << *key_it );
335  continue; // Try next container
336  }
337 
338  LArCalibDigitContainer::const_iterator it=larCalibDigitContainer->begin();
339  LArCalibDigitContainer::const_iterator it_end=larCalibDigitContainer->end();
340 
341  if (it == it_end) {
342  ATH_MSG_INFO( "LArCalibDigitContainer with key=" << *key_it << " is empty " );
343  continue; // at this event LArCalibDigitContainer is empty, do not even try to loop on it...
344  }
345 
346  const float delayScale = larCalibDigitContainer->getDelayScale();
347  const float deltaDelay = 25*ns/(delayScale*m_NStep);
348 
349  for (;it!=it_end; ++it) { // Loop over all cells
350 
351  bool pulsed=false;
352  int dac = (*it)->DAC();
353  float delay= (*it)->delay();
354  if(m_useParams && calibParams && clcabling) { // get LArCalibParams from DetStore
355  const std::vector<HWIdentifier>& calibLineLeg = clcabling->calibSlotLine((*it)->hardwareID());
356  dac=calibParams->DAC(m_event_counter,calibLineLeg[0]); // assuming all calib. boards configured equally
357  delay = calibParams->Delay(m_event_counter,calibLineLeg[0]);
358  for (const HWIdentifier &calibLineHWID : calibLineLeg) {// loop calib lines
359  pulsed |= calibParams->isPulsed(m_event_counter,calibLineHWID);
360  }
361  } else {
362  pulsed=(*it)->isPulsed();
363  }
364  if ((!m_recAll) && !pulsed ) continue ; // Check if cell is pulsed
365 
366  HWIdentifier chid=(*it)->hardwareID();
367  CaloGain::CaloGain gain=(*it)->gain();
368 
369  if (gain<0 || gain>CaloGain::LARNGAIN) {
370  ATH_MSG_ERROR( "Found not-matching gain number ("<< (int)gain <<")" );
371  return StatusCode::FAILURE;
372  }
373 
374  // transform samples vector from uint32_t to double
375  std::vector<double> samples;
376  for (short sample : (*it)->samples())
377  samples.push_back((double)(sample));
378 
379  WaveMap& waveMap = m_waves.get(chid,gain);
380  WaveMap::iterator itm = waveMap.find(dac);
381 
382  if ( itm == waveMap.end() ) { // A new LArCaliWave is booked
383  LArCaliWave wave(samples.size()*m_NStep, m_dt, (*it)->DAC(), 0x1, LArWave::meas );
384  itm = (waveMap.insert(WaveMap::value_type((*it)->DAC(),wave))).first;
385  }
386 
387  (*itm).second.addEvent((int)roundf(delay/deltaDelay), m_NStep, samples);
388 
389  } //End loop over all cells
390  } //End loop over all containers
391 
392  return StatusCode::SUCCESS;
393 }
394 
395 
396 
398 {
399  // Create wave container using feedthru grouping and initialize
400  auto caliWaveContainer = std::make_unique<LArCaliWaveContainer>();
401 
402  StatusCode sc=caliWaveContainer->setGroupingType(m_groupingType,msg());
403  if (sc.isFailure()) {
404  ATH_MSG_ERROR( "Failed to set groupingType for LArCaliWaveContainer object" );
405  return sc;
406  }
407 
408  ATH_MSG_INFO( "Initialize final Wave object" );
409  sc=caliWaveContainer->initialize();
410  if (sc.isFailure()) {
411  ATH_MSG_ERROR( "Failed initialize LArCaliWaveContainer object" );
412  return sc;
413  }
414 
415  const EventContext& ctx = Gaudi::Hive::currentContext();
416  const LArOnOffIdMapping* cabling(nullptr);
417  if( m_isSC ){
419  cabling = {*cablingHdl};
420  if(!cabling) {
421  ATH_MSG_ERROR("Do not have mapping object " << m_cablingKeySC.key());
422  return StatusCode::FAILURE;
423  }
424 
425  }else{
427  cabling = {*cablingHdl};
428  if(!cabling) {
429  ATH_MSG_ERROR("Do not have mapping object " << m_cablingKey.key());
430  return StatusCode::FAILURE;
431  }
432  }
434  const ILArPedestal* larPedestal{*pedHdl};
435  if(m_pedSub && !larPedestal) {
436  ATH_MSG_DEBUG("No pedestal(s) found ");
437  ATH_MSG_INFO( "Using fake (baseline) pedestal subtraction..." );
438  }
439 
440  LArWaveHelper wHelper;
441  int NCaliWave=0;
442 
443  // Loop over all gains
444  for (unsigned k=0;k<(int)CaloGain::LARNGAIN;k++) {
445 
447 
451 
452  HWIdentifier lastId;
453 
454  for (; cell_it!=cell_it_e; ++cell_it) {
455 
456 
457  // Get id of this cell - use id from first cell in map
458  //
459  // Some accumulations may be empty and we must skip this
460  // cell. WaveContainer has all 128 channels for each FEB
461  // with at least ONE being read out.
462  //
463 
464  const HWIdentifier hwId = cell_it.channelId();
465  if ((!m_recAll) && (!cabling->isOnlineConnected(hwId))) {
466 
467  //ATH_MSG_INFO( "Skipping disconnected channel: "<<MSG::hex<<hwId<<MSG::dec );
468  continue; //Ignore disconnected channels
469  }
470 
471  const WaveMap& waveMap = (*cell_it);
472  if (waveMap.empty()) {
473  ATH_MSG_INFO( "Empty accumulated wave. Last id: " << MSG::hex
474  //<< lastId << " " << emId->show_to_string(lastId) );
475  << lastId << " this id: "<<hwId<<MSG::dec );
476  continue;
477  }
478 
479  lastId = hwId; // save previous id for debug printout
480 
481  // Get the vector of waves for this chid,gain
482  LArCaliWaveContainer::LArCaliWaves& dacWaves = caliWaveContainer->get(hwId, gain);
483 
484  std::map<int, LArCaliWave>::const_iterator dac_it = cell_it->begin();
485  std::map<int, LArCaliWave>::const_iterator dac_it_e = cell_it->end();
486 
487  HWIdentifier chid = cell_it.channelId();
488 
489  for (; dac_it != dac_it_e; ++dac_it) {
490 
491  const LArCaliWave& thisWave = dac_it->second ;
492 
493  if (m_checkEmptyPhases) {
494  const std::vector<int>& thisTriggers = thisWave.getTriggers();
495  for (unsigned i=0;i<thisTriggers.size();++i) {
496  if (thisTriggers[i]==0) {
497  ATH_MSG_FATAL( "Empty phase found in channel 0x" << MSG::hex << chid << MSG::dec
498  << "., aborting reconstruction. Sorry." );
499  return StatusCode::FAILURE;
500  }
501  }
502  }
503 
504  float pedAve = 0.;
505 
506  if ( m_pedSub ) {
507  if ( larPedestal ) {
508  float pedestal = larPedestal->pedestal(chid,gain);
509  if (pedestal <= (1.0+LArElecCalib::ERRORCODE)) {
510  ATH_MSG_DEBUG("No pedestal(s) found for channel 0x" << MSG::hex << chid << MSG::dec);
511  ATH_MSG_INFO( "Using fake (baseline) pedestal subtraction..." );
512  pedAve = wHelper.getBaseline(thisWave,m_baseline) ;
513  } else {
514  pedAve = pedestal;
515  }
516  } else {
517  pedAve = wHelper.getBaseline(thisWave,m_baseline) ;
518  }
519  ATH_MSG_DEBUG("Pedestal for channel 0x" << MSG::hex << chid << MSG::dec << " is = " << pedAve << " ADC");
520  }
521 
522  double waveMax = thisWave.getSample( wHelper.getMax(thisWave) ) ;
523  if ( (!m_recAll) && m_ADCsatur>0 && waveMax>=m_ADCsatur ) {
524  ATH_MSG_INFO( "Absolute ADC saturation at DAC = " << thisWave.getDAC() << " ... skip!" ) ;
525  continue ;
526  } else {
527  dacWaves.emplace_back(((thisWave)+(-pedAve)).getWave() ,
528  thisWave.getErrors(),
529  thisWave.getTriggers(),
530  thisWave.getDt(),
531  thisWave.getDAC(),
532  thisWave.getIsPulsedInt(),
533  thisWave.getFlag() );
534 
535  NCaliWave++;
536  }
537 
538  } // end of loop DACs
539 
540  // intermediate map cleanup (save memory)
541  cell_it->clear();
542 
543  } //end loop cells
544 
545  } //end loop over m_keyList
546 
547  ATH_MSG_INFO( " Summary : Number of cells with a CaliWave reconstructed : " << NCaliWave );
548  ATH_MSG_INFO( " Summary : Number of Barrel PS cells side A or C (connected+unconnected): 3904+ 192 = 4096 " );
549  ATH_MSG_INFO( " Summary : Number of Barrel cells side A or C (connected+unconnected): 50944+2304 = 53248 " );
550  ATH_MSG_INFO( " Summary : Number of EMEC cells side A or C (connected+unconnected): 31872+3456 = 35328 " );
551  ATH_MSG_INFO( " Summary : Number of HEC cells side A or C (connected+unconnected): 2816+ 256 = 3072 " );
552  ATH_MSG_INFO( " Summary : Number of FCAL cells side A or C (connected+unconnected): 1762+ 30 = 1792 " );
553 
554  // Record in detector store with key (m_keyoutput)
555  ATH_CHECK( detStore()->record(std::move(caliWaveContainer), m_keyoutput) );
556 
557  ATH_MSG_INFO( "LArCaliWaveBuilder has finished." );
558  return StatusCode::SUCCESS;
559 }
LArCaliWaveBuilder::initialize
StatusCode initialize()
Definition: LArCaliWaveBuilder.cxx:57
LArCaliWaveBuilder::m_recAll
bool m_recAll
Definition: LArCaliWaveBuilder.h:65
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
LArCaliWaveBuilder::executeWithStandardDigits
StatusCode executeWithStandardDigits(const LArCalibParams *calibParams=nullptr, const LArCalibLineMapping *clcabling=nullptr)
Definition: LArCaliWaveBuilder.cxx:321
LArCaliWaveBuilder::m_useAccumulatedDigits
bool m_useAccumulatedDigits
Definition: LArCaliWaveBuilder.h:46
LArCalibDigitContainer.h
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
LArCalibParams::getNumberPatterns
unsigned getNumberPatterns(const HWIdentifier calibModuleID) const
Definition: LArCalibParams.cxx:233
LArConditionsContainerDB::iteratorT::channelId
HWIdentifier channelId() const
LArCaliWaveBuilder::m_useParams
bool m_useParams
Definition: LArCaliWaveBuilder.h:89
LArCaliWaveBuilder::m_keyoutput
std::string m_keyoutput
Definition: LArCaliWaveBuilder.h:52
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
LArCaliWaveBuilder::~LArCaliWaveBuilder
~LArCaliWaveBuilder()
LArWave::getFlag
unsigned getFlag() const
flag: ...
Definition: LArWave.h:178
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
LArCaliWaveBuilder::m_baseline
unsigned m_baseline
Definition: LArCaliWaveBuilder.h:62
LArCalibParams::NTrigger
unsigned NTrigger(const HWIdentifier calibModuleID) const
Definition: LArCalibParams.cxx:211
LArCaliWaveBuilder.h
index
Definition: index.py:1
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
LArCaliWaveBuilder::m_onlineID
const LArOnlineID_Base * m_onlineID
Definition: LArCaliWaveBuilder.h:79
ILArPedestal
Definition: ILArPedestal.h:12
LArCaliWaveBuilder::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: LArCaliWaveBuilder.h:41
LArCalibLineMapping::calibSlotLine
const std::vector< HWIdentifier > & calibSlotLine(const HWIdentifier id) const
Definition: LArCalibLineMapping.cxx:15
LArConditionsContainerDB::iteratorT
Declaration of const iterator.
Definition: LArConditionsContainerDB.h:72
LArWaveHelper::getBaseline
double getBaseline(const LArWave &theWave, unsigned nBase) const
Definition: LArWaveHelper.cxx:347
LArCalibLineMapping
Definition: LArCalibLineMapping.h:17
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
LArCaliWaveBuilder::m_keylist
std::vector< std::string > m_keylist
Definition: LArCaliWaveBuilder.h:50
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
LArCaliWaveBuilder::m_cablingKeySC
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKeySC
Definition: LArCaliWaveBuilder.h:42
skel.it
it
Definition: skel.GENtoEVGEN.py:423
LArWave::getDt
const double & getDt() const
delta time
Definition: LArWave.h:50
LArCalibParams
Definition: LArCalibParams.h:28
LArWaveHelper
Definition: LArWaveHelper.h:14
LArCaliWave::getDAC
int getDAC() const
DAC value.
Definition: LArCaliWave.h:156
LArCaliWaveBuilder::executeWithAccumulatedDigits
StatusCode executeWithAccumulatedDigits(const LArCalibParams *calibParams=nullptr, const LArCalibLineMapping *clcabling=nullptr)
Definition: LArCaliWaveBuilder.cxx:163
LArFebErrorSummary::error_to_string
static std::string error_to_string(uint16_t error)
interpret the error in string
Definition: LArFebErrorSummary.cxx:58
LArCaliWaveBuilder::m_groupingType
std::string m_groupingType
Definition: LArCaliWaveBuilder.h:53
LArCaliWaveBuilder::m_fatalFebErrorPattern
uint16_t m_fatalFebErrorPattern
Definition: LArCaliWaveBuilder.h:86
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
LArCaliWaveBuilder::execute
StatusCode execute()
Definition: LArCaliWaveBuilder.cxx:117
LArWaveHelper::getMax
unsigned int getMax(const LArWave &theWave) const
return index of maximum sample
Definition: LArWaveHelper.cxx:89
HWIdentifier
Definition: HWIdentifier.h:13
CaloGain::LARNGAIN
@ LARNGAIN
Definition: CaloGain.h:19
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
LArCaliWaveBuilder::m_usePatt
int m_usePatt
Definition: LArCaliWaveBuilder.h:88
LArCaliWave::getIsPulsedInt
int getIsPulsedInt() const
isPulsed value
Definition: LArCaliWave.h:163
LArFebErrorSummary::feb_error
uint16_t feb_error(HWIdentifier febid) const
get error for feb
Definition: LArFebErrorSummary.cxx:20
LArCaliWaveBuilder::stop
virtual StatusCode stop()
Definition: LArCaliWaveBuilder.cxx:397
LArCaliWaveBuilder::LArCaliWaveBuilder
LArCaliWaveBuilder(const std::string &name, ISvcLocator *pSvcLocator)
Definition: LArCaliWaveBuilder.cxx:25
LArWave::getSample
const double & getSample(const unsigned int i) const
Amplitude per time bin.
Definition: LArWave.h:53
LArCalibDigitContainer
Container class for LArCalibDigit.
Definition: LArCalibDigitContainer.h:19
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
python.SystemOfUnits.megahertz
int megahertz
Definition: SystemOfUnits.py:127
LArCaliWaveBuilder::m_isSC
bool m_isSC
Definition: LArCaliWaveBuilder.h:68
LArCaliWave
Definition: LArCaliWave.h:44
LArCaliWaveBuilder::m_ADCsatur
int m_ADCsatur
Definition: LArCaliWaveBuilder.h:74
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LArCaliWaveBuilder::m_keylistproperty
std::vector< std::string > m_keylistproperty
Definition: LArCaliWaveBuilder.h:51
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
LArCaliWaveBuilder::m_calibMapKey
SG::ReadCondHandleKey< LArCalibLineMapping > m_calibMapKey
Definition: LArCaliWaveBuilder.h:43
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:100
LArConditionsContainer::end
ConstConditionsMapIterator end(unsigned int gain) const
end of all channels for this gain
fillPileUpNoiseLumi.next
next
Definition: fillPileUpNoiseLumi.py:52
lumiFormat.i
int i
Definition: lumiFormat.py:92
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArCaliWaveBuilder::m_pedKey
SG::ReadCondHandleKey< ILArPedestal > m_pedKey
Definition: LArCaliWaveBuilder.h:44
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
01SubmitToGrid.samples
samples
Definition: 01SubmitToGrid.py:58
LArConditionsContainer::get
ConstReference get(const HWIdentifier id, unsigned int gain=0) const
get data with online identifier
LArCaliWaveBuilder::m_dt
float m_dt
Definition: LArCaliWaveBuilder.h:84
LArCalibDigitContainer::getDelayScale
double getDelayScale() const
get delay scale
Definition: LArCalibDigitContainer.h:34
LArCalibParams::isPulsed
bool isPulsed(const unsigned event, const HWIdentifier calibLineID) const
Definition: LArCalibParams.cxx:167
LArAccumulatedCalibDigitContainer.h
LArCaliWaveVec
Definition: LArCaliWave.h:91
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
delay
double delay(std::size_t d)
Definition: JetTrigTimerTest.cxx:14
LArCaliWaveBuilder::m_SamplingPeriod
float m_SamplingPeriod
Definition: LArCaliWaveBuilder.h:83
AthAlgorithm
Definition: AthAlgorithm.h:47
LArOnlineID_Base::feb_Id
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
Definition: LArOnlineID_Base.cxx:1483
integrator_ascii2db.dac
dac
Definition: integrator_ascii2db.py:126
LArCalibParams::DAC
unsigned DAC(const unsigned event, const HWIdentifier calibLineID) const
Definition: LArCalibParams.cxx:147
LArOnlineID_Base
Helper for the Liquid Argon Calorimeter cell identifiers.
Definition: LArOnlineID_Base.h:105
LArCaliWaveBuilder::m_useDacAndIsPulsedIndex
bool m_useDacAndIsPulsedIndex
Definition: LArCaliWaveBuilder.h:71
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LArCaliWaveBuilder::WaveMap
std::map< int, LArCaliWave > WaveMap
Definition: LArCaliWaveBuilder.h:56
LArCalibParams::Delay
unsigned Delay(const unsigned event, const HWIdentifier calibLineID) const
Definition: LArCalibParams.cxx:128
LArCaliWaveBuilder::m_pedSub
bool m_pedSub
Definition: LArCaliWaveBuilder.h:61
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArOnlineID
Definition: LArOnlineID.h:20
LArCaliWaveBuilder::m_event_counter
unsigned m_event_counter
Definition: LArCaliWaveBuilder.h:81
LArOnline_SuperCellID
Definition: LArOnline_SuperCellID.h:20
CaloGain::CaloGain
CaloGain
Definition: CaloGain.h:11
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
DeMoScan.index
string index
Definition: DeMoScan.py:362
LArWaveHelper.h
LArWave::meas
@ meas
Definition: LArWave.h:122
LArAccumulatedCalibDigitContainer::getDelayScale
double getDelayScale() const
get the delay Scale
Definition: LArAccumulatedCalibDigitContainer.h:38
ILArPedestal.h
LArConditionsContainer::initialize
virtual StatusCode initialize()
Initialization done after creation or read back - derived classes may augment the functionality.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LArCaliWaveBuilder::m_waves
WaveContainer m_waves
Definition: LArCaliWaveBuilder.h:58
LArFebErrorSummary
Holds information from the FEB Error Summary.
Definition: LArFebErrorSummary.h:23
DeMoScan.first
bool first
Definition: DeMoScan.py:534
LArCaliWaveBuilder::m_checkEmptyPhases
bool m_checkEmptyPhases
Definition: LArCaliWaveBuilder.h:77
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
LArConditionsContainer::begin
ConstConditionsMapIterator begin(unsigned int gain) const
get iterator for all channels for a gain
LArOnline_SuperCellID.h
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
LArElecCalib::ERRORCODE
@ ERRORCODE
Definition: LArCalibErrorCode.h:17
LArFebErrorSummary.h
LArCaliWaveBuilder::m_NStep
int m_NStep
Definition: LArCaliWaveBuilder.h:82
LArOnlineID_Base::channel_name
std::string channel_name(const HWIdentifier id) const
Return a string corresponding to a feedthrough name given an identifier.
Definition: LArOnlineID_Base.cxx:218
test_pyathena.counter
counter
Definition: test_pyathena.py:15
LArAccumulatedCalibDigitContainer
Container class for LArAccumulatedCalibDigit.
Definition: LArAccumulatedCalibDigitContainer.h:25
LArWaveCumul::getErrors
const std::vector< double > & getErrors() const
error vector
Definition: LArWaveCumul.h:138
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
fitman.k
k
Definition: fitman.py:528
LArOnlineID.h
DiTauMassTools::TauTypes::ll
@ ll
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:49
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20
LArWaveCumul::getTriggers
const std::vector< int > & getTriggers() const
trigger vector
Definition: LArWaveCumul.h:150