ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Reconstruction
TrackParticleTruthTPCnv
src
TrackParticleTruthCollectionCnv_p2.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
ParticleTruth/TrackParticleTruthCollection.h
"
6
#include "
TrackParticleTruthTPCnv/TrackParticleTruthCollectionCnv_p2.h
"
7
8
#include "
TrackParticleTruthTPCnv/TrackParticleTruthCollection_p2.h
"
9
10
#include "
GeneratorObjectsTPCnv/HepMcParticleLinkCnv_p2.h
"
11
#include "
DataModelAthenaPool/DataLinkCnv_p1.h
"
12
#include "
DataModelAthenaPool/ElementLinkCnv_p3.h
"
13
14
#include "
StoreGate/StoreGateSvc.h
"
15
16
#include "
TrackParticleTruthTPCnv/TrackParticleTruthCollectionAccessor.h
"
17
18
namespace
{
19
const
HepMcParticleLinkCnv_p2
particleLinkConverter;
20
const
DataLinkCnv_p1<DataLink<Rec::TrackParticleContainer>
> dataLinkConverter;
21
}
22
23
typedef
ElementLinkCnv_p3<ElementLink<Rec::TrackParticleContainer>
>
TrackLinkCnv_t
;
24
25
void
TrackParticleTruthCollectionCnv_p2::persToTrans
(
const
Rec::TrackParticleTruthCollection_p2
* pers,
26
TrackParticleTruthCollection
* trans,
27
MsgStream&
msg
)
const
28
{
29
trans->clear();
30
31
if
(
msg
.level() <= MSG::DEBUG)
msg
<< MSG::DEBUG <<
"TrackParticleTruthCollectionCnv_p2::persToTrans(): PERS size = "
<< pers->
m_entries
.size() <<
endmsg
;
32
33
dataLinkConverter.persToTrans(pers->
m_trackCollectionLink
,
TrackParticleTruthCollectionAccessor::trackParticleContainerLink
(trans),
msg
);
34
35
for
(Rec::TrackParticleTruthCollection_p2::CollectionType::const_iterator i=pers->
m_entries
.begin(); i!=pers->
m_entries
.end(); ++i) {
36
HepMcParticleLink
link;
37
particleLinkConverter.persToTrans(&i->particle, &link,
msg
);
38
// Reconstruct EL from the key of the DataLink and the saved index
39
ElementLink<Rec::TrackParticleContainer>
el(pers->
m_trackCollectionLink
.
m_SGKeyHash
, i->index);
40
trans->insert(trans->end(), std::make_pair(el,
TrackParticleTruth
(link, i->probability)) );
41
}
42
43
if
(
msg
.level() <= MSG::DEBUG)
msg
<< MSG::DEBUG <<
"TrackParticleTruthCollectionCnv_p2::persToTrans() DONE"
<<
endmsg
;
44
}
45
46
void
TrackParticleTruthCollectionCnv_p2::transToPers
(
const
TrackParticleTruthCollection
* trans,
47
Rec::TrackParticleTruthCollection_p2
* pers,
48
MsgStream&
msg
)
const
49
{
50
if
(
msg
.level() <= MSG::DEBUG) {
51
msg
<< MSG::DEBUG <<
"TrackParticleTruthCollectionCnv_p2::transToPers()"
<<
endmsg
;
52
msg
<< MSG::DEBUG <<
"TrackParticleTruthCollectionCnv_p2::transToPers(): input size = "
<< trans->size() <<
endmsg
;
53
}
54
55
dataLinkConverter.transToPers(trans->
trackParticleContainerLink
(), pers->
m_trackCollectionLink
,
msg
);
56
57
// For the map of EL keys and HepParticleLinks, we only write out
58
// pairs which were not thinned away. RDS 02/2012
59
pers->
m_entries
.reserve(trans->size());
60
TrackParticleTruthCollection::const_iterator itrans = trans->begin();
61
for
( ; itrans!=trans->end(); ++itrans) {
62
Rec::TrackParticleTruthCollection_p2::Entry
entry;
63
const
TrackParticleTruth
& truth = itrans->second;
64
// We must first convert the element link to check whether or
65
// not it was thinned, then we write it out if it was not
66
// thinned
67
ElementLinkInt_p3
el_p;
68
TrackLinkCnv_t
elCnv_p;
69
elCnv_p.
transToPers
(itrans->first.link(), el_p,
msg
);
70
if
(0 != el_p.
m_SGKeyHash
) {
71
entry.index = el_p.
m_elementIndex
;
// save index from ElementLink
72
entry.probability = truth.
probability
();
73
particleLinkConverter.transToPers(&itrans->second.particleLink(), &entry.particle,
msg
);
74
pers->
m_entries
.push_back(entry);
75
}
76
}
77
78
if
(
msg
.level() <= MSG::DEBUG)
msg
<< MSG::DEBUG <<
"TrackParticleTruthCollectionCnv_p2::transToPers() DONE"
<<
endmsg
;
79
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
DataLinkCnv_p1.h
This file contains the class definition for the DataLinkCnv_p1 class and DataLinkVectorCnv_p1 class.
ElementLinkCnv_p3.h
This file contains the class definition for the ElementLinkCnv_p3 class.
ElementLinkInt_p3
ElementLink_p3< uint32_t > ElementLinkInt_p3
Definition
ElementLink_p3.h:35
HepMcParticleLinkCnv_p2.h
TrackLinkCnv_t
ElementLinkCnv_p1< ElementLink< Rec::TrackParticleContainer > > TrackLinkCnv_t
Definition
MuonCnv_p1.cxx:33
StoreGateSvc.h
TrackParticleTruthCollectionAccessor.h
TrackParticleTruthCollectionCnv_p2.h
TrackParticleTruthCollection.h
TrackParticleTruthCollection_p2.h
DataLinkCnv_p1
Definition
DataLinkCnv_p1.h:23
DataLink_p1::m_SGKeyHash
SG::sgkey_t m_SGKeyHash
Definition
DataLink_p1.h:29
ElementLinkCnv_p1::transToPers
void transToPers(const Link_t &trans, PersLink_t &pers, const SG::ThinningCache *cache, MsgStream &log) const
ElementLinkCnv_p3
Definition
ElementLinkCnv_p3.h:27
ElementLink_p3::m_elementIndex
INDEXTYPE m_elementIndex
Definition
ElementLink_p3.h:28
ElementLink_p3::m_SGKeyHash
SG::sgkey_t m_SGKeyHash
Definition
ElementLink_p3.h:29
ElementLink
ElementLink implementation for ROOT usage.
Definition
A/AthLinks/ElementLink.h:40
HepMcParticleLinkCnv_p2
Definition
HepMcParticleLinkCnv_p2.h:29
HepMcParticleLink
a link optimized in size for a GenParticle in a McEventCollection
Definition
HepMcParticleLink.h:72
Rec::TrackParticleTruthCollection_p2
Definition
TrackParticleTruthCollection_p2.h:16
Rec::TrackParticleTruthCollection_p2::m_trackCollectionLink
DataLink_p1 m_trackCollectionLink
Definition
TrackParticleTruthCollection_p2.h:19
Rec::TrackParticleTruthCollection_p2::m_entries
CollectionType m_entries
Definition
TrackParticleTruthCollection_p2.h:34
TrackParticleTruthCollectionAccessor::trackParticleContainerLink
static DataLink< Rec::TrackParticleContainer > & trackParticleContainerLink(TrackParticleTruthCollection *truthColl)
Definition
TrackParticleTruthCollectionAccessor.h:13
TrackParticleTruthCollectionCnv_p2::persToTrans
virtual void persToTrans(const Rec::TrackParticleTruthCollection_p2 *persObj, TrackParticleTruthCollection *transObj, MsgStream &msg) const override
Method creating the transient representation of Analysis::TrackParticleTruthCollection from its persi...
Definition
TrackParticleTruthCollectionCnv_p2.cxx:25
TrackParticleTruthCollectionCnv_p2::transToPers
virtual void transToPers(const TrackParticleTruthCollection *transObj, Rec::TrackParticleTruthCollection_p2 *persObj, MsgStream &msg) const override
Method creating the persistent representation TrackParticleTruthCollection_p2 from its transient repr...
Definition
TrackParticleTruthCollectionCnv_p2.cxx:46
TrackParticleTruthCollection
Definition
TrackParticleTruthCollection.h:18
TrackParticleTruthCollection::trackParticleContainerLink
DataLink< Rec::TrackParticleContainer > trackParticleContainerLink() const
Definition
TrackParticleTruthCollection.h:26
TrackParticleTruth
Definition
TrackParticleTruth.h:15
TrackParticleTruth::probability
float probability() const
Definition
TrackParticleTruth.h:36
Rec::TrackParticleTruthCollection_p2::Entry
Definition
TrackParticleTruthCollection_p2.h:24
msg
MsgStream & msg
Definition
testRead.cxx:32
Generated on
for ATLAS Offline Software by
1.17.0