ATLAS Offline Software
Loading...
Searching...
No Matches
TwoTrackVerticesInJet.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5/***************************************************************************
6 TwoTrackVerticesInJet.cxx - Description
7 -------------------
8 begin : Jan 2008
9 authors : Giacinto Piacquadio (University of Freiburg)
10 Christian Weiser (University of Freiburg)
11 e-mails: giacinto.piacquadio@physik.uni-freiburg.de)
12 christian.weiser@cern.ch
13 changes: new!
14
15 (C) Atlas Collaboration 2008
16
17 More information contained in the header file
18
19 ***************************************************************************/
20
22
24
26
27namespace Trk
28{
29
31
32 TwoTrackVerticesInJet::TwoTrackVerticesInJet(std::vector<const xAOD::Vertex*> twoTrackVertices,
33 std::vector<const TrackParticleBase*> neutralTrackOfVertex)
34 :
35 m_twoTrackVertices(std::move(twoTrackVertices)),
36 m_neutralTrackOfVertex(std::move(neutralTrackOfVertex))
37 {}
38
39
40
46
48 {
49
50 std::vector<const xAOD::Vertex*>::const_iterator vxBegin=rhs.m_twoTrackVertices.begin();
51 std::vector<const xAOD::Vertex*>::const_iterator vxEnd=rhs.m_twoTrackVertices.end();
52
53 std::vector<const TrackParticleBase*>::const_iterator neuBegin=rhs.m_neutralTrackOfVertex.begin();
54 std::vector<const TrackParticleBase*>::const_iterator neuEnd=rhs.m_neutralTrackOfVertex.end();
55
56
57 for (std::vector<const xAOD::Vertex*>::const_iterator vxIter=vxBegin;
58 vxIter!=vxEnd;++vxIter)
59 {
60 if (*vxIter!=nullptr)
61 {
62 const xAOD::Vertex* thisPtr=*vxIter;
63 //const xAOD::Vertex* newVertex=thisPtr->clone();
64 const xAOD::Vertex* newVertex = new xAOD::Vertex(*thisPtr);
65 m_twoTrackVertices.push_back(newVertex);
66 }
67 }
68
69 for (std::vector<const TrackParticleBase*>::const_iterator neuIter=neuBegin;
70 neuIter!=neuEnd;++neuIter)
71 {
72 if (*neuIter!=nullptr)
73 {
74 m_neutralTrackOfVertex.push_back(new TrackParticleBase(**neuIter));
75 }
76 }
77 }
78
80 {
81 if (this!=&rhs)
82 {
85
86 m_twoTrackVertices.clear();
88
89 std::vector<const xAOD::Vertex*>::const_iterator vxBegin=rhs.m_twoTrackVertices.begin();
90 std::vector<const xAOD::Vertex*>::const_iterator vxEnd=rhs.m_twoTrackVertices.end();
91
92 std::vector<const TrackParticleBase*>::const_iterator neuBegin=rhs.m_neutralTrackOfVertex.begin();
93 std::vector<const TrackParticleBase*>::const_iterator neuEnd=rhs.m_neutralTrackOfVertex.end();
94
95
96 for (std::vector<const xAOD::Vertex*>::const_iterator vxIter=vxBegin;
97 vxIter!=vxEnd;++vxIter)
98 {
99 if (*vxIter!=nullptr)
100 {
101 const xAOD::Vertex* thisPtr=*vxIter;
102 //const xAOD::Vertex* newVertex=thisPtr->clone();
103 const xAOD::Vertex* newVertex = new xAOD::Vertex(*thisPtr);
104 m_twoTrackVertices.push_back(newVertex);
105 }
106 }
107
108 for (std::vector<const TrackParticleBase*>::const_iterator neuIter=neuBegin;
109 neuIter!=neuEnd;++neuIter)
110 {
111 if (*neuIter!=nullptr)
112 {
113 m_neutralTrackOfVertex.push_back(new TrackParticleBase(**neuIter));
114 }
115 }
116
117 }
118
119 return *this;
120 }
121
122
123 void TwoTrackVerticesInJet::setTwoTrackVertices(std::vector<const xAOD::Vertex*> twoTrackVertices)
124 {
126 m_twoTrackVertices=std::move(twoTrackVertices);
127 }
128
129 void TwoTrackVerticesInJet::setNeutralTrackOfVertices(std::vector<const TrackParticleBase*> neutralTrackOfVertex)
130 {
132 m_neutralTrackOfVertex=std::move(neutralTrackOfVertex);
133 }
134
135 const std::vector<const xAOD::Vertex*> & TwoTrackVerticesInJet::getTwoTrackVertice() const {
136 return m_twoTrackVertices;
137 }
138
139 const std::vector<const TrackParticleBase*> & TwoTrackVerticesInJet::getNeutralTrackOfVertices() const
140 {
142 }
143
144
145 void TwoTrackVerticesInJet::deleteAll(std::vector<const xAOD::Vertex*> & twoTrackVertices) noexcept
146 {
147 std::vector<const xAOD::Vertex*>::iterator vxBegin=twoTrackVertices.begin();
148 std::vector<const xAOD::Vertex*>::iterator vxEnd=twoTrackVertices.end();
149
150 for (std::vector<const xAOD::Vertex*>::iterator vxIter=vxBegin;
151 vxIter!=vxEnd;++vxIter)
152 {
153 if (*vxIter!=0)
154 {
155 delete *vxIter;
156 }
157 }
158 twoTrackVertices.clear();
159 }
160
161 void TwoTrackVerticesInJet::deleteAll(std::vector<const TrackParticleBase*> & neutralTrackOfVertex) noexcept
162 {
163 for (const TrackParticleBase* p : neutralTrackOfVertex)
164 {
165 delete p;
166 }
167 neutralTrackOfVertex.clear();
168 }
169
170
171}//end namespace Trk
172
173
174
175
std::vector< const xAOD::Vertex * > m_twoTrackVertices
TwoTrackVerticesInJet & operator=(const TwoTrackVerticesInJet &)
void setTwoTrackVertices(std::vector< const xAOD::Vertex * > twoTrackVertices)
Set the two track vertices (takes ownership of pointers)
std::vector< const TrackParticleBase * > m_neutralTrackOfVertex
const std::vector< const TrackParticleBase * > & getNeutralTrackOfVertices() const
Get the neutral tracks of Vertices (please do not delete the pointers)
TwoTrackVerticesInJet()
Default constructor, if called initializes a VxVertexOnJetAxis with all data members set to 0.
const std::vector< const xAOD::Vertex * > & getTwoTrackVertice() const
Get the two track vertices (please do not delete the pointers)
static void deleteAll(std::vector< const TrackParticleBase * > &neutralTrackOfVertex) noexcept
void setNeutralTrackOfVertices(std::vector< const TrackParticleBase * > neutralTrackOfVertex)
Set the neutral tracks of Vertices (takes ownership also of TrackParticleBase pointers,...
Ensure that the ATLAS eigen extensions are properly loaded.
STL namespace.
Vertex_v1 Vertex
Define the latest version of the vertex class.