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

#include <LArBadChannel2Ascii.h>

Inheritance diagram for LArBadChannel2Ascii:
Collaboration diagram for LArBadChannel2Ascii:

Public Member Functions

 ~LArBadChannel2Ascii ()=default
 
virtual StatusCode initialize () final
 
virtual StatusCode execute () final
 
 AthAlgorithm (const std::string &name, ISvcLocator *pSvcLocator)
 Constructor with parameters: More...
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
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 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
 

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

enum  DetPart {
  EMB =0, EMEC, HEC, FCAL,
  nParts
}
 
enum  CoarseProblemType {
  DeadReadout =0, DeadPhys, DeadCalib, DeadFEB,
  Noisy, Sporadic, Distorted, PeakReco,
  Fibre, GrandTotalDead, nProblemTypes
}
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

void writeSum (std::ofstream &exeFile, const std::vector< unsigned > &probs, const std::vector< unsigned > nChans) 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

SG::ReadCondHandleKey< LArBadChannelContm_BCKey {this,"BCKey","LArBadChannel"}
 
SG::ReadCondHandleKey< LArBadFebContm_BFKey {this,"BFKey","LArBadFeb"}
 
SG::ReadCondHandleKey< LArOnOffIdMappingm_cablingKey {this,"LArOnOffIdMapKey","LArOnOffIdMap"}
 
Gaudi::Property< std::string > m_fileName {this,"FileName",""}
 
Gaudi::Property< std::string > m_executiveSummaryFile {this,"ExecutiveSummaryFile",""}
 
Gaudi::Property< bool > m_wMissing {this,"WithMissing",false}
 
Gaudi::Property< bool > m_skipDisconnected {this,"SkipDisconnected",true}
 
Gaudi::Property< bool > m_isSC {"SuperCell",false}
 
DataObjIDColl m_extendedExtraObjects
 
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 16 of file LArBadChannel2Ascii.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ CoarseProblemType

Enumerator
DeadReadout 
DeadPhys 
DeadCalib 
DeadFEB 
Noisy 
Sporadic 
Distorted 
PeakReco 
Fibre 
GrandTotalDead 
nProblemTypes 

Definition at line 49 of file LArBadChannel2Ascii.h.

49  {
50  DeadReadout=0,
51  DeadPhys,
52  DeadCalib,
53  DeadFEB,
54  Noisy,
55  Sporadic,
56  Distorted,
57  PeakReco,
58  Fibre,
61  };

◆ DetPart

Enumerator
EMB 
EMEC 
HEC 
FCAL 
nParts 

Definition at line 40 of file LArBadChannel2Ascii.h.

40  {
41  EMB=0,
42  EMEC,
43  HEC,
44  FCAL,
45  nParts
46  };

Constructor & Destructor Documentation

◆ ~LArBadChannel2Ascii()

LArBadChannel2Ascii::~LArBadChannel2Ascii ( )
default

Member Function Documentation

◆ AthAlgorithm()

AthAlgorithm::AthAlgorithm

Constructor with parameters:

Definition at line 51 of file AthAlgorithm.cxx.

25  :
27 {
28  // Set up to run AthAlgorithmDHUpdate in sysInitialize before
29  // merging dependency lists. This extends the output dependency
30  // list with any symlinks implied by inheritance relations.
31  m_updateDataHandles =
32  std::make_unique<AthenaBaseComps::AthAlgorithmDHUpdate>
34  std::move (m_updateDataHandles));
35 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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; }

◆ execute()

StatusCode LArBadChannel2Ascii::execute ( )
finalvirtual

Definition at line 28 of file LArBadChannel2Ascii.cxx.

