ATLAS Offline Software
Loading...
Searching...
No Matches
HepMcParticleLinkCnv_p1.cxx
Go to the documentation of this file.
1
2
3/*
4 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
5*/
6
7// Framework includes
8#include "GaudiKernel/MsgStream.h"
11
12// GeneratorObjectsAthenaPool includes
15
19
20
21// In the 21.0 branch an eventIndex of zero means that the transient
22// HepMcParticleLink looks at the first event in the
23// McEventCollection, otherwise the eventIndex represents the
24// GenEvent::event_number of a GenEvent in the McEventCollection and
25// this is used to find the appropriate GenEvent.
26// NB There is a weakness here that if more than one GenEvent has
27// the same event number all links will point to the first GenEvent
28// which matches.
29
31 HepMcParticleLink* transObj,
32 MsgStream &/*msg*/ ) const
33{
35
36 if (persObj->m_mcEvtIndex == 0) {
38 }
39
40 transObj->setExtendedBarCode
42 persObj->m_mcEvtIndex,
43 flag, HepMcParticleLink::IS_BARCODE) ); // FIXME barcode-based
44
45 if ( HepMC::BarcodeBased::is_truth_suppressed_pileup(static_cast<int>(persObj->m_barcode)) ) {
47 }
48}
49
51 HepMcParticleLink_p1* persObj,
52 MsgStream &msg ) const
53{
54 // NB This method assumes that there all GenEvents are stored in a
55 // single McEventCollection, as running with split
56 // McEventCollections is not supported in 21.0.
58 unsigned short index{0};
59 const HepMcParticleLink::index_type position =
61 proxy).at(0);
62 if (position!=0) {
63 index = transObj->eventIndex();
64 if(transObj->eventIndex()!=static_cast<HepMcParticleLink::index_type>(index)) {
65 msg << MSG::WARNING << "Attempting to persistify an eventIndex larger than max unsigned short!" << endmsg;
66 }
67 }
68 persObj->m_mcEvtIndex = index;
69 if (transObj->getTruthSuppressionType() == EBC_PU_SUPPRESSED) {
71 }
72 else {
73 persObj->m_barcode = transObj->barcode(); // FIXME in the future the barcode will need to be generated here
74 }
75}
76
#define endmsg
@ EBC_PU_SUPPRESSED
virtual void persToTrans(const HepMcParticleLink_p1 *persObj, HepMcParticleLink *transObj, MsgStream &msg) const override
Method creating the transient representation of HepMcParticleLink from its persistent representation ...
virtual void transToPers(const HepMcParticleLink *transObj, HepMcParticleLink_p1 *persObj, MsgStream &msg) const override
Method creating the persistent representation HepMcParticleLink_p1 from its transient representation ...
IProxyDict * proxyDictFromEventContext()
Return the IProxyDict for this thread's current context.
bool is_truth_suppressed_pileup(const T &p)
Method to establish if a particle (or barcode) corresponds to truth-suppressed pile-up.
constexpr int SUPPRESSED_PILEUP_BARCODE(std::numeric_limits< int32_t >::max())
This barcode is used by objects matched to particles from pile-up interactions in standard MC Product...
Definition index.py:1
Some out-of-line helpers for ExtendedEventContext.
MsgStream & msg
Definition testRead.cxx:32