ATLAS Offline Software
L1CaloxAODOfflineTriggerTowerTools.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 // ***************************************************************************
5 // * Author: John Morris (john.morris@cern.ch) *
6 // * Queen Mary University of London *
7 // * *
8 
9 // Like it says above, please chop up this code until it does what you want !
10 
12 #include "StoreGate/ReadHandle.h"
13 
14 #include <algorithm> // for std::transform
15 #include <iterator> // for std::back_inserter
16 #include <utility> // for std::move
17 
18 namespace LVL1{
19 
21  asg::AsgTool( name ),
22  m_l1CaloTTIdTools("LVL1::L1CaloTTIdTools/L1CaloTTIdTools"),
23  m_rxMapTool("LVL1::L1CaloFcal23Cells2RxMappingTool/L1CaloFcal23Cells2RxMappingTool"),
24  m_caloMgr(nullptr),
25  m_lvl1Helper(nullptr),
26  m_ttSvc(nullptr),
27  m_dbPpmChanCalib(nullptr)
28  {
29  }
30 
33  {
34  ATH_MSG_INFO("initialize LVL1::L1CaloxAODOfflineTriggerTowerTools");
35 
36  // Get the L1CaloCells2TriggerTowers Tool
37  CHECK( m_cells2tt.retrieve() );
38 
39  // Get the L1CaloTTIdTools Tool
40  CHECK( m_l1CaloTTIdTools.retrieve() );
41 
42  // Get the Fcal23 mapping tool
43  CHECK( m_rxMapTool.retrieve() );
44 
45  CHECK( detStore()->retrieve ( m_caloMgr, "CaloIdManager") );
47 
48  //Retrieve cabling & tt services
49  ISvcLocator* svcLoc = Gaudi::svcLocator( );
50  IToolSvc* toolSvc;
51 
52  CHECK( svcLoc->service( "ToolSvc",toolSvc ) );
53  CHECK( toolSvc->retrieveTool("CaloTriggerTowerService",m_ttSvc) );
54 
56 
57  // Return gracefully:
58  return StatusCode::SUCCESS;
59  }
60 
63  {
64  ATH_MSG_INFO("finalize LVL1::L1CaloxAODOfflineTriggerTowerTools");
65  // Return gracefully:
66  return StatusCode::SUCCESS;
67  }
68 
72  {
74  m_cells2tt->initCaloCellsTriggerTowers( *cells );
75 
76  // Return gracefully:
77  return StatusCode::SUCCESS;
78  }
79 
80  std::vector<L1CaloRxCoolChannelId>
82  {
83  std::vector<L1CaloRxCoolChannelId> rx = m_ttSvc->cnvCoolChannelIdToRxId( tt.coolId() );
84  std::vector<L1CaloRxCoolChannelId> output;
85 
86  // EM
87  if (tt.sampling() == 0) {
88  // Sort EM Crack recievers. End cap first, barrel second
89  if (rx.size() == 3) {
90 
91  // For the EM crack region, there are 3 recievers.
92  // 1 Rx have Crate 0 or 1 - correspond to the barrel before the Octopus cable magic - ignore
93  // 2 Rx have Crate 2 or 3 - correspond to the Rx we want:
94  // 1 Rx has inputConn() == 0 - EMEC receiver
95  // 1 Rx has inputConn() == 2 - Barrel receiver
96 
97  std::vector<L1CaloRxCoolChannelId> rx2;
98  for (const auto& i : rx) {
99  if (i.crate() == 2 || i.crate() == 3) {
100  rx2.push_back( i );
101  }
102  }
103 
104  if (rx2.size() == 2) {
105 
106  unsigned int inputA = rx2.at(0).inputConn();
107  unsigned int inputB = rx2.at(1).inputConn();
108 
109  // End cap first, barrel second
110  if (inputA == 2 && inputB == 0) {
111  output.push_back(rx2.at(1));
112  output.push_back(rx2.at(0));
113  }
114  if (inputA == 0 && inputB == 2) {
115  output.push_back(rx2.at(0));
116  output.push_back(rx2.at(1));
117  }
118  }
119  }
120 
121  if (rx.size() == 1) {
122  output.push_back( rx.at(0) );
123  }
124 
125  } // end EM
126 
127  // Had
128  if (tt.sampling() == 1) {
129  // Sort FCAL 23 recievers. Always have -ve eta first and +ve eta second
130  if (rx.size() == 2) {
131  // Odd receiver is lowest |eta|
132  unsigned int inputPairA = rx.at(0).inputPair();
133  unsigned int inputPairB = rx.at(1).inputPair();
134 
135  bool oddA(false),oddB(false);
136  if(inputPairA % 2 != 0){oddA = true;}
137  if(inputPairB % 2 != 0){oddB = true;}
138 
139  if (oddA && !oddB) {
140  output.push_back(rx.at(0));
141  output.push_back(rx.at(1));
142  }
143  if (!oddA && oddB) {
144  output.push_back(rx.at(1));
145  output.push_back(rx.at(0));
146  }
147  }
148  if (rx.size() == 1) {
149  output.push_back( rx.at(0) );
150  }
151  } // end Had
152 
153  return output;
154  }
155 
156  std::vector<unsigned int>
158  {
159  std::vector<L1CaloRxCoolChannelId> rx = receivers( tt );
160  std::vector<unsigned int> output;
161  output.reserve(rx.size());
162  for (const auto& i : rx) {
163  output.push_back( i.id() );
164  }
165  return output;
166  }
167 
168 
169  unsigned int
171  {
172  Identifier id = towerID( tt );
173  if (m_lvl1Helper->is_tile( id )) {
174  return 1;
175  }
176  return 0;
177  }
178 
179 
180  std::vector<const CaloCell*>
182  {
183  Identifier id = towerID( tt );
184  return m_cells2tt->caloCells( id );
185  }
186 
187  unsigned int
189  {
190  return getCaloCells( tt ).size();
191  }
192 
193  std::vector<unsigned int>
195  {
196  std::vector<unsigned int> output;
197  Identifier id = towerID( tt );
198  std::vector<std::vector<const CaloCell*>> cells = m_cells2tt->caloCellsByLayer( id );
199  output.reserve(cells.size());
200  for (const auto& i : cells) {
201  output.push_back( i.size() );
202  }
203  return output;
204  }
205 
206 // std::vector<unsigned int>
207 // L1CaloxAODOfflineTriggerTowerTools::nCaloCellsByReceiver( const xAOD::TriggerTower& tt ) const
208 // {
209 // std::vector<unsigned int> output;
210 // return output;
211 // }
212 //
213 // std::vector<unsigned int>
214 // L1CaloxAODOfflineTriggerTowerTools::nCaloCellsByReceiverByLayer( const xAOD::TriggerTower& tt ) const
215 // {
216 // std::vector<unsigned int> output;
217 // return output;
218 // }
219 
220 
221  float
223  {
224  Identifier id = towerID( tt );
225  return m_cells2tt->energy( id );
226  }
227 
228  float
230  {
231  Identifier id = towerID( tt );
232  return m_cells2tt->et( id );
233  }
234 
235  std::vector<float>
237  {
238  std::vector<float> output;
239  Identifier id = towerID( tt );
240  std::vector<std::vector<const CaloCell*>> cells = m_cells2tt->caloCellsByLayer( id );
241  output.reserve(cells.size());
242  for (const auto& i : cells) {
243  output.push_back( m_cells2tt->energy( i ) );
244  }
245  return output;
246  }
247 
248  std::vector<float>
250  {
251  std::vector<float> output;
252  Identifier id = towerID( tt );
253  std::vector<std::vector<const CaloCell*>> cells = m_cells2tt->caloCellsByLayer( id );
254  output.reserve(cells.size());
255  for (const auto& i : cells) {
256  output.push_back( m_cells2tt->et( i ) );
257  }
258  return output;
259  }
260 
261  std::vector<std::vector<const CaloCell*>>
263  {
264  std::vector<std::vector<const CaloCell*>> output;
265  const auto& rx = receivers(tt);
266  if (rx.size() == 1) {
267  output = { getCaloCells(tt) };
268  } else if(rx.size() == 2) {
269  output = ((tt.layer() == 0) ? sortEMCrackCells(getCaloCells(tt)) : sortFCAL23Cells(getCaloCells(tt), rx));
270  } else {
271  // shouldn't happen ... non-critical code, warning is sufficient
272  ATH_MSG_WARNING("Found TT with " << rx.size() << " receivers!");
273  }
274  return output;
275  }
276 
277  std::vector<float>
279  {
280  using std::begin;
281  using std::end;
282  using std::back_inserter;
283 
284  std::vector<float> energyByReceiver;
285  const auto& cellsByReceiver = caloCellsByReceiver(tt);
286  std::transform(begin(cellsByReceiver), end(cellsByReceiver),
287  back_inserter(energyByReceiver),
288  [this](const std::vector<const CaloCell*>& c) -> float {
289  return m_cells2tt->energy( c );
290  });
291 
292  return energyByReceiver;
293  }
294 
295  std::vector<float>
297  {
298  using std::begin;
299  using std::end;
300  using std::back_inserter;
301 
302  std::vector<float> etByReceiver;
303  const auto& cellsByReceiver = caloCellsByReceiver(tt);
304  std::transform(begin(cellsByReceiver), end(cellsByReceiver),
305  back_inserter(etByReceiver),
306  [this](const std::vector<const CaloCell*>& c) -> float {
307  return m_cells2tt->et( c );
308  });
309 
310  return etByReceiver;
311  }
312 
313  std::vector<std::vector<std::vector<const CaloCell*>>>
315  {
316  using std::begin;
317  using std::end;
318  using std::back_inserter;
319  using std::vector;
320 
322  const auto& rx = receivers(tt);
323  if(rx.size() == 1) {
324  const auto& cellsByLayer = m_cells2tt->caloCellsByLayer(towerID(tt));
325  std::transform(begin(cellsByLayer), end(cellsByLayer),
326  back_inserter(output),
328  return {std::move(C)};
329  });
330  } else if(rx.size() == 2) {
331  Identifier id = towerID( tt );
332  const auto& cellsByLayer = m_cells2tt->caloCellsByLayer( id );
333  for(const auto& cells : cellsByLayer) {
334  const auto& cellsByReceiver = ((tt.layer() == 0) ? sortEMCrackCells(cells) : sortFCAL23Cells(cells, rx));
335  output.push_back(cellsByReceiver);
336  }
337  } else {
338  ATH_MSG_WARNING("Found TT with " << rx.size() << " receivers!");
339  }
340 
341  return output;
342  }
343 
344  std::vector<std::vector<float>>
346  {
347  using std::begin;
348  using std::end;
349  using std::back_inserter;
350 
351  std::vector<std::vector<float>> output;
352  for(const auto& cellsByReceiver : caloCellsByLayerByReceiver(tt)) {
353  std::vector<float> cellsEnergyByReceiver;
354  cellsEnergyByReceiver.reserve(cellsByReceiver.size());
355  for(const auto& cells : cellsByReceiver) {
356  cellsEnergyByReceiver.push_back(m_cells2tt->energy(cells));
357  }
358  output.push_back(std::move(cellsEnergyByReceiver));
359  }
360 
361  return output;
362  }
363 
364 
365  std::vector<std::vector<float>>
367  {
368  using std::begin;
369  using std::end;
370  using std::back_inserter;
371 
372  std::vector<std::vector<float>> output;
373  for(const auto& cellsByReceiver : caloCellsByLayerByReceiver(tt)) {
374  std::vector<float> cellsEnergyByReceiver;
375  cellsEnergyByReceiver.reserve(cellsByReceiver.size());
376  for(const std::vector<const CaloCell*>& cells : cellsByReceiver) {
377  cellsEnergyByReceiver.push_back(m_cells2tt->et(cells));
378  }
379  output.push_back(std::move(cellsEnergyByReceiver));
380  }
381 
382  return output;
383  }
384 
385 
386 //
387 //
388 // unsigned int
389 // L1CaloxAODOfflineTriggerTowerTools::badCaloCells( const xAOD::TriggerTower& tt ) const
390 // {
391 //
392 // return 0;
393 // }
394 
395  float
397  {
398  float output(-999.9);
399  std::vector<const CaloCell*> cells = getCaloCells( tt );
400  if (isTile( tt )) {
402  }
403  else {
405  }
406  return output;
407  }
408 
409  float
410  L1CaloxAODOfflineTriggerTowerTools::LArCaloQuality( const std::vector<const CaloCell*> &cells ) const
411  {
412  float nom(0.), denom(0.);
413  for (auto i : cells) {
414  if ((i)->provenance() & 0x2000) {
415  nom += ((i)->e() * (i)->quality());
416  denom += (i)->e();
417  }
418  }
419 
420  if (denom != 0.) {
421  nom /= denom;
422  }
423  else {
424  nom = -1e6; // error value
425  }
426  return nom;
427  }
428 
429  float
430  L1CaloxAODOfflineTriggerTowerTools::TileCaloQuality( const std::vector<const CaloCell*> &cells ) const
431  {
432  float nom(0.), denom(0.);
433  for (auto i : cells) {
434  const TileCell *tileCell = dynamic_cast<const TileCell*>( (i) );
435 
436  if (tileCell && tileCell->provenance() & 0x8080) {
437  nom += tileCell->e() * std::max(tileCell->qual1(), tileCell->qual2());
438  denom += tileCell->e();
439  }
440  }
441 
442  if (denom != 0.) {
443  nom /= denom;
444  }
445  else {
446  nom = -1e6; // error value
447  }
448  return nom;
449  }
450 
451 
452 //
453 // float
454 // L1CaloxAODOfflineTriggerTowerTools::nCaloCellsNonNominal( const xAOD::TriggerTower& tt ) const
455 // {
456 // return 0;
457 // }
458 //
459 // std::vector<float>
460 // L1CaloxAODOfflineTriggerTowerTools::nCaloCellsNonNominalByLayer( const xAOD::TriggerTower& tt ) const
461 // {
462 // std::vector<float> output;
463 // return output;
464 // }
465 //
466 // std::vector<std::vector<float>>
467 // L1CaloxAODOfflineTriggerTowerTools::nCaloCellsNonNominalByReceiverByLayer( const xAOD::TriggerTower& tt ) const
468 // {
469 // std::vector<std::vector<float>> output;
470 // return output;
471 // }
472 //
473 // float
474 // L1CaloxAODOfflineTriggerTowerTools::nonNominalMeanScale( const xAOD::TriggerTower& tt ) const
475 // {
476 // return 0;
477 // }
478 //
479 // std::vector<float>
480 // L1CaloxAODOfflineTriggerTowerTools::nonNominalMeanScaleByLayer( const xAOD::TriggerTower& tt ) const
481 // {
482 // std::vector<float> output;
483 // return output;
484 // }
485 //
486 // std::vector<float>
487 // L1CaloxAODOfflineTriggerTowerTools::nonNominalMeanScaleByReceiver( const xAOD::TriggerTower& tt ) const
488 // {
489 // std::vector<float> output;
490 // return output;
491 // }
492 //
493 // std::vector<std::vector<float>>
494 // L1CaloxAODOfflineTriggerTowerTools::nonNominalMeanScaleByReceiverByLayer( const xAOD::TriggerTower& tt ) const
495 // {
496 // std::vector<std::vector<float>> output;
497 // return output;
498 // }
499 
500  // Sort Calo Cells
501  std::vector<std::vector<const CaloCell*>>
502  L1CaloxAODOfflineTriggerTowerTools::sortEMCrackCells(const std::vector<const CaloCell*> &cells) const
503  {
504  std::vector<std::vector<const CaloCell*>> output;
505  std::vector<const CaloCell*> emb;
506  std::vector<const CaloCell*> emec;
507 
508  // End Cap first, Barrel second
509 
510  for( auto i : cells ){
511  int layer = m_cells2tt->layerNames(i);
512 
513  if( layer <= 3){
514  emb.push_back( (i) );
515  }
516  if( layer >= 4){
517  emec.push_back( (i) );
518  }
519  }
520 
521  output.push_back(emec);
522  output.push_back(emb);
523  return output;
524  }
525 
526  std::vector<std::vector<const CaloCell*>>
527  L1CaloxAODOfflineTriggerTowerTools::sortFCAL23Cells(const std::vector<const CaloCell*> &cells,const std::vector<L1CaloRxCoolChannelId>& rx) const
528  {
529  // vectors of calo cells for the different receivers
530  std::vector<const CaloCell*> cellsA;
531  std::vector<const CaloCell*> cellsB;
532  // output
533  std::vector<std::vector<const CaloCell*>> output;
534 
535  // RxID of the different receivers
536  unsigned int rxidA = rx.at(0).id();
537  unsigned int rxidB = rx.at(1).id();
538 
539  // Loop over calo cells and use mapping tool to assign cells to different receivers
540  for( auto i : cells ){
541  unsigned int someRxId = m_rxMapTool->offlineCell2RxId( (i)->ID().get_identifier32().get_compact() );
542  if(someRxId == rxidA){cellsA.push_back(i);}
543  if(someRxId == rxidB){cellsB.push_back(i);}
544  }
545  output.push_back(cellsA);
546  output.push_back(cellsB);
547  return output;
548  }
549 
550 
551  // Database Attributes
552  const coral::AttributeList*
554  {
556  const coral::AttributeList* attrList(nullptr);
557  for(Itr_db i=dbAttrList->begin();i!=dbAttrList->end();++i){
558  if( i->first == tt.coolId() ){
559  attrList = &(i->second);
560  break;
561  }
562  }
563  return attrList;
564  }
565 
566  std::vector<const coral::AttributeList*>
568  {
570  std::vector<const coral::AttributeList*> v_attr;
571  std::vector<unsigned int> rxID = receiversId( tt );
572  for( auto r : rxID ){
573  for(Itr_db i=dbAttrList->begin();i!=dbAttrList->end();++i){
574  if( i->first == r ){
575  v_attr.push_back( &(i->second) );
576  break;
577  }
578  }
579  }
580  return v_attr;
581  }
582 
583 
584  // Database access
585  unsigned int
587  {
588  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
589  unsigned int value = 0;
590  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
591  if((*attrList)[attrNum].specification().name() == "ModuleId"){
592  value = (unsigned int) (*attrList)[attrNum].data<unsigned int>();
593  break;
594  }
595  }
596  return value;
597  }
598 
599  unsigned int
601  {
602  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
603  unsigned int value = 0;
604  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
605  if((*attrList)[attrNum].specification().name() == "ErrorCode"){
606  value = (unsigned int) (*attrList)[attrNum].data<unsigned int>();
607  break;
608  }
609  }
610  return value;
611  }
612 
613  unsigned long long
615  {
616  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
617  unsigned long long value = 0;
618  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
619  if((*attrList)[attrNum].specification().name() == "PprDacScanResultsTimeStamp"){
620  value = (unsigned long long) (*attrList)[attrNum].data<unsigned long long>();
621  break;
622  }
623  }
624  return value;
625  }
626 
627  unsigned long long
629  {
630  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
631  unsigned long long value = 0;
632  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
633  if((*attrList)[attrNum].specification().name() == "PprPedestalRunResultsTimeStamp"){
634  value = (unsigned long long) (*attrList)[attrNum].data<unsigned long long>();
635  break;
636  }
637  }
638  return value;
639  }
640 
641  unsigned long long
643  {
644  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
645  unsigned long long value = 0;
646  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
647  if((*attrList)[attrNum].specification().name() == "PprNoiseRunResultsTimeStamp"){
648  value = (unsigned long long) (*attrList)[attrNum].data<unsigned long long>();
649  break;
650  }
651  }
652  return value;
653  }
654 
655  unsigned long long
657  {
658  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
659  unsigned long long value = 0;
660  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
661  if((*attrList)[attrNum].specification().name() == "PprTimingResultsTimeStamp"){
662  value = (unsigned long long) (*attrList)[attrNum].data<unsigned long long>();
663  break;
664  }
665  }
666  return value;
667  }
668 
669  unsigned long long
671  {
672  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
673  unsigned long long value = 0;
674  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
675  if((*attrList)[attrNum].specification().name() == "PprSatBcidResultsTimeStamp"){
676  value = (unsigned long long) (*attrList)[attrNum].data<unsigned long long>();
677  break;
678  }
679  }
680  return value;
681  }
682 
683  unsigned long long
685  {
686  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
687  unsigned long long value = 0;
688  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
689  if((*attrList)[attrNum].specification().name() == "PprFirFilterResultsTimeStamp"){
690  value = (unsigned long long) (*attrList)[attrNum].data<unsigned long long>();
691  break;
692  }
693  }
694  return value;
695  }
696 
697  unsigned long long
699  {
700  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
701  unsigned long long value = 0;
702  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
703  if((*attrList)[attrNum].specification().name() == "PprLutValuesResultsTimeStamp"){
704  value = (unsigned long long) (*attrList)[attrNum].data<unsigned long long>();
705  break;
706  }
707  }
708  return value;
709  }
710 
711  double
713  {
714  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
715  double value = 0;
716  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
717  if((*attrList)[attrNum].specification().name() == "DacOffset"){
718  value = (double) (*attrList)[attrNum].data<double>();
719  break;
720  }
721  }
722  return value;
723  }
724 
725  double
727  {
728  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
729  double value = 0;
730  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
731  if((*attrList)[attrNum].specification().name() == "DacSlope"){
732  value = (double) (*attrList)[attrNum].data<double>();
733  break;
734  }
735  }
736  return value;
737  }
738 
739  double
741  {
742  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
743  double value = 0;
744  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
745  if((*attrList)[attrNum].specification().name() == "PedMean"){
746  value = (double) (*attrList)[attrNum].data<double>();
747  break;
748  }
749  }
750  return value;
751  }
752 
753  unsigned int
755  {
756  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
757  unsigned int value = 0;
758  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
759  if((*attrList)[attrNum].specification().name() == "PedValue"){
760  value = (unsigned int) (*attrList)[attrNum].data<unsigned int>();
761  break;
762  }
763  }
764  return value;
765  }
766 
767  unsigned int
769  {
770  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
771  unsigned int value = 0;
772  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
773  if((*attrList)[attrNum].specification().name() == "FullDelayData"){
774  value = (unsigned int) (*attrList)[attrNum].data<unsigned int>();
775  break;
776  }
777  }
778  return value;
779  }
780 
781  unsigned short int
783  {
784  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
785  unsigned short int value = 0;
786  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
787  if((*attrList)[attrNum].specification().name() == "SyncDelayBcid"){
788  value = (unsigned short int) (*attrList)[attrNum].data<unsigned short int>();
789  break;
790  }
791  }
792  return value;
793  }
794 
795  unsigned short int
797  {
798  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
799  unsigned short int value = 0;
800  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
801  if((*attrList)[attrNum].specification().name() == "InBcidNegedge"){
802  value = (unsigned short int) (*attrList)[attrNum].data<unsigned short int>();
803  break;
804  }
805  }
806  return value;
807  }
808 
809  unsigned short int
811  {
812  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
813  unsigned short int value = 0;
814  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
815  if((*attrList)[attrNum].specification().name() == "ExtBcidThreshold"){
816  value = (unsigned short int) (*attrList)[attrNum].data<unsigned short int>();
817  break;
818  }
819  }
820  return value;
821  }
822 
823  unsigned short int
825  {
826  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
827  unsigned short int value = 0;
828  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
829  if((*attrList)[attrNum].specification().name() == "SatBcidThreshLow"){
830  value = (unsigned short int) (*attrList)[attrNum].data<unsigned short int>();
831  break;
832  }
833  }
834  return value;
835  }
836 
837  unsigned short int
839  {
840  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
841  unsigned short int value = 0;
842  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
843  if((*attrList)[attrNum].specification().name() == "SatBcidThreshHigh"){
844  value = (unsigned short int) (*attrList)[attrNum].data<unsigned short int>();
845  break;
846  }
847  }
848  return value;
849  }
850 
851  unsigned short int
853  {
854  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
855  unsigned short int value = 0;
856  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
857  if((*attrList)[attrNum].specification().name() == "SatBcidLevel"){
858  value = (unsigned short int) (*attrList)[attrNum].data<unsigned short int>();
859  break;
860  }
861  }
862  return value;
863  }
864 
865  unsigned short int
867  {
868  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
869  unsigned short int value = 0;
870  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
871  if((*attrList)[attrNum].specification().name() == "BcidEnergyRangeLow"){
872  value = (unsigned short int) (*attrList)[attrNum].data<unsigned short int>();
873  break;
874  }
875  }
876  return value;
877  }
878 
879  unsigned short int
881  {
882  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
883  unsigned short int value = 0;
884  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
885  if((*attrList)[attrNum].specification().name() == "BcidEnergyRangeHigh"){
886  value = (unsigned short int) (*attrList)[attrNum].data<unsigned short int>();
887  break;
888  }
889  }
890  return value;
891  }
892 
893  unsigned short int
895  {
896  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
897  unsigned short int value = 0;
898  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
899  if((*attrList)[attrNum].specification().name() == "FirStartBit"){
900  value = (unsigned short int) (*attrList)[attrNum].data<unsigned short int>();
901  break;
902  }
903  }
904  return value;
905  }
906 
907  short
909  {
910  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
911  short value = 0;
912  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
913  if((*attrList)[attrNum].specification().name() == "FirCoeff1"){
914  value = (short) (*attrList)[attrNum].data<short>();
915  break;
916  }
917  }
918  return value;
919  }
920 
921  short
923  {
924  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
925  short value = 0;
926  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
927  if((*attrList)[attrNum].specification().name() == "FirCoeff2"){
928  value = (short) (*attrList)[attrNum].data<short>();
929  break;
930  }
931  }
932  return value;
933  }
934 
935  short
937  {
938  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
939  short value = 0;
940  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
941  if((*attrList)[attrNum].specification().name() == "FirCoeff3"){
942  value = (short) (*attrList)[attrNum].data<short>();
943  break;
944  }
945  }
946  return value;
947  }
948 
949  short
951  {
952  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
953  short value = 0;
954  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
955  if((*attrList)[attrNum].specification().name() == "FirCoeff4"){
956  value = (short) (*attrList)[attrNum].data<short>();
957  break;
958  }
959  }
960  return value;
961  }
962 
963  short
965  {
966  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
967  short value = 0;
968  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
969  if((*attrList)[attrNum].specification().name() == "FirCoeff5"){
970  value = (short) (*attrList)[attrNum].data<short>();
971  break;
972  }
973  }
974  return value;
975  }
976 
977  unsigned short
979  {
980  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
981  unsigned short value = 0;
982  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
983  if((*attrList)[attrNum].specification().name() == "LutStrategy"){
984  value = (unsigned short) (*attrList)[attrNum].data<unsigned short>();
985  break;
986  }
987  }
988  return value;
989  }
990 
991  unsigned short
993  {
994  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
995  unsigned short value = 0;
996  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
997  if((*attrList)[attrNum].specification().name() == "LutOffset"){
998  value = (unsigned short) (*attrList)[attrNum].data<unsigned short>();
999  break;
1000  }
1001  }
1002  return value;
1003  }
1004 
1005  unsigned short
1007  {
1008  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
1009  unsigned short value = 0;
1010  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
1011  if((*attrList)[attrNum].specification().name() == "LutNoiseCut"){
1012  value = (unsigned short) (*attrList)[attrNum].data<unsigned short>();
1013  break;
1014  }
1015  }
1016  return value;
1017  }
1018 
1019  unsigned short
1021  {
1022  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
1023  unsigned short value = 0;
1024  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
1025  if((*attrList)[attrNum].specification().name() == "LutSlope"){
1026  value = (unsigned short) (*attrList)[attrNum].data<unsigned short >();
1027  break;
1028  }
1029  }
1030  return value;
1031  }
1032 
1033 
1034  unsigned int
1036  {
1037  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
1038  unsigned int value = 0;
1039  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
1040  if((*attrList)[attrNum].specification().name() == "disabledBits"){
1041  value = (unsigned int) (*attrList)[attrNum].data<unsigned int>();
1042  break;
1043  }
1044  }
1045  return value;
1046  }
1047 
1048  unsigned int
1050  {
1051  const coral::AttributeList* attrList = DbAttributes( tt , m_dbPpmChanCalib );
1052  unsigned int value = 0;
1053  for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
1054  if((*attrList)[attrNum].specification().name() == "ErrorCode"){
1055  value = (unsigned int) (*attrList)[attrNum].data<unsigned int>();
1056  break;
1057  }
1058  }
1059  return value;
1060  }
1061 
1062 
1063  float
1065  {
1066  float value = 0;
1067 // for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
1068 // if((*attrList)[attrNum].specification().name() == "gain"){
1069 // value = (float) (*attrList)[attrNum].data<float>();
1070 // break;
1071 // }
1072 // }
1073  return value;
1074  }
1075 
1076  unsigned int
1078  {
1079  unsigned int value = 0;
1080 // for(unsigned int attrNum=0;attrNum<attrList->size();++attrNum){
1081 // if((*attrList)[attrNum].specification().name() == "status"){
1082 // value = (unsigned int) (*attrList)[attrNum].data<unsigned int>();
1083 // break;
1084 // }
1085 // }
1086  return value;
1087  }
1088 
1089  Identifier
1091  {
1092  return m_lvl1Helper->tower_id( pos_neg_z(tt) , tt.sampling() , region(tt) , ieta(tt) , iphi(tt) );
1093  }
1094 
1095  int
1097  {
1098  return m_l1CaloTTIdTools->pos_neg_z( tt.eta() );
1099  }
1100 
1101  int
1103  {
1104  return m_l1CaloTTIdTools->regionIndex( tt.eta() );
1105  }
1106 
1107  int
1109  {
1110  return m_l1CaloTTIdTools->etaIndex( tt.eta() );
1111  }
1112 
1113  int
1115  {
1116  return m_l1CaloTTIdTools->phiIndex( tt.eta() , tt.phi() );
1117  }
1118 
1119 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
LVL1::L1CaloxAODOfflineTriggerTowerTools::caloCellsETByLayerByReceiver
std::vector< std::vector< float > > caloCellsETByLayerByReceiver(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:366
TileCell
Definition: TileCell.h:57
LVL1::L1CaloxAODOfflineTriggerTowerTools::receivers
std::vector< L1CaloRxCoolChannelId > receivers(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:81
beamspotman.r
def r
Definition: beamspotman.py:676
RunTileCalibRec.cells
cells
Definition: RunTileCalibRec.py:271
LVL1::L1CaloxAODOfflineTriggerTowerTools::caloCellsEnergyByLayerByReceiver
std::vector< std::vector< float > > caloCellsEnergyByLayerByReceiver(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:345
LVL1::L1CaloxAODOfflineTriggerTowerTools::SatBcidThreshHigh
unsigned short int SatBcidThreshHigh(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:838
CondAttrListCollection::end
const_iterator end() const
Definition: CondAttrListCollection.h:315
LVL1::L1CaloxAODOfflineTriggerTowerTools::m_rxMapTool
ToolHandle< LVL1::IL1CaloFcal23Cells2RxMappingTool > m_rxMapTool
Definition: L1CaloxAODOfflineTriggerTowerTools.h:174
LVL1::L1CaloxAODOfflineTriggerTowerTools::caloCellsETByLayer
std::vector< float > caloCellsETByLayer(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:249
xAOD::short
short
Definition: Vertex_v1.cxx:165
LVL1::L1CaloxAODOfflineTriggerTowerTools::caloCellsEnergyByReceiver
std::vector< float > caloCellsEnergyByReceiver(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:278
max
#define max(a, b)
Definition: cfImp.cxx:41
LVL1::L1CaloxAODOfflineTriggerTowerTools::sortFCAL23Cells
std::vector< std::vector< const CaloCell * > > sortFCAL23Cells(const std::vector< const CaloCell * > &cells, const std::vector< L1CaloRxCoolChannelId > &rx) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:527
LVL1::L1CaloxAODOfflineTriggerTowerTools::caloCellsEnergy
float caloCellsEnergy(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:222
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ID
std::vector< Identifier > ID
Definition: CalibHitIDCheck.h:24
LVL1::L1CaloxAODOfflineTriggerTowerTools::caloCellsByReceiver
std::vector< std::vector< const CaloCell * > > caloCellsByReceiver(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:262
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
LVL1::L1CaloxAODOfflineTriggerTowerTools::caloCellsQuality
float caloCellsQuality(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:396
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
asg
Definition: DataHandleTestTool.h:28
LVL1::L1CaloxAODOfflineTriggerTowerTools::PprNoiseRunResultsTimeStamp
unsigned long long PprNoiseRunResultsTimeStamp(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:642
LVL1::L1CaloxAODOfflineTriggerTowerTools::initCaloCells
StatusCode initCaloCells()
Calo Cells into maps for L1Calo use.
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:71
CaloCell::e
virtual double e() const override final
get energy (data member) (synonym to method energy()
Definition: CaloCell.h:317
CondAttrListCollection::begin
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
Definition: CondAttrListCollection.h:309
athena.value
value
Definition: athena.py:122
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
CaloCell::provenance
uint16_t provenance() const
get provenance (data member)
Definition: CaloCell.h:338
LVL1::L1CaloxAODOfflineTriggerTowerTools::LutOffset
unsigned short LutOffset(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:992
LVL1::L1CaloxAODOfflineTriggerTowerTools::DisabledTower
unsigned int DisabledTower(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:1049
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number....
Definition: CondAttrListCollection.h:52
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
LVL1::L1CaloxAODOfflineTriggerTowerTools::BcidEnergyRangeHigh
unsigned short int BcidEnergyRangeHigh(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:880
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
LVL1::L1CaloxAODOfflineTriggerTowerTools::ExtBcidThreshold
unsigned short int ExtBcidThreshold(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:810
LVL1::L1CaloxAODOfflineTriggerTowerTools::getCaloCells
std::vector< const CaloCell * > getCaloCells(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:181
LVL1::L1CaloxAODOfflineTriggerTowerTools::LutSlope
unsigned short LutSlope(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:1020
LVL1::L1CaloxAODOfflineTriggerTowerTools::m_dbPpmChanCalib
const CondAttrListCollection * m_dbPpmChanCalib
Database.
Definition: L1CaloxAODOfflineTriggerTowerTools.h:185
LVL1::L1CaloxAODOfflineTriggerTowerTools::PedMean
double PedMean(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:740
TileCell::qual2
uint8_t qual2(void) const
get quality of second PMT (data member)
Definition: TileCell.h:206
LVL1::L1CaloxAODOfflineTriggerTowerTools::L1CaloxAODOfflineTriggerTowerTools
L1CaloxAODOfflineTriggerTowerTools()=delete
delete the big 4
LVL1::L1CaloxAODOfflineTriggerTowerTools::nCaloCells
unsigned int nCaloCells(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:188
LVL1::L1CaloxAODOfflineTriggerTowerTools::PprPedestalRunResultsTimeStamp
unsigned long long PprPedestalRunResultsTimeStamp(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:628
LVL1::L1CaloxAODOfflineTriggerTowerTools::iphi
int iphi(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:1114
LVL1::L1CaloxAODOfflineTriggerTowerTools::DeadChannel
unsigned int DeadChannel(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:1035
lumiFormat.i
int i
Definition: lumiFormat.py:92
LVL1::L1CaloxAODOfflineTriggerTowerTools::ModuleId
unsigned int ModuleId(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:586
LVL1::L1CaloxAODOfflineTriggerTowerTools::m_caloMgr
const CaloIdManager * m_caloMgr
Helper class for offline TT identifiers.
Definition: L1CaloxAODOfflineTriggerTowerTools.h:176
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
vector
Definition: MultiHisto.h:13
LVL1::L1CaloxAODOfflineTriggerTowerTools::FirCoeff2
short FirCoeff2(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:922
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
LVL1::L1CaloxAODOfflineTriggerTowerTools::InBcidNegedge
unsigned short int InBcidNegedge(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:796
LVL1::L1CaloxAODOfflineTriggerTowerTools::FullDelayData
unsigned int FullDelayData(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:768
xAOD::TriggerTower_v2
Description of TriggerTower_v2.
Definition: TriggerTower_v2.h:49
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
LVL1::L1CaloxAODOfflineTriggerTowerTools::PprSatBcidResultsTimeStamp
unsigned long long PprSatBcidResultsTimeStamp(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:670
LVL1::L1CaloxAODOfflineTriggerTowerTools::sortEMCrackCells
std::vector< std::vector< const CaloCell * > > sortEMCrackCells(const std::vector< const CaloCell * > &cells) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:502
CaloIdManager::getLVL1_ID
const CaloLVL1_ID * getLVL1_ID(void) const
Definition: CaloIdManager.cxx:75
LVL1::L1CaloxAODOfflineTriggerTowerTools::PprDacScanResultsTimeStamp
unsigned long long PprDacScanResultsTimeStamp(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:614
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
LVL1::L1CaloxAODOfflineTriggerTowerTools::towerID
Identifier towerID(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:1090
LVL1::L1CaloxAODOfflineTriggerTowerTools::LutStrategy
unsigned short LutStrategy(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:978
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
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
LVL1::L1CaloxAODOfflineTriggerTowerTools::PprTimingResultsTimeStamp
unsigned long long PprTimingResultsTimeStamp(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:656
LVL1::L1CaloxAODOfflineTriggerTowerTools::pos_neg_z
int pos_neg_z(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:1096
LVL1::L1CaloxAODOfflineTriggerTowerTools::LutNoiseCut
unsigned short LutNoiseCut(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:1006
LVL1::L1CaloxAODOfflineTriggerTowerTools::m_cells2tt
ToolHandle< LVL1::IL1CaloCells2TriggerTowers > m_cells2tt
Tool to do the Calo cell summing.
Definition: L1CaloxAODOfflineTriggerTowerTools.h:170
LVL1::L1CaloxAODOfflineTriggerTowerTools::RxStatus
unsigned int RxStatus(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:1077
compute_lumi.denom
denom
Definition: compute_lumi.py:76
TrigConf::name
Definition: HLTChainList.h:35
CaloTriggerTowerService::cnvCoolChannelIdToRxId
std::vector< L1CaloRxCoolChannelId > cnvCoolChannelIdToRxId(const L1CaloCoolChannelId &ppmCoolChannelId) const
returns a vector of L1CaloRxCoolChannelId corresponding to a L1CaloCoolChannelId
Definition: CaloTriggerTowerService.cxx:208
LVL1::L1CaloxAODOfflineTriggerTowerTools::caloCellsET
float caloCellsET(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:229
LVL1::L1CaloxAODOfflineTriggerTowerTools::SatBcidThreshLow
unsigned short int SatBcidThreshLow(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:824
merge.output
output
Definition: merge.py:17
LVL1::L1CaloxAODOfflineTriggerTowerTools::ErrorCode
unsigned int ErrorCode(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:600
PlotSFuncertainty.nom
nom
Definition: PlotSFuncertainty.py:141
LVL1::L1CaloxAODOfflineTriggerTowerTools::SyncDelayBcid
unsigned short int SyncDelayBcid(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:782
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LVL1::L1CaloxAODOfflineTriggerTowerTools::RxGain
float RxGain(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:1064
LVL1::L1CaloxAODOfflineTriggerTowerTools::receiversId
std::vector< unsigned int > receiversId(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:157
L1CaloxAODOfflineTriggerTowerTools.h
LVL1::L1CaloxAODOfflineTriggerTowerTools::finalize
StatusCode finalize()
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:62
LVL1::L1CaloxAODOfflineTriggerTowerTools::nCaloCellsByLayer
std::vector< unsigned int > nCaloCellsByLayer(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:194
LVL1::L1CaloxAODOfflineTriggerTowerTools::m_lvl1Helper
const CaloLVL1_ID * m_lvl1Helper
Definition: L1CaloxAODOfflineTriggerTowerTools.h:177
LVL1::L1CaloxAODOfflineTriggerTowerTools::m_ttSvc
CaloTriggerTowerService * m_ttSvc
Definition: L1CaloxAODOfflineTriggerTowerTools.h:178
LVL1::L1CaloxAODOfflineTriggerTowerTools::region
int region(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:1102
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
LVL1::L1CaloxAODOfflineTriggerTowerTools::FirCoeff4
short FirCoeff4(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:950
LVL1::L1CaloxAODOfflineTriggerTowerTools::isTile
unsigned int isTile(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:170
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CondAttrListCollection::const_iterator
ChanAttrListMap::const_iterator const_iterator
Definition: CondAttrListCollection.h:63
LVL1::L1CaloxAODOfflineTriggerTowerTools::ieta
int ieta(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:1108
LVL1::L1CaloxAODOfflineTriggerTowerTools::BcidEnergyRangeLow
unsigned short int BcidEnergyRangeLow(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:866
LVL1::L1CaloxAODOfflineTriggerTowerTools::initialize
StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:32
LVL1::L1CaloxAODOfflineTriggerTowerTools::SatBcidLevel
unsigned short int SatBcidLevel(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:852
LVL1::L1CaloxAODOfflineTriggerTowerTools::caloCellsEnergyByLayer
std::vector< float > caloCellsEnergyByLayer(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:236
LVL1::L1CaloxAODOfflineTriggerTowerTools::FirStartBit
unsigned short int FirStartBit(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:894
LVL1::L1CaloxAODOfflineTriggerTowerTools::DbRxGainsAttributes
std::vector< const coral::AttributeList * > DbRxGainsAttributes(const xAOD::TriggerTower &tt, const CondAttrListCollection *dbAttrList) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:567
LVL1::L1CaloxAODOfflineTriggerTowerTools::caloCellsETByReceiver
std::vector< float > caloCellsETByReceiver(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:296
LVL1::L1CaloxAODOfflineTriggerTowerTools::FirCoeff5
short FirCoeff5(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:964
TileCell::qual1
uint8_t qual1(void) const
get quality of first PMT (data member)
Definition: TileCell.h:203
LVL1::L1CaloxAODOfflineTriggerTowerTools::caloCellsByLayerByReceiver
std::vector< std::vector< std::vector< const CaloCell * > > > caloCellsByLayerByReceiver(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:314
LVL1::L1CaloxAODOfflineTriggerTowerTools::m_caloCellContainerKey
SG::ReadHandleKey< CaloCellContainer > m_caloCellContainerKey
StoreGate keys for the Calo Cells.
Definition: L1CaloxAODOfflineTriggerTowerTools.h:182
LVL1::L1CaloxAODOfflineTriggerTowerTools::DacSlope
double DacSlope(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:726
LVL1::L1CaloxAODOfflineTriggerTowerTools::TileCaloQuality
float TileCaloQuality(const std::vector< const CaloCell * > &cells) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:430
LVL1::L1CaloxAODOfflineTriggerTowerTools::FirCoeff3
short FirCoeff3(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:936
ReadHandle.h
Handle class for reading from StoreGate.
LVL1::L1CaloxAODOfflineTriggerTowerTools::FirCoeff1
short FirCoeff1(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:908
LVL1::L1CaloxAODOfflineTriggerTowerTools::LArCaloQuality
float LArCaloQuality(const std::vector< const CaloCell * > &cells) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:410
LVL1::L1CaloxAODOfflineTriggerTowerTools::m_l1CaloTTIdTools
ToolHandle< LVL1::IL1CaloTTIdTools > m_l1CaloTTIdTools
Tool to get the Identifier of a TriggerTower.
Definition: L1CaloxAODOfflineTriggerTowerTools.h:172
LVL1::L1CaloxAODOfflineTriggerTowerTools::PedValue
unsigned int PedValue(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:754
CaloLVL1_ID::tower_id
Identifier tower_id(int pos_neg_z, int sampling, int region, int eta, int phi) const
build a tower identifier
Definition: CaloLVL1_ID.h:429
CaloLVL1_ID::is_tile
bool is_tile(const Identifier id) const
Test wether given tower or layer is part of the Tile Calorimeter.
Definition: CaloLVL1_ID.h:672
TileDCSDataPlotter.tt
tt
Definition: TileDCSDataPlotter.py:874
python.compressB64.c
def c
Definition: compressB64.py:93
LVL1::L1CaloxAODOfflineTriggerTowerTools::PprLutValuesResultsTimeStamp
unsigned long long PprLutValuesResultsTimeStamp(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:698
LVL1::L1CaloxAODOfflineTriggerTowerTools::DbAttributes
const coral::AttributeList * DbAttributes(const xAOD::TriggerTower &tt, const CondAttrListCollection *dbAttrList) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:553
LVL1::L1CaloxAODOfflineTriggerTowerTools::PprFirFilterResultsTimeStamp
unsigned long long PprFirFilterResultsTimeStamp(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:684
LVL1::L1CaloxAODOfflineTriggerTowerTools::DacOffset
double DacOffset(const xAOD::TriggerTower &tt) const
Definition: L1CaloxAODOfflineTriggerTowerTools.cxx:712