ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Generators
GeneratorObjectsTPCnv
src
HepMcParticleLinkCnv_p3.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
12
#include "
GeneratorObjectsTPCnv/HepMcParticleLinkCnv_p3.h
"
13
14
15
void
HepMcParticleLinkCnv_p3::persToTrans
(
const
HepMcParticleLink_p3
* persObj,
16
HepMcParticleLink
* transObj,
17
MsgStream &
/*msg*/
)
const
18
{
19
HepMcParticleLink::PositionFlag
flag =
HepMcParticleLink::IS_EVENTNUM
;
20
21
if
(persObj->
m_mcEvtIndex
== 0) {
22
flag =
HepMcParticleLink::IS_POSITION
;
23
}
24
25
transObj->
setExtendedBarCode
26
(
HepMcParticleLink::ExtendedBarCode
( persObj->
m_id
,
27
persObj->
m_mcEvtIndex
,
28
flag) );
29
30
transObj->
setTruthSuppressionType
(
HepMcParticleLink::ExtendedBarCode::truthSuppressionTypeFromChar
(persObj->
m_truthSupp
));
31
}
32
33
void
HepMcParticleLinkCnv_p3::transToPers
(
const
HepMcParticleLink
* transObj,
34
HepMcParticleLink_p3
* persObj,
35
MsgStream &
msg
)
const
36
{
37
// In the case that the standard production workflow is being used
38
// then the first event in the McEventCollection is the only one
39
// where the eventIndex could exceed the maximum value of unsigned
40
// short. In this case we can work around the issue by using an
41
// m_mcEvtIndex of zero as a special case, in which m_mcEvtIndex
42
// should be interpreted as the position in the McEventCollection
43
// rather than the value of GenEvent::event_number().
44
const
EventContext& ctx = Gaudi::Hive::currentContext();
45
const
IProxyDict
* proxy =
Atlas::getExtendedEventContext
(ctx).proxy();
46
unsigned
short
index
{0};
47
const
HepMcParticleLink::index_type
position =
48
HepMcParticleLink::getEventPositionInCollection
(transObj->
eventIndex
(),
49
proxy).at(0);
50
if
(position!=0) {
51
index
= transObj->
eventIndex
();
52
if
(transObj->
eventIndex
()!=
static_cast<
HepMcParticleLink::index_type
>
(
index
)) {
53
msg
<< MSG::WARNING <<
"Attempting to persistify an eventIndex larger than max unsigned short!"
<<
endmsg
;
54
}
55
}
56
persObj->
m_mcEvtIndex
=
index
;
57
persObj->
m_id
= transObj->
id
();
58
persObj->
m_truthSupp
= transObj->
getTruthSuppressionTypeAsChar
();
59
}
60
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
ExtendedEventContext.h
HepMcParticleLinkCnv_p3.h
HepMcParticleLinkCnv_p3::transToPers
virtual void transToPers(const HepMcParticleLink *transObj, HepMcParticleLink_p3 *persObj, MsgStream &msg) const override
Method creating the persistent representation HepMcParticleLink_p3 from its transient representation ...
Definition
HepMcParticleLinkCnv_p3.cxx:33
HepMcParticleLinkCnv_p3::persToTrans
virtual void persToTrans(const HepMcParticleLink_p3 *persObj, HepMcParticleLink *transObj, MsgStream &msg) const override
Method creating the transient representation of HepMcParticleLink from its persistent representation ...
Definition
HepMcParticleLinkCnv_p3.cxx:15
HepMcParticleLink::ExtendedBarCode
Persistent representation of a link.
Definition
HepMcParticleLink.h:93
HepMcParticleLink::ExtendedBarCode::truthSuppressionTypeFromChar
static EBC_SUPPRESSED_TRUTH truthSuppressionTypeFromChar(char suppChar)
Translate truth suppression char ('a'..'b') to an enum.
Definition
HepMcParticleLink.cxx:71
HepMcParticleLink_p3
Definition
HepMcParticleLink_p3.h:17
HepMcParticleLink_p3::m_mcEvtIndex
unsigned short m_mcEvtIndex
index of the HepMC::GenEvent holding the HepMC::GenParticle we are pointing to.
Definition
HepMcParticleLink_p3.h:43
HepMcParticleLink_p3::m_truthSupp
char m_truthSupp
Definition
HepMcParticleLink_p3.h:49
HepMcParticleLink_p3::m_id
unsigned long m_id
id of the HepMC::GenParticle we are pointing to.
Definition
HepMcParticleLink_p3.h:46
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::setExtendedBarCode
void setExtendedBarCode(const ExtendedBarCode &extBarcode)
Alter the persistent part of the link.
Definition
HepMcParticleLink.cxx:475
HepMcParticleLink::id
int id() const
Return the id of the target particle.
Definition
HepMcParticleLink.cxx:283
HepMcParticleLink::index_type
uint32_t index_type
Definition
HepMcParticleLink.h:75
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::getTruthSuppressionTypeAsChar
char getTruthSuppressionTypeAsChar() const
Return whether the truth particle has been suppressed, as a char ('a'..'b').
HepMcParticleLink::eventIndex
index_type eventIndex() const
Return the event number of the referenced GenEvent.
Definition
HepMcParticleLink.cxx:337
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
index
Definition
index.py:1
msg
MsgStream & msg
Definition
testRead.cxx:32
Generated on
for ATLAS Offline Software by
1.17.0