ATLAS Offline Software
Loading...
Searching...
No Matches
TrackParticleBase.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
5/***************************************************************************
6 TrackParticleBase.h - Description
7 -------------------
8 authors : Edward.Moyse@cern.ch (based on TrackParticleBase from andreas.wildauer@cern.ch, fredrik.akesson@cern.ch)
9
10 Adding the TrackInfo to be stored at the AOD level: 2009-1-29
11 author: Kirill.Prokofiev@cern.ch
12
13 ***************************************************************************/
14#ifndef TRKPARTICLEBASE_TRKTRACKPARTICLEBASE_H
15#define TRKPARTICLEBASE_TRKTRACKPARTICLEBASE_H
16
17// includes for datamembers
18#include "AthLinks/ElementLink.h"
19#include "TrkTrack/TrackCollection.h" // typedef
20#include "VxVertex/VxContainer.h" // typedef
22
23#include "TrkTrack/Track.h" // no forward declare for now because needed in cast
24#include <vector>
25#include "TrkParameters/TrackParameters.h" // no forward declare for now because needed in cast
26#include "TrkTrack/TrackInfo.h" // no forward declaration: we are storing the value
27
28
29class MsgStream;
31
32namespace Trk
33{
35
36 class VxCandidate;
37 class TrackSummary;
38 class FitQuality;
39
41 {
42 public:
43
47
65 TrackParticleBase( const Track* trk,
66 const TrackParticleOrigin vertexType,
67 const VxCandidate* vxCandidate,
68 const TrackSummary* trkSummary,
69 std::vector<const TrackParameters*>& parameters,
70 const TrackParameters* definingParameter,
71 const FitQuality* fitQuality);
72
74 const Trk::TrackParticleOrigin trkPrtOrigin,
75 const ElementLink<VxContainer>& vxCandidate,
76 std::unique_ptr<Trk::TrackSummary> trkSummary,
77 // passes ownership of elements.
78 std::vector<const Trk::TrackParameters*>&& parameters,
79 std::unique_ptr<Trk::FitQuality> fitQuality,
80 const TrackInfo& info);
81
84
88
90 virtual ~TrackParticleBase();
91
96 double charge() const;
97
101 const Track* originalTrack() const;
102
105 const VxCandidate* reconstructedVertex() const;
106
108
113
117 const TrackParameters& definingParameters() const;
118
124 const std::vector<const TrackParameters*>& trackParameters() const;
125
131
134 const TrackSummary* trackSummary() const;
135
139 const FitQuality * fitQuality() const;
140
144 const Perigee* perigee() const;
145
146 void setStorableObject(const TrackCollection* trackColl);
147 void setStorableObject(const VxContainer* vxColl);
148 void setTrackLink ( const TrackCollection * cont, const Track * track);
149
151 virtual MsgStream& dump( MsgStream& out ) const ;
152 virtual std::ostream& dump( std::ostream& out ) const ;
153
157 const TrackInfo& info() const;
158
159 protected:
160 friend class ::TrackParticleBaseCnv_p1;
161
165
171
173 std::vector<const TrackParameters*> m_trackParameters;
174
177
180
181
187
188 };
189
193 MsgStream& operator << ( MsgStream& sl, const TrackParticleBase& trackParticleBase);
194
198 std::ostream& operator << ( std::ostream& sl, const TrackParticleBase& trackParticleBase);
199
200 inline double TrackParticleBase::charge(void) const
201 {
202 return definingParameters().charge();
203 }
204
206 {
207 if (m_originalTrack.isValid()){
208 return *m_originalTrack;
209 }
210 return nullptr;
211
212 }
213
214 inline
216 {
217 if (m_elVxCandidate.isValid()) {
218 return *m_elVxCandidate;
219 }
220
221 return nullptr;
222
223 }
224
229
234
238
240 return *( m_trackParameters.back() );
241 }
242
243 inline const std::vector<const TrackParameters*>& TrackParticleBase::trackParameters() const {
244 return m_trackParameters;
245 }
246
248 return m_trackSummary;
249 }
250
252 m_originalTrack.setStorableObject(*trackColl);
253 }
254
256 m_elVxCandidate.setStorableObject(*vxColl);
257 }
258
260 return m_fitQuality;
261 }
262
264 {
265 return dynamic_cast<const Perigee*>( &(definingParameters()) );
266 }
267
268 inline
269 void TrackParticleBase::setTrackLink ( const TrackCollection * cont, const Track * track)
270 {
271 if ( m_originalTrack.isValid() ) { m_originalTrack.reset();
272}
273 m_originalTrack.toContainedElement( *cont, track);
274 }
275
276 inline const TrackInfo& TrackParticleBase::info() const
277 {
278 return m_trackInfo;
279 }
280
281}
282
283#endif
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
Convertor for Trk::TrackParticleBase.
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
Definition FitQuality.h:97
double charge() const
Returns the charge.
Contains information about the 'fitter' of this track.
TrackParticleBase & operator=(const TrackParticleBase &)
Assignement operator.
const TrackSummary * m_trackSummary
the summary of this TrackParticle.
const ElementLink< TrackCollection > * trackElementLink() const
Return the ElementLink to the Track.
const FitQuality * m_fitQuality
the fit quality of this TrackParticle.
const FitQuality * fitQuality() const
accessor function for FitQuality.
ElementLink< TrackCollection > m_originalTrack
ElementLink to the Track used to create this TrackParticleBase object Before writing to disk,...
const Perigee * perigee() const
Attempts to cast the definingParameters() to Perigee.
void setStorableObject(const TrackCollection *trackColl)
const TrackSummary * trackSummary() const
accessor function for TrackSummary.
const Track * originalTrack() const
Return pointer to associated track.
TrackParticleBase()
Constructor 0 standard constructor which sets everything to 0, needed for persistency.
TrackInfo m_trackInfo
This is a class which stores the identity of where the track was created, fitted,...
double charge() const
Return charge of the particle.
virtual ~TrackParticleBase()
Destructor.
const std::vector< const TrackParameters * > & trackParameters() const
Returns the track parameters.
TrackParticleOrigin m_trackParticleOrigin
specifies the origin type of the particle (prim.vertex, ...)
const ElementLink< VxContainer > & reconstructedVertexLink() const
const VxCandidate * reconstructedVertex() const
Get a pointer to the primary vertex.
void setTrackLink(const TrackCollection *cont, const Track *track)
TrackParticleOrigin particleOriginType() const
Get the particle origin type.
std::vector< const TrackParameters * > m_trackParameters
DataVector of TrackParameters stored inside this TrackParticle.
const TrackInfo & info() const
returns the info of the track.
ElementLink< VxContainer > m_elVxCandidate
ElementLink to a VxCandidate.
const TrackParameters & definingParameters() const
Returns the 'defining' parameter of this TrackParticle.
A summary of the information contained by a track.
Ensure that the ATLAS eigen extensions are properly loaded.
VertexType
This file defines the enums in the Trk namespace for the different vertex types.
Definition VertexType.h:25
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
MsgStream & operator<<(MsgStream &sl, const AlignModule &alignModule)
overload of << operator for MsgStream for debug output
VertexType TrackParticleOrigin
ParametersBase< TrackParametersDim, Charged > TrackParameters
-event-from-file