ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
AnalysisCommon
ParticleEventTPCnv
ParticleEventTPCnv
ParticleLinksCnv_p1.h
Go to the documentation of this file.
1
2
3
/*
4
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
5
*/
6
7
// ParticleLinksCnv_p1.h
8
// Header file for class ParticleLinksCnv_p1, handles transient<->persistent ParticleLinks
9
// Template class, must be inherited by the class handling instantiations of ParticleLinks
10
// see ParticleBaseLinksCnv_p1
11
//
12
// Author: S. Protopopescu <serban@bnl.gov>
14
#ifndef PARTICLEEVENTTPCNV_PARTICLELINKSCNV_P1_H
15
#define PARTICLEEVENTTPCNV_PARTICLELINKSCNV_P1_H 1
16
17
// AthenaPoolCnvSvc includes
18
//#include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" (in DataLinkCnv_p1.h)
19
#include "
DataModelAthenaPool/DataLinkCnv_p1.h
"
20
#include "AthLinks/DataLink.h"
21
#include "GaudiKernel/MsgStream.h"
22
#include "
ParticleEvent/ParticleLinks.h
"
23
#include "
ParticleEvent/SelectedParticles.h
"
24
#include "
ParticleEventTPCnv/ParticleLinks_p1.h
"
25
#include <string>
26
#include <iostream>
27
28
29
template
<
class
Container>
30
class
ParticleLinksCnv_p1
:
public
T_AthenaPoolTPCnvConstBase
<
31
ParticleLinks<Container>,
32
ParticleLinks_p1
33
>
34
{
35
public
:
36
typedef
T_AthenaPoolTPCnvConstBase<ParticleLinks<Container>
,
37
ParticleLinks_p1
38
>
base_class
;
39
using
base_class::transToPers
;
40
using
base_class::persToTrans
;
41
42
43
ParticleLinksCnv_p1
(){;}
44
virtual
~ParticleLinksCnv_p1
(){;}
45
47
// Conversion methods:
49
50
virtual
51
void
persToTrans
(
const
ParticleLinks_p1
* persObj,
52
ParticleLinks<Container>
* transObj,
53
MsgStream &
msg
)
const override
;
54
58
virtual
59
void
transToPers
(
const
ParticleLinks<Container>
* transObj,
60
ParticleLinks_p1
* persObj,
61
MsgStream &
msg
)
const override
;
62
private
:
63
DataLinkCnv_p1<DataLink<Container>
>
m_dl
;
64
};
65
66
#ifndef __REFLEX__
67
68
template
<
class
Container>
69
void
ParticleLinksCnv_p1<Container>::transToPers
(
const
ParticleLinks<Container>
* transObj,
70
ParticleLinks_p1
* persObj,
71
MsgStream &
msg
)
const
{
72
msg
<< MSG::DEBUG<<
typeid
(*transObj).name()<<
" called"
<<
endmsg
;
73
//std::cout<<">>> ParticleLinksCnv_p1 "<<typeid(*transObj).name()<<" called"<<std::endl;
74
if
(transObj->size()==0)
return
;
75
SelectedParticles
selparts;
SelectedParticles_p1
selparts_p1;
76
77
typedef
ParticleLinks<Container>
Links;
78
selparts.
SetMaxBits
(transObj->size());
79
typename
Links::const_iterator ilItr = transObj->begin();
80
typename
Links::const_iterator ilEnd = transObj->end();
81
for
(; ilItr != ilEnd; ++ilItr) {
82
selparts.
SetBit
((*ilItr).index());
83
}
84
85
std::string container_name=(&(*transObj)[0])->dataID();
86
msg
<< MSG::DEBUG<<
"Container name="
<<container_name<<
endmsg
;
87
selparts_p1.
m_bits
=selparts.
AllBits
();
88
persObj->
setSelectedParticles_p1
(selparts_p1);
89
DataLink<Container>
dl(container_name);
90
DataLink_p1
dl_p1;
91
m_dl
.transToPers(&dl,&dl_p1,
msg
);
92
persObj->
setDataLink_p1
(dl_p1);
93
msg
<< MSG::DEBUG <<
"Created SelectedParticles, persistent state of "
<<
typeid
(*transObj).name()<<
endmsg
;
94
95
}
96
97
template
<
class
Container>
98
void
ParticleLinksCnv_p1<Container>::persToTrans
(
const
ParticleLinks_p1
* persObj,
99
ParticleLinks<Container>
* transObj,
100
MsgStream &
msg
)
const
{
101
DataLink<Container>
dl;
102
const
DataLink_p1
* dl_p1=persObj->
dl_p1
();
103
m_dl
.persToTrans(dl_p1,&dl,
msg
);
104
dl.toTransient();
105
//const Container *particles=dl.cptr();
106
const
SelectedParticles_p1
* selparts_p1=persObj->
sel
();
107
//typename Container::const_iterator ipItr = particles->begin();
108
//typename Container::const_iterator ipEnd = particles->end();
109
SelectedParticles
selparts;
110
selparts.
Set
(selparts_p1->
m_bits
);
111
//SelectedParticles selparts(m_bits);
112
std::vector<unsigned> goodparts;
113
selparts.
goodParticles
(goodparts);
114
transObj->reserve(goodparts.size());
115
for
(
unsigned
index
: goodparts) {
116
transObj->emplace_back (dl.key(),
index
);
117
}
118
119
msg
<< MSG::DEBUG <<
"Loading "
<<
typeid
(*transObj).name()<<
"from SelectedParticles"
<<
endmsg
;
120
}
121
122
#endif
// not __REFLEX__
123
124
125
#endif
// !PARTICLEEVENTTPCNV_PARTICLELINKSCNV_P1_H
126
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.
ParticleLinks.h
ParticleLinks_p1.h
SelectedParticles.h
T_AthenaPoolTPCnvConstBase
TPConverterConstBase< TRANS, PERS > T_AthenaPoolTPCnvConstBase
Definition
T_AthenaPoolTPConverter.h:44
DataLinkCnv_p1
Definition
DataLinkCnv_p1.h:23
DataLink_p1
Persistent representation of DataLink contains the StoreGate key of the container object to which the...
Definition
DataLink_p1.h:24
DataLink
Object reference supporting deferred reading from StoreGate.
Definition
AthLinks/DataLink.h:93
ParticleLinksCnv_p1::base_class
T_AthenaPoolTPCnvConstBase< ParticleLinks< Container >, ParticleLinks_p1 > base_class
Definition
ParticleLinksCnv_p1.h:38
ParticleLinksCnv_p1::m_dl
DataLinkCnv_p1< DataLink< Container > > m_dl
Definition
ParticleLinksCnv_p1.h:63
ParticleLinksCnv_p1::ParticleLinksCnv_p1
ParticleLinksCnv_p1()
Definition
ParticleLinksCnv_p1.h:43
ParticleLinksCnv_p1::transToPers
virtual void transToPers(const ParticleLinks< Container > *transObj, ParticleLinks_p1 *persObj, MsgStream &msg) const override
Method creating the persistent representation Decay_p1 from its transient representation Decay.
Definition
ParticleLinksCnv_p1.h:69
ParticleLinksCnv_p1::persToTrans
virtual void persToTrans(const ParticleLinks_p1 *persObj, ParticleLinks< Container > *transObj, MsgStream &msg) const override
Definition
ParticleLinksCnv_p1.h:98
ParticleLinksCnv_p1::~ParticleLinksCnv_p1
virtual ~ParticleLinksCnv_p1()
Definition
ParticleLinksCnv_p1.h:44
ParticleLinks_p1
Definition
ParticleLinks_p1.h:20
ParticleLinks_p1::sel
const SelectedParticles_p1 * sel() const
Definition
ParticleLinks_p1.h:31
ParticleLinks_p1::setSelectedParticles_p1
void setSelectedParticles_p1(const SelectedParticles_p1 &sel)
Definition
ParticleLinks_p1.h:28
ParticleLinks_p1::dl_p1
const DataLink_p1 * dl_p1() const
Definition
ParticleLinks_p1.h:30
ParticleLinks_p1::setDataLink_p1
void setDataLink_p1(const DataLink_p1 &containerLink)
Definition
ParticleLinks_p1.h:29
ParticleLinks
Definition
ParticleLinks.h:43
SelectedParticles_p1
Definition
SelectedParticles_p1.h:16
SelectedParticles_p1::m_bits
std::vector< unsigned > m_bits
Definition
SelectedParticles_p1.h:20
SelectedParticles
Definition
SelectedParticles.h:54
SelectedParticles::SetMaxBits
void SetMaxBits(unsigned maxbits)
Definition
SelectedParticles.cxx:39
SelectedParticles::Set
void Set(const std::vector< unsigned > &onoffBits)
Definition
SelectedParticles.h:60
SelectedParticles::SetBit
void SetBit(unsigned i, bool good=true)
Definition
SelectedParticles.cxx:19
SelectedParticles::AllBits
const std::vector< unsigned > & AllBits() const
Definition
SelectedParticles.h:76
SelectedParticles::goodParticles
void goodParticles(std::vector< unsigned > &goodparts) const
Definition
SelectedParticles.cxx:121
TPConverterConstBase::transToPers
virtual void transToPers(const TRANS *transObj, PERS *persObj, MsgStream &log) const =0
Convert transient representation to persistent one.
TPConverterConstBase::persToTrans
virtual void persToTrans(const PERS *persObj, TRANS *transObj, MsgStream &log) const =0
Convert persistent representation to transient one.
index
Definition
index.py:1
msg
MsgStream & msg
Definition
testRead.cxx:32
Generated on
for ATLAS Offline Software by
1.17.0