28  {
29 
30  const bool doExecSummary=(!m_executiveSummaryFile.empty());
31 
33  const LArBadChannelCont* badChannelCont{*bch};
34 
35  const LArOnOffIdMapping* cabling=nullptr;
36  if (m_skipDisconnected) {
38  cabling=(*cablingHdl);
39  }
40 
41  const LArBadFebCont* badFebCont=nullptr;
42  if (doExecSummary && !m_isSC) {
44  badFebCont=(*badFebHdl);
45  }
46 
47  const LArOnlineID_Base* larOnlineID;
48  if ( m_isSC ){
50  StatusCode sc = detStore()->retrieve(ll, "LArOnline_SuperCellID");
51  if (sc.isFailure()) {
52  ATH_MSG_ERROR( "Could not get LArOnlineID helper !" );
53  return StatusCode::FAILURE;
54  } else {
55  larOnlineID = ll;
56  ATH_MSG_DEBUG("Found the LArOnlineID helper");
57  }
58  } else { // m_isSC
59  const LArOnlineID* ll;
60  StatusCode sc = detStore()->retrieve(ll, "LArOnlineID");
61  if (sc.isFailure()) {
62  ATH_MSG_ERROR( "Could not get LArOnlineID helper !");
63  return StatusCode::FAILURE;
64  } else {
65  larOnlineID = ll;
66  ATH_MSG_DEBUG(" Found the LArOnlineID helper. ");
67  }
68  }
69 
70  std::ostream *out = &(std::cout);
71  std::ofstream outfile;
72  if (!m_fileName.empty()) {
73  outfile.open(m_fileName.value().c_str(),std::ios::out);
74  if (outfile.is_open()) {
75  ATH_MSG_INFO ( "Writing to file " << m_fileName );
76  out = &outfile;
77  }
78  else
79  ATH_MSG_ERROR ( "Failed to open file " << m_fileName );
80  }
81 
82  const LArBadChanBitPacking packing;
83  const LArBadChanSCBitPacking SCpacking;
84 
85  std::vector<std::vector<unsigned> > problemMatrix(nProblemTypes, std::vector<unsigned>(nParts));
86 
87  std::vector<HWIdentifier>::const_iterator it = larOnlineID->channel_begin();
88  std::vector<HWIdentifier>::const_iterator it_e = larOnlineID->channel_end();
89  unsigned count = 0, nConnected = 0;
90  std::vector<unsigned> nPerPart(nParts);
91 
92  for (; it != it_e; ++it) {
93  const HWIdentifier chid = *it;
94  if (cabling && !cabling->isOnlineConnected(chid))
95  continue;
96  ++nConnected;
97 
98  DetPart dp = EMB;
99  if (larOnlineID->isHECchannel(chid))
100  dp = HEC;
101  else if (larOnlineID->isEMECchannel(chid))
102  dp = EMEC;
103  else if (larOnlineID->isFCALchannel(chid))
104  dp = FCAL;
105 
106  ++nPerPart[dp];
107 
108  LArBadChannel bc = badChannelCont->status(chid);
109 
110  if (!bc.good()) {
111  ++count;
112  (*out) << std::format("{} {} {} {} {} 0 ",larOnlineID->barrel_ec(chid),larOnlineID->pos_neg(chid),larOnlineID->feedthrough(chid),larOnlineID->slot(chid),larOnlineID->channel(chid));
113  // Dummy 0 for calib-line
114  if (m_isSC) {
115  (*out) << SCpacking.stringStatus(bc);
116  } else {
117  (*out) << packing.stringStatus(bc);
118  }
119 
120  (*out) << std::format(" # {:#x}", chid.get_identifier32().get_compact());
121  if (cabling) {
122  Identifier offid = cabling->cnvToIdentifier(chid);
123  (*out) << std::format(" -> {:#x}",offid.get_identifier32().get_compact());
124  }
125  (*out) << std::endl;
126  } // End if channel is not good (regular printout)
127 
128  if (doExecSummary) {
129  HWIdentifier fid = larOnlineID->feb_Id(chid);
130  LArBadFeb bf;
131  if (!m_isSC) bf= badFebCont->status(fid);
132 
133  if (bc.deadReadout() || bc.maskedOSUM())
134  ++problemMatrix[DeadReadout][dp];
135  if (bc.deadPhys())
136  ++problemMatrix[DeadPhys][dp];
137  if (bc.deadCalib())
138  ++problemMatrix[DeadCalib][dp];
139  if (bc.reallyNoisy())
140  ++problemMatrix[Noisy][dp];
141  if (bc.sporadicBurstNoise())
142  ++problemMatrix[Sporadic][dp];
143 
144  if (bc.distorted() || bc.deformedTail() || bc.deformedPulse())
145  ++problemMatrix[Distorted][dp];
146 
147  if (bc.ADCJump() || bc.nonLinearRamp() || bc.SCAProblem() || bc.offOFCs() || bc.offAmplitude() || bc.offScale()) {
148  ++problemMatrix[PeakReco][dp];
149  }
150 
151  if (bc.lowLightFibre() || bc.transmissionErrorFibre()) {
152  ++problemMatrix[Fibre][dp];
153  }
154 
155  if (!m_isSC) { //problematic febs apply only to regular cells
156  if (bf.deadAll() || bf.deadReadout() || bf.deactivatedInOKS())
157  ++problemMatrix[DeadFEB][dp];
158  if (bf.deadAll() || bf.deadReadout() || bf.deactivatedInOKS() || bc.deadReadout() || bc.deadPhys() || bc.reallyNoisy())
159  ++problemMatrix[GrandTotalDead][dp];
160  }
161  else {
162  if(bc.maskedOSUM() || bc.deadReadout() || bc.deadPhys() || bc.reallyNoisy())
163  ++problemMatrix[GrandTotalDead][dp];
164  }
165 
166 
167  } // end if executive Summary
168 
169  } // end loop over channels;
170  if (m_skipDisconnected)
171  ATH_MSG_INFO ( "Found " << count << " entries in the bad-channel database. (Number of connected cells: " << nConnected << ")" );
172  else
173  ATH_MSG_INFO ( "Found " << count << " entries in the bad-channel database. (Number of cells: " << nConnected << ")");
174  if (m_wMissing)
175  ATH_MSG_INFO ( "Including missing FEBs" );
176  else
177  ATH_MSG_INFO ( "Without missing FEBs" );
178  if (outfile.is_open())
179  outfile.close();
180 
181 
182  if (doExecSummary) {
183  std::ofstream exeSum;
184  exeSum.open(m_executiveSummaryFile.value().c_str(),std::ios::out);
185  if (!exeSum.is_open()) {
186  ATH_MSG_ERROR ( "Failed to open file " << m_executiveSummaryFile );
187  return StatusCode::FAILURE;
188  }
189 
190  ATH_MSG_INFO ( "Writing Executive Summary to file " << m_executiveSummaryFile );
191 
192  if (m_isSC) {
193  exeSum << "LAr SuperCells dead readout (incl masked OSUM)" << std::endl;
194  writeSum(exeSum,problemMatrix[DeadReadout],nPerPart);
195 
196  exeSum << "LAr SuperCells suffering from high noise:" << std::endl;
197  writeSum(exeSum,problemMatrix[Noisy],nPerPart);
198 
199  exeSum << "LAr SuperCells w/o calibration (constants from phi average of eta neighbours):" << std::endl;
200  writeSum(exeSum,problemMatrix[DeadCalib],nPerPart);
201 
202  exeSum << "LAr SuperCells with distorted pulse shape:" << std::endl;
203  writeSum(exeSum,problemMatrix[Distorted],nPerPart);
204 
205  exeSum << "LAr SuperCells having problems with the peak reco:" << std::endl;
206  writeSum(exeSum,problemMatrix[PeakReco],nPerPart);
207 
208  exeSum << "LAr SuperCells having problems with the optical transmission:" << std::endl;
209  writeSum(exeSum,problemMatrix[Fibre],nPerPart);
210 
211  exeSum << "LAr SuperCells not usable:" << std::endl;
212  writeSum(exeSum,problemMatrix[GrandTotalDead],nPerPart);
213  }
214  else {
215  exeSum << "LAr dead readout channels:" << std::endl;
216  writeSum(exeSum,problemMatrix[DeadReadout],nPerPart);
217 
218  exeSum << "LAr permanently dead channels inside detector:" << std::endl;
219  writeSum(exeSum,problemMatrix[DeadPhys],nPerPart);
220 
221  exeSum << "LAr noisy readout channels (more than 10 sigma above phi average or unstable):" << std::endl;
222  writeSum(exeSum,problemMatrix[Noisy],nPerPart);
223 
224  exeSum << "LAr readout channels showing sporadic noise bursts:" << std::endl;
225  writeSum(exeSum,problemMatrix[Sporadic],nPerPart);
226 
227  exeSum << "LAr readout channels w/o calibration (constants from phi average of eta neighbours):" << std::endl;
228  writeSum(exeSum,problemMatrix[DeadCalib],nPerPart);
229 
230  exeSum << "LAr readout channels connected to inactive Front End Boards:" << std::endl;
231  writeSum(exeSum,problemMatrix[DeadFEB],nPerPart);
232 
233  exeSum << "LAr readout channels not usable:" << std::endl;
234  writeSum(exeSum,problemMatrix[GrandTotalDead],nPerPart);
235  }
236 
237  exeSum.close();
238  }
239 
240  return StatusCode::SUCCESS;
241 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::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

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51 {
52  // If we didn't find any symlinks to add, just return the collection
53  // from the base class. Otherwise, return the extended collection.
54  if (!m_extendedExtraObjects.empty()) {
56  }
57  return Algorithm::extraOutputDeps();
58 }

◆ initialize()

StatusCode LArBadChannel2Ascii::initialize ( )
finalvirtual

Definition at line 14 of file LArBadChannel2Ascii.cxx.

14  {
15 
16  ATH_MSG_INFO ( "initialize()" );
17 
18  ATH_CHECK(m_BCKey.initialize());
19 
20  ATH_CHECK(m_BFKey.initialize(!m_executiveSummaryFile.empty()));
21 
23 
24  return StatusCode::SUCCESS;
25 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::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.

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

MsgStream& AthCommonMsg< Algorithm >::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< Algorithm >::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< Algorithm > >::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.

◆ 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< Algorithm > >::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< Algorithm > >::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()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, PyAthena::Alg, and AthHistogramAlgorithm.

Definition at line 66 of file AthAlgorithm.cxx.

66  {
68 
69  if (sc.isFailure()) {
70  return sc;
71  }
72  ServiceHandle<ICondSvc> cs("CondSvc",name());
73  for (auto h : outputHandles()) {
74  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75  // do this inside the loop so we don't create the CondSvc until needed
76  if ( cs.retrieve().isFailure() ) {
77  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78  return StatusCode::SUCCESS;
79  }
80  if (cs->regHandle(this,*h).isFailure()) {
81  sc = StatusCode::FAILURE;
82  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83  << " with CondSvc");
84  }
85  }
86  }
87  return sc;
88 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::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< Algorithm > >::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  }

