ATLAS Offline Software
Loading...
Searching...
No Matches
PileUpMTAlg Class Reference

#include <PileUpMTAlg.h>

Inheritance diagram for PileUpMTAlg:

Public Member Functions

 PileUpMTAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~PileUpMTAlg ()
virtual StatusCode initialize () override
 uncomment and implement methods as required
virtual StatusCode execute (const EventContext &ctx) override
 Execute method.
virtual StatusCode finalize () override
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

virtual bool isReEntrant () const override final
 Legacy algorithms are not thread-safe.
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode get_ei (StoreGateSvc &sg, std::unique_ptr< const xAOD::EventInfo > &ei, std::unique_ptr< xAOD::EventAuxInfo > &eiAux, bool pileup=false) const
unsigned int get_BCID (int bc, unsigned int central_BCID) const
StatusCode add_subevt (const std::vector< std::uint32_t > &bcid, SG::WriteHandle< xAOD::EventInfo > &overlaidEvt, SG::WriteHandle< xAOD::EventInfoContainer > &puCont, ServiceHandle< IMinbiasSvc > &mbSvc, xAOD::EventInfo::PileUpType puType, int bc, const EventContext &ctx, unsigned long subevt_id, std::vector< std::uint64_t > &trace)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ServiceHandle< IMinbiasSvcm_lowptMBSvc
 Other useful methods provided by base class are: evtStore() : ServiceHandle to main event data storegate inputMetaStore() : ServiceHandle to input metadata storegate outputMetaStore() : ServiceHandle to output metadata storegate histSvc() : ServiceHandle to output ROOT service (writing TObjects) currentFile() : TFile* to the currently open input file retrieveMetadata(...): See twiki.cern.ch/twiki/bin/view/AtlasProtected/AthAnalysisBase#ReadingMetaDataInCpp.
ServiceHandle< IMinbiasSvcm_highptMBSvc
ServiceHandle< IMinbiasSvcm_cavernMBSvc
ServiceHandle< IMinbiasSvcm_beamhaloMBSvc
ServiceHandle< IMinbiasSvcm_beamgasMBSvc
ServiceHandle< IBeamIntensitym_beamInt
ServiceHandle< IBeamLuminositym_beamLumi
ServiceHandle< IAthRNGSvcm_rngSvc
ToolHandleArray< IPileUpToolm_puTools
Gaudi::Property< bool > m_writeTrace {this, "WriteTrace", false, "Write trace of pileup events used"}
Gaudi::Property< int > m_skippedHSEvents
Gaudi::Property< float > m_avgMu {this, "AverageMu", 200, "Average mu"}
Gaudi::Property< float > m_fracLowPt
Gaudi::Property< float > m_fracHighPt
Gaudi::Property< float > m_numCavern
Gaudi::Property< float > m_numBeamGas
Gaudi::Property< float > m_numBeamHalo
Gaudi::Property< int > m_BCSpacing
Gaudi::Property< int > m_earliestDeltaBC
Gaudi::Property< int > m_latestDeltaBC
ServiceHandle< ISkipEventIdxSvcm_skipEventIdxSvc
SG::ReadCondHandleKey< InDet::BeamSpotDatam_beamSpotKey
SG::WriteHandleKey< xAOD::EventInfom_evtInfoKey
SG::WriteHandleKey< xAOD::EventInfoContainerm_evtInfoContKey {""}
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Static Private Attributes

static atomic_output m_pileupTrace ATLAS_THREAD_SAFE {}
static bool m_skiptrace_written ATLAS_THREAD_SAFE = false

Detailed Description

Definition at line 74 of file PileUpMTAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ PileUpMTAlg()

PileUpMTAlg::PileUpMTAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 40 of file PileUpMTAlg.cxx.

41 : AthAlgorithm(name, pSvcLocator) {}
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.

◆ ~PileUpMTAlg()

PileUpMTAlg::~PileUpMTAlg ( )
virtual

Definition at line 43 of file PileUpMTAlg.cxx.

43{}

Member Function Documentation

◆ add_subevt()

StatusCode PileUpMTAlg::add_subevt ( const std::vector< std::uint32_t > & bcid,
SG::WriteHandle< xAOD::EventInfo > & overlaidEvt,
SG::WriteHandle< xAOD::EventInfoContainer > & puCont,
ServiceHandle< IMinbiasSvc > & mbSvc,
xAOD::EventInfo::PileUpType puType,
int bc,
const EventContext & ctx,
unsigned long subevt_id,
std::vector< std::uint64_t > & trace )
private

Definition at line 89 of file PileUpMTAlg.cxx.

