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 39 of file PileUpMTAlg.cxx.

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

◆ ~PileUpMTAlg()

PileUpMTAlg::~PileUpMTAlg ( )
virtual

Definition at line 42 of file PileUpMTAlg.cxx.

42{}

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 88 of file PileUpMTAlg.cxx.

94 {
95 // Keep the code to add and process a subevent in one place
96 const unsigned int bc_idx = bc - m_earliestDeltaBC;
97 StoreGateSvc* sg = mbSvc->getMinbias(ctx, subevt_id);
98 std::unique_ptr<const xAOD::EventInfo> ei;
99 std::unique_ptr<xAOD::EventAuxInfo> eiAux;
100 ATH_CHECK(get_ei(*sg, ei, eiAux, true));
101 xAOD::EventInfo mb_to_modify(*ei);
102 if (m_writeTrace) {
103 trace.push_back(mb_to_modify.eventNumber());
104 }
105 mb_to_modify.setBCID(bcid[bc_idx]);
106 try {
107 addSubEvent(overlaidEvt.ptr(), &mb_to_modify, bc * m_BCSpacing, puType,
108 puCont.ptr(), m_evtInfoContKey.key(), sg);
109 } catch (const std::exception& e) {
110 ATH_MSG_ERROR("Caught exception adding subevent: " << e.what());
111 return StatusCode::FAILURE;
112 }
113 return StatusCode::SUCCESS;
114}
#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 184 of file PileUpMTAlg.cxx.

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

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

◆ 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 44 of file PileUpMTAlg.cxx.

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

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