ATLAS Offline Software
Loading...
Searching...
No Matches
VxSecVKalVertexInfo.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5/****************************************
6
7 VxSecVertexInfo.h - Description
8 -------------------
9
10 begin: March 2007
11 authors: CSC vertexing note group members :-)
12 work started by: Giacinto Piacquadio (University of Freiburg)
13 e-mail: giacinto.piacquadio@physik.uni-freiburg.de
14 changes: new!
15
16 April 2014: Trk::VxCandidate is replaced by xAOD::Vertex
17 xAOD::IParticle is added to interface
18
19********************************************/
20
22
23namespace Trk {
24
34
35 VxSecVKalVertexInfo::VxSecVKalVertexInfo(const std::vector<xAOD::Vertex*> & vertices,
36 double mass,double energyFraction,int n2trackvertices,double energyTrkInJet,
37 const std::vector<const Trk::TrackParticleBase*> & badTracks):
39 m_mass(mass),
42 m_dstToMatLayer(1000.),
45 m_pseudoVertex(nullptr)
46 {
47 std::vector<const Trk::TrackParticleBase*>::const_iterator badTracksBegin=badTracks.begin();
48 std::vector<const Trk::TrackParticleBase*>::const_iterator badTracksEnd=badTracks.end();
49
50 for (std::vector<const Trk::TrackParticleBase*>::const_iterator badTracksIter=badTracksBegin;
51 badTracksIter!=badTracksEnd;++badTracksIter) {
53 link.setElement(*badTracksIter);
54 m_badTracksTP.push_back(link);
55 }
56 }
57
58
59 VxSecVKalVertexInfo::VxSecVKalVertexInfo(const std::vector<xAOD::Vertex*> & vertices,
60 double mass,double energyFraction,int n2trackvertices,double energyTrkInJet,
61 const std::vector<const xAOD::IParticle*> & badTracks):
63 m_mass(mass),
66 m_dstToMatLayer(1000.),
69 m_pseudoVertex(nullptr)
70 {
71 std::vector<const xAOD::IParticle*>::const_iterator badTracksBegin=badTracks.begin();
72 std::vector<const xAOD::IParticle*>::const_iterator badTracksEnd=badTracks.end();
73
74 for (std::vector<const xAOD::IParticle*>::const_iterator badTracksIter=badTracksBegin;
75 badTracksIter!=badTracksEnd;++badTracksIter) {
77 link.setElement(*badTracksIter);
78 m_badTracksIP.push_back(link);
79 }
80
81 }
82
84 double mass,double energyFraction,int nBigImpTrk,
85 const std::vector<const xAOD::IParticle*> & badTracks):
87 m_mass(mass),
90 m_dstToMatLayer(1000.),
92 m_nBigImpTracks(nBigImpTrk),
94 {
95 std::vector<const xAOD::IParticle*>::const_iterator badTracksBegin=badTracks.begin();
96 std::vector<const xAOD::IParticle*>::const_iterator badTracksEnd=badTracks.end();
97
98 for (std::vector<const xAOD::IParticle*>::const_iterator badTracksIter=badTracksBegin;
99 badTracksIter!=badTracksEnd;++badTracksIter) {
101 link.setElement(*badTracksIter);
102 m_badTracksIP.push_back(link);
103 }
104
105 }
106
108
125
126 // Would be nicer to use a unique_ptr here... but the ownership is too convoluted.
127 // cppcheck-suppress noCopyConstructor
130
131 std::vector<const Trk::TrackParticleBase*> VxSecVKalVertexInfo::badTracksTP() const {
132
133 std::vector<const Trk::TrackParticleBase*> vectorOfTP;
134
135 std::vector<ElementLink<Trk::TrackParticleBaseCollection> >::const_iterator badTracksBegin=m_badTracksTP.begin();
136 std::vector<ElementLink<Trk::TrackParticleBaseCollection> >::const_iterator badTracksEnd=m_badTracksTP.end();
137
138 for (std::vector<ElementLink<Trk::TrackParticleBaseCollection> >::const_iterator badTracksIter=badTracksBegin;
139 badTracksIter!=badTracksEnd;++badTracksIter) {
140 if ((*badTracksIter).isValid()) {
141 if (**badTracksIter!=nullptr) {
142 vectorOfTP.push_back(**badTracksIter);
143 }
144 }
145 }
146
147 return vectorOfTP;
148 }
149
150 std::vector<const xAOD::IParticle*> VxSecVKalVertexInfo::badTracksIP() const {
151
152 std::vector<const xAOD::IParticle*> vectorOfIP;
153
154 std::vector<ElementLink<xAOD::IParticleContainer> >::const_iterator badTracksBegin=m_badTracksIP.begin();
155 std::vector<ElementLink<xAOD::IParticleContainer> >::const_iterator badTracksEnd=m_badTracksIP.end();
156
157 for (std::vector<ElementLink<xAOD::IParticleContainer> >::const_iterator badTracksIter=badTracksBegin;
158 badTracksIter!=badTracksEnd;++badTracksIter) {
159 if ((*badTracksIter).isValid()) {
160 if (**badTracksIter!=nullptr) {
161 vectorOfIP.push_back(**badTracksIter);
162 }
163 }
164 }
165
166 return vectorOfIP;
167 }
168
170
171
172 std::vector<ElementLink<Trk::TrackParticleBaseCollection> >::iterator badTracksBegin=m_badTracksTP.begin();
173 std::vector<ElementLink<Trk::TrackParticleBaseCollection> >::iterator badTracksEnd=m_badTracksTP.end();
174
175 for (std::vector<ElementLink<Trk::TrackParticleBaseCollection> >::iterator badTracksIter=badTracksBegin;
176 badTracksIter!=badTracksEnd;++badTracksIter) {
177 (*badTracksIter).setStorableObject(*trkpartTES);
178 }
179 }
180
182
183
184 std::vector<ElementLink<xAOD::IParticleContainer> >::iterator badTracksBegin=m_badTracksIP.begin();
185 std::vector<ElementLink<xAOD::IParticleContainer> >::iterator badTracksEnd=m_badTracksIP.end();
186
187 for (std::vector<ElementLink<xAOD::IParticleContainer> >::iterator badTracksIter=badTracksBegin;
188 badTracksIter!=badTracksEnd;++badTracksIter) {
189 (*badTracksIter).setStorableObject(*ipartTES);
190 }
191
192 }
193
194
195}//end namespace
std::vector< const Trk::TrackParticleBase * > badTracksTP() const
void setIParticleOrigin(const xAOD::IParticleContainer *iparticleTES)
const xAOD::Vertex * m_pseudoVertex
std::vector< ElementLink< xAOD::IParticleContainer > > m_badTracksIP
void setTrackParticleOrigin(const Trk::TrackParticleBaseCollection *trkpartTES)
std::vector< ElementLink< Trk::TrackParticleBaseCollection > > m_badTracksTP
std::vector< const xAOD::IParticle * > badTracksIP() const
VxSecVKalVertexInfo & operator=(const VxSecVKalVertexInfo &)
const std::vector< xAOD::Vertex * > & vertices() const
VxSecVertexInfo & operator=(const VxSecVertexInfo &)
Ensure that the ATLAS eigen extensions are properly loaded.
DataVector< TrackParticleBase > TrackParticleBaseCollection
Vertex_v1 Vertex
Define the latest version of the vertex class.
DataVector< IParticle > IParticleContainer
Simple convenience declaration of IParticleContainer.