ATLAS Offline Software
LArSC2Ntuple.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
12 
13 LArSC2Ntuple::LArSC2Ntuple(const std::string& name, ISvcLocator* pSvcLocator):
14  LArDigits2Ntuple(name, pSvcLocator) {
15  m_ntTitle = "SCDigits";
16  m_ntpath = "/NTUPLES/FILE1/SCDIGITS";
17  }
18 
20 
21  ATH_MSG_DEBUG( "LArSC2Ntuple in initialize" );
22 
23  m_isSC = true;
24  if(m_fillTType && (! m_fillLB)) m_fillLB = true;
25  if(m_fillCaloTT && (! m_fillLB)) m_fillLB = true;
26 
28  ATH_CHECK( m_scidtool.retrieve() );
29 
32  ATH_CHECK( m_eventInfoDecorKey.initialize() );
33 
35 
36  StatusCode sc=m_nt->addItem("latomeChannel",m_latomeChannel);
37  if (sc.isFailure()) {
38  ATH_MSG_ERROR( "addItem 'latomeChannel' failed" );
39  return sc;
40  }
41 
42  sc = m_nt->addItem("bcidVec",m_Nsamples, m_bcidVec);//here - > define length?
43  if (sc.isFailure()) {
44  ATH_MSG_ERROR( "addItem 'bcidVec' failed" );
45  return sc;
46  }
47  sc = m_nt->addItem("latomeSourceId",m_latomeSourceId);
48  if (sc.isFailure()) {
49  ATH_MSG_ERROR( "addItem 'latomeSourceId' failed" );
50  return sc;
51  }
52  sc = m_nt->addItem("Net",m_ntNet);
53  if (sc.isFailure()) {
54  ATH_MSG_ERROR( "addItem 'Net' failed" );
55  return sc;
56  }
57 
58  // Loop over container keys
59  for ( const std::string &ck : m_contKeys ){
60  if ( ck.find("SC") == std::string::npos){ // main readout only
61  if ( m_fillRawChan && ck == "LArRawChannels" ){
62  sc = m_nt->addItem("ROD_energy", 16, m_ROD_energy);
63  if (sc.isFailure()) {
64  ATH_MSG_ERROR( "addItem 'ROD_energy' failed" );
65  return sc;
66  }
67  sc = m_nt->addItem("ROD_time", 16, m_ROD_time);
68  if (sc.isFailure()) {
69  ATH_MSG_ERROR( "addItem 'ROD_time' failed" );
70  return sc;
71  }
72  sc = m_nt->addItem("ROD_id", 16, m_ROD_id);
73  if (sc.isFailure()) {
74  ATH_MSG_ERROR( "addItem 'ROD_id' failed" );
75  return sc;
76  }
77  }
78 
79  }else if ( ck == "SC_ADC_BAS" ){ // SC_ADC_BAS DigitContainer
80  sc = m_nt->addItem("samples_ADC_BAS",m_Nsamples,m_samples_ADC_BAS);
81  if (sc.isFailure()) {
82  ATH_MSG_ERROR( "addItem 'samples_ADC_BAS' failed" );
83  return sc;
84  }
85 
86  sc = m_nt->addItem("bcidVec_ADC_BAS",m_Nsamples, m_bcidVec_ADC_BAS);//here - > define length?
87  if (sc.isFailure()) {
88  ATH_MSG_ERROR( "addItem 'bcidVec_ADC_BAS' failed" );
89  return sc;
90  }
91 
92  }else if ( ck == "SC_ET" ){ // SC_ET RawSCContainer
93  sc = m_nt->addItem("energyVec_ET", m_Net, m_energyVec_ET);
94  if (sc.isFailure()) {
95  ATH_MSG_ERROR( "addItem 'energyVec_ET' failed" );
96  return sc;
97  }
98  sc = m_nt->addItem("bcidVec_ET", m_Net, m_bcidVec_ET);
99  if (sc.isFailure()) {
100  ATH_MSG_ERROR( "addItem 'bcidVec_ET' failed" );
101  return sc;
102  }
103  sc = m_nt->addItem("saturVec_ET", m_Net, m_saturVec_ET);
104  if (sc.isFailure()) {
105  ATH_MSG_ERROR( "addItem 'saturVec_ET' failed" );
106  return sc;
107  }
108 
109  }else if ( ck == "SC_ET_ID" ){ // SC_ET_ID RawSCContainer
110 
111  sc = m_nt->addItem("energyVec_ET_ID", m_Net, m_energyVec_ET_ID);
112  if (sc.isFailure()) {
113  ATH_MSG_ERROR( "addItem 'energyVec_ET_ID' failed" );
114  return sc;
115  }
116  sc = m_nt->addItem("bcidVec_ET_ID", m_Net, m_bcidVec_ET_ID);
117  if (sc.isFailure()) {
118  ATH_MSG_ERROR( "addItem 'bcidVec_ET_ID' failed" );
119  return sc;
120  }
121  sc = m_nt->addItem("saturVec_ET_ID", m_Net, m_saturVec_ET_ID);
122  if (sc.isFailure()) {
123  ATH_MSG_ERROR( "addItem 'saturVec_ET_ID' failed" );
124  return sc;
125  }
126  }
127 
128  }// end container key loop
129 
130  sc = m_nt->addItem("bcidLATOMEHEAD",m_bcidLATOMEHEAD);
131  if (sc.isFailure()) {
132  ATH_MSG_ERROR( "addItem 'bcidLATOMEHEAD' failed" );
133  return sc;
134  }
135 
136  if(m_fillTType) {
137  sc = m_evt_nt->addItem("TType", m_TType);
138  if (sc.isFailure()) {
139  ATH_MSG_ERROR( "addItem 'TType' failed" );
140  return sc;
141  }
142 
143  sc = m_evt_nt->addItem("LArEventBits", m_LArEventBits);
144  if (sc.isFailure()) {
145  ATH_MSG_ERROR( "addItem 'LArEventBits' failed" );
146  return sc;
147  }
148  sc = m_evt_nt->addItem("LArError", m_LArInError);
149  if (sc.isFailure()) {
150  ATH_MSG_ERROR( "addItem 'LArError' failed" );
151  return sc;
152  }
153  //Adding trigger decision bit branches
154  CHECK( m_trigDec.retrieve() );
155  for ( const std::string &tn : m_trigNames ){
156  sc = m_evt_nt->addItem(tn,m_trigNameMap[tn]);
157  if (sc.isFailure()) {
158  ATH_MSG_ERROR( "addItem '"+tn+"' failed" );
159  return sc;
160  }
161  }
162 
163  }//m_fillTType
164 
165  if(m_fillCaloTT) {
166  sc = m_evt_nt->addItem("NTT",m_ntNTT,0,20000);
167  if (sc.isFailure()) {
168  ATH_MSG_ERROR( "addItem 'Net' failed" );
169  return sc;
170  }
171  sc = m_evt_nt->addItem("TTeta", m_ntNTT, m_TTeta);
172  if (sc.isFailure()) {
173  ATH_MSG_ERROR( "addItem 'TTeta' failed" );
174  return sc;
175  }
176  sc = m_evt_nt->addItem("TTphi", m_ntNTT, m_TTphi);
177  if (sc.isFailure()) {
178  ATH_MSG_ERROR( "addItem 'TTphi' failed" );
179  return sc;
180  }
181  sc = m_evt_nt->addItem("TTEem", m_ntNTT, m_TTEem);
182  if (sc.isFailure()) {
183  ATH_MSG_ERROR( "addItem 'TTEem' failed" );
184  return sc;
185  }
186  sc = m_evt_nt->addItem("TTEhad", m_ntNTT, m_TTEhad);
187  if (sc.isFailure()) {
188  ATH_MSG_ERROR( "addItem 'TTEhad' failed" );
189  return sc;
190  }
191  } // end m_fillCaloTT
192 
193  return StatusCode::SUCCESS;
194 
195 }
196 
198 {
199 
200  StatusCode sc;
201 
202  const EventContext& ctx = Gaudi::Hive::currentContext();
203 
205  ATH_CHECK(evt.isValid());
206 
207  unsigned long long thisevent = evt->eventNumber();
208  unsigned short thislb = evt->lumiBlock();
209 
210  // This should be used for main readout later, once TDAQ fill event headers also in calib. runs properly
211  unsigned long thisbcid = evt->bcid();
212  unsigned long thisELVL1Id = 0;
213  unsigned long thisttype = evt->level1TriggerType();
214  //
216  bool hasDigitContainer=true;
217  const LArDigitContainer *DigitContainer = nullptr;
218  if(!m_contKey.key().empty()) {
220  if(!hdlDigit.isValid()) {
221  ATH_MSG_WARNING( "Unable to retrieve LArDigitContainer with key " << m_contKey << " from DetectorStore. " );
222  hasDigitContainer=false;
223  } else {
224  ATH_MSG_DEBUG( "Got LArDigitContainer with key " << m_contKey.key() );
225  DigitContainer = hdlDigit.cptr();
226  }
227  } else hasDigitContainer=false;
228 
229  bool hasAccCalibDigitContainer=true;
230  const LArAccumulatedCalibDigitContainer *AccCalibDigitContainer = nullptr;
231  if(!m_accCalibContKey.key().empty()) {
233  if(!hdlAccDigit.isValid()) {
234  ATH_MSG_WARNING( "Unable to retrieve LArAccumulatedCalibDigitContainer with key " << m_accCalibContKey << " from DetectorStore. " );
235  hasAccCalibDigitContainer=false;
236  } else {
237  ATH_MSG_DEBUG( "Got LArAccumulatedCalibDigitContainer with key " << m_accCalibContKey.key() );
238  AccCalibDigitContainer = hdlAccDigit.cptr();
239  }
240  } else hasAccCalibDigitContainer=false;
241 
242  bool hasAccDigitContainer=true;
243  const LArAccumulatedDigitContainer *AccDigitContainer = nullptr;
244  if(!m_accContKey.key().empty()) {
246  if(!hdlAccDigit.isValid()) {
247  ATH_MSG_WARNING( "Unable to retrieve LArAccumulatedDigitContainer with key " << m_accContKey << " from DetectorStore. " );
248  hasAccDigitContainer=false;
249  } else {
250  ATH_MSG_DEBUG( "Got LArAccumulatedDigitContainer with key " << m_accContKey.key() );
251  AccDigitContainer = hdlAccDigit.cptr();
252  }
253  } else hasAccDigitContainer=false;
254 
255  const LArDigitContainer* DigitContainer_next = nullptr;
256  const LArRawSCContainer* etcontainer = nullptr;
257  const LArRawSCContainer* etcontainer_next = nullptr;
258  const LArRawChannelContainer* RawChannelContainer = nullptr;
259  const LArLATOMEHeaderContainer*headcontainer = nullptr;
260  std::map<unsigned int, const LArLATOMEHeader*> LATOMEHeadMap;
261  rawChanMap_t rawChannelMap;
262 
263  if ((std::find(m_contKeys.begin(), m_contKeys.end(), "LArRawChannels") != m_contKeys.end()) ){
264  sc = evtStore()->retrieve(RawChannelContainer,"LArRawChannels");
265  if (sc.isFailure()) {
266  ATH_MSG_WARNING( "Unable to retrieve LArRawChannelContainer with key LArRawChannels from DetectorStore. " );
267  }
268  else
269  ATH_MSG_DEBUG( "Got LArRawChannelContainer with key LArRawChannels" );
270  }
271 
272  if ((std::find(m_contKeys.begin(), m_contKeys.end(), "SC_ADC_BAS") != m_contKeys.end()) ){
273  sc = evtStore()->retrieve(DigitContainer_next,"SC_ADC_BAS");
274  if (sc.isFailure()) {
275  ATH_MSG_WARNING( "Unable to retrieve LArDigitContainer with key SC_ADC_BAS from DetectorStore. " );
276  }
277  else
278  ATH_MSG_DEBUG( "Got additional LArDigitContainer with key SC_ADC_BAS " );
279  }
280 
281  if ((std::find(m_contKeys.begin(), m_contKeys.end(), "SC_ET") != m_contKeys.end()) ){
282  sc = evtStore()->retrieve(etcontainer,"SC_ET");
283  if (sc.isFailure()) {
284  ATH_MSG_WARNING( "Unable to retrieve LArRawSCContainer with key SC_ET from DetectorStore. " );
285  }
286  else
287  ATH_MSG_DEBUG( "Got LArRawSCContainer with key SC_ET " );
288  }
289 
290  if ((std::find(m_contKeys.begin(), m_contKeys.end(), "SC_ET_ID") != m_contKeys.end()) ){
291  sc = evtStore()->retrieve(etcontainer_next,"SC_ET_ID");
292  if (sc.isFailure()) {
293  ATH_MSG_WARNING( "Unable to retrieve LArRawSCContainer with key SC_ET_ID from DetectorStore. " );
294  }
295  else
296  ATH_MSG_DEBUG( "Got LArRawSCContainer with key SC_ET_ID" );
297  }
298 
300  if (! hdrCont.isValid()) {
301  ATH_MSG_WARNING( "No LArLATOME container found in TDS" );
302  } else {
303  ATH_MSG_DEBUG( "LArLATOME container found");
304  headcontainer=&*hdrCont;
305  thisELVL1Id = (*hdrCont->begin())->L1Id();
306  ATH_MSG_DEBUG( " ELVL1I FROM LATOME HEADER " << thisELVL1Id );
307  }
308 
309  if (headcontainer){// loop through header container and fill map
310  for (const LArLATOMEHeader* hit : *headcontainer) {
311  LATOMEHeadMap.try_emplace ( hit->SourceId(), hit );
312  }
313  }
314  if(m_fillRawChan && RawChannelContainer){
315  for (const LArRawChannel& raw : *RawChannelContainer) {
316  rawChannelMap.try_emplace( raw.channelID(), &raw );
317  }
318  }
319  const LArOnOffIdMapping* cabling=nullptr;
320  const LArOnOffIdMapping* cablingROD=nullptr;
321  if(m_fillRawChan){
323  cabling=*cablingHdl;
324  if(!cabling) {
325  ATH_MSG_ERROR( "Do not have cabling for SC!" );
326  return StatusCode::FAILURE;
327  }
329  cablingROD=*cablingHdlROD;
330  if(!cablingROD) {
331  ATH_MSG_ERROR( "Do not have cabling for ROD!" );
332  return StatusCode::FAILURE;
333  }
334  }
335 
337  if( DigitContainer_next && DigitContainer_next->empty() ) DigitContainer_next = nullptr;
338 
339  if( etcontainer && etcontainer->empty() ) etcontainer = nullptr;
340 
341  if( etcontainer_next && etcontainer_next->empty() ) etcontainer_next = nullptr;
342 
343  int cellsno = 0;
344  if (hasDigitContainer) {
345  if( !DigitContainer->empty() ) cellsno = DigitContainer->size();
346  else {
347  ATH_MSG_WARNING("DigitContainer has zero size, but asked, will be not filled... ");
348  return StatusCode::SUCCESS;
349  }
350  }
351  ATH_MSG_DEBUG("DigitContainer has size: "<<cellsno<<" hasDigitContainer: "<<hasDigitContainer);
352 
353  if (hasAccCalibDigitContainer) {
354  if( !AccCalibDigitContainer->empty() ) {
355  cellsno = AccCalibDigitContainer->size();
356  ATH_MSG_DEBUG("AccCalibDigitContainer has size: "<<cellsno<<" hasAccCalibDigitContainer: "<<hasAccCalibDigitContainer);
357  } else {
358  ATH_MSG_WARNING("AccCalibDigitContainer has zero size, but asked, will be not filled... ");
359  return StatusCode::SUCCESS;
360  }
361  }
362  if (hasAccDigitContainer) {
363  if( !AccDigitContainer->empty() ) {
364  cellsno = AccDigitContainer->size();
365  ATH_MSG_DEBUG("AccDigitContainer has size: "<<cellsno<<" hasAccDigitContainer: "<<hasAccDigitContainer);
366  } else {
367  ATH_MSG_WARNING("AccDigitContainer has zero size, but asked, will be not filled... ");
368  return StatusCode::SUCCESS;
369  }
370  }
371 
372  if (DigitContainer_next){
373  if ( cellsno == 0 ){
374  cellsno = DigitContainer_next->size();
375  }else if(DigitContainer_next->size() != (unsigned)cellsno ){ ATH_MSG_ERROR(" NOOOOOOO! Different number of entries in DigitContainer_next"<< cellsno << " " << DigitContainer_next->size() );
376  }
377  }
378  if (etcontainer){
379  if ( cellsno == 0 ){
380  cellsno = etcontainer->size();
381  }else if(etcontainer->size() != (unsigned)cellsno ){ ATH_MSG_ERROR(" NOOOOOOO! Different number of entries in etcontainer"<< cellsno << " " << etcontainer->size() );
382  }
383  }
384  if (etcontainer_next){
385  if ( cellsno == 0 ){
386  cellsno = etcontainer_next->size();
387  }else if(etcontainer_next->size() != (unsigned)cellsno ){ ATH_MSG_ERROR(" NOOOOOOO! Different number of entries in etcontainer_next"<< cellsno << " " << etcontainer_next->size() );
388  }
389  }
390  unsigned cellCounter = 0;
391  ATH_MSG_DEBUG("cellsno size: "<<cellsno);
392 
393  for( int c = 0;c<cellsno;++c ){
394  if(m_fillBCID) m_bcid = thisbcid;
395 
396  m_ELVL1Id = thisELVL1Id;
397  m_IEvent = thisevent;
398  if(m_overwriteEventNumber) m_IEvent = ctx.evt();
399 
400  if( hasAccDigitContainer ){
401 
402  const LArAccumulatedDigit* digi = AccDigitContainer->at(c);
403  // ======================
404 
405 
406  unsigned int trueMaxSample = digi->nsample();
407 
408  if(trueMaxSample>m_Nsamples){
409  if(!m_ipass){
410  ATH_MSG_DEBUG( "The number of samples in data is larger than the one specified by JO: " << trueMaxSample << " > " << m_Nsamples << " --> only " << m_Nsamples << " will be available in the ntuple " );
411  m_ipass = 1;
412  }
413  trueMaxSample = m_Nsamples;
414  }
415  m_ntNsamples = trueMaxSample;
416 
417  fillFromIdentifier(digi->hardwareID());
418 
419  for(unsigned i = 0; i<trueMaxSample;++i) {
420  m_mean[i] = digi->mean(i);
421  m_RMS[i] = digi->RMS(i);
422  }
423 
424  }//hasAccDigitContainer
425 
426  if( hasAccCalibDigitContainer ){
427 
428  const LArAccumulatedCalibDigit* digi = AccCalibDigitContainer->at(c);
429  // ======================
430 
431 
432  unsigned int trueMaxSample = digi->nsamples();
433 
434  if(trueMaxSample>m_Nsamples){
435  if(!m_ipass){
436  ATH_MSG_DEBUG( "The number of samples in data is larger than the one specified by JO: " << trueMaxSample << " > " << m_Nsamples << " --> only " << m_Nsamples << " will be available in the ntuple " );
437  m_ipass = 1;
438  }
439  trueMaxSample = m_Nsamples;
440  }
441  m_ntNsamples = trueMaxSample;
442 
443  fillFromIdentifier(digi->hardwareID());
444 
445  for(unsigned i = 0; i<trueMaxSample;++i) {
446  m_mean[i] = digi->mean(i);
447  m_RMS[i] = digi->RMS(i);
448  }
449  m_dac = digi->DAC();
450  m_delay = digi->delay();
451  m_pulsed = digi->getIsPulsedInt();
452 
453  }//hasAccCalibDigitContainer
454 
455  if( hasDigitContainer ){
456 
457  const LArDigit* digi = DigitContainer->at(c);
458  // ======================
459 
460  unsigned int trueMaxSample = digi->nsamples();
461 
462  if(trueMaxSample>m_Nsamples){
463  if(!m_ipass){
464  ATH_MSG_DEBUG( "The number of samples in data is larger than the one specified by JO: " << trueMaxSample << " > " << m_Nsamples << " --> only " << m_Nsamples << " will be available in the ntuple " );
465  m_ipass = 1;
466  }
467  trueMaxSample = m_Nsamples;
468  }
469  m_ntNsamples = trueMaxSample;
470 
471  fillFromIdentifier(digi->hardwareID());
472 
473  if(m_FTlist.size() > 0) { // should do a selection
474  if(std::find(std::begin(m_FTlist), std::end(m_FTlist), m_FT) == std::end(m_FTlist)) { // is our FT in list ?
475  continue;
476  }
477  }
478 
479 
480  for(unsigned i = 0; i<trueMaxSample;++i) m_samples[i] = digi->samples().at(i);
481 
482  const LArSCDigit* scdigi = dynamic_cast<const LArSCDigit*>(digi);
483  if(!scdigi){
484  ATH_MSG_DEBUG(" Can't cast digi to LArSCDigit*");
485  }else{
486  if (headcontainer){
487  ATH_MSG_DEBUG(" Accessing LATOME header ");
488  const LArLATOMEHeader*headmap = LATOMEHeadMap[scdigi->SourceId()];
489  if(headmap){
490  m_bcidLATOMEHEAD = headmap->BCId();
491  m_ELVL1Id = headmap->L1Id();
492  }
493  }
494  m_latomeChannel = scdigi->Channel();
495  unsigned int trueMaxBcid = trueMaxSample;
496  if(trueMaxBcid > scdigi->BCId().size()) trueMaxBcid=scdigi->BCId().size();
497  for( unsigned i = 0; i<trueMaxBcid; ++i){
498  m_bcidVec[i] = scdigi->BCId().at(i);
499  }
500  m_latomeSourceId = scdigi->SourceId();
501  }
502 
503 
504  if( m_fillRawChan && RawChannelContainer ){
505  fillRODEnergy(digi->hardwareID(), rawChannelMap, cabling, cablingROD);
506  }
507  }//hasDigitContainer
508  ATH_MSG_DEBUG("After hasDigitContainer ");
509 
510 
511  // DigitContainer 1 -> SC_ADC_BAS
512  if( DigitContainer_next ){
513 
514  const LArDigit* digi = DigitContainer_next->at(c);
515 
516  unsigned int trueMaxSample = digi->nsamples();
517 
518  if(trueMaxSample>m_Nsamples){
519  if(!m_ipass){
520  ATH_MSG_DEBUG( "The number of samples in data is larger than the one specified by JO: " << trueMaxSample << " > " << m_Nsamples << " --> only " << m_Nsamples << " will be available in the ntuple " );
521  m_ipass=1;
522  }
523  trueMaxSample = m_Nsamples;
524  }
525  m_ntNsamples = trueMaxSample;
526 
527  if( !hasDigitContainer){
529  if( m_fillRawChan && RawChannelContainer ){
530  fillRODEnergy(digi->hardwareID(), rawChannelMap, cabling, cablingROD);
531  }
532  }
533 
534  for(unsigned i = 0; i<trueMaxSample;++i) m_samples_ADC_BAS[i] = digi->samples().at(i);
535 
536  const LArSCDigit* scdigi = dynamic_cast<const LArSCDigit*>(digi);
537  if(!scdigi){ ATH_MSG_DEBUG(" Can't cast digi to LArSCDigit*");
538  }else{
539  if (headcontainer){
540  const LArLATOMEHeader*headmap = LATOMEHeadMap[scdigi->SourceId()];
541  if(headmap){
542  m_bcidLATOMEHEAD = headmap->BCId();
543  m_ELVL1Id = headmap->L1Id();
544  }
545  }
546  m_latomeChannel = scdigi->Channel();
547  for( unsigned i = 0; i<trueMaxSample;++i){
548  m_bcidVec[i] = scdigi->BCId().at(i);
549  }
550  m_latomeSourceId = scdigi->SourceId();
551  }
552 
553  if( !hasDigitContainer && m_fillRawChan && RawChannelContainer ){
554  fillRODEnergy(digi->hardwareID(), rawChannelMap, cabling, cablingROD);
555  }
556  }
557  ATH_MSG_DEBUG("After DigitContainer_next ");
558 
559 
560 
561  // etcontainer -> SC_ET
562  if( etcontainer ){
563  const LArRawSC*rawSC = etcontainer->at(c);
564 
565  if ( !hasDigitContainer && !DigitContainer_next ){
566  fillFromIdentifier(rawSC->hardwareID());
567  m_latomeChannel = rawSC->chan();
568  if (headcontainer){
569  const LArLATOMEHeader*headmap = LATOMEHeadMap[rawSC->SourceId()];
570  if(headmap){
571  m_bcidLATOMEHEAD = headmap->BCId();
572  m_ELVL1Id = headmap->L1Id();
573  }
574  }
575  if( m_fillRawChan && RawChannelContainer ){
576  fillRODEnergy(rawSC->hardwareID(), rawChannelMap, cabling, cablingROD);
577  }
578  }
579  unsigned int truenet = m_Net;
580  if(truenet > rawSC->bcids().size()) truenet=rawSC->bcids().size();
581  for( unsigned i=0; i<truenet;++i){ // just use the vector directly?
582  m_bcidVec_ET[i] = rawSC->bcids().at(i);
583  }
584  if(truenet > rawSC->energies().size()) truenet=rawSC->energies().size();
585  for( unsigned i=0; i<truenet;++i){ // just use the vector directly?
586  m_energyVec_ET[i] = rawSC->energies().at(i);
587  }
588  if(truenet > rawSC->satur().size()) truenet=rawSC->satur().size();
589  for( unsigned i = 0; i<truenet;++i){ // just use the vector directly?
590  m_saturVec_ET[i] = rawSC->satur().at(i);
591  }
592  m_Net=truenet;
593  m_ntNet=truenet;
594 
595  }
596  // etcontainer_next -> SC_ET_ID
597  if( etcontainer_next ){
598  const LArRawSC*rawSC = etcontainer_next->at(c);
599 
600  if ( !hasDigitContainer && !DigitContainer_next && !etcontainer ){
601  fillFromIdentifier(rawSC->hardwareID());
602  m_latomeChannel = rawSC->chan();
603  if (headcontainer){
604  const LArLATOMEHeader*headmap = LATOMEHeadMap[rawSC->SourceId()];
605  if(headmap){
606  m_bcidLATOMEHEAD = headmap->BCId();
607  m_ELVL1Id = headmap->L1Id();
608  }
609  }
610  if( m_fillRawChan && RawChannelContainer ){
611  fillRODEnergy(rawSC->hardwareID(), rawChannelMap, cabling, cablingROD);
612  }
613  }
614  for( unsigned i=0; i<rawSC->bcids().size();++i){ // just use the vector directly?
615  m_bcidVec_ET_ID[i] = rawSC->bcids()[i];
616  }
617  for( unsigned i=0; i<rawSC->energies().size();++i){ // just use the vector directly?
618  m_energyVec_ET_ID[i] = rawSC->energies()[i];
619  }
620  for( unsigned i = 0; i<rawSC->satur().size();++i){ // just use the vector directly?
621  m_saturVec_ET_ID[i] = rawSC->satur()[i];
622  }
623  }
624 
625  sc = ntupleSvc()->writeRecord(m_nt);
626  if (sc != StatusCode::SUCCESS) {
627  ATH_MSG_ERROR( "writeRecord failed" );
628  return sc;
629  }
630  cellCounter++;
631  }// over cells
632  if(m_fillTType) {
633  m_TType = thisttype;
634  m_IEventEvt = thisevent;
636  m_LB = thislb;
637 
638  for (auto const & x : m_trigNames) {
639  if( ! m_trigDec->getListOfTriggers(x).empty() ){
640  m_trigNameMap[x] = m_trigDec->isPassedBits( x );
641  }
642  }
643  m_LArEventBits = evt->eventFlags(xAOD::EventInfo::LAr);
644  m_LArInError = 0;
647 
648  }
649  if(m_fillCaloTT){
650  const DataVector<LVL1::TriggerTower>* TTVector = nullptr;
651  if ( evtStore()->retrieve(TTVector,m_triggerTowerKey).isFailure() ) {
652  ATH_MSG_WARNING("Could not get the Calo TTs, will not fill...");
653  } else {
654  unsigned count=0;
655  ATH_MSG_INFO("Got TT vector of the sixe " << TTVector->size());
657  for ( x = TTVector->begin(); x < TTVector->end(); ++x ){
658  m_TTeta[count]=(*x)->eta();
659  m_TTphi[count]=(*x)->phi();
660  m_TTEem[count]=(*x)->emEnergy();
661  m_TTEhad[count]=(*x)->hadEnergy();
662  ++count;
663  if(count==20000) break;
664  }
665  m_ntNTT=count;
666  }
667  }
668 
669  if(m_fillTType || m_fillCaloTT){
670  sc = ntupleSvc()->writeRecord(m_evt_nt);
671  if (sc != StatusCode::SUCCESS) {
672  ATH_MSG_ERROR( "writeRecord failed" );
673  return sc;
674  }
675  }
676 
677  ATH_MSG_DEBUG( "LArSC2Ntuple has finished, filled " << cellCounter << " cells");
678  return StatusCode::SUCCESS;
679 }// end finalize-method.
680 
682 {
683  const Identifier offId = cabling->cnvToIdentifier(SCId);
684  const std::vector<Identifier> cellIds = m_scidtool->superCellToOfflineID(offId);
685  std::fill(m_ROD_energy.begin(), m_ROD_energy.end(), 0.);
686  std::fill(m_ROD_time.begin(), m_ROD_time.end(), 0.);
687  std::fill(m_ROD_id.begin(), m_ROD_id.end(), 0.);
688  for(unsigned i=0; i<cellIds.size(); ++i ) {
689  const HWIdentifier hwcell=cablingROD->createSignalChannelID(cellIds[i]);
690  if (hwcell.is_valid() && (rawChanMap.count(hwcell) != 0) ) {
691  m_ROD_energy[i] = rawChanMap[hwcell]->energy();
692  m_ROD_time[i] = rawChanMap[hwcell]->time();
693  m_ROD_id[i] = rawChanMap[hwcell]->hardwareID().get_identifier32().get_compact();
694  } else {
695  ATH_MSG_DEBUG(i<<"-th cell invalid Id");
696  }
697  }
698 
699 }
LArDigits2Ntuple::m_evt_nt
NTuple::Tuple * m_evt_nt
Definition: LArDigits2Ntuple.h:54
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
LArRawSC
Liquid Argon SuperCell raw data.
Definition: LArRawSC.h:19
LArAccumulatedCalibDigit
Data class for calibration ADC samples preprocessed by the DSP.
Definition: LArAccumulatedCalibDigit.h:42
LArSC2Ntuple::m_ROD_time
NTuple::Array< float > m_ROD_time
Definition: LArSC2Ntuple.h:55
LArSC2Ntuple::m_TTphi
NTuple::Array< double > m_TTphi
Definition: LArSC2Ntuple.h:88
LArSC2Ntuple::m_cablingKeyAdditional
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKeyAdditional
Definition: LArSC2Ntuple.h:42
LArSC2Ntuple::m_trigNames
Gaudi::Property< std::vector< std::string > > m_trigNames
Definition: LArSC2Ntuple.h:39
LArDigits2Ntuple::m_dac
NTuple::Item< unsigned int > m_dac
Definition: LArDigits2Ntuple.h:48
LArRawSCContainer.h
LArSC2Ntuple::m_LArLatomeHeaderContainerKey
SG::ReadHandleKey< LArLATOMEHeaderContainer > m_LArLatomeHeaderContainerKey
Definition: LArSC2Ntuple.h:49
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
LArDigits2Ntuple::m_IEventEvt
NTuple::Item< unsigned long long > m_IEventEvt
Definition: LArDigits2Ntuple.h:56
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
LArAccumulatedDigitContainer
Container class for LArAccumulatedDigit.
Definition: LArAccumulatedDigitContainer.h:22
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
LArSC2Ntuple::m_samples_ADC_BAS
NTuple::Array< short > m_samples_ADC_BAS
Definition: LArSC2Ntuple.h:69
FeatureContainer.h
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
LArDigits2Ntuple::m_Nsamples
Gaudi::Property< unsigned int > m_Nsamples
Definition: LArDigits2Ntuple.h:31
LArRawSC::SourceId
unsigned int SourceId() const
Definition: LArRawSC.h:95
LArSC2Ntuple::m_bcidLATOMEHEAD
NTuple::Item< uint16_t > m_bcidLATOMEHEAD
Definition: LArSC2Ntuple.h:62
LArDigits2Ntuple::m_fillBCID
Gaudi::Property< bool > m_fillBCID
Definition: LArDigits2Ntuple.h:36
LArRawSCContainer
Container class for LArRawSC.
Definition: LArRawSCContainer.h:17
LArRawSC::hardwareID
const HWIdentifier & hardwareID() const
Definition: LArRawSC.h:89
LArDigits2Ntuple::m_fillLB
Gaudi::Property< bool > m_fillLB
Definition: LArDigits2Ntuple.h:37
LArAccumulatedCalibDigit::nsamples
size_t nsamples() const
return number of samples
Definition: LArAccumulatedCalibDigit.h:120
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
LArLATOMEHeaderContainer.h
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
LArDigit::samples
const std::vector< short > & samples() const
Definition: LArDigit.h:78
LArDigit::hardwareID
const HWIdentifier & hardwareID() const
Definition: LArDigit.h:66
Feature.h
LArAccumulatedDigit::mean
float mean(int n_min=-1, int n_max=-1) const
Calculates and returns the Mean value of ADC samples.
Definition: LArAccumulatedDigit.cxx:41
LArSC2Ntuple::m_energyVec_ET_ID
NTuple::Array< int > m_energyVec_ET_ID
Definition: LArSC2Ntuple.h:76
LArDigits2Ntuple::m_IEvent
NTuple::Item< unsigned long long > m_IEvent
Definition: LArDigits2Ntuple.h:43
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
LArSC2Ntuple::m_bcidVec
NTuple::Array< unsigned short > m_bcidVec
Definition: LArSC2Ntuple.h:67
ChainGroup.h
LArLATOMEHeaderContainer
Container class for LArLATOMEHeader.
Definition: LArLATOMEHeaderContainer.h:19
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
LArSC2Ntuple::rawChanMap_t
std::map< HWIdentifier, const LArRawChannel * > rawChanMap_t
Definition: LArSC2Ntuple.h:28
HWIdentifier
Definition: HWIdentifier.h:13
LArSC2Ntuple::m_ntNet
NTuple::Item< uint32_t > m_ntNet
Definition: LArSC2Ntuple.h:64
LArSCDigit::SourceId
unsigned int SourceId() const
Definition: LArSCDigit.h:45
x
#define x
xAOD::EventInfo_v1::LAr
@ LAr
The LAr calorimeter.
Definition: EventInfo_v1.h:335
LArAccumulatedCalibDigit::getIsPulsedInt
uint16_t getIsPulsedInt() const
get the four bit int that tells which lines pulsed
Definition: LArAccumulatedCalibDigit.h:153
Identifier::is_valid
bool is_valid() const
Check if id is in a valid state.
LArDigits2Ntuple::m_ntNsamples
NTuple::Item< long > m_ntNsamples
Definition: LArDigits2Ntuple.h:39
LArDigits2Ntuple::m_ELVL1Id
NTuple::Item< unsigned long > m_ELVL1Id
Definition: LArDigits2Ntuple.h:42
LArRawSC::satur
const std::vector< bool > & satur() const
Definition: LArRawSC.h:107
LArCond2NtupleBase::cablingKey
const SG::ReadCondHandleKey< LArOnOffIdMapping > & cablingKey() const
Definition: LArCond2NtupleBase.cxx:449
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
xAOD::EventInfo_v1::Error
@ Error
The sub-detector issued an error.
Definition: EventInfo_v1.h:349
LArLATOMEHeader::L1Id
uint32_t L1Id() const
get the L1 Id
Definition: LArLATOMEHeader.h:44
LArAccumulatedDigit::hardwareID
const HWIdentifier & hardwareID() const
Return HWIdentifier.
Definition: LArAccumulatedDigit.h:70
LArSC2Ntuple::LArSC2Ntuple
LArSC2Ntuple(const std::string &name, ISvcLocator *pSvcLocator)
Definition: LArSC2Ntuple.cxx:13
LArSC2Ntuple::m_saturVec_ET
NTuple::Array< bool > m_saturVec_ET
Definition: LArSC2Ntuple.h:74
LArSC2Ntuple::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: LArSC2Ntuple.h:46
LArDigits2Ntuple::m_event
long m_event
Definition: LArDigits2Ntuple.h:29
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
LArSC2Ntuple::m_saturVec_ET_ID
NTuple::Array< bool > m_saturVec_ET_ID
Definition: LArSC2Ntuple.h:78
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
LArDigits2Ntuple::m_FTlist
Gaudi::Property< std::vector< unsigned int > > m_FTlist
Definition: LArDigits2Ntuple.h:32
LArSC2Ntuple::m_TTEhad
NTuple::Array< int > m_TTEhad
Definition: LArSC2Ntuple.h:86
LArDigits2Ntuple::m_bcid
NTuple::Item< short > m_bcid
Definition: LArDigits2Ntuple.h:41
LArAccumulatedDigit
Data class for ADC samples and autocorr preprocessed by the DSP.
Definition: LArAccumulatedDigit.h:32
LArSC2Ntuple::m_TTEem
NTuple::Array< int > m_TTEem
Definition: LArSC2Ntuple.h:85
LArDigits2Ntuple::m_RMS
NTuple::Array< float > m_RMS
Definition: LArDigits2Ntuple.h:47
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LArDigit::nsamples
int nsamples() const
Definition: LArDigit.h:75
LArDigits2Ntuple::m_pulsed
NTuple::Item< unsigned int > m_pulsed
Definition: LArDigits2Ntuple.h:50
LArSC2Ntuple::m_bcidVec_ET_ID
NTuple::Array< unsigned short > m_bcidVec_ET_ID
Definition: LArSC2Ntuple.h:77
LArDigit
Liquid Argon digit base class.
Definition: LArDigit.h:25
lumiFormat.i
int i
Definition: lumiFormat.py:85
LArSC2Ntuple::m_latomeSourceId
NTuple::Item< uint32_t > m_latomeSourceId
Definition: LArSC2Ntuple.h:68
LArRawChannel
Liquid Argon ROD output object base class.
Definition: LArRawChannel.h:40
LArAccumulatedDigit::nsample
int nsample() const
return number of samples
Definition: LArAccumulatedDigit.h:79
LArSC2Ntuple::m_LArEventBits
NTuple::Item< uint32_t > m_LArEventBits
Definition: LArSC2Ntuple.h:81
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArAccumulatedCalibDigit::RMS
std::vector< float > RMS() const
Calculates and returns the RMS value of each ADC sample.
Definition: LArAccumulatedCalibDigit.cxx:50
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
LArCond2NtupleBase::m_ntpath
std::string m_ntpath
Definition: LArCond2NtupleBase.h:65
LArSC2Ntuple::m_fillRawChan
Gaudi::Property< bool > m_fillRawChan
Definition: LArSC2Ntuple.h:37
LArSC2Ntuple::m_fillTType
Gaudi::Property< bool > m_fillTType
Definition: LArSC2Ntuple.h:38
LArCond2NtupleBase::m_nt
NTuple::Tuple * m_nt
Definition: LArCond2NtupleBase.h:68
LArRawSC::chan
short chan() const
Definition: LArRawSC.h:92
LArSCDigit.h
LArLATOMEHeader::BCId
uint16_t BCId() const
get the Bunch Crossing IDs
Definition: LArLATOMEHeader.h:41
LArSC2Ntuple::m_eventInfoDecorKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_eventInfoDecorKey
Definition: LArSC2Ntuple.h:47
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
LArSC2Ntuple::execute
virtual StatusCode execute() override
Definition: LArSC2Ntuple.cxx:197
LArDigits2Ntuple::m_accContKey
SG::ReadHandleKey< LArAccumulatedDigitContainer > m_accContKey
Definition: LArDigits2Ntuple.h:61
LArSC2Ntuple::m_trigDec
ToolHandle< Trig::TrigDecisionTool > m_trigDec
Definition: LArSC2Ntuple.h:44
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
LArSC2Ntuple::m_latomeChannel
NTuple::Item< short > m_latomeChannel
Definition: LArSC2Ntuple.h:52
LArSCDigit::Channel
short Channel() const
Definition: LArSCDigit.h:42
LArSC2Ntuple::m_energyVec_ET
NTuple::Array< int > m_energyVec_ET
Definition: LArSC2Ntuple.h:72
LArSC2Ntuple::m_overwriteEventNumber
Gaudi::Property< bool > m_overwriteEventNumber
Definition: LArSC2Ntuple.h:35
LArSC2Ntuple::m_TType
NTuple::Item< unsigned int > m_TType
Definition: LArSC2Ntuple.h:58
DataVector< LVL1::TriggerTower >
LArSC2Ntuple::fillRODEnergy
void fillRODEnergy(HWIdentifier SCId, rawChanMap_t &rawChanMap, const LArOnOffIdMapping *cabling, const LArOnOffIdMapping *cablingROD)
Definition: LArSC2Ntuple.cxx:681
LArSC2Ntuple::m_bcidVec_ET
NTuple::Array< unsigned short > m_bcidVec_ET
Definition: LArSC2Ntuple.h:73
LArAccumulatedCalibDigit::hardwareID
const HWIdentifier & hardwareID() const
Return HWIdentifier.
Definition: LArAccumulatedCalibDigit.h:111
LArDigits2Ntuple::m_ipass
int m_ipass
Definition: LArDigits2Ntuple.h:28
LArOnOffIdMapping::createSignalChannelID
HWIdentifier createSignalChannelID(const Identifier &id) const
create a HWIdentifier from an Identifier (not inline)
Definition: LArOnOffIdMapping.h:126
LArSC2Ntuple::m_contKeys
Gaudi::Property< std::vector< std::string > > m_contKeys
Definition: LArSC2Ntuple.h:34
LArSCDigit
Base class for LArDigits taken by LATOME.
Definition: LArSCDigit.h:19
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
LArAccumulatedDigit::RMS
float RMS(int n_min=-1, int n_max=-1) const
Calculates and returns the RMS value of ADC samples
Definition: LArAccumulatedDigit.cxx:64
fill
void fill(H5::Group &out_file, size_t iterations)
Definition: test-hdf5-writer.cxx:95
LArSC2Ntuple::m_ROD_id
NTuple::Array< float > m_ROD_id
Definition: LArSC2Ntuple.h:56
LArSC2Ntuple::m_triggerTowerKey
Gaudi::Property< std::string > m_triggerTowerKey
Definition: LArSC2Ntuple.h:50
LArAccumulatedCalibDigit::mean
std::vector< float > mean() const
Calculates and returns the Mean value of each ADC sample.
Definition: LArAccumulatedCalibDigit.cxx:36
LArSC2Ntuple::m_ntNTT
NTuple::Item< uint32_t > m_ntNTT
Definition: LArSC2Ntuple.h:84
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
LArDigits2Ntuple
Definition: LArDigits2Ntuple.h:17
LArCond2NtupleBase::m_ntTitle
std::string m_ntTitle
Definition: LArCond2NtupleBase.h:65
LArDigits2Ntuple::m_contKey
SG::ReadHandleKey< LArDigitContainer > m_contKey
Definition: LArDigits2Ntuple.h:59
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArSC2Ntuple::m_ROD_energy
NTuple::Array< float > m_ROD_energy
Definition: LArSC2Ntuple.h:54
LArAccumulatedCalibDigit::delay
int delay() const
return the setting of the delay
Definition: LArAccumulatedCalibDigit.h:138
LArRawSC::bcids
const std::vector< unsigned short > & bcids() const
Definition: LArRawSC.h:104
LArSC2Ntuple::m_scidtool
ToolHandle< ICaloSuperCellIDTool > m_scidtool
Definition: LArSC2Ntuple.h:43
LArCond2NtupleBase::fillFromIdentifier
bool fillFromIdentifier(const HWIdentifier &id)
Definition: LArCond2NtupleBase.cxx:288
xAOD::EventInfo_v1::Warning
@ Warning
The sub-detector issued a warning.
Definition: EventInfo_v1.h:348
LArLATOMEHeader
Holds information from the LATOME Header.
Definition: LArLATOMEHeader.h:19
LArDigits2Ntuple::initialize
virtual StatusCode initialize()
Definition: LArDigits2Ntuple.cxx:23
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LArDigits2Ntuple::m_delay
NTuple::Item< unsigned int > m_delay
Definition: LArDigits2Ntuple.h:49
LArCond2NtupleBase::m_isSC
Gaudi::Property< bool > m_isSC
Definition: LArCond2NtupleBase.h:55
LArDigits2Ntuple::m_mean
NTuple::Array< float > m_mean
Definition: LArDigits2Ntuple.h:46
LArDigits2Ntuple::m_samples
NTuple::Array< short > m_samples
Definition: LArDigits2Ntuple.h:44
LArDigitContainer
Container class for LArDigit.
Definition: LArDigitContainer.h:24
LArSC2Ntuple::initialize
virtual StatusCode initialize() override
Definition: LArSC2Ntuple.cxx:19
LArSC2Ntuple::m_Net
Gaudi::Property< unsigned int > m_Net
Definition: LArSC2Ntuple.h:36
LArSC2Ntuple::m_bcidVec_ADC_BAS
NTuple::Array< unsigned short > m_bcidVec_ADC_BAS
Definition: LArSC2Ntuple.h:70
DataVector::at
const T * at(size_type n) const
Access an element, as an rvalue.
LArDigits2Ntuple::m_accCalibContKey
SG::ReadHandleKey< LArAccumulatedCalibDigitContainer > m_accCalibContKey
Definition: LArDigits2Ntuple.h:60
ntupleSvc
INTupleSvc * ntupleSvc()
Definition: ServiceAccessor.h:14
LArAccumulatedCalibDigitContainer
Container class for LArAccumulatedCalibDigit.
Definition: LArAccumulatedCalibDigitContainer.h:25
python.compressB64.c
def c
Definition: compressB64.py:93
LArSCDigit::BCId
const std::vector< unsigned short > & BCId() const
Definition: LArSCDigit.h:48
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
LArSC2Ntuple::m_LArInError
NTuple::Item< short > m_LArInError
Definition: LArSC2Ntuple.h:82
LArCond2NtupleBase::m_FT
NTuple::Item< long > m_FT
Definition: LArCond2NtupleBase.h:72
LArDigits2Ntuple::m_LB
NTuple::Item< short > m_LB
Definition: LArDigits2Ntuple.h:57
LArSC2Ntuple::m_TTeta
NTuple::Array< double > m_TTeta
Definition: LArSC2Ntuple.h:87
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
LArSC2Ntuple::m_trigNameMap
std::map< std::string, NTuple::Item< unsigned int > > m_trigNameMap
Definition: LArSC2Ntuple.h:80
LArSC2Ntuple.h
LArSC2Ntuple::m_fillCaloTT
Gaudi::Property< bool > m_fillCaloTT
Definition: LArSC2Ntuple.h:40
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
LArRawChannelContainer
Container for LArRawChannel (IDC using LArRawChannelCollection)
Definition: LArRawChannelContainer.h:26
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20
LArRawSC::energies
const std::vector< int > & energies() const
Definition: LArRawSC.h:101
LArAccumulatedCalibDigit::DAC
int DAC() const
return the number of samples
Definition: LArAccumulatedCalibDigit.h:135
Identifier
Definition: IdentifierFieldParser.cxx:14