◆ writeSum()

void LArBadChannel2Ascii::writeSum ( std::ofstream &  exeFile,
const std::vector< unsigned > &  probs,
const std::vector< unsigned >  nChans 
) const
private

Definition at line 244 of file LArBadChannel2Ascii.cxx.

244  {
245 
246  const unsigned nTot=std::accumulate(nChans.begin(),nChans.end(),0);
247  const unsigned nTotProb=std::accumulate(probs.begin(),probs.end(),0);
248 
249  constexpr const char* fmt="{:>7}: {:>5} of {} ({:.3f}%)";
250 
251  exeFile << std::format(fmt, "EMB",probs[EMB], nChans[EMB], probs[EMB]*(100./nChans[EMB])) << std::endl;
252  exeFile << std::format(fmt, "EMEC",probs[EMEC], nChans[EMEC], probs[EMEC]*(100./nChans[EMEC])) << std::endl;
253  exeFile << std::format(fmt, "EM tot",probs[EMEC]+probs[EMB],nChans[EMB]+nChans[EMEC],(probs[EMEC]+probs[EMB])*(100./(nChans[EMEC]+nChans[EMB]))) << std::endl;
254  exeFile << std::format(fmt, "EMEC",probs[HEC], nChans[HEC], probs[HEC]*(100./nChans[HEC])) << std::endl;
255  exeFile << std::format(fmt, "EMEC",probs[FCAL], nChans[FCAL], probs[FCAL]*(100./nChans[FCAL])) << std::endl;
256  exeFile << std::format(fmt, "Total",nTotProb,nTot,nTotProb*(100./nTot)) << std::endl;
257 
258  exeFile << std::endl;
259 
260 }

