ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Generators
GeneratorObjectsTPCnv
src
HepMcParticleLinkCnv_p1.cxx
Go to the documentation of this file.
1
2
3
/*
4
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5
*/
6
7
// Framework includes
8
#include "GaudiKernel/MsgStream.h"
9
#include "GaudiKernel/ThreadLocalContext.h"
10
#include "
AthenaKernel/ExtendedEventContext.h
"
11
#include "
TruthUtils/MagicNumbers.h
"
12
13
// GeneratorObjectsAthenaPool includes
14
#include "
GeneratorObjectsTPCnv/HepMcParticleLinkCnv_p1.h
"
15
#include "
GeneratorObjects/McEventCollection.h
"
16
20
21
22
// In the 21.0 branch an eventIndex of zero means that the transient
23
// HepMcParticleLink looks at the first event in the
24
// McEventCollection, otherwise the eventIndex represents the
25
// GenEvent::event_number of a GenEvent in the McEventCollection and
26
// this is used to find the appropriate GenEvent.
27
// NB There is a weakness here that if more than one GenEvent has
28
// the same event number all links will point to the first GenEvent
29
// which matches.
30
31
void
HepMcParticleLinkCnv_p1::persToTrans
(
const
HepMcParticleLink_p1
* persObj,
32
HepMcParticleLink
* transObj,
33
MsgStream &
/*msg*/
)
const
34
{
35
HepMcParticleLink::PositionFlag
flag =
HepMcParticleLink::IS_EVENTNUM
;
36
37
if
(persObj->
m_mcEvtIndex
== 0) {
38
flag =
HepMcParticleLink::IS_POSITION
;
39
}
40
41
transObj->
setExtendedBarCode
42
(
HepMcParticleLink::ExtendedBarCode
( persObj->
m_barcode
,
43
persObj->
m_mcEvtIndex
,
44
flag,
HepMcParticleLink::IS_BARCODE
) );
// FIXME barcode-based
45
46
if
(
HepMC::BarcodeBased::is_truth_suppressed_pileup
(
static_cast<
int
>
(persObj->
m_barcode
)) ) {
47
transObj->
setTruthSuppressionType
(
EBC_PU_SUPPRESSED
);
48
}
49
}
50
51
void
HepMcParticleLinkCnv_p1::transToPers
(
const
HepMcParticleLink
* transObj,
52
HepMcParticleLink_p1
* persObj,
53
MsgStream &
msg
)
const
54
{
55
// NB This method assumes that there all GenEvents are stored in a
56
// single McEventCollection, as running with split
57
// McEventCollections is not supported in 21.0.
58
const
EventContext& ctx = Gaudi::Hive::currentContext();
59
const
IProxyDict
* proxy =
Atlas::getExtendedEventContext
(ctx).proxy();
60
unsigned
short
index
{0};
61
const
HepMcParticleLink::index_type
position =
62
HepMcParticleLink::getEventPositionInCollection
(transObj->
eventIndex
(),
63
proxy).at(0);
64
if
(position!=0) {
65
index
= transObj->
eventIndex
();
66
if
(transObj->
eventIndex
()!=
static_cast<
HepMcParticleLink::index_type
>
(
index
)) {
67
msg
<< MSG::WARNING <<
"Attempting to persistify an eventIndex larger than max unsigned short!"
<<
endmsg
;
68
}
69
}
70
persObj->
m_mcEvtIndex
=
index
;
71
if
(transObj->
getTruthSuppressionType
() ==
EBC_PU_SUPPRESSED
) {
72
persObj->
m_barcode
=
HepMC::SUPPRESSED_PILEUP_BARCODE
;
73
}
74
else
{
75
persObj->
m_barcode
= transObj->
barcode
();
// FIXME in the future the barcode will need to be generated here
76
}
77
}
78
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
ExtendedEventContext.h
HepMcParticleLinkCnv_p1.h
MagicNumbers.h
EBC_PU_SUPPRESSED
@ EBC_PU_SUPPRESSED
Definition
MagicNumbers.h:31
McEventCollection.h
HepMcParticleLinkCnv_p1::persToTrans
virtual void persToTrans(const HepMcParticleLink_p1 *persObj, HepMcParticleLink *transObj, MsgStream &msg) const override
Method creating the transient representation of HepMcParticleLink from its persistent representation ...
Definition
HepMcParticleLinkCnv_p1.cxx:31
HepMcParticleLinkCnv_p1::transToPers
virtual void transToPers(const HepMcParticleLink *transObj, HepMcParticleLink_p1 *persObj, MsgStream &msg) const override
Method creating the persistent representation HepMcParticleLink_p1 from its transient representation ...
Definition
HepMcParticleLinkCnv_p1.cxx:51
HepMcParticleLink::ExtendedBarCode
Persistent representation of a link.
Definition
HepMcParticleLink.h:93
HepMcParticleLink_p1
Definition
HepMcParticleLink_p1.h:21
HepMcParticleLink_p1::m_mcEvtIndex
unsigned short m_mcEvtIndex
name of the McEventCollection holding the HepMC::GenEvent which itself holds the HepMC::GenParticle w...
Definition
HepMcParticleLink_p1.h:51
HepMcParticleLink_p1::m_barcode
unsigned long m_barcode
barcode of the HepMC::GenParticle we are pointing to.
Definition
HepMcParticleLink_p1.h:54
HepMcParticleLink
a link optimized in size for a GenParticle in a McEventCollection
Definition
HepMcParticleLink.h:72
HepMcParticleLink::PositionFlag
PositionFlag
Definition
HepMcParticleLink.h:78
HepMcParticleLink::IS_POSITION
@ IS_POSITION
Definition
HepMcParticleLink.h:80
HepMcParticleLink::IS_EVENTNUM
@ IS_EVENTNUM
Definition
HepMcParticleLink.h:79
HepMcParticleLink::getTruthSuppressionType
EBC_SUPPRESSED_TRUTH getTruthSuppressionType() const
Return whether the truth particle has been suppressed, as an enum.
HepMcParticleLink::setExtendedBarCode
void setExtendedBarCode(const ExtendedBarCode &extBarcode)
Alter the persistent part of the link.
Definition
HepMcParticleLink.cxx:475
HepMcParticleLink::index_type
uint32_t index_type
Definition
HepMcParticleLink.h:75
HepMcParticleLink::IS_BARCODE
@ IS_BARCODE
Definition
HepMcParticleLink.h:85
HepMcParticleLink::getEventPositionInCollection
static std::vector< index_type > getEventPositionInCollection(index_type index, const IProxyDict *sg)
Return a vector of the positions in the McEventCollection of the GenEvent(s) with a given event numbe...
Definition
HepMcParticleLink.cxx:412
HepMcParticleLink::eventIndex
index_type eventIndex() const
Return the event number of the referenced GenEvent.
Definition
HepMcParticleLink.cxx:337
HepMcParticleLink::barcode
int barcode() const
Return the barcode of the target particle.
Definition
HepMcParticleLink.cxx:310
HepMcParticleLink::setTruthSuppressionType
void setTruthSuppressionType(EBC_SUPPRESSED_TRUTH truthSupp)
Return whether the truth particle has been suppressed.
IProxyDict
A proxy dictionary.
Definition
AthenaKernel/AthenaKernel/IProxyDict.h:47
Atlas::getExtendedEventContext
const ExtendedEventContext & getExtendedEventContext(const EventContext &ctx)
Retrieve an extended context from a context object.
Definition
ExtendedEventContext.cxx:32
HepMC::BarcodeBased::is_truth_suppressed_pileup
bool is_truth_suppressed_pileup(const T &p)
Method to establish if a particle (or barcode) corresponds to truth-suppressed pile-up.
Definition
MagicNumbers.h:164
HepMC::SUPPRESSED_PILEUP_BARCODE
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...
index
Definition
index.py:1
msg
MsgStream & msg
Definition
testRead.cxx:32
Generated on
for ATLAS Offline Software by
1.17.0