ATLAS Offline Software
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
LArNoisyROTool Class Reference

#include <LArNoisyROTool.h>

Inheritance diagram for LArNoisyROTool:
Collaboration diagram for LArNoisyROTool:

Classes

class  FEBEvtStat
 

Public Member Functions

 LArNoisyROTool ()=delete
 
 LArNoisyROTool (const std::string &type, const std::string &name, const IInterface *parent)
 Constructor with parameters: More...
 
virtual ~LArNoisyROTool ()=default
 Destructor: More...
 
virtual StatusCode initialize ()
 
virtual std::unique_ptr< LArNoisyROSummaryprocess (const EventContext &, const CaloCellContainer *, const std::set< unsigned int > *, const std::vector< HWIdentifier > *, const LArHVNMap *, const CaloDetDescrManager *, const LArHVIdMapping *) const
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef std::unordered_map< unsigned int, FEBEvtStatFEBEvtStatMap
 
typedef std::unordered_map< unsigned int, FEBEvtStat >::iterator FEBEvtStatMapIt
 
typedef std::unordered_map< unsigned int, FEBEvtStat >::const_iterator FEBEvtStatMapCstIt
 
typedef std::unordered_map< HWIdentifier, unsigned int > HVlinesStatMap
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

size_t partitionNumber (const HWIdentifier) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

std::unordered_map< unsigned int, unsigned int > m_mapPSFEB
 
ToolHandle< ILArHVMapToolm_hvMapTool
 
const CaloCell_IDm_calo_id {}
 
const LArOnlineIDm_onlineID {}
 
const LArElectrodeIDm_elecID {}
 
SG::ReadCondHandleKey< LArOnOffIdMappingm_cablingKey {this, "CablingKey", "LArOnOffIdMap", "key to read OnOff mapping"}
 
unsigned int m_CellQualityCut {}
 
bool m_ignore_masked_cells {}
 
bool m_ignore_front_innerwheel_cells {}
 
unsigned int m_BadChanPerPA = 0U
 
unsigned int m_BadChanPerFEB {}
 
unsigned int m_MinBadFEB {}
 
unsigned int m_SaturatedCellQualityCut {}
 
float m_SaturatedCellEnergyTightCut {}
 
unsigned int m_SaturatedCellTightCut {}
 
unsigned int m_SaturatedCellTightCutEvents = 0U
 
bool m_doHVline {}
 
float m_BadChanFracPerHVline {}
 
unsigned int m_MinBadHV {}
 
unsigned int m_MNBLooseCut {}
 
unsigned int m_MNBTightCut {}
 
std::vector< unsigned int > m_MNBTight_PsVetoCut
 
std::array< uint8_t, 4 > m_partitionMask {}
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 42 of file LArNoisyROTool.h.

Member Typedef Documentation

◆ FEBEvtStatMap

typedef std::unordered_map<unsigned int, FEBEvtStat> LArNoisyROTool::FEBEvtStatMap
private

Definition at line 103 of file LArNoisyROTool.h.

◆ FEBEvtStatMapCstIt

typedef std::unordered_map<unsigned int, FEBEvtStat>::const_iterator LArNoisyROTool::FEBEvtStatMapCstIt
private

Definition at line 105 of file LArNoisyROTool.h.

◆ FEBEvtStatMapIt

typedef std::unordered_map<unsigned int, FEBEvtStat>::iterator LArNoisyROTool::FEBEvtStatMapIt
private

Definition at line 104 of file LArNoisyROTool.h.

◆ HVlinesStatMap

typedef std::unordered_map<HWIdentifier, unsigned int> LArNoisyROTool::HVlinesStatMap
private

Definition at line 107 of file LArNoisyROTool.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ LArNoisyROTool() [1/2]

LArNoisyROTool::LArNoisyROTool ( )
delete

◆ LArNoisyROTool() [2/2]

LArNoisyROTool::LArNoisyROTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Constructor with parameters:

Definition at line 21 of file LArNoisyROTool.cxx.

23  :
24  ::AthAlgTool ( type, name, parent ),m_hvMapTool("LArHVMapTool",this),
25  m_calo_id(nullptr), m_onlineID(nullptr),
27 {
28  declareInterface<ILArNoisyROTool >(this);
29  declareProperty( "BadChanPerFEB", m_BadChanPerFEB=30 );
30  declareProperty( "CellQualityCut", m_CellQualityCut=4000 );
31  declareProperty( "IgnoreMaskedCells", m_ignore_masked_cells=false );
32  declareProperty( "IgnoreFrontInnerWheelCells", m_ignore_front_innerwheel_cells=true );
33  declareProperty( "BadFEBCut", m_MinBadFEB=3 );
34 
35  declareProperty( "MNBLooseCut",m_MNBLooseCut=5,"Number of cells above CellQualityCut");
36  declareProperty( "MNBTightCut",m_MNBTightCut=17,"Number of cells above CellQualityCut");
37  declareProperty( "MNBTight_PsVetoCut",m_MNBTight_PsVetoCut={13,3},"Number of cells above CellQualityCut");
38  declareProperty( "SaturatedCellQualityCut", m_SaturatedCellQualityCut=65535);
39  declareProperty( "SaturatedCellEnergyTightCut", m_SaturatedCellEnergyTightCut=1000.);
40  declareProperty( "SaturatedCellTightCut", m_SaturatedCellTightCut=20);
41 
42  declareProperty( "DoHVflag", m_doHVline=true );
43  declareProperty( "BadChanFracPerHVline", m_BadChanFracPerHVline=0.25 );
44  declareProperty( "BadHVCut", m_MinBadHV=3 );
45 }