Member Data Documentation

◆ m_BCKey

SG::ReadCondHandleKey<LArBadChannelCont> LArBadChannel2Ascii::m_BCKey {this,"BCKey","LArBadChannel"}
private

Definition at line 30 of file LArBadChannel2Ascii.h.

◆ m_BFKey

SG::ReadCondHandleKey<LArBadFebCont> LArBadChannel2Ascii::m_BFKey {this,"BFKey","LArBadFeb"}
private

Definition at line 31 of file LArBadChannel2Ascii.h.

◆ m_cablingKey

SG::ReadCondHandleKey<LArOnOffIdMapping> LArBadChannel2Ascii::m_cablingKey {this,"LArOnOffIdMapKey","LArOnOffIdMap"}
private

Definition at line 32 of file LArBadChannel2Ascii.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_executiveSummaryFile

Gaudi::Property<std::string> LArBadChannel2Ascii::m_executiveSummaryFile {this,"ExecutiveSummaryFile",""}
private

Definition at line 35 of file LArBadChannel2Ascii.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_fileName

Gaudi::Property<std::string> LArBadChannel2Ascii::m_fileName {this,"FileName",""}
private

Definition at line 34 of file LArBadChannel2Ascii.h.

◆ m_isSC

Gaudi::Property<bool> LArBadChannel2Ascii::m_isSC {"SuperCell",false}
private