95 {
96 // Keep the code to add and process a subevent in one place
97 const unsigned int bc_idx = bc - m_earliestDeltaBC;
98 StoreGateSvc* sg = mbSvc->getMinbias(ctx, subevt_id);
99 std::unique_ptr<const xAOD::EventInfo> ei;
100 std::unique_ptr<xAOD::EventAuxInfo> eiAux;
101 ATH_CHECK(get_ei(*sg, ei, eiAux, true));
102 xAOD::EventInfo mb_to_modify(*ei);
103 if (m_writeTrace) {
104 trace.push_back(mb_to_modify.eventNumber());
105 }
106 mb_to_modify.setBCID(bcid[bc_idx]);
107 try {
108 addSubEvent(overlaidEvt.ptr(), &mb_to_modify, bc * m_BCSpacing, puType,
109 puCont.ptr(), m_evtInfoContKey.key(), sg);
110 } catch (const std::exception& e) {
111 ATH_MSG_ERROR("Caught exception adding subevent: " << e.what());
112 return StatusCode::FAILURE;
113 }
114 return StatusCode::SUCCESS;
115}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
xAOD::EventInfo * addSubEvent(xAOD::EventInfo *targetEv, const xAOD::EventInfo::SubEvent &subev, xAOD::EventInfoContainer *eiContainer, const std::string &eiContKey, StoreGateSvc *subev_store=nullptr)
Gaudi::Property< int > m_earliestDeltaBC
Gaudi::Property< bool > m_writeTrace
SG::WriteHandleKey< xAOD::EventInfoContainer > m_evtInfoContKey
StatusCode get_ei(StoreGateSvc &sg, std::unique_ptr< const xAOD::EventInfo > &ei, std::unique_ptr< xAOD::EventAuxInfo > &eiAux, bool pileup=false) const
Gaudi::Property< int > m_BCSpacing
pointer_type ptr()
Dereference the pointer.
EventInfo_v1 EventInfo
Definition of the latest event info version.

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode PileUpMTAlg::execute ( const EventContext & ctx)
overridevirtual

Execute method.

Implements AthAlgorithm.

Definition at line 185 of file PileUpMTAlg.cxx.