◆ ~LArNoisyROTool()

virtual LArNoisyROTool::~LArNoisyROTool ( )
virtualdefault

Destructor:

Member Function Documentation

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ initialize()

StatusCode LArNoisyROTool::initialize ( )
virtual

Definition at line 51 of file LArNoisyROTool.cxx.

51  {
52 
54  ATH_MSG_FATAL( "Configuration problem: LArNoisyROTool assumes that the QFactor cut to declare a channel noisy is softer than the QFactor cut to declare the quality saturated !" );
55  return StatusCode::FAILURE;
56  }
57 
59  ATH_MSG_FATAL( "Configuration problem: LArNoisyROTool assumes that MNBLooseCut is smaller than MNBTightCut" );
60  return StatusCode::FAILURE;
61  }
62 
63  ATH_CHECK(detStore()->retrieve(m_calo_id,"CaloCell_ID"));
64  ATH_CHECK(detStore()->retrieve(m_onlineID,"LArOnlineID"));
65  ATH_CHECK(detStore()->retrieve(m_elecID,"LArElectrodeID"));
67 
68  // Fill the map between any EMB FEB and the same FT PS FEB
69  // Filled only for EMB so far
70  for (std::vector<HWIdentifier>::const_iterator allFeb = m_onlineID->feb_begin();
71  allFeb != m_onlineID->feb_end(); ++allFeb) {
72 
73  HWIdentifier febid = HWIdentifier(*allFeb);
74  int FEBIndex = febid.get_identifier32().get_compact();
75  int FEBIndex_PS = 0;
76  int barrel_ec = m_onlineID->barrel_ec(febid);
77  if (barrel_ec == 0){
78  int pos_neg = m_onlineID->pos_neg(febid);
79  int ft = m_onlineID->feedthrough(febid);
80  FEBIndex_PS = (m_onlineID->feb_Id(0,pos_neg,ft,1)).get_identifier32().get_compact();
81  }
82  m_mapPSFEB[FEBIndex] = FEBIndex_PS;
83  }
84 
85  return StatusCode::SUCCESS;
86 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

static const InterfaceID& LArNoisyROTool::interfaceID ( )
static

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ partitionNumber()

size_t LArNoisyROTool::partitionNumber ( const HWIdentifier  hwid) const
inlineprivate

Definition at line 165 of file LArNoisyROTool.h.

165  {
166  int pn=m_onlineID->pos_neg(hwid);
167  if (m_onlineID->isEMECchannel(hwid)) {
168  if (pn)
169  return 0; //positive EMECA side
170  else
171  return 3; //negative EMECC side
172  }
173  if (m_onlineID->isEMBchannel(hwid)) {
174  if (pn)
175  return 1; //positive EMBA side
176  else
177  return 2; //negative EMBC side
178  }
179  return 4;//Anything else
180 }

◆ process()

std::unique_ptr< LArNoisyROSummary > LArNoisyROTool::process ( const EventContext &  ctx,
const CaloCellContainer cellContainer,
const std::set< unsigned int > *  knownBadFEBs,
const std::vector< HWIdentifier > *  knownMNBFEBs,
const LArHVNMap nCellsperLine,
const CaloDetDescrManager cddm,
const LArHVIdMapping hvid 
) const
virtual

Implements ILArNoisyROTool.

Definition at line 89 of file LArNoisyROTool.cxx.