Definition at line 38 of file LArBadChannel2Ascii.h.

◆ m_skipDisconnected

Gaudi::Property<bool> LArBadChannel2Ascii::m_skipDisconnected {this,"SkipDisconnected",true}
private

Definition at line 37 of file LArBadChannel2Ascii.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ m_wMissing

Gaudi::Property<bool> LArBadChannel2Ascii::m_wMissing {this,"WithMissing",false}
private

Definition at line 36 of file LArBadChannel2Ascii.h.


The documentation for this class was generated from the following files:
LArBadChanBitPacking
Definition: LArBadChanBitPacking.h:13
LArBadChannel::deadReadout
bool deadReadout() const
Definition: LArBadChannel.h:107
TileDCSDataPlotter.dp
dp
Definition: TileDCSDataPlotter.py:840
LArBadChannel::good
bool good() const
Returns true if no problems at all (all bits at zero)
Definition: LArBadChannel.h:89
LArBadChannel2Ascii::GrandTotalDead
@ GrandTotalDead
Definition: LArBadChannel2Ascii.h:59
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
LArBadChannel2Ascii::m_BFKey
SG::ReadCondHandleKey< LArBadFebCont > m_BFKey
Definition: LArBadChannel2Ascii.h:31
LArBadChannel::deadCalib
bool deadCalib() const
Definition: LArBadChannel.h:108
vtune_athena.format
format
Definition: vtune_athena.py:14
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
LArBadChannel2Ascii::m_skipDisconnected
Gaudi::Property< bool > m_skipDisconnected
Definition: LArBadChannel2Ascii.h:37
LArBadChannel2Ascii::nParts
@ nParts
Definition: LArBadChannel2Ascii.h:45
LArBadChannel::offScale
bool offScale() const
Definition: LArBadChannel.h:101
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
LArBadXCont
Conditions-Data class holding LAr Bad Channel or Bad Feb information.
Definition: LArBadChannelCont.h:28
accumulate
bool accumulate(AccumulateMap &map, std::vector< module_t > const &modules, FPGATrackSimMatrixAccumulator const &acc)
Accumulates an accumulator (e.g.
Definition: FPGATrackSimMatrixAccumulator.cxx:22
LArBadChannel2Ascii::DeadPhys
@ DeadPhys
Definition: LArBadChannel2Ascii.h:51
LArBadChannel2Ascii::Distorted
@ Distorted
Definition: LArBadChannel2Ascii.h:56
LArBadChannel::sporadicBurstNoise
bool sporadicBurstNoise() const
Definition: LArBadChannel.h:126
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
skel.it
it
Definition: skel.GENtoEVGEN.py:423
LArBadFeb::deadReadout
bool deadReadout() const
FEB is not sending readout data, but the L1 trigger path is working.
Definition: LArBadFeb.h:33
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
LArOnlineID_Base::slot
int slot(const HWIdentifier id) const
Return the slot number of a hardware cell identifier: slot = [1,15] Slot-ID in top part of the crat...
Definition: LArOnlineID_Base.cxx:1961
LArBadChannel2Ascii::Noisy
@ Noisy
Definition: LArBadChannel2Ascii.h:54
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
LArBadChannel2Ascii::nProblemTypes
@ nProblemTypes
Definition: LArBadChannel2Ascii.h:60
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
LArBadChannel2Ascii::EMB
@ EMB
Definition: LArBadChannel2Ascii.h:41
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:1942
LArBadXCont::status
LArBC_t status(const HWIdentifier channel) const
Query the status of a particular channel or FEB This is the main client access method.
LArOnlineID_Base::channel_end
id_iterator channel_end() const
Definition: LArOnlineID_Base.cxx:1931
LArBadChannel2Ascii::PeakReco
@ PeakReco
Definition: LArBadChannel2Ascii.h:57
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
LArBadChannel::SCAProblem
bool SCAProblem() const
Definition: LArBadChannel.h:98
LArBadChannel2Ascii::DeadFEB
@ DeadFEB
Definition: LArBadChannel2Ascii.h:53
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
LArBadChannel::deformedTail
bool deformedTail() const
Definition: LArBadChannel.h:94
LArOnlineID_Base::isFCALchannel
bool isFCALchannel(const HWIdentifier id) const
Definition: LArOnlineID_Base.cxx:1657
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:1967
LArBadChannel2Ascii::m_fileName
Gaudi::Property< std::string > m_fileName
Definition: LArBadChannel2Ascii.h:34
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthAlgorithm.cxx:66
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Identifier32::get_compact
value_type get_compact(void) const
Get the compact id.
Definition: Identifier32.h:171
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
LArBadChannel2Ascii::writeSum
void writeSum(std::ofstream &exeFile, const std::vector< unsigned > &probs, const std::vector< unsigned > nChans) const
Definition: LArBadChannel2Ascii.cxx:244
LArOnlineID_Base::isHECchannel
virtual bool isHECchannel(const HWIdentifier id) const =0
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
LArBadChannel2Ascii::DeadCalib
@ DeadCalib
Definition: LArBadChannel2Ascii.h:52
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
LArBadFeb::deadAll
bool deadAll() const
FEB is completely missing, e.g. powered off.
Definition: LArBadFeb.h:30
LArBadChannel2Ascii::m_isSC
Gaudi::Property< bool > m_isSC
Definition: LArBadChannel2Ascii.h:38
LArBadChannel2Ascii::EMEC
@ EMEC
Definition: LArBadChannel2Ascii.h:42
LArBadChannel
Definition: LArBadChannel.h:10
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:1954
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
LArBadChannel::offOFCs
bool offOFCs() const
Definition: LArBadChannel.h:99
ReadBchFromCool.bch
bch
Definition: ReadBchFromCool.py:446
LArOnlineID_Base::feb_Id
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
Definition: LArOnlineID_Base.cxx:1483
LArBadChanSCBitPacking
Definition: LArBadChanBitPacking.h:20
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
LArBadChannel::reallyNoisy
bool reallyNoisy() const
Definition: LArBadChannel.h:132
LArOnlineID_Base
Helper for the Liquid Argon Calorimeter cell identifiers.
Definition: LArOnlineID_Base.h:105
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LArOnlineID_Base::isEMECchannel
virtual bool isEMECchannel(const HWIdentifier id) const =0
LArBadFeb
Definition: LArBadFeb.h:10
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArOnlineID
Definition: LArOnlineID.h:20
LArOnline_SuperCellID
Definition: LArOnline_SuperCellID.h:20
LArBadFeb::deactivatedInOKS
bool deactivatedInOKS() const
Deactivated in OKS.
Definition: LArBadFeb.h:39
LArBadChannel::lowLightFibre
bool lowLightFibre() const
Definition: LArBadChannel.h:102
TLArBadChanBitPackingBase::stringStatus
std::string stringStatus(const LArBadChannel &bc) const
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
LArBadChannel2Ascii::Fibre
@ Fibre
Definition: LArBadChannel2Ascii.h:58
LArBadChannel2Ascii::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: LArBadChannel2Ascii.h:32
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:1948
LArBadChannel2Ascii::DeadReadout
@ DeadReadout
Definition: LArBadChannel2Ascii.h:50
fmt
a
TList * a
Definition: liststreamerinfos.cxx:10
LArBadChannel::offAmplitude
bool offAmplitude() const
Definition: LArBadChannel.h:100
h
LArBadChannel2Ascii::m_executiveSummaryFile
Gaudi::Property< std::string > m_executiveSummaryFile
Definition: LArBadChannel2Ascii.h:35
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LArBadChannel::distorted
bool distorted() const
Definition: LArBadChannel.h:113
LArBadChannel2Ascii::m_BCKey
SG::ReadCondHandleKey< LArBadChannelCont > m_BCKey
Definition: LArBadChannel2Ascii.h:30
LArBadChannel::deadPhys
bool deadPhys() const
Definition: LArBadChannel.h:109
LArBadChannel2Ascii::Sporadic
@ Sporadic
Definition: LArBadChannel2Ascii.h:55
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
LArBadChannel2Ascii::FCAL
@ FCAL
Definition: LArBadChannel2Ascii.h:44
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
LArBadChannel::maskedOSUM
bool maskedOSUM() const
Definition: LArBadChannel.h:93
LArBadChannel2Ascii::DetPart
DetPart
Definition: LArBadChannel2Ascii.h:40
LArBadChannel::transmissionErrorFibre
bool transmissionErrorFibre() const
Definition: LArBadChannel.h:103
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
LArBadChannel2Ascii::HEC
@ HEC
Definition: LArBadChannel2Ascii.h:43
LArBadChannel2Ascii::m_wMissing
Gaudi::Property< bool > m_wMissing
Definition: LArBadChannel2Ascii.h:36
Identifier::get_identifier32
Identifier32 get_identifier32(void) const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
PrepareReferenceFile.outfile
outfile
Definition: PrepareReferenceFile.py:42
LArBadChannel::ADCJump
bool ADCJump() const
Definition: LArBadChannel.h:97
LArBadChannel::nonLinearRamp
bool nonLinearRamp() const
Definition: LArBadChannel.h:96
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
LArOnlineID_Base::channel_begin
id_iterator channel_begin() const
Returns an iterator pointing to a channel identifier collection.
Definition: LArOnlineID_Base.cxx:1926
fitman.k
k
Definition: fitman.py:528
LArBadChannel::deformedPulse
bool deformedPulse() const
Definition: LArBadChannel.h:95
DiTauMassTools::TauTypes::ll
@ ll
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:49
ServiceHandle< ICondSvc >
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20