185 {
186 using PUType = xAOD::EventInfo::PileUpType;
187 std::string trace_buf{}; // Hold trace of events.
188 auto trace = std::back_inserter(trace_buf);
189 ATH_MSG_DEBUG("Executing " << name() << "...");
190 const auto& evtID = ctx.eventID();
191
192 ATH_CHECK(evtStore().retrieve());
193 setFilterPassed(false, ctx); // optional: start with algorithm not passed
194
195 // Code based on PileUpEventLoopMgr and PileUpToolsAlg (trying to extract the
196 // core merging code) Read hard scatter
197 std::unique_ptr<const xAOD::EventInfo> hsEvt = nullptr;
198 std::unique_ptr<xAOD::EventAuxInfo> hsEvtAux = nullptr;
199 ATH_CHECK(get_ei(*evtStore(), hsEvt, hsEvtAux));
200
201 // Setup overlaid event
202 SG::WriteHandle<xAOD::EventInfo> overlaidEvt(m_evtInfoKey, ctx);
203 ATH_CHECK(overlaidEvt.record(std::make_unique<xAOD::EventInfo>(),
204 std::make_unique<xAOD::EventAuxInfo>()));
205 *overlaidEvt = *hsEvt; // copy in hard scatter
206 overlaidEvt->setEvtStore(evtStore().get());
207 overlaidEvt->clearSubEvents();
208
209 // This was the problem. Need to fix overlaidEvt using context run and lb
210 // number
211 overlaidEvt->setRunNumber(evtID.run_number());
212 overlaidEvt->setLumiBlock(evtID.lumi_block());
213 overlaidEvt->setEventNumber(evtID.event_number());
214 overlaidEvt->setBCID(evtID.bunch_crossing_id());
215 overlaidEvt->setTimeStamp(evtID.time_stamp());
216 overlaidEvt->setTimeStampNSOffset(evtID.time_stamp_ns_offset());
217 // Set beam spot info
218 SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle{m_beamSpotKey, ctx};
219 if (!beamSpotHandle.isValid()) {
220 ATH_MSG_ERROR("Beam spot information not valid");
221 return StatusCode::FAILURE;
222 }
223
224 overlaidEvt->setBeamPos(beamSpotHandle->beamPos()[Amg::x],
225 beamSpotHandle->beamPos()[Amg::y],
226 beamSpotHandle->beamPos()[Amg::z]);
227 overlaidEvt->setBeamPosSigma(beamSpotHandle->beamSigma(0),
228 beamSpotHandle->beamSigma(1),
229 beamSpotHandle->beamSigma(2));
230 overlaidEvt->setBeamPosSigmaXY(beamSpotHandle->beamSigmaXY());
231 overlaidEvt->setBeamTiltXZ(beamSpotHandle->beamTilt(0));
232 overlaidEvt->setBeamTiltYZ(beamSpotHandle->beamTilt(1));
233 overlaidEvt->setBeamStatus(beamSpotHandle->beamStatus());
234
235 // Pileup container
236 SG::WriteHandle<xAOD::EventInfoContainer> puCont(m_evtInfoContKey, ctx);
237 ATH_CHECK(puCont.record(std::make_unique<xAOD::EventInfoContainer>(),
238 std::make_unique<xAOD::EventInfoAuxContainer>()));
239
240 // Get crossing number
241 m_beamInt->selectT0(ctx);
242 overlaidEvt->setBCID(m_beamInt->getCurrentT0BunchCrossing());
243
244 // Set simulation bit
245 overlaidEvt->setEventTypeBitmask(hsEvt->eventTypeBitmask() |
247
248 // Set properties
249 bool sf_updated = false;
250 float lumi_sf = m_beamLumi->scaleFactor(evtID.run_number(),
251 evtID.lumi_block(), sf_updated);
252 float cur_avg_mu = lumi_sf * m_avgMu;
253 overlaidEvt->setAverageInteractionsPerCrossing(cur_avg_mu);
254 overlaidEvt->setActualInteractionsPerCrossing(m_beamInt->normFactor(0) *
255 cur_avg_mu);
256
257 // Trace
258 if (m_writeTrace) {
259 std::format_to(trace,
260 "Idx: {} Run: {} LB: {} EVT: {} "
261 "HS ID: {}\n",
262 ctx.evt(), evtID.run_number(), evtID.lumi_block(),
263 evtID.event_number(), m_lowptMBSvc->get_hs_id(ctx));
264 auto bunch_pattern =
265 rv::closed_iota(m_earliestDeltaBC.value(), m_latestDeltaBC.value()) |
266 rv::transform(
267 [this](int bc) { return int(m_beamInt->normFactor(bc)); }) |
268#if RANGE_V3_VERSION >= 1200
269 rv::chunk_by(std::equal_to{}) |
270#else
271 rv::group_by(std::equal_to{}) |
272#endif
273 rv::transform([](const auto& rng) {
274 return std::format("{}{}", rng.size(), rng[0] == 0 ? 'E' : 'F');
275 }) |
276 ranges::to<std::vector<std::string>>;
277 // Manual join using std::ostringstream as std::format does not support ranges
278 std::string joined_pattern;
279 for (size_t i = 0; i < bunch_pattern.size(); ++i) {
280 joined_pattern += bunch_pattern[i];
281 if (i + 1 < bunch_pattern.size()) {
282 joined_pattern += " ";
283 }
284 }
285
286 std::format_to(trace,
287 "mu = {}, central BCID = {}, bunch pattern = [{}]\n",
288 cur_avg_mu, m_beamInt->getCurrentT0BunchCrossing(),
289 joined_pattern);
290 }
291 // Copy subevents
292 if (!hsEvt->subEvents().empty()) {
293 for (const SubEvent& se : hsEvt->subEvents()) {
294 addSubEvent(overlaidEvt.ptr(), se, puCont.ptr(), m_evtInfoContKey.key(),
295 evtStore().get());
296 }
297 } else {
298 // if no subevents, add original event
299 addSubEvent(overlaidEvt.ptr(), hsEvt.get(), 0, xAOD::EventInfo::Signal,
300 puCont.ptr(), m_evtInfoContKey.key(), evtStore().get());
301 }
302
303 // Initialize MinbiasSvcs
304 if (m_fracLowPt != 0) {
305 ATH_CHECK(m_lowptMBSvc->beginHardScatter(ctx));
306 }
307 if (m_fracHighPt != 0) {
308 ATH_CHECK(m_highptMBSvc->beginHardScatter(ctx));
309 }
310 if (m_numCavern != 0) {
311 ATH_CHECK(m_cavernMBSvc->beginHardScatter(ctx));
312 }
313 if (m_numBeamHalo != 0) {
314 ATH_CHECK(m_beamhaloMBSvc->beginHardScatter(ctx));
315 }
316 if (m_numBeamGas != 0) {
317 ATH_CHECK(m_beamgasMBSvc->beginHardScatter(ctx));
318 }
319
320 std::uint32_t central_bcid = overlaidEvt->bcid();
321 std::vector<std::uint32_t> bcid{};
323
324 for (int bc = m_earliestDeltaBC; bc <= m_latestDeltaBC; ++bc) {
325 bcid.push_back(get_BCID(bc, central_bcid));
326 }
327
328 // Setup tools
329 for (auto&& tool : m_puTools) {
330 // Reset filter -- Don't know if this is necessary
331 tool->resetFilter();
332 }
333
334 // Now add the events
335 std::uint64_t low_pt_count = 0;
336 std::uint64_t high_pt_count = 0;
337 std::uint64_t cavern_count = 0;
338 std::uint64_t beam_halo_count = 0;
339 std::uint64_t beam_gas_count = 0;
340 auto now = std::chrono::high_resolution_clock::now();
341 for (int bc = m_earliestDeltaBC; bc <= m_latestDeltaBC; ++bc) {
342 if (m_beamInt->normFactor(bc) == 0.) {
343 // skip empty bunch crossings
344 continue;
345 }
346 std::vector<std::uint64_t> subevts_vec{};
347 if (m_fracLowPt != 0) {
348 if (m_writeTrace) {
349 std::format_to(trace, "\tBC {:03} : LOW PT {} ", bc,
350 m_lowptMBSvc->getNumForBunch(ctx, bc));
351 }
352 for (std::size_t i = 0; i < m_lowptMBSvc->getNumForBunch(ctx, bc); ++i) {
353 ATH_CHECK(add_subevt(bcid, overlaidEvt, puCont, m_lowptMBSvc,
354 PUType::MinimumBias, bc, ctx, low_pt_count,
355 subevts_vec));
356 ++low_pt_count;
357 }
358 }
359 if (m_fracHighPt != 0) {
360 if (m_writeTrace) {
361 std::format_to(trace, "HIGH PT {} | ",
362 m_highptMBSvc->getNumForBunch(ctx, bc));
363 }
364 for (std::size_t i = 0; i < m_highptMBSvc->getNumForBunch(ctx, bc); ++i) {
365 ATH_CHECK(add_subevt(bcid, overlaidEvt, puCont, m_highptMBSvc,
366 PUType::HighPtMinimumBias, bc, ctx, high_pt_count,
367 subevts_vec));
368 ++high_pt_count;
369 }
370 }
371 if (m_numCavern != 0) {
372 if (m_writeTrace) {
373 std::format_to(trace, "CAVERN {} | ",
374 m_cavernMBSvc->getNumForBunch(ctx, bc));
375 }
376 for (std::size_t i = 0; i < m_cavernMBSvc->getNumForBunch(ctx, bc); ++i) {
377 ATH_CHECK(add_subevt(bcid, overlaidEvt, puCont, m_cavernMBSvc,
378 PUType::Cavern, bc, ctx, cavern_count,
379 subevts_vec));
380 ++cavern_count;
381 }
382 }
383 if (m_numBeamHalo != 0) {
384 if (m_writeTrace) {
385 std::format_to(trace, "BEAM HALO {} | ",
386 m_beamhaloMBSvc->getNumForBunch(ctx, bc));
387 }
388 for (std::size_t i = 0; i < m_beamhaloMBSvc->getNumForBunch(ctx, bc);
389 ++i) {
390 ATH_CHECK(add_subevt(bcid, overlaidEvt, puCont, m_beamhaloMBSvc,
391 PUType::HaloGas, bc, ctx, beam_halo_count,
392 subevts_vec));
393 ++beam_halo_count;
394 }
395 }
396 if (m_numBeamGas != 0) {
397 if (m_writeTrace) {
398 std::format_to(trace, "BEAM GAS {} | ",
399 m_beamgasMBSvc->getNumForBunch(ctx, bc));
400 }
401 for (std::size_t i = 0; i < m_beamgasMBSvc->getNumForBunch(ctx, bc);
402 ++i) {
403 ATH_CHECK(add_subevt(bcid, overlaidEvt, puCont, m_beamgasMBSvc,
404 PUType::HaloGas, bc, ctx, beam_gas_count,
405 subevts_vec));
406 ++beam_gas_count;
407 }
408 }
409 if (m_writeTrace) {
410 std::format_to(trace, "TOTAL {} | HASH {:08X}\n", subevts_vec.size(),
411 xxh3::hash64(subevts_vec));
412 }
413 }
414 if (m_writeTrace) {
415 std::format_to(trace, "\n");
416 m_pileupTrace.print(trace_buf);
417 }
418
419 for (auto&& tool : m_puTools) {
420 try {
421 ATH_CHECK(tool->processAllSubEvents(ctx));
422 } catch (const std::exception& e) {
423 ATH_MSG_ERROR("Caught exception running " << tool.name() << ": "
424 << e.what());
425 return StatusCode::FAILURE;
426 }
427 // Propagate filter result
428 if (!tool->filterPassed()) {
429 setFilterPassed(false, ctx);
430 }
431 }
432 ATH_MSG_DEBUG(std::format("***** Took {:%OMm %OSs} to process all subevents",
433 std::chrono::high_resolution_clock::now() - now));
434 //
435 // Save hash (direct copy from PileUpEventLoopMgr)
436 PileUpHashHelper pileUpHashHelper;
437 pileUpHashHelper.addToHashSource(overlaidEvt.cptr());
438 ATH_MSG_VERBOSE("Pile-up hash source:" << pileUpHashHelper.hashSource());
439
440 // Calculate and set hash
441 uuid_t pileUpHash;
442 pileUpHashHelper.calculateHash(pileUpHash);
443 overlaidEvt->setPileUpMixtureID(
445 ATH_MSG_DEBUG("PileUpMixtureID = " << overlaidEvt->pileUpMixtureID());
446
447 setFilterPassed(true, ctx); // if got here, assume that means algorithm passed
448 if (m_fracLowPt != 0) {
449 ATH_CHECK(m_lowptMBSvc->endHardScatter(ctx));
450 }
451 if (m_fracHighPt != 0) {
452 ATH_CHECK(m_highptMBSvc->endHardScatter(ctx));
453 }
454 if (m_numCavern != 0) {
455 ATH_CHECK(m_cavernMBSvc->endHardScatter(ctx));
456 }
457 if (m_numBeamHalo != 0) {
458 ATH_CHECK(m_beamhaloMBSvc->endHardScatter(ctx));
459 }
460 if (m_numBeamGas != 0) {
461 ATH_CHECK(m_beamgasMBSvc->endHardScatter(ctx));
462 }
463 return StatusCode::SUCCESS;
464}
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
xAOD::EventInfo::SubEvent SubEvent
virtual void setFilterPassed(bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore()
std::string hashSource() const
Get the current hash base.
void addToHashSource(const std::string &string)
Add a plain string to the stream.
void calculateHash(uuid_t &hash) const
Calculate the hash.
static xAOD::EventInfo::PileUpMixtureID uuidToPileUpMixtureId(const uuid_t &hash)
Convert uuid_t to xAOD::EventInfo::PileUpMixtureID.
Gaudi::Property< int > m_latestDeltaBC
Gaudi::Property< float > m_avgMu
Gaudi::Property< float > m_numCavern
unsigned int get_BCID(int bc, unsigned int central_BCID) const
Gaudi::Property< float > m_fracLowPt
ServiceHandle< IBeamLuminosity > m_beamLumi
ToolHandleArray< IPileUpTool > m_puTools
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
ServiceHandle< IMinbiasSvc > m_beamgasMBSvc
ServiceHandle< IMinbiasSvc > m_highptMBSvc
ServiceHandle< IMinbiasSvc > m_cavernMBSvc
Gaudi::Property< float > m_fracHighPt
SG::WriteHandleKey< xAOD::EventInfo > m_evtInfoKey
ServiceHandle< IBeamIntensity > m_beamInt
ServiceHandle< IMinbiasSvc > m_lowptMBSvc
Other useful methods provided by base class are: evtStore() : ServiceHandle to main event data storeg...
Gaudi::Property< float > m_numBeamGas
Gaudi::Property< float > m_numBeamHalo
StatusCode add_subevt(const std::vector< std::uint32_t > &bcid, SG::WriteHandle< xAOD::EventInfo > &overlaidEvt, SG::WriteHandle< xAOD::EventInfoContainer > &puCont, ServiceHandle< IMinbiasSvc > &mbSvc, xAOD::EventInfo::PileUpType puType, int bc, const EventContext &ctx, unsigned long subevt_id, std::vector< std::uint64_t > &trace)
ServiceHandle< IMinbiasSvc > m_beamhaloMBSvc
PileUpType
Enumerator describing the types of pileup events.
@ Signal
The signal event.
@ IS_SIMULATION
true: simulation, false: data
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:132
uint32_t rng()
Definition FillerAlg.cxx:40
setEventNumber setTimeStamp bcid
std::uint64_t hash64(const void *data, std::size_t size)
Passthrough to XXH3_64bits.
Definition XXH.cxx:9

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::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 & AthCommonAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ filterPassed()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ finalize()

StatusCode PileUpMTAlg::finalize ( )
overridevirtual

Definition at line 176 of file PileUpMTAlg.cxx.

176 {
177 ATH_MSG_DEBUG("Finalizing " << name() << "...");
178 //
179 // Things that happen once at the end of the event loop go here
180 //
181
182 return StatusCode::SUCCESS;
183}

◆ get_BCID()

unsigned int PileUpMTAlg::get_BCID ( int bc,
unsigned int central_BCID ) const
inlineprivate

Definition at line 153 of file PileUpMTAlg.h.

153 {
154 constexpr int maxBCPerOrbit = 3564; // FIXME may need update
155 return static_cast<unsigned int>((bc + static_cast<int>(central_BCID)) %
156 maxBCPerOrbit);
157 }

◆ get_ei()

StatusCode PileUpMTAlg::get_ei ( StoreGateSvc & sg,
std::unique_ptr< const xAOD::EventInfo > & ei,
std::unique_ptr< xAOD::EventAuxInfo > & eiAux,
bool pileup = false ) const
private

Definition at line 45 of file PileUpMTAlg.cxx.

48 {
49 std::string key = pileup ? "EventInfo" : "HSEventInfo";
50 auto newEi = std::make_unique<xAOD::EventInfo>();
51 auto eiAux = std::make_unique<xAOD::EventAuxInfo>();
52 newEi->setStore(eiAux.get());
53 SG::ReadHandle<xAOD::EventInfo> ei_h(key, sg.name());
54 const xAOD::EventInfo* ei = ei_h.get();
55 if (ei != nullptr) {
56 *newEi = *ei;
57 } else {
58 ATH_MSG_ERROR("Couldn't find xAOD::EventInfo. " << sg.name());
59 ATH_MSG_ERROR(sg.dump());
60 return StatusCode::FAILURE;
61 }
62 // Use attribute list if EventInfo doesn't have event numbers set
63 if (newEi->eventNumber() == 0) {
64 const auto* attr_list_p = sg.tryConstRetrieve<AthenaAttributeList>("Input");
65 if (attr_list_p != nullptr) {
66 if (attr_list_p->size() <= 6) {
67 ATH_MSG_WARNING("Read Input attribute list but size <= 6");
68 } else {
69 const AthenaAttributeList& attr_list = *attr_list_p;
70 const auto runNum = attr_list["RunNumber"].data<unsigned>();
71 const auto evtNum = attr_list["EventNumber"].data<unsigned long long>();
72 const auto lbNum = attr_list["LumiBlockN"].data<unsigned>();
73 newEi->setRunNumber(runNum);
74 newEi->setLumiBlock(lbNum);
75 newEi->setEventNumber(evtNum);
76 }
77 } else {
79 "Could not read Input attribute list and EventInfo has no event "
80 "number");
81 }
82 }
83 newEi->setEvtStore(&sg);
84 ei_ = std::move(newEi);
85 ei_aux_ = std::move(eiAux);
86 return StatusCode::SUCCESS;
87}
#define ATH_MSG_WARNING(x)
std::string dump() const
dump objects in store.
const T * tryConstRetrieve() const

◆ initialize()

StatusCode PileUpMTAlg::initialize ( )
overridevirtual

uncomment and implement methods as required

Definition at line 117 of file PileUpMTAlg.cxx.

117 {
118 using namespace std::chrono;
119 ATH_MSG_DEBUG("Initializing " << name() << "...");
120 if (m_writeTrace) {
121 std::string filename = std::format("pileup_trace_skipping-{}_{:%Y-%m-%dT%H%M}.txt",
122 m_skippedHSEvents.value(),
123 system_clock::now());
124 if (!m_pileupTrace.init(filename)) {
125 ATH_MSG_ERROR("Cannot append to file " << filename);
126 return StatusCode::FAILURE;
127 }
128 }
129 ATH_CHECK(m_skipEventIdxSvc.retrieve());
130 ATH_CHECK(m_rngSvc.retrieve());
131 if (m_fracLowPt != 0) {
132 ATH_CHECK(m_lowptMBSvc.retrieve());
133 }
134 if (m_fracHighPt != 0) {
135 ATH_CHECK(m_highptMBSvc.retrieve());
136 }
137 if (m_numCavern != 0) {
138 ATH_CHECK(m_cavernMBSvc.retrieve());
139 }
140 if (m_numBeamGas != 0) {
141 ATH_CHECK(m_beamgasMBSvc.retrieve());
142 }
143 if (m_numBeamHalo != 0) {
144 ATH_CHECK(m_beamhaloMBSvc.retrieve());
145 }
146 ATH_CHECK(m_beamInt.retrieve());
147 ATH_CHECK(m_beamLumi.retrieve());
148 ATH_CHECK(m_puTools.retrieve());
149
150 m_evtInfoContKey = "PileUpEventInfo";
151 ATH_CHECK(m_evtInfoKey.initialize());
152 ATH_CHECK(m_evtInfoContKey.initialize());
153 ATH_CHECK(m_beamSpotKey.initialize());
154
155 // Trace skipped events
156 if (m_writeTrace) {
158 ISkipEventIdxSvc::EvtIter end) -> StatusCode {
159 std::string trace_buf{};
160 auto trace = std::back_inserter(trace_buf);
161 for (; it != end; ++it) {
162 std::format_to(trace, "SKIPPING Run: {} LB: {} EVT: {} HS ID: {}\n",
163 it->runNum, it->lbNum, it->evtNum, it->evtIdx);
164 }
165 m_pileupTrace.print(trace_buf);
166 return StatusCode::SUCCESS;
167 };
168 if (!m_skiptrace_written) {
169 ATH_CHECK(m_skipEventIdxSvc->registerCallback(handler));
170 m_skiptrace_written = true;
171 }
172 }
173 return StatusCode::SUCCESS;
174}
std::vector< EvtId >::const_iterator EvtIter
ServiceHandle< IAthRNGSvc > m_rngSvc
ServiceHandle< ISkipEventIdxSvc > m_skipEventIdxSvc
Gaudi::Property< int > m_skippedHSEvents
void handler(int sig)
signal handler
Definition rmain.cxx:99

◆ inputHandles()

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

◆ isClonable()

virtual bool PileUpMTAlg::isClonable ( ) const
inlineoverridevirtual

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented from AthCommonAlgorithm< Gaudi::Algorithm >.

Definition at line 87 of file PileUpMTAlg.h.

87{ return true; }

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 47 of file AthAlgorithm.h.

47{ return false; }

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< Gaudi::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< Gaudi::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< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
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)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }

◆ sysExecute()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::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< Gaudi::Algorithm > >.

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

Definition at line 60 of file AthCommonAlgorithm.cxx.

71 {
73
74 if (sc.isFailure()) {
75 return sc;
76 }
77
78 ServiceHandle<ICondSvc> cs("CondSvc",name());
79 for (auto h : outputHandles()) {
80 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
81 // do this inside the loop so we don't create the CondSvc until needed
82 if ( cs.retrieve().isFailure() ) {
83 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
85 }
86 if (cs->regHandle(this,*h).isFailure()) {
88 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
89 << " with CondSvc");
90 }
91 }
92 }
93 return sc;
94}
virtual StatusCode sysInitialize() override
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::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< Gaudi::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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/2]

bool m_skiptrace_written PileUpMTAlg::ATLAS_THREAD_SAFE = false
inlinestaticprivate

Definition at line 166 of file PileUpMTAlg.h.

◆ ATLAS_THREAD_SAFE [2/2]

atomic_output m_pileupTrace PileUpMTAlg::ATLAS_THREAD_SAFE {}
inlinestaticprivate

Definition at line 165 of file PileUpMTAlg.h.

165{};

◆ m_avgMu

Gaudi::Property<float> PileUpMTAlg::m_avgMu {this, "AverageMu", 200, "Average mu"}
private

