ATLAS Offline Software
LArAutoCorrTotalCondAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
9 
12 
14 
16  ISvcLocator *pSvcLocator)
17  : ::AthAlgorithm(name, pSvcLocator),
18  m_LArADC2MeVObjKey("LArADC2MeV"),
19  m_LArOnOffIdMappingObjKey("LArOnOffIdMap"),
20  m_LArShapeObjKey("LArShapeSym"),
21  m_LArAutoCorrObjKey("LArAutoCorrSym"),
22  m_LArNoiseObjKey("LArNoiseSym"),
23  m_LArPedestalObjKey("LArPedestal"),
24  m_LArfSamplObjKey("LArfSamplSym"),
25  m_LArMinBiasObjKey("LArMinBiasSym"),
26  m_LArAutoCorrTotalObjKey("LArAutoCorrTotal"),
27  m_NoPile(false), m_isMC(true),
28  m_isSuperCell(false), m_Nsamples(5),
29  m_firstSample(0), m_deltaBunch(1) {
30  declareProperty("LArADC2MeVObjKey", m_LArADC2MeVObjKey,
31  "Key to read LArADC2MeV object");
32  declareProperty("LArOnOffIdMappingObjKey", m_LArOnOffIdMappingObjKey,
33  "Key to read LArOnOffIdMapping object");
34  declareProperty("LArShapeObjKey", m_LArShapeObjKey,
35  "Key to read LArShape object");
36  declareProperty("LArAutoCorrObjKey", m_LArAutoCorrObjKey,
37  "Key to read LArAutoCorr object");
38  declareProperty("LArNoiseObjKey", m_LArNoiseObjKey,
39  "Key to read LArNoise object");
40  declareProperty("LArPedestalObjKey", m_LArPedestalObjKey,
41  "Key to read LArPedestal object");
42  declareProperty("LArfSamplObjKey", m_LArfSamplObjKey,
43  "Key to read LArfSampl object");
44  declareProperty("LArMinBiasObjKey", m_LArMinBiasObjKey,
45  "Key to read LArMinBias object");
46  declareProperty("LArAutoCorrTotalObjKey", m_LArAutoCorrTotalObjKey,
47  "Key to write LArAutoCorrTotal object");
48  declareProperty("NoPileUp", m_NoPile);
49  declareProperty("isMC", m_isMC);
50  declareProperty("isSuperCell", m_isSuperCell);
51  declareProperty("Nsamples", m_Nsamples, "Max number of samples to use");
53  "firstSample", m_firstSample,
54  "First sample to use for in-time event on the full pulse shape");
55  declareProperty("deltaBunch", m_deltaBunch,
56  "Delta between filled bunches in 25 ns units");
57 }
58 
60 
62  ATH_MSG_DEBUG("initialize " << name());
63 
64  // ReadCondHandle initialization
69 
71 
76 
77  // Number of gains (does this have to be in initialize now b/c of AthenaMT?)
78  if (m_isSuperCell) {
79  m_nGains = 1;
80  } else {
81  m_nGains = 3;
82  }
83 
84  ATH_MSG_DEBUG("settings: m_NoPile " << m_NoPile);
85  return StatusCode::SUCCESS;
86 }
87 
89 
90  // WriteHandle setup
92  // So the following should not be called usually?!
93  if (writeHandle.isValid()) {
95  "CondHandle "
96  << writeHandle.fullKey() << " is already valid.");
97  return StatusCode::SUCCESS;
98  }
99 
100  // Identifier helper
101  const LArOnlineID_Base *larOnlineID = nullptr;
102  if (m_isSuperCell) {
103  const LArOnline_SuperCellID *scidhelper;
104  ATH_CHECK(detStore()->retrieve(scidhelper, "LArOnline_SuperCellID"));
105  larOnlineID = scidhelper; // cast to base-class
106  } else { // regular cells
107  const LArOnlineID *idhelper;
108  ATH_CHECK(detStore()->retrieve(idhelper, "LArOnlineID"));
109  larOnlineID = idhelper; // cast to base-class
110  }
111  // Mapping helper
112  const LArOnOffIdMapping *larOnOffIdMapping = nullptr;
113  SG::ReadCondHandle<LArOnOffIdMapping> larOnOffIdMappingHdl{
115  };
116  larOnOffIdMapping = *larOnOffIdMappingHdl;
117  if (larOnOffIdMapping == nullptr) {
118  ATH_MSG_ERROR("Failed to retrieve LArOnOffIdMapping object");
119  }
120 
121  // Get pointers to inputs
123  // FIXME: should check if handle is properly created and/or check if handle is
124  // properly retrieved
125  // operator star of a ReadCondHandle returns a const pointer to type T
126  const ILArShape *larShape{ *ShapeHdl };
127  writeHandle.addDependency(ShapeHdl);
128 
130  const ILArAutoCorr *larAutoCorr{ *AutoCorrHdl };
131  writeHandle.addDependency(AutoCorrHdl);
132 
134  const LArADC2MeV *larADC2MeV = nullptr;
135  larADC2MeV = *ADC2MeVHdl;
136  if (larADC2MeV == nullptr) {
137  ATH_MSG_ERROR("Failed to retrieve LArADC2MeV object");
138  }
139  writeHandle.addDependency(ADC2MeVHdl);
140 
141  // Consider the determinstic objects
142  // checking isMC and NoPile again seems very clumsy. How to check if key has
143  // already been initialized?
144  const ILArNoise *larNoise = nullptr;
145  const ILArPedestal *larPedestal = nullptr;
146  const ILArfSampl *larfSampl = nullptr;
147  const ILArMinBias *larMinBias = nullptr;
148 
149  if (!m_NoPile) {
150  if (m_isMC) {
152  larNoise = *NoiseHdl;
153  writeHandle.addDependency(NoiseHdl);
154  } else {
156  larPedestal = *PedestalHdl;
157  writeHandle.addDependency(PedestalHdl);
158  }
159 
161  larfSampl = *fSamplHdl;
162  writeHandle.addDependency(fSamplHdl);
163 
165  larMinBias = *MinBiasHdl;
166  writeHandle.addDependency(MinBiasHdl);
167  }
168 
169  ATH_MSG_INFO("IOV found from intersection for AutoCorrTotal object: "
170  << writeHandle.getRange());
171 
172  // make output object
173  // dimensions: number of gains x number of channel IDs x elements of
174  // AutoCorrTotal
175  std::unique_ptr<LArAutoCorrTotal> larAutoCorrTotal =
176  std::make_unique<LArAutoCorrTotal>(larOnlineID, larOnOffIdMapping, m_nGains);
177 
178  int count = 0;
179  int count2 = 0;
180  int count3 =0;
181 
182  for (const HWIdentifier chid : larOnlineID->channel_range()) {
183  count++;
184  const IdentifierHash hid = larOnlineID->channel_Hash(chid);
185  // const unsigned int id32 = chid.get_identifier32().get_compact();
186 
187  if (larOnOffIdMapping->isOnlineConnected(chid)) {
188  count2++;
189 
190  for (size_t igain = 0; igain < m_nGains; igain++) {
191  const ILArShape::ShapeRef_t Shape = larShape->Shape(chid, igain);
192  const int nsamples_shape = static_cast<int>(Shape.size());
193 
195  larAutoCorr->autoCorr(chid, igain);
196 
197  if (AC.size() == 0) {
198  ATH_MSG_INFO("No ElecCalib AC for channel " << larOnlineID->channel_name(chid) << ", gain "<<igain << ". Skip.");
199  continue;
200  }
201 
202  count3++;
203  int nsamples_AC_OFC = AC.size() + 1;
204 
205  if (nsamples_AC_OFC > m_Nsamples) {
206  nsamples_AC_OFC = m_Nsamples;
207  }
208 
209  // fix HEC first sample +1 if the firstSample is 0 and nsamples 4
210  unsigned int ihecshift = 0;
211  if (larOnlineID->isHECchannel(chid) && nsamples_AC_OFC == 4 &&
212  m_firstSample == 0) {
213  ihecshift = 1;
214  // ATH_MSG_DEBUG( "Using firstSample +1 for HEC ChID 0x" << MSG::hex
215  // << id << MSG::dec );
216  }
217 
218  //:::::::::::::::::::::::::::::::
219  // NB:
220  // nsamples_shape = number of samples of the Shape function (e.g 32)
221  // nsamples_AC_OFC = size of AC matrix & OFC vector (e.g 5 in Atlas)
222  //:::::::::::::::::::::::::::::::
223  float fSigma2 = 0.;
224  if (!m_NoPile) {
225  float SigmaNoise;
226  if (m_isMC)
227  SigmaNoise = larNoise->noise(chid, igain);
228  else {
229  float RMSpedestal = larPedestal->pedestalRMS(chid, igain);
230  if (RMSpedestal > (1.0 + LArElecCalib::ERRORCODE))
231  SigmaNoise = RMSpedestal;
232  else
233  SigmaNoise = 0.; //(we will have the ERROR message below)
234  }
235  float fSampl = larfSampl->FSAMPL(chid);
236  float MinBiasRMS = larMinBias->minBiasRMS(chid);
237  if (fSampl != 0)
238  MinBiasRMS /= fSampl;
239  const auto polynom_adc2mev =
240  larADC2MeV->ADC2MEV(hid, igain);
241  float Adc2MeV = 0.;
242  if (polynom_adc2mev.size() > 0) {
243  Adc2MeV = (polynom_adc2mev)[1];
244  }
245  if (SigmaNoise != 0 && Adc2MeV != 0)
246  fSigma2 = pow(MinBiasRMS / (SigmaNoise * Adc2MeV), 2);
247 
248  if (fSampl == 0 || SigmaNoise == 0 || Adc2MeV == 0) {
249  if (m_isMC) {
250  ATH_MSG_ERROR(larOnlineID->show_to_string(
251  larOnOffIdMapping->cnvToIdentifier(chid))
252  << "fSampl (" << fSampl << "), SigmaNoise ("
253  << SigmaNoise << ") or Adc2MeV (" << Adc2MeV
254  << ") null "
255  << "=> AutoCorrTotal = only AutoCorr elect. part ");
256  }
257  fSigma2 = 0.;
258  }
259  ATH_MSG_DEBUG(chid.get_identifier32().get_compact()
260  << ") fSampl (" << fSampl << ") "
261  << ") SigmaNoise (" << SigmaNoise << ") "
262  << ") Adc2MeV (" << Adc2MeV << ") "
263 
264  );
265 
266  // warning: MinBiasRMS is in MeV (at the scale of the hits)
267  // SigmaNoise is in ADC counts
268  // so MinBiasRMS/fScale and SigmaNoise*Adc2MeV are the same scale
269  // (MeV at the scale of the cells)
270  } // end if m_NoPile
271 
272  // get in vTerms all the possible non trivial N(N-1)/2 terms of the
273  // autocorrelation matrix
274  int nsize_tot = (nsamples_AC_OFC - 1) * (nsamples_AC_OFC) / 2;
275 
276  ATH_MSG_DEBUG(chid.get_identifier32().get_compact()
277  << ") fSigma2 (" << fSigma2 << ") "
278  << ") nsamples_AC_OFC ( " << nsamples_AC_OFC);
279  std::vector<float> vTerms;
280 
281  vTerms.resize(2 * nsize_tot + nsamples_AC_OFC, 0.);
282  //:::::::::::::::::::::::::::::::
283 
284  for (int j1 = 0; j1 < nsamples_AC_OFC - 1; j1++) {
285  for (int j2 = j1 + 1; j2 < nsamples_AC_OFC; j2++) {
286  int l = abs(j2 - j1) - 1;
287  int index =
288  j1 * nsamples_AC_OFC - j1 * (j1 + 1) / 2 + j2 - (j1 + 1);
289  vTerms[index] = AC[l];
290  }
291  }
292 
293  ATH_MSG_DEBUG(chid.get_identifier32().get_compact()
294  << ") vTerms[1] (" << vTerms[1] << ") ");
295  // 2nd terms :
296  for (int j1 = 0; j1 < nsamples_AC_OFC - 1; ++j1) {
297  for (int j2 = j1 + 1; j2 < nsamples_AC_OFC; j2++) {
298  int index =
299  j1 * nsamples_AC_OFC - j1 * (j1 + 1) / 2 + j2 - (j1 + 1);
300  float Rij = 0;
301  for (int k = 0; k < nsamples_shape; ++k) {
302  if ((j2 - j1 + k) >= 0 && (j2 - j1 + k) < nsamples_shape) {
303  int ibunch = 0;
304  if ((j1 + m_firstSample + ihecshift - k) % m_deltaBunch == 0)
305  ibunch = 1;
306  Rij += Shape[k] * Shape[j2 - j1 + k] * ibunch;
307  }
308  }
309  vTerms[nsize_tot + index] = fSigma2 * Rij;
310  }
311  }
312  ATH_MSG_DEBUG(chid.get_identifier32().get_compact()
313  << ") vTerms[mid] (" << vTerms[vTerms.size()/2] << ") ");
314 
315  // 3rd term : RMS of pileup per samples (multiplied by fSigma2)
316  for (int j1 = 0; j1 < nsamples_AC_OFC; j1++) {
317  float Rms2i = 0;
318  for (int k = 0; k < nsamples_shape; ++k) {
319  int ibunch = 0;
320  if ((j1 + m_firstSample + ihecshift - k) % m_deltaBunch == 0)
321  ibunch = 1;
322  Rms2i += pow(Shape[k], 2) * ibunch;
323  }
324  vTerms[2 * nsize_tot + j1] = fSigma2 * Rms2i;
325  }
326  ATH_MSG_DEBUG(chid.get_identifier32().get_compact()
327  << ") vTerms[last] (" << vTerms[vTerms.size()-1] << ") ");
328 
329 
330  // storage
331  larAutoCorrTotal->set(hid, igain, vTerms);
332 
333  } //(loop on gains)
334 
335  } else // unconnected
336  for (unsigned int igain = 0; igain < m_nGains; igain++) {
337  unsigned nsize_tot = (m_Nsamples - 1) * (m_Nsamples) + m_Nsamples;
338  std::vector<float> empty(nsize_tot, 0.);
339  larAutoCorrTotal->set(hid, igain, empty);
340  }
341  }
342 
343  ATH_MSG_INFO("LArAutoCorrTotal Ncell " << count);
344  ATH_MSG_INFO("LArAutoCorrTotal Ncell * Ngain " << count3);
345  ATH_MSG_INFO("LArAutoCorrTotal Nconnected " << count2);
346 
347  ATH_MSG_INFO("LArAutoCorrTotal record with key" << m_LArAutoCorrTotalObjKey);
348 
349  ATH_CHECK(writeHandle.record(std::move(larAutoCorrTotal)));
350 
351 
352  return StatusCode::SUCCESS;
353 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
LArADC2MeV::ADC2MEV
const LArVectorProxy ADC2MEV(const HWIdentifier &id, int gain) const
Definition: LArADC2MeV.h:32
LArOnlineID_Base::channel_Hash
IdentifierHash channel_Hash(HWIdentifier channelId) const
Create channel_hash from channel_Id.
Definition: LArOnlineID_Base.cxx:1632
LArAutoCorrTotalCondAlg::m_LArADC2MeVObjKey
SG::ReadCondHandleKey< LArADC2MeV > m_LArADC2MeVObjKey
Definition: LArAutoCorrTotalCondAlg.h:36
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
LArConditionsException.h
LArAutoCorrTotalCondAlg.h
index
Definition: index.py:1
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
ILArPedestal
Definition: ILArPedestal.h:12
LArAutoCorrTotalCondAlg::m_NoPile
bool m_NoPile
Definition: LArAutoCorrTotalCondAlg.h:49
LArElecCalib::ERRORCODE
@ ERRORCODE
Definition: LArCalibErrorCode.h:17
LArAutoCorrTotal::set
bool set(const IdentifierHash &hid, const int gain, std::vector< float > &autocorrtotal)
Definition: LArAutoCorrTotal.cxx:23
SG::WriteCondHandle::getRange
const EventIDRange & getRange() const
Definition: WriteCondHandle.h:89
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
TRT_PAI_gasdata::AC
const float AC
Definition: TRT_PAI_gasdata.h:27
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
LArAutoCorrTotalCondAlg::~LArAutoCorrTotalCondAlg
virtual ~LArAutoCorrTotalCondAlg() override
Definition: LArAutoCorrTotalCondAlg.cxx:59
SG::WriteCondHandle::record
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED
Definition: WriteCondHandle.h:157
HWIdentifier
Definition: HWIdentifier.h:13
empty
bool empty(TH1 *h)
Definition: computils.cxx:294
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
ILArNoise
Definition: ILArNoise.h:12
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
ILArAutoCorr
This class defines the interface for accessing AutoCorrelation parameters for each channel @stereotyp...
Definition: ILArAutoCorr.h:29
LArAutoCorrTotalCondAlg::m_firstSample
unsigned int m_firstSample
Definition: LArAutoCorrTotalCondAlg.h:53
LArAutoCorrTotalCondAlg::execute
virtual StatusCode execute() override
Definition: LArAutoCorrTotalCondAlg.cxx:88
SG::WriteCondHandle::fullKey
const DataObjID & fullKey() const
Definition: WriteCondHandle.h:41
LArAutoCorrTotalCondAlg::m_isMC
bool m_isMC
Definition: LArAutoCorrTotalCondAlg.h:50
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LArOnlineID_Base::channel_range
id_range channel_range() const
Definition: LArOnlineID_Base.cxx:1932
doubleTestComp.j1
j1
Definition: doubleTestComp.py:21
LArAutoCorrTotalCondAlg::LArAutoCorrTotalCondAlg
LArAutoCorrTotalCondAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: LArAutoCorrTotalCondAlg.cxx:15
LArOnlineID_Base::isHECchannel
virtual bool isHECchannel(const HWIdentifier id) const =0
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
ILArfSampl::FSAMPL
virtual const float & FSAMPL(const HWIdentifier &id) const =0
ILArNoise::noise
virtual const float & noise(const HWIdentifier &id, int gain) const =0
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
WriteCellNoiseToCool.igain
igain
Definition: WriteCellNoiseToCool.py:338
LArAutoCorrComplete.h
ILArMinBias
Definition: ILArMinBias.h:13
AthAlgorithm
Definition: AthAlgorithm.h:47
LArAutoCorrTotalCondAlg::m_deltaBunch
int m_deltaBunch
Definition: LArAutoCorrTotalCondAlg.h:54
LArAutoCorrTotalCondAlg::initialize
virtual StatusCode initialize() override
Definition: LArAutoCorrTotalCondAlg.cxx:61
LArAutoCorrTotalCondAlg::m_LArAutoCorrTotalObjKey
SG::WriteCondHandleKey< LArAutoCorrTotal > m_LArAutoCorrTotalObjKey
Definition: LArAutoCorrTotalCondAlg.h:47
LArOnlineID_Base
Helper for the Liquid Argon Calorimeter cell identifiers.
Definition: LArOnlineID_Base.h:105
LArAutoCorrTotalCondAlg::m_LArPedestalObjKey
SG::ReadCondHandleKey< ILArPedestal > m_LArPedestalObjKey
Definition: LArAutoCorrTotalCondAlg.h:43
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
LArAutoCorrTotal.h
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArOnlineID
Definition: LArOnlineID.h:20
LArOnline_SuperCellID
Definition: LArOnline_SuperCellID.h:20
LArADC2MeV
Definition: LArADC2MeV.h:21
DeMoScan.index
string index
Definition: DeMoScan.py:364
LArAutoCorrTotalCondAlg::m_LArMinBiasObjKey
SG::ReadCondHandleKey< ILArMinBias > m_LArMinBiasObjKey
Definition: LArAutoCorrTotalCondAlg.h:45
AtlasDetectorID::show_to_string
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
Definition: AtlasDetectorID.cxx:574
LArAutoCorrTotalCondAlg::m_LArOnOffIdMappingObjKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_LArOnOffIdMappingObjKey
Definition: LArAutoCorrTotalCondAlg.h:38
LArOnOffIdMapping::cnvToIdentifier
Identifier cnvToIdentifier(const HWIdentifier &sid) const
create an Identifier from a HWIdentifier (inline)
Definition: LArOnOffIdMapping.h:116
LArAutoCorrTotalCondAlg::m_isSuperCell
bool m_isSuperCell
Definition: LArAutoCorrTotalCondAlg.h:51
ILArMinBias::minBiasRMS
virtual const float & minBiasRMS(const HWIdentifier &id) const =0
access to RMS of E in minimum bias events index by Identifier
SG::WriteCondHandle::isValid
bool isValid() const
Definition: WriteCondHandle.h:248
LArOnline_SuperCellID.h
LArAutoCorrTotalCondAlg::m_LArfSamplObjKey
SG::ReadCondHandleKey< ILArfSampl > m_LArfSamplObjKey
Definition: LArAutoCorrTotalCondAlg.h:44
LArAutoCorrTotalCondAlg::m_nGains
size_t m_nGains
Definition: LArAutoCorrTotalCondAlg.h:56
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
LArAutoCorrTotalCondAlg::m_LArNoiseObjKey
SG::ReadCondHandleKey< ILArNoise > m_LArNoiseObjKey
Definition: LArAutoCorrTotalCondAlg.h:42
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
ILArShape
Definition: ILArShape.h:13
LArAutoCorrTotalCondAlg::m_LArAutoCorrObjKey
SG::ReadCondHandleKey< ILArAutoCorr > m_LArAutoCorrObjKey
Definition: LArAutoCorrTotalCondAlg.h:41
ILArPedestal::pedestalRMS
virtual float pedestalRMS(const HWIdentifier &id, int gain) const =0
access to RMS of Pedestal index by Identifier, and gain setting
SG::WriteCondHandle
Definition: WriteCondHandle.h:26
doubleTestComp.j2
j2
Definition: doubleTestComp.py:22
LArAutoCorrTotalCondAlg::m_Nsamples
int m_Nsamples
Definition: LArAutoCorrTotalCondAlg.h:52
LArOnOffIdMapping::isOnlineConnected
bool isOnlineConnected(const HWIdentifier &sid) const
Test whether a HWIdentifier is connected of not (inline)
Definition: LArOnOffIdMapping.h:121
fitman.k
k
Definition: fitman.py:528
LArOnlineID.h
LArVectorProxy
Proxy for accessing a range of float values like a vector.
Definition: LArVectorProxy.h:38
LArAutoCorrTotalCondAlg::m_LArShapeObjKey
SG::ReadCondHandleKey< ILArShape > m_LArShapeObjKey
Definition: LArAutoCorrTotalCondAlg.h:40
ILArfSampl
Definition: ILArfSampl.h:14
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20
SG::WriteCondHandle::addDependency
void addDependency(const EventIDRange &range)
Definition: WriteCondHandle.h:275