89  {
90 
91  // sanity check
92  bool doHVline=m_doHVline;
93  if(doHVline && ( !nCellsperLine || !cddm || !hvid)) {
94  ATH_MSG_ERROR("HV line flagging asked, but missing ingrediences, switching off !!");
95  doHVline = false;
96  }
97 
98  std::unique_ptr<LArNoisyROSummary> noisyRO(new LArNoisyROSummary);
99 
100  if(!cellContainer) return noisyRO;
101 
103  const LArOnOffIdMapping* cabling=*larCablingHdl;
104 
105  FEBEvtStatMap FEBStats; //counter per FEB
106  HVlinesStatMap HVStats; //counter per HV line
107 
108  unsigned int NsaturatedTightCutBarrelA = 0;
109  unsigned int NsaturatedTightCutBarrelC = 0;
110  unsigned int NsaturatedTightCutEMECA = 0;
111  unsigned int NsaturatedTightCutEMECC = 0;
112 
113 
114  CaloCellContainer::const_iterator cellItr = cellContainer->begin();
115  CaloCellContainer::const_iterator cellItrEnd = cellContainer->end();
116  for ( ; cellItr != cellItrEnd; ++cellItr )
117  {
118  const CaloCell* cell = (*cellItr);
119  if (!cell) continue;
120 
121  // only cells with a bad enough Quality Factor
122  if ( cell->quality() < m_CellQualityCut ) continue;
123 
124  // cells with zero energy have been masked by previous algorithms
125  // they should not matter for physics so don't consider them
126  if ( m_ignore_masked_cells && std::abs(cell->e()) < 0.1 ) continue; //Fixme: use provenance
127 
128  Identifier id = cell->ID();
129  if (m_ignore_front_innerwheel_cells && m_calo_id->is_em_endcap_inner(id) && m_calo_id->sampling(id) == 1) continue; // Front inner wheel cells are ignored
130 
131  // saturated Qfactor ? Tight cuts.
132  if ( cell->quality()>=m_SaturatedCellQualityCut &&
133  std::abs(cell->e()) > m_SaturatedCellEnergyTightCut )
134  {
135  bool sideA = cell->eta() > 0.;
136  if ( m_calo_id->is_em_barrel(id) )
137  {
138  if ( sideA ) { NsaturatedTightCutBarrelA++; }
139  else { NsaturatedTightCutBarrelC++; }
140  }
141  else if ( m_calo_id->is_em_endcap(id) )
142  {
143  if ( sideA ) { NsaturatedTightCutEMECA++; }
144  else { NsaturatedTightCutEMECC++; }
145  }
146  }
147 
148 
149  // only LAr EM for bad FEBs
150  if ( m_calo_id->is_em(id) )
151  {
152  // get FEB ID and channel number
153  HWIdentifier hwid = cabling->createSignalChannelID(id);
154  HWIdentifier febid = m_onlineID->feb_Id(hwid);
155  unsigned int FEBindex = febid.get_identifier32().get_compact();
156  unsigned int channel = m_onlineID->channel(hwid);
157  FEBStats[FEBindex].addBadChannel(channel);
158  }
159 
160  if(doHVline) {
161  //HVline, in all calos
162  std::vector<HWIdentifier> hvlines;
163  m_hvMapTool->GetHVLines(id, cddm,hvlines);
164  for(unsigned int i=0; i<hvlines.size(); ++i) {
165  if(HVStats.contains(hvlines[i])) HVStats[hvlines[i]] += 1; else HVStats[hvlines[i]]=1;
166  }
167  }
168 
169  }
170 
171  // Store the Saturated flag per partition
172  uint8_t SatTightPartitions = 0;
173  if ( NsaturatedTightCutBarrelA >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::EMBAMask;
174  if ( NsaturatedTightCutBarrelC >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::EMBCMask;
175  if ( NsaturatedTightCutEMECA >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::EMECAMask;
176  if ( NsaturatedTightCutEMECC >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::EMECCMask;
177  bool badSaturatedTightCut = (SatTightPartitions != 0);
178  if ( badSaturatedTightCut ) noisyRO-> SetSatTightFlaggedPartitions(SatTightPartitions);
179 
180  // loop on all FEBs and check whether FEB can be declared as bad for the different type of flags:
181  // regular noise burst, weighted noise burst, MNB tight and loose
182  for ( FEBEvtStatMapCstIt it = FEBStats.begin(); it != FEBStats.end(); ++it ) {
183  ATH_MSG_VERBOSE(" candidate FEB " << it->first << " with " << it->second.badChannels() << " bad channels");
184  if ( it->second.badChannels() > m_BadChanPerFEB ) {
185  noisyRO->add_noisy_feb(HWIdentifier(it->first));
186  }
187 
188  // Loose MNBs
189  if ( it->second.badChannels() > m_MNBLooseCut ){
190  noisyRO->add_MNBLoose_feb(HWIdentifier(it->first));
191  ATH_MSG_DEBUG("Loose bad FEB " << it->first << " " << m_onlineID->channel_name(HWIdentifier(it->first)) << " with " << it->second.badChannels() << " bad channels");
192  // Tight_PsVeto MNBs
193  if ( it->second.badChannels() > m_MNBTight_PsVetoCut[0] ){
194  unsigned int associatedPSFEB = m_mapPSFEB.find(it->first)->second;
195  if (associatedPSFEB != 0){ // Check if a PS FEB is associated (TRUE only for EMB FEBs)
196  if (FEBStats.count(associatedPSFEB) == 0) noisyRO->add_MNBTight_PsVeto_feb(HWIdentifier(it->first));
197  else if (FEBStats[associatedPSFEB].badChannels() < m_MNBTight_PsVetoCut[1]) noisyRO->add_MNBTight_PsVeto_feb(HWIdentifier(it->first));
198  }
199  }
200  // Tight MNBs
201  if ( it->second.badChannels() > m_MNBTightCut ){
202  noisyRO->add_MNBTight_feb(HWIdentifier(it->first));
203  }
204  }
205 
206 
207 // // Noisy preamp removed as no used currently
208 // // Kept here just in case we may want to revive it
209 // const unsigned int* PAcounters = it->second.PAcounters();
210 // for ( size_t i = 0; i < 32; i++ ) {
211 // if ( PAcounters[i] > m_BadChanPerPA ) {
212 // uint64_t PAid = static_cast<uint64_t>(1000000000)*static_cast<uint64_t>(i)+static_cast<uint64_t>(it->first);
213 // ATH_MSG_DEBUG(" bad preamp " << i << " in FEB " << it->first << " ID " << PAid);
214 // noisyRO->add_noisy_preamp(HWIdentifier(it->first),4*i);
215 // if (m_printSummary) m_badPA_counters[PAid]++;
216 // }
217 // }
218 
219  }//end loop over m_FEBats
220 
221 
222  // Count noisy FEB per partition EMEC-EMB - Simple and weighted quantities
223  unsigned int NBadFEBEMECA = 0; unsigned int NBadFEBEMECA_W = 0;
224  unsigned int NBadFEBEMECC = 0; unsigned int NBadFEBEMECC_W = 0;
225  unsigned int NBadFEBEMBA = 0; unsigned int NBadFEBEMBA_W = 0;
226  unsigned int NBadFEBEMBC = 0; unsigned int NBadFEBEMBC_W = 0;
227 
228  const std::vector<HWIdentifier>& badfebs = noisyRO->get_noisy_febs();
229 
230  //for ( std::vector<HWIdentifier>::const_iterator febit = badfebs.begin();
231  // febit != badfebs.end(); febit++ )
232  for (const HWIdentifier& febid : badfebs)
233  {
234  // first channel of FEB, as safety since FEBid seem to be the Id of the
235  // first channel (no guarantee?)
236  HWIdentifier chanID = m_onlineID->channel_Id(febid,0);
237 
238  int weight = 1;
239  // If the FEB is known to be subject to noise burst (list defiend as property)
240  // give a weight 2
241  const unsigned int int_id = febid.get_identifier32().get_compact();
242  if (knownBadFEBs->find(int_id)!=knownBadFEBs->end()) weight=2;
243 
244  if ( m_onlineID->isEMBchannel(chanID) )
245  {
246  if ( m_onlineID->pos_neg(chanID) == 1 ){
247  NBadFEBEMBA_W = NBadFEBEMBA_W + weight;
248  NBadFEBEMBA++;
249  }
250  else{
251  NBadFEBEMBC_W = NBadFEBEMBC_W + weight;
252  NBadFEBEMBC++;
253  }
254  }
255  else if ( m_onlineID->isEMECchannel(chanID) )
256  {
257  if ( m_onlineID->pos_neg(chanID) == 1 ){
258  NBadFEBEMECA_W = NBadFEBEMECA_W + weight;
259  NBadFEBEMECA++;
260  }
261  else{
262  NBadFEBEMECC_W = NBadFEBEMECC_W + weight;
263  NBadFEBEMECC++;
264  }
265  }
266  }
267 
268  uint8_t BadFEBPartitions = 0;
269  if ( NBadFEBEMBA > m_MinBadFEB ) BadFEBPartitions |= LArNoisyROSummary::EMBAMask;
270  if ( NBadFEBEMBC > m_MinBadFEB ) BadFEBPartitions |= LArNoisyROSummary::EMBCMask;
271  if ( NBadFEBEMECA > m_MinBadFEB ) BadFEBPartitions |= LArNoisyROSummary::EMECAMask;
272  if ( NBadFEBEMECC > m_MinBadFEB ) BadFEBPartitions |= LArNoisyROSummary::EMECCMask;
273  if ( BadFEBPartitions != 0 ) noisyRO-> SetBadFEBFlaggedPartitions(BadFEBPartitions);
274 
275  uint8_t BadFEBPartitions_W = 0;
276  if ( NBadFEBEMBA_W > m_MinBadFEB ) BadFEBPartitions_W |= LArNoisyROSummary::EMBAMask;
277  if ( NBadFEBEMBC_W > m_MinBadFEB ) BadFEBPartitions_W |= LArNoisyROSummary::EMBCMask;
278  if ( NBadFEBEMECA_W > m_MinBadFEB ) BadFEBPartitions_W |= LArNoisyROSummary::EMECAMask;
279  if ( NBadFEBEMECC_W > m_MinBadFEB ) BadFEBPartitions_W |= LArNoisyROSummary::EMECCMask;
280  if ( BadFEBPartitions_W != 0 ) noisyRO-> SetBadFEB_WFlaggedPartitions(BadFEBPartitions_W);
281 
282 
283 
284  //Check for Mini Noise Bursts:
285  uint8_t MNBTightPartition=0;
286  uint8_t MNBTight_PsVetoPartition=0;
287  uint8_t MNBLoosePartition=0;
288 
289  std::array<unsigned,5> nTightMNBFEBSperPartition{};
290  std::array<unsigned,5> nTight_PsVetoMNBFEBSperPartition{};
291  std::array<unsigned,5> nLooseMNBFEBSperPartition{};
292  for (HWIdentifier febid: *knownMNBFEBs) { //Loop over known MNB FEBs
293  FEBEvtStatMapCstIt statIt=FEBStats.find(febid.get_identifier32().get_compact());
294  if (statIt!=FEBStats.end()) {
295  if (statIt->second.badChannels()>=m_MNBLooseCut) {
296  (nLooseMNBFEBSperPartition[partitionNumber(febid)])++;
297  // Tight_PsVeto MNBs
298  if ( statIt->second.badChannels() > m_MNBTight_PsVetoCut[0] ){
299  auto found = m_mapPSFEB.find(statIt->first);
300  if (found != m_mapPSFEB.end()){
301  if (unsigned int associatedPSFEB = found->second; associatedPSFEB != 0){
302  if (FEBStats.count(associatedPSFEB) == 0) (nTight_PsVetoMNBFEBSperPartition[partitionNumber(febid)])++;
303  else if (FEBStats[associatedPSFEB].badChannels() < m_MNBTight_PsVetoCut[1]) (nTight_PsVetoMNBFEBSperPartition[partitionNumber(febid)])++;
304  }
305  }
306  }
307  // Tight MNBs
308  if (statIt->second.badChannels()>=m_MNBTightCut)
309  (nTightMNBFEBSperPartition[partitionNumber(febid)])++;
310  }
311  }//End FEB in list of bad-Q FEBs
312  }//end loop over known MNB Febs
313 
314 
315  for (unsigned iP=0;iP<4;++iP) {
316  ATH_MSG_DEBUG( "Partition " << iP << ": Found " << nLooseMNBFEBSperPartition[iP] << " MNB FEBs with more than " << m_MNBLooseCut << " bad-Q channels" );
317  ATH_MSG_DEBUG( "Partition " << iP << ": Found " << nTightMNBFEBSperPartition[iP] << " MNB FEBs with more than " << m_MNBTightCut << " bad-Q channels" );
318  if (nLooseMNBFEBSperPartition[iP]>0) MNBLoosePartition |= m_partitionMask[iP];
319  if (nTightMNBFEBSperPartition[iP]>0) MNBTightPartition |= m_partitionMask[iP];
320  if (nTight_PsVetoMNBFEBSperPartition[iP]>0) MNBTight_PsVetoPartition |= m_partitionMask[iP];
321  }// end loop over partitions
322 
323 
324  noisyRO->SetMNBTightFlaggedPartitions(MNBTightPartition);
325  noisyRO->SetMNBTight_PsVetoFlaggedPartitions(MNBTight_PsVetoPartition);
326  noisyRO->SetMNBLooseFlaggedPartitions(MNBLoosePartition);
327 
328  if(!hvid || !nCellsperLine ) return noisyRO; // do not have HVcells map
329 
330  // Count noisy HVlines per partition
331  unsigned int NBadHVEMECA = 0;
332  unsigned int NBadHVEMECC = 0;
333  unsigned int NBadHVEMBA = 0;
334  unsigned int NBadHVEMBC = 0;
335  unsigned int NBadHVHECA = 0;
336  unsigned int NBadHVHECC = 0;
337  unsigned int NBadHVFCALA = 0;
338  unsigned int NBadHVFCALC = 0;
339 
340  // loop over HVlines, to check if they are qualified as noisy
341  for ( HVlinesStatMap::const_iterator it = HVStats.begin(); it != HVStats.end(); ++it ) {
342  ATH_MSG_DEBUG(ctx.eventID().event_number()<<" candidate HVline " << it->first << " with " << it->second << " bad channels, out of "<<nCellsperLine->HVNcell(HWIdentifier(it->first))<<" channels");
343  if ( it->second >= m_BadChanFracPerHVline * nCellsperLine->HVNcell(it->first) ) {
344  HWIdentifier hwd(it->first);
345  noisyRO->add_noisy_hvline(hwd);
346  const std::vector<HWIdentifier> elecVec = hvid->getLArElectrodeIDvec(hwd);
347  int side = m_elecID->zside(elecVec[0]);
348  int part = m_elecID->detector(elecVec[0]);
349  switch(side) {
350  case 1: { ATH_MSG_DEBUG("Elec. side: "<<side);
351  switch(part){
352  case 0: case 1:{NBadHVEMBC += 1; break;}
353  case 2: case 3:{NBadHVEMECC += 1; break;}
354  case 4: {NBadHVHECC += 1; break;}
355  case 5: {NBadHVFCALC += 1; break;}
356  default: {ATH_MSG_WARNING("Wrong HV line detector "<<part); break;}
357  };
358  break;
359  }
360  case 0: { switch(part){
361  case 0: case 1:{NBadHVEMBA += 1; break;}
362  case 2: case 3:{NBadHVEMECA += 1; break;}
363  case 4: {NBadHVHECA += 1; break;}
364  case 5: {NBadHVFCALA += 1; break;}
365  default: {ATH_MSG_WARNING("Wrong HV line detector "<<part); break;}
366  };
367  break;
368  }
369  }
370  }// HVline is noisy
371  }// all hvlines
372 
373  uint8_t BadHVPartitions = 0;
374  if ( NBadHVEMBA >= m_MinBadHV ) BadHVPartitions |= LArNoisyROSummary::EMBAMask;
375  if ( NBadHVEMBC >= m_MinBadHV ) BadHVPartitions |= LArNoisyROSummary::EMBCMask;
376  if ( NBadHVEMECA >= m_MinBadHV ) BadHVPartitions |= LArNoisyROSummary::EMECAMask;
377  if ( NBadHVEMECC >= m_MinBadHV ) BadHVPartitions |= LArNoisyROSummary::EMECCMask;
378  if ( NBadHVHECA >= m_MinBadHV ) BadHVPartitions |= LArNoisyROSummary::HECAMask;
379  if ( NBadHVHECC >= m_MinBadHV ) BadHVPartitions |= LArNoisyROSummary::HECCMask;
380  if ( NBadHVFCALA >= m_MinBadHV ) BadHVPartitions |= LArNoisyROSummary::FCALAMask;
381  if ( NBadHVFCALC >= m_MinBadHV ) BadHVPartitions |= LArNoisyROSummary::FCALCMask;
382 
383  if ( BadHVPartitions != 0 ) noisyRO-> SetBadHVlinesPartitions(BadHVPartitions);
384 
385  return noisyRO;
386 }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_BadChanFracPerHVline

float LArNoisyROTool::m_BadChanFracPerHVline {}
private

Definition at line 151 of file LArNoisyROTool.h.

◆ m_BadChanPerFEB

unsigned int LArNoisyROTool::m_BadChanPerFEB {}
private

Definition at line 129 of file LArNoisyROTool.h.

◆ m_BadChanPerPA

unsigned int LArNoisyROTool::m_BadChanPerPA = 0U
private

Definition at line 126 of file LArNoisyROTool.h.

◆ m_cablingKey

SG::ReadCondHandleKey<LArOnOffIdMapping> LArNoisyROTool::m_cablingKey {this, "CablingKey", "LArOnOffIdMap", "key to read OnOff mapping"}
private

Definition at line 114 of file LArNoisyROTool.h.

◆ m_calo_id

const CaloCell_ID* LArNoisyROTool::m_calo_id {}
private

Definition at line 111 of file LArNoisyROTool.h.

◆ m_CellQualityCut

unsigned int LArNoisyROTool::m_CellQualityCut {}
private

Definition at line 117 of file LArNoisyROTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doHVline

bool LArNoisyROTool::m_doHVline {}
private

Definition at line 148 of file LArNoisyROTool.h.

◆ m_elecID

const LArElectrodeID* LArNoisyROTool::m_elecID {}
private

Definition at line 113 of file LArNoisyROTool.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_hvMapTool

ToolHandle<ILArHVMapTool> LArNoisyROTool::m_hvMapTool
private

Definition at line 110 of file LArNoisyROTool.h.

◆ m_ignore_front_innerwheel_cells

bool LArNoisyROTool::m_ignore_front_innerwheel_cells {}
private

Definition at line 123 of file LArNoisyROTool.h.

◆ m_ignore_masked_cells

bool LArNoisyROTool::m_ignore_masked_cells {}
private

Definition at line 120 of file LArNoisyROTool.h.

◆ m_mapPSFEB

std::unordered_map<unsigned int,unsigned int> LArNoisyROTool::m_mapPSFEB
private

Definition at line 106 of file LArNoisyROTool.h.

◆ m_MinBadFEB

unsigned int LArNoisyROTool::m_MinBadFEB {}
private

Definition at line 132 of file LArNoisyROTool.h.

◆ m_MinBadHV

unsigned int LArNoisyROTool::m_MinBadHV {}
private

Definition at line 154 of file LArNoisyROTool.h.

◆ m_MNBLooseCut

unsigned int LArNoisyROTool::m_MNBLooseCut {}
private

Definition at line 155 of file LArNoisyROTool.h.

◆ m_MNBTight_PsVetoCut

std::vector<unsigned int> LArNoisyROTool::m_MNBTight_PsVetoCut
private

Definition at line 157 of file LArNoisyROTool.h.

◆ m_MNBTightCut

unsigned int LArNoisyROTool::m_MNBTightCut {}
private

Definition at line 156 of file LArNoisyROTool.h.

◆ m_onlineID

const LArOnlineID* LArNoisyROTool::m_onlineID {}
private

Definition at line 112 of file LArNoisyROTool.h.

◆ m_partitionMask

std::array<uint8_t,4> LArNoisyROTool::m_partitionMask {}
private

Definition at line 158 of file LArNoisyROTool.h.

◆ m_SaturatedCellEnergyTightCut

float LArNoisyROTool::m_SaturatedCellEnergyTightCut {}
private

Definition at line 139 of file LArNoisyROTool.h.

◆ m_SaturatedCellQualityCut

unsigned int LArNoisyROTool::m_SaturatedCellQualityCut {}
private

Definition at line 136 of file LArNoisyROTool.h.

◆ m_SaturatedCellTightCut

unsigned int LArNoisyROTool::m_SaturatedCellTightCut {}
private

Definition at line 142 of file LArNoisyROTool.h.

◆ m_SaturatedCellTightCutEvents

unsigned int LArNoisyROTool::m_SaturatedCellTightCutEvents = 0U
private

Definition at line 145 of file LArNoisyROTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
LArNoisyROSummary::EMBAMask
@ EMBAMask
Definition: LArNoisyROSummary.h:34
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
LArNoisyROSummary::FCALCMask
@ FCALCMask
Definition: LArNoisyROSummary.h:31
PlotCalibFromCool.ft
ft
Definition: PlotCalibFromCool.py:329
LArNoisyROSummary::EMECCMask
@ EMECCMask
Definition: LArNoisyROSummary.h:33
LArNoisyROTool::HVlinesStatMap
std::unordered_map< HWIdentifier, unsigned int > HVlinesStatMap
Definition: LArNoisyROTool.h:107
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
LArNoisyROTool::m_SaturatedCellQualityCut
unsigned int m_SaturatedCellQualityCut
Definition: LArNoisyROTool.h:136
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
CaloCell_Base_ID::is_em_endcap
bool is_em_endcap(const Identifier id) const
test if the id belongs to the EM Endcap
LArNoisyROTool::m_BadChanFracPerHVline
float m_BadChanFracPerHVline
Definition: LArNoisyROTool.h:151
LArNoisyROSummary::HECAMask
@ HECAMask
Definition: LArNoisyROSummary.h:32
LArNoisyROTool::partitionNumber
size_t partitionNumber(const HWIdentifier) const
Definition: LArNoisyROTool.h:165
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
skel.it
it
Definition: skel.GENtoEVGEN.py:396
LArNoisyROTool::m_BadChanPerFEB
unsigned int m_BadChanPerFEB
Definition: LArNoisyROTool.h:129
LArNoisyROTool::m_mapPSFEB
std::unordered_map< unsigned int, unsigned int > m_mapPSFEB
Definition: LArNoisyROTool.h:106
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
Identifier::get_identifier32
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
LArOnlineID_Base::feb_begin
id_iterator feb_begin() const
Returns an iterator pointing to a feb identifier collection.
Definition: LArOnlineID_Base.cxx:1906
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
LArNoisyROTool::m_ignore_front_innerwheel_cells
bool m_ignore_front_innerwheel_cells
Definition: LArNoisyROTool.h:123
HWIdentifier
Definition: HWIdentifier.h:13
LArOnlineID_Base::barrel_ec
int barrel_ec(const HWIdentifier id) const
Return the position barrel or endcap of a hardware cell identifier: barrel_ec = [0,...
Definition: LArOnlineID_Base.cxx:1938
LArNoisyROTool::m_elecID
const LArElectrodeID * m_elecID
Definition: LArNoisyROTool.h:113
LArNoisyROSummary::EMECAMask
@ EMECAMask
Definition: LArNoisyROSummary.h:33
Identifier32::get_compact
value_type get_compact() const
Get the compact id.
Definition: Identifier32.h:44
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
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:189
LArNoisyROTool::m_MinBadFEB
unsigned int m_MinBadFEB
Definition: LArNoisyROTool.h:132
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
TRT::Hit::side
@ side
Definition: HitInfo.h:83
LArNoisyROTool::m_hvMapTool
ToolHandle< ILArHVMapTool > m_hvMapTool
Definition: LArNoisyROTool.h:110
LArNoisyROTool::m_ignore_masked_cells
bool m_ignore_masked_cells
Definition: LArNoisyROTool.h:120
python.ZdcRecConfig.pn
pn
Definition: ZdcRecConfig.py:524
CaloCell_Base_ID::is_em
bool is_em(const Identifier id) const
test if the id belongs to LArEM
LArOnlineID_Base::channel
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
Definition: LArOnlineID_Base.cxx:1963
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
LArNoisyROTool::m_partitionMask
std::array< uint8_t, 4 > m_partitionMask
Definition: LArNoisyROTool.h:158
LArOnlineID::isEMECchannel
bool isEMECchannel(const HWIdentifier id) const override final
Definition: LArOnlineID.cxx:763
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LArNoisyROTool::m_CellQualityCut
unsigned int m_CellQualityCut
Definition: LArNoisyROTool.h:117
lumiFormat.i
int i
Definition: lumiFormat.py:85
CaloCell_Base_ID::sampling
int sampling(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
LArElectrodeID::zside
int zside(const HWIdentifier id) const
Return an integer corresponding to the side of an hardware electrode identifier.
Definition: LArElectrodeID.h:367
LArNoisyROSummary::EMBCMask
@ EMBCMask
Definition: LArNoisyROSummary.h:34
LArOnlineID_Base::channel_Id
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
Definition: LArOnlineID_Base.cxx:1565
CaloCell_Base_ID::is_em_endcap_inner
bool is_em_endcap_inner(const Identifier id) const
test if the id belongs to the EM Endcap inner wheel
test_pyathena.parent
parent
Definition: test_pyathena.py:15
LArOnlineID_Base::pos_neg
int pos_neg(const HWIdentifier id) const
Return the side of a hardware cell identifier pos_neg = [0,1] positive-side or negative-side Barrel...
Definition: LArOnlineID_Base.cxx:1950
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LArNoisyROSummary::HECCMask
@ HECCMask
Definition: LArNoisyROSummary.h:32
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
LArNoisyROTool::FEBEvtStatMapCstIt
std::unordered_map< unsigned int, FEBEvtStat >::const_iterator FEBEvtStatMapCstIt
Definition: LArNoisyROTool.h:105
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
LArElectrodeID::detector
int detector(const HWIdentifier id) const
Return an integer corresponding to the detector of an hardware electrode identifier.
Definition: LArElectrodeID.h:361
LArNoisyROTool::m_MNBTightCut
unsigned int m_MNBTightCut
Definition: LArNoisyROTool.h:156
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:1479
RPDUtils::sideA
unsigned constexpr int sideA
Definition: RPDUtils.h:16
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
LArNoisyROTool::m_SaturatedCellTightCut
unsigned int m_SaturatedCellTightCut
Definition: LArNoisyROTool.h:142
LArOnlineID_Base::feb_end
id_iterator feb_end() const
Definition: LArOnlineID_Base.cxx:1911
CaloCell_Base_ID::is_em_barrel
bool is_em_barrel(const Identifier id) const
test if the id belongs to the EM barrel
LArNoisyROTool::m_MinBadHV
unsigned int m_MinBadHV
Definition: LArNoisyROTool.h:154
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
LArNoisyROTool::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: LArNoisyROTool.h:114
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArOnlineID_Base::isEMBchannel
bool isEMBchannel(const HWIdentifier id) const
Definition: LArOnlineID_Base.cxx:1648
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
LArNoisyROTool::m_MNBLooseCut
unsigned int m_MNBLooseCut
Definition: LArNoisyROTool.h:155
LArOnlineID_Base::feedthrough
int feedthrough(const HWIdentifier id) const
Return the feedthrough of a hardware cell identifier : feedthrough = [0,31] Barrel - A/C side or H/...
Definition: LArOnlineID_Base.cxx:1944
a
TList * a
Definition: liststreamerinfos.cxx:10
h
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
CondAlgsOpts.found
int found
Definition: CondAlgsOpts.py:101
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LArNoisyROTool::m_doHVline
bool m_doHVline
Definition: LArNoisyROTool.h:148
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LArNoisyROTool::m_SaturatedCellEnergyTightCut
float m_SaturatedCellEnergyTightCut
Definition: LArNoisyROTool.h:139
LArHVNMap::HVNcell
short HVNcell(const HWIdentifier &chid) const
Definition: LArHVNMap.cxx:18
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
LArNoisyROTool::FEBEvtStatMap
std::unordered_map< unsigned int, FEBEvtStat > FEBEvtStatMap
Definition: LArNoisyROTool.h:103
LArNoisyROSummary::FCALAMask
@ FCALAMask
Definition: LArNoisyROSummary.h:31
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
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:219
LArNoisyROTool::m_calo_id
const CaloCell_ID * m_calo_id
Definition: LArNoisyROTool.h:111
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
LArNoisyROTool::m_onlineID
const LArOnlineID * m_onlineID
Definition: LArNoisyROTool.h:112
LArHVIdMapping::getLArElectrodeIDvec
const std::vector< HWIdentifier > & getLArElectrodeIDvec(HWIdentifier &hvlineId) const
Return a vector of LArElectrodeID corresponding to a given LArHVLineID.
Definition: LArHVIdMapping.cxx:84
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
LArNoisyROSummary
Summary information for noisy LAr preamp / FEBs.
Definition: LArNoisyROSummary.h:28
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20
LArNoisyROTool::m_MNBTight_PsVetoCut
std::vector< unsigned int > m_MNBTight_PsVetoCut
Definition: LArNoisyROTool.h:157
Identifier
Definition: IdentifierFieldParser.cxx:14