Definition at line 121 of file PileUpMTAlg.h.

121{this, "AverageMu", 200, "Average mu"};

◆ m_BCSpacing

Gaudi::Property<int> PileUpMTAlg::m_BCSpacing
private
Initial value:
{this, "BCSpacing", 25,
"Bunch crossing spacing in ns"}

Definition at line 132 of file PileUpMTAlg.h.

132 {this, "BCSpacing", 25,
133 "Bunch crossing spacing in ns"};

◆ m_beamgasMBSvc

ServiceHandle<IMinbiasSvc> PileUpMTAlg::m_beamgasMBSvc
private
Initial value:
{
this, "BeamGasMinbiasSvc", "", "MinbiasSvc for beam gas background"}

Definition at line 108 of file PileUpMTAlg.h.

108 {
109 this, "BeamGasMinbiasSvc", "", "MinbiasSvc for beam gas background"};

◆ m_beamhaloMBSvc

ServiceHandle<IMinbiasSvc> PileUpMTAlg::m_beamhaloMBSvc
private
Initial value:
{
this, "BeamHaloMinbiasSvc", "", "MinbiasSvc for beam halo background"}

Definition at line 106 of file PileUpMTAlg.h.

106 {
107 this, "BeamHaloMinbiasSvc", "", "MinbiasSvc for beam halo background"};

◆ m_beamInt

ServiceHandle<IBeamIntensity> PileUpMTAlg::m_beamInt
private
Initial value:
{this, "BeamIntSvc", "FlatBM",
"Beam intensity service"}

Definition at line 110 of file PileUpMTAlg.h.

110 {this, "BeamIntSvc", "FlatBM",
111 "Beam intensity service"};

◆ m_beamLumi

ServiceHandle<IBeamLuminosity> PileUpMTAlg::m_beamLumi
private
Initial value:
{
this, "BeamLumiSvc", "LumiProfileSvc", "Beam luminosity service"}

Definition at line 112 of file PileUpMTAlg.h.

112 {
113 this, "BeamLumiSvc", "LumiProfileSvc", "Beam luminosity service"};

◆ m_beamSpotKey

SG::ReadCondHandleKey<InDet::BeamSpotData> PileUpMTAlg::m_beamSpotKey
private
Initial value:
{
this, "BeamSpotKey", "BeamSpotData", "Beam spot info key"}

Definition at line 143 of file PileUpMTAlg.h.

143 {
144 this, "BeamSpotKey", "BeamSpotData", "Beam spot info key"};

◆ m_cavernMBSvc

ServiceHandle<IMinbiasSvc> PileUpMTAlg::m_cavernMBSvc
private
Initial value:
{this, "CavernMinbiasSvc", "",
"MinbiasSvc for cavern background"}

Definition at line 104 of file PileUpMTAlg.h.

104 {this, "CavernMinbiasSvc", "",
105 "MinbiasSvc for cavern background"};

◆ m_detStore

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

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_earliestDeltaBC

Gaudi::Property<int> PileUpMTAlg::m_earliestDeltaBC
private
Initial value:
{
this, "EarliestDeltaBC", -32,
"Earliest bunch crossing to consider (as delta)"}

Definition at line 134 of file PileUpMTAlg.h.

134 {
135 this, "EarliestDeltaBC", -32,
136 "Earliest bunch crossing to consider (as delta)"};

◆ m_evtInfoContKey

SG::WriteHandleKey<xAOD::EventInfoContainer> PileUpMTAlg::m_evtInfoContKey {""}
private

Definition at line 147 of file PileUpMTAlg.h.

147{""};

◆ m_evtInfoKey

SG::WriteHandleKey<xAOD::EventInfo> PileUpMTAlg::m_evtInfoKey
private
Initial value:
{
this, "EventInfoKey", "OverlayEvent", "Overlay EventInfo key"}

Definition at line 145 of file PileUpMTAlg.h.

145 {
146 this, "EventInfoKey", "OverlayEvent", "Overlay EventInfo key"};

◆ m_evtStore

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

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_fracHighPt

Gaudi::Property<float> PileUpMTAlg::m_fracHighPt
private
Initial value:
{this, "FracHighPt", 0.,
"Fraction of pileup that has high pT"}

Definition at line 124 of file PileUpMTAlg.h.

124 {this, "FracHighPt", 0.,
125 "Fraction of pileup that has high pT"};

◆ m_fracLowPt

Gaudi::Property<float> PileUpMTAlg::m_fracLowPt
private
Initial value:
{this, "FracLowPt", 0.,
"Fraction of pileup that has low pT"}

Definition at line 122 of file PileUpMTAlg.h.

122 {this, "FracLowPt", 0.,
123 "Fraction of pileup that has low pT"};

◆ m_highptMBSvc

ServiceHandle<IMinbiasSvc> PileUpMTAlg::m_highptMBSvc
private
Initial value:
{this, "HighPtMinbiasSvc", "",
"MinbiasSvc for high pT minbias"}

Definition at line 102 of file PileUpMTAlg.h.

102 {this, "HighPtMinbiasSvc", "",
103 "MinbiasSvc for high pT minbias"};

◆ m_latestDeltaBC

Gaudi::Property<int> PileUpMTAlg::m_latestDeltaBC
private
Initial value:
{
this, "LatestDeltaBC", +6,
"Latest bunch crossing to consider (as delta)"}

Definition at line 137 of file PileUpMTAlg.h.

137 {
138 this, "LatestDeltaBC", +6,
139 "Latest bunch crossing to consider (as delta)"};

◆ m_lowptMBSvc

ServiceHandle<IMinbiasSvc> PileUpMTAlg::m_lowptMBSvc
private
Initial value:
{this, "LowPtMinbiasSvc", "",
"MinbiasSvc for low pT minbias"}

Other useful methods provided by base class are: evtStore() : ServiceHandle to main event data storegate inputMetaStore() : ServiceHandle to input metadata storegate outputMetaStore() : ServiceHandle to output metadata storegate histSvc() : ServiceHandle to output ROOT service (writing TObjects) currentFile() : TFile* to the currently open input file retrieveMetadata(...): See twiki.cern.ch/twiki/bin/view/AtlasProtected/AthAnalysisBase#ReadingMetaDataInCpp.

Definition at line 100 of file PileUpMTAlg.h.

100 {this, "LowPtMinbiasSvc", "",
101 "MinbiasSvc for low pT minbias"};

◆ m_numBeamGas

Gaudi::Property<float> PileUpMTAlg::m_numBeamGas
private
Initial value:
{
this, "NumBeamGas", 0., "Number of beam gas background events per BC"}

Definition at line 128 of file PileUpMTAlg.h.

128 {
129 this, "NumBeamGas", 0., "Number of beam gas background events per BC"};

◆ m_numBeamHalo

Gaudi::Property<float> PileUpMTAlg::m_numBeamHalo
private
Initial value:
{
this, "NumBeamHalo", 0., "Number of beam halo background events per BC"}

Definition at line 130 of file PileUpMTAlg.h.

130 {
131 this, "NumBeamHalo", 0., "Number of beam halo background events per BC"};

◆ m_numCavern

Gaudi::Property<float> PileUpMTAlg::m_numCavern
private
Initial value:
{
this, "NumCavern", 0., "Number of cavern background events per BC"}

Definition at line 126 of file PileUpMTAlg.h.

126 {
127 this, "NumCavern", 0., "Number of cavern background events per BC"};

◆ m_puTools

ToolHandleArray<IPileUpTool> PileUpMTAlg::m_puTools
private
Initial value:
{
this, "PileUpTools", {}, "Pileup tools"}

Definition at line 116 of file PileUpMTAlg.h.

116 {
117 this, "PileUpTools", {}, "Pileup tools"};

◆ m_rngSvc

ServiceHandle<IAthRNGSvc> PileUpMTAlg::m_rngSvc
private
Initial value:
{this, "RNGSvc", "AthRNGSvc/PileupRNG",
"RNG service for pile-up digitization"}

Definition at line 114 of file PileUpMTAlg.h.

114 {this, "RNGSvc", "AthRNGSvc/PileupRNG",
115 "RNG service for pile-up digitization"};

◆ m_skipEventIdxSvc

ServiceHandle<ISkipEventIdxSvc> PileUpMTAlg::m_skipEventIdxSvc
private
Initial value:
{
this, "SkipEvtIdxSvc", "SkipEventIdxSvc",
"Skipped event index (run / lb num) provider"}

Definition at line 140 of file PileUpMTAlg.h.

140 {
141 this, "SkipEvtIdxSvc", "SkipEventIdxSvc",
142 "Skipped event index (run / lb num) provider"};

◆ m_skippedHSEvents

Gaudi::Property<int> PileUpMTAlg::m_skippedHSEvents
private
Initial value:
{this, "SkippedHSEvents", 0,
"Number of skipped HS events"}

Definition at line 119 of file PileUpMTAlg.h.

119 {this, "SkippedHSEvents", 0,
120 "Number of skipped HS events"};

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ m_writeTrace

Gaudi::Property<bool> PileUpMTAlg::m_writeTrace {this, "WriteTrace", false, "Write trace of pileup events used"}
private

Definition at line 118 of file PileUpMTAlg.h.

118{this, "WriteTrace", false, "Write trace of pileup events used"};

The documentation for this class was generated from the following files: