ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::AlignTrack Class Reference

#include <AlignTrack.h>

Inheritance diagram for Trk::AlignTrack:
Collaboration diagram for Trk::AlignTrack:

Public Types

enum  AlignTrackType {
  Unknown = 0 , Original = 1 , NormalRefitted = 2 , BeamspotConstrained = 3 ,
  VertexConstrained = 4 , VertexMember = 5 , NTrackTypes
}

Public Member Functions

 AlignTrack (const Track &associatedTrack)
 constructor takes the track containing the original TrackStateOnSurface objects
 AlignTrack (const Track &associatedTrack, AlignTSOSCollection *alignTSOSCollection)
 constructor takes collection of alignTSOS and the track containing the original TrackStateOnSurface objects
 AlignTrack (const AlignTrack &alignTrack)
 copy constructor
virtual ~AlignTrack ()
 destructor
AlignTrackoperator= (const AlignTrack &alignTrack)
 assignment operator
void setAlignTSOSCollection (AlignTSOSCollection *atsosColl)
 sets collection of AlignTSOS
const AlignTSOSCollectionalignTSOSCollection () const
 returns collection of alignTSOS
AlignTSOSCollection::const_iterator firstAtsos () const
 retrieve iterator pointer to first element in collection
AlignTSOSCollection::const_iterator lastAtsos () const
 returns iterator pointer to last element in collection
AlignTSOSCollection::iterator firstAtsos ()
 retrieve non-const iterator pointer to first element in collection
AlignTSOSCollection::iterator lastAtsos ()
 returns non-const iterator pointer to last element in collection
const TrackoriginalTrack () const
 retrieve pointer to original track
void setOriginalTrack (const Track *track)
 set pointer to original track
AlignTrackType type () const
 get and set the refit type
void setType (AlignTrackType type)
void doFindPerigee () const
 For the AlignTrack, if there is pseudo-measurement in the TSOS collection, the perigee will not alway be in the first position.
bool isSLTrack () const
 method to determine whether a straight line track or not
void dump (MsgStream &msg)
 dump align track information
const Amg::SymMatrixXlocalErrorMatrix () const
 local error matrix, calculated by AlignTrack by calling atsos->hitDistanceVar()
const Amg::SymMatrixXlocalErrorMatrixInv () const
 inverse local error matrix, calculated by AlignTrack by calling atsos->hitDistanceVar()
int nAlignTSOSMeas () const
 number of alignTSOS (including scatterers if included on AlignTrack
const std::vector< AlignModuleDerivatives > * derivatives () const
 The Amg::VectorX is a vector of first-derivatives of the alignTSOS on the alignTrack w.r.t.
void setDerivatives (std::vector< AlignModuleDerivatives > *vec)
const std::vector< AlignModuleDerivatives > * derivativeErr () const
 The Amg::VectorX is a vector of errors in first-derivatives of the alignTSOS on the alignTrack w.r.t.
void setDerivativeErr (std::vector< AlignModuleDerivatives > *vec)
const std::vector< std::pair< AlignModule *, std::vector< double > > > * actualSecondDerivatives () const
 The Amg::VectorX is a vector of first-derivatives of the alignTSOS on the alignTrack w.r.t.
void setActualSecondDerivatives (std::vector< std::pair< AlignModule *, std::vector< double > > > *vec)
const Amg::VectorXresidualVector () const
 Vector of residuals of the alignTSOS on the alignTrack, to be set by AlignTrackDresser.
void setResidualVector (Amg::VectorX *vec)
const Amg::SymMatrixXweightMatrix () const
 Weight matrix is W from Si alignment (see Eqn.
void setWeightMatrix (Amg::SymMatrixX *mat)
const Amg::SymMatrixXweightMatrixFirstDeriv () const
 First deriv weight matrix can be either W from Si alignment (see Eqn.
void setWeightMatrixFirstDeriv (Amg::SymMatrixX *mat)
double chi2 () const
 locally calculated chi2
void setChi2 (double chi2)
double chi2dof () const
 locally calculated chi2
void setChi2dof (double chi2dof)
const Amg::MatrixXderivativeMatrix () const
 set and get derivative matrix
void setDerivativeMatrix (const Amg::MatrixX *matrix)
const Amg::SymMatrixXfullCovarianceMatrix () const
 set and get full covariance matrix
void setFullCovarianceMatrix (const Amg::SymMatrixX *matrix)
double trackAlignParamQuality (int i) const
 set and get array (one entry per alignment parameter) of fit chi2 of chi2 vs.
void setTrackAlignParamQuality (int i, double val)
const Trk::TracktrackWithoutScattering () const
 returns track with ScatteringAngle pointers all set to zero (used for refit by iPat)
const AlignVertexgetVtx () const
 set and get pointer to the associated vertex
AlignVertexgetVtx ()
void setVtx (AlignVertex *const vtx)
bool refitD0 () const
 get refit flags
bool refitZ0 () const
bool refitPhi () const
bool refitTheta () const
bool refitQovP () const
void setRefitD0 (bool flag)
 set refit flags
void setRefitZ0 (bool flag)
void setRefitPhi (bool flag)
void setRefitTheta (bool flag)
void setRefitQovP (bool flag)
bool isValid () const
 returns true if the track has non-nullptr fitQuality and non-empty Trk::TrackStates
const FitQualityfitQuality () const
 return a pointer to the fit quality const-overload
FitQualityfitQuality ()
 return a pointer to the fit quality non-const overload
void setFitQuality (std::unique_ptr< FitQuality > quality)
 set FitQuality.
const Trk::TrackStatestrackStateOnSurfaces () const
 return a pointer to a const DataVector of const TrackStateOnSurfaces.
Trk::TrackStatestrackStateOnSurfaces ()
 return a pointer to a DataVector of const TrackStateOnSurfaces.
void setTrackStateOnSurfaces (std::unique_ptr< Trk::TrackStates > input)
 Set the TrackStateOnSurfaces.
const TrackInfoinfo () const
 Returns a const ref to info of a const tracks.
TrackInfoinfo ()
 returns a ref to the info.
void setInfo (const TrackInfo &input)
 set the info.
const Trk::TrackSummarytrackSummary () const
 Returns a pointer to the const Trk::TrackSummary owned by this const track (could be nullptr)
Trk::TrackSummarytrackSummary ()
 Returns a pointer to the Trk::TrackSummary owned by this track (could be nullptr)
void setTrackSummary (std::unique_ptr< Trk::TrackSummary > input)
 Set the track summary.
const PerigeeperigeeParameters () const
 return Perigee.
const DataVector< const TrackParameters > * trackParameters () const
 Return a pointer to a vector of TrackParameters.
const DataVector< const MeasurementBase > * measurementsOnTrack () const
 return a pointer to a vector of MeasurementBase (NOT including any that come from outliers).
const DataVector< const MeasurementBase > * outliersOnTrack () const
 return a pointer to a vector of MeasurementBase, which represent outliers (i.e.
void resetCaches ()
 reset all caches

Static Public Member Functions

static bool isSLTrack (const Track *track)
 static method to determine whether a track is straight line or not
static void dumpTrackInfo (const Track &track, MsgStream &msg)
 dump track information
static void dumpLessTrackInfo (const Track &track, MsgStream &msg)
 dump less track information
static std::size_t numberOfInstantiations ()

Static Public Attributes

static std::atomic_size_t s_numberOfInstantiations

Protected Types

typedef Trk::TrackStates::const_iterator TSoS_iterator

Protected Member Functions

void findPerigee () const
 Find perigee in the vector of track parameters.
void copyHelper (const Track &rhs)
 Helper method to factor common part of copy ctor and copy assignment.

Protected Attributes

std::unique_ptr< TrackStatesm_trackStateVector = nullptr
 TrackStateOnSurface.
CxxUtils::CachedValue< DataVector< const TrackParameters > > m_cachedParameterVector {}
 A vector of TrackParameters: these can be any of the classes that derive from Trk::TrackParameters, for example, Perigee, MeasuredPerigee, AtaCylinder etc.
CxxUtils::CachedValue< DataVector< const MeasurementBase > > m_cachedMeasurementVector {}
 A vector of MeasurementBase: these objects represent the "hits" on the track (but not outliers - see m_cachedOutlierVector)
CxxUtils::CachedValue< DataVector< const MeasurementBase > > m_cachedOutlierVector {}
 These objects represent the "outliers" on the track.
CxxUtils::CachedValue< const Perigee * > m_perigeeParameters {}
 A pointer to the Track's Perigee parameters.
std::unique_ptr< FitQualitym_fitQuality {nullptr}
 A pointer to the Track's FitQuality.
std::unique_ptr< Trk::TrackSummarym_trackSummary {nullptr}
 Datamember to cache the TrackSummary.
Trk::TrackInfo m_trackInfo {}
 This is a class which stores the identity of where the track was created, fitted, which properties the reconstruction had.

Private Member Functions

 AlignTrack ()
void setAlignParameters ()
 sets derivatives of alignment parameters
void findPerigeeImpl () const
 find PerigeeImpl.

Private Attributes

const Trackm_originalTrack
 point to original track
AlignTrackType m_type
 refit type of this alignTrack
int m_nAlignTSOSMeas
 variables
AlignTSOSCollectionm_alignTSOSCollection {}
 collection of alignTSOS that make up the alignTrack
Amg::SymMatrixXm_localErrorMat
 matrix containing local error matrices along diagonal
Amg::SymMatrixXm_localErrorMatInv
 inverse matrix containing local error matrices along diagonal
const Amg::MatrixXm_derivativeMatrix
 matrix containing derivative matrix from track fitter
const Amg::SymMatrixXm_fullCovarianceMatrix
 matrix containing full covariance matrix from track fitter
std::vector< AlignModuleDerivatives > * m_derivatives
std::vector< AlignModuleDerivatives > * m_derivativeErr
std::vector< std::pair< AlignModule *, std::vector< double > > > * m_actualSecondDerivatives
Amg::VectorXm_residuals
Amg::MatrixXm_weights
Amg::MatrixXm_weightsFirstDeriv
double m_chi2
double m_chi2dof
AlignVertexm_vtx
 pointer to the associated vertex
bool m_refitD0
bool m_refitZ0
bool m_refitPhi
bool m_refitTheta
bool m_refitQovP
double * m_trackAlignParamQuality
CxxUtils::CachedUniquePtr< Trk::Trackm_trackWithoutScattering

Detailed Description

Definition at line 41 of file AlignTrack.h.

Member Typedef Documentation

◆ TSoS_iterator

Member Enumeration Documentation

◆ AlignTrackType

Enumerator
Unknown 

default type

Original 

not refitted, just copy constructed from original Track

NormalRefitted 

normally refitted, without adding any pseudo-measurement

BeamspotConstrained 

refitted with beamspot constraint

VertexConstrained 

refitted with vertex constraint

VertexMember 

Refitted with 3DoF from the VTX.

NTrackTypes 

total number of track types

Definition at line 45 of file AlignTrack.h.

45 {
46 Unknown = 0,
47 Original = 1,
48 NormalRefitted = 2,
51 VertexMember = 5,
52
54 };
@ VertexMember
Refitted with 3DoF from the VTX.
Definition AlignTrack.h:51
@ NTrackTypes
total number of track types
Definition AlignTrack.h:53
@ NormalRefitted
normally refitted, without adding any pseudo-measurement
Definition AlignTrack.h:48
@ Original
not refitted, just copy constructed from original Track
Definition AlignTrack.h:47
@ Unknown
default type
Definition AlignTrack.h:46
@ BeamspotConstrained
refitted with beamspot constraint
Definition AlignTrack.h:49
@ VertexConstrained
refitted with vertex constraint
Definition AlignTrack.h:50

Constructor & Destructor Documentation

◆ AlignTrack() [1/4]

AlignTrack::AlignTrack ( const Track & associatedTrack)

constructor takes the track containing the original TrackStateOnSurface objects

Definition at line 17 of file AlignTrack.cxx.

18 : Track(associatedTrack)
19 , m_originalTrack(nullptr)
22 , m_alignTSOSCollection(nullptr)
23 , m_localErrorMat(nullptr)
24 , m_localErrorMatInv(nullptr)
25 , m_derivativeMatrix(nullptr)
26 , m_fullCovarianceMatrix(nullptr)
27 , m_derivatives(nullptr)
28 , m_derivativeErr(nullptr)
30 , m_residuals(nullptr)
31 , m_weights(nullptr)
32 , m_weightsFirstDeriv(nullptr)
33 , m_chi2(0.)
34 , m_chi2dof(0.)
35 , m_trackAlignParamQuality(new double[6])
37 {
38 for (int i=0;i<6;i++) m_trackAlignParamQuality[i]=0.;
39 m_vtx=nullptr;
40 m_refitD0=true;
41 m_refitZ0=true;
42 m_refitPhi=true;
43 m_refitTheta=true;
44 m_refitQovP=true;
45 }
Amg::VectorX * m_residuals
Definition AlignTrack.h:241
std::vector< AlignModuleDerivatives > * m_derivativeErr
Definition AlignTrack.h:238
Amg::MatrixX * m_weights
Definition AlignTrack.h:242
const Amg::SymMatrixX * m_fullCovarianceMatrix
matrix containing full covariance matrix from track fitter
Definition AlignTrack.h:235
const Amg::MatrixX * m_derivativeMatrix
matrix containing derivative matrix from track fitter
Definition AlignTrack.h:232
AlignVertex * m_vtx
pointer to the associated vertex
Definition AlignTrack.h:249
Amg::MatrixX * m_weightsFirstDeriv
Definition AlignTrack.h:243
const Track * m_originalTrack
point to original track
Definition AlignTrack.h:214
std::vector< AlignModuleDerivatives > * m_derivatives
Definition AlignTrack.h:237
AlignTrackType m_type
refit type of this alignTrack
Definition AlignTrack.h:217
std::vector< std::pair< AlignModule *, std::vector< double > > > * m_actualSecondDerivatives
Definition AlignTrack.h:239
double * m_trackAlignParamQuality
Definition AlignTrack.h:257
int m_nAlignTSOSMeas
variables
Definition AlignTrack.h:220
AlignTSOSCollection * m_alignTSOSCollection
collection of alignTSOS that make up the alignTrack
Definition AlignTrack.h:223
Amg::SymMatrixX * m_localErrorMat
matrix containing local error matrices along diagonal
Definition AlignTrack.h:226
CxxUtils::CachedUniquePtr< Trk::Track > m_trackWithoutScattering
Definition AlignTrack.h:259
Amg::SymMatrixX * m_localErrorMatInv
inverse matrix containing local error matrices along diagonal
Definition AlignTrack.h:229
Track()=default
Default constructor Here for POOL and simple tests.

◆ AlignTrack() [2/4]

AlignTrack::AlignTrack ( const Track & associatedTrack,
AlignTSOSCollection * alignTSOSCollection )

constructor takes collection of alignTSOS and the track containing the original TrackStateOnSurface objects

Definition at line 48 of file AlignTrack.cxx.

50 : Track(associatedTrack)
51 , m_originalTrack(nullptr)
54 , m_localErrorMat(nullptr)
55 , m_localErrorMatInv(nullptr)
56 , m_derivativeMatrix(nullptr)
57 , m_fullCovarianceMatrix(nullptr)
58 , m_derivatives(nullptr)
59 , m_derivativeErr(nullptr)
61 , m_residuals(nullptr)
62 , m_weights(nullptr)
63 , m_weightsFirstDeriv(nullptr)
64 , m_chi2(0.)
65 , m_chi2dof(0.)
66 , m_trackAlignParamQuality(new double[6])
68 {
69 for (int i=0;i<6;i++) m_trackAlignParamQuality[i]=0.;
71 m_vtx=nullptr;
72 m_refitD0=true;
73 m_refitZ0=true;
74 m_refitPhi=true;
75 m_refitTheta=true;
76 m_refitQovP=true;
77 }
const AlignTSOSCollection * alignTSOSCollection() const
returns collection of alignTSOS
Definition AlignTrack.h:267
void setAlignTSOSCollection(AlignTSOSCollection *atsosColl)
sets collection of AlignTSOS

◆ AlignTrack() [3/4]

AlignTrack::AlignTrack ( const AlignTrack & alignTrack)

copy constructor

Definition at line 80 of file AlignTrack.cxx.

81 : Track(atrack)
82 , m_originalTrack(atrack.m_originalTrack)
83 , m_type(atrack.m_type)
84 , m_nAlignTSOSMeas(atrack.m_nAlignTSOSMeas)
85 , m_localErrorMat(atrack.m_localErrorMat ?
86 new Amg::SymMatrixX(*(atrack.m_localErrorMat)) : nullptr)
87 , m_localErrorMatInv(atrack.m_localErrorMatInv ?
88 new Amg::SymMatrixX(*(atrack.m_localErrorMatInv)) : nullptr)
89 , m_derivativeMatrix(atrack.m_derivativeMatrix ?
90 new Amg::MatrixX(*(atrack.m_derivativeMatrix)) : nullptr)
91 , m_fullCovarianceMatrix(atrack.m_fullCovarianceMatrix ?
92 new Amg::SymMatrixX(*(atrack.m_fullCovarianceMatrix)) : nullptr)
93 , m_derivatives(atrack.m_derivatives ?
94 new std::vector<AlignModuleDerivatives>(*(atrack.m_derivatives)) : nullptr)
95 , m_derivativeErr(atrack.m_derivativeErr ?
96 new std::vector<AlignModuleDerivatives>(*(atrack.m_derivativeErr)) : nullptr)
97 , m_actualSecondDerivatives(atrack.m_actualSecondDerivatives ?
98 new std::vector<std::pair<AlignModule*,std::vector<double> > > (*(atrack.m_actualSecondDerivatives)) : nullptr)
99 , m_residuals(atrack.m_residuals ?
100 new Amg::VectorX(*(atrack.m_residuals)) : nullptr)
101 , m_weights(atrack.m_weights ?
102 new Amg::SymMatrixX(*(atrack.m_weights)) : nullptr)
103 , m_weightsFirstDeriv(atrack.m_weightsFirstDeriv ?
104 new Amg::SymMatrixX(*(atrack.m_weightsFirstDeriv)) : nullptr)
105 , m_chi2(atrack.m_chi2)
106 , m_chi2dof(atrack.m_chi2dof)
107 , m_trackAlignParamQuality(new double[6])
109 {
110 if (atrack.m_trackWithoutScattering) {
111 m_trackWithoutScattering.set(std::make_unique<Trk::Track>(*(atrack.m_trackWithoutScattering)));
112 }
113
114 for (int i=0;i<6;i++)
115 m_trackAlignParamQuality[i] = atrack.m_trackAlignParamQuality[i];
116
117 // copy AlignTSOSCollection
118 if(atrack.m_alignTSOSCollection!=nullptr) {
120 aTSOScoll->reserve(atrack.m_alignTSOSCollection->size());
121 AlignTSOSIt itAtsos_end = atrack.m_alignTSOSCollection->end();
122 for(AlignTSOSIt itAtsos = atrack.m_alignTSOSCollection->begin(); itAtsos!=itAtsos_end; ++itAtsos) {
123 assert(*itAtsos!=0); // check that is defined.
124 AlignTSOS * atsos = new AlignTSOS(**itAtsos);
125 aTSOScoll->push_back(atsos);
126 }
127 m_alignTSOSCollection=aTSOScoll;
128 }
129 else
130 m_alignTSOSCollection=nullptr;
131
132 findPerigee();
133 m_vtx=nullptr;
134 m_refitD0=true;
135 m_refitZ0=true;
136 m_refitPhi=true;
137 m_refitTheta=true;
138 m_refitQovP=true;
139 }
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
void findPerigee() const
Find perigee in the vector of track parameters.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > SymMatrixX
Eigen::Matrix< double, Eigen::Dynamic, 1 > VectorX
Dynamic Vector - dynamic allocation.
DataVector< AlignTSOS >::const_iterator AlignTSOSIt
Definition AlignTrack.h:38
DataVector< AlignTSOS > AlignTSOSCollection
Definition AlignTrack.h:37

◆ ~AlignTrack()

AlignTrack::~AlignTrack ( )
virtual

destructor

Definition at line 220 of file AlignTrack.cxx.

221 {
223 delete m_residuals; m_residuals=nullptr;
224 delete m_weights; m_weights=nullptr;
226
227 delete m_derivatives; m_derivatives=nullptr;
228 delete m_derivativeErr; m_derivativeErr=nullptr;
230
231 delete m_localErrorMat; m_localErrorMat=nullptr;
233
236
237 delete [] m_trackAlignParamQuality;
238 }

◆ AlignTrack() [4/4]

Trk::AlignTrack::AlignTrack ( )
private

Member Function Documentation

◆ actualSecondDerivatives()

const std::vector< std::pair< AlignModule *, std::vector< double > > > * Trk::AlignTrack::actualSecondDerivatives ( ) const
inline

The Amg::VectorX is a vector of first-derivatives of the alignTSOS on the alignTrack w.r.t.

a particular alignment parameter. There is one Amg::VectorX in the vector for each alignment parameter of each align module. Set by DerivCalcTool.

Definition at line 146 of file AlignTrack.h.

◆ alignTSOSCollection()

const AlignTSOSCollection * AlignTrack::alignTSOSCollection ( ) const
inline

returns collection of alignTSOS

Definition at line 267 of file AlignTrack.h.

267{ return m_alignTSOSCollection; }

◆ chi2()

double Trk::AlignTrack::chi2 ( ) const
inline

locally calculated chi2

Definition at line 165 of file AlignTrack.h.

165{ return m_chi2; }

◆ chi2dof()

double Trk::AlignTrack::chi2dof ( ) const
inline

locally calculated chi2

Definition at line 169 of file AlignTrack.h.

169{ return m_chi2dof; }

◆ copyHelper()

void Track::copyHelper ( const Track & rhs)
protectedinherited

Helper method to factor common part of copy ctor and copy assignment.

Definition at line 56 of file Tracking/TrkEvent/TrkTrack/src/Track.cxx.

56 {
57 // set the author to be that of the Track being copied.
58 m_trackInfo = rhs.m_trackInfo;
59
60 // create & copy other variables if available
61 if (rhs.fitQuality() != nullptr) {
62 m_fitQuality = std::make_unique<Trk::FitQuality>(*(rhs.m_fitQuality));
63 }
64 // create & copy other variables
65 if (rhs.trackSummary() != nullptr) {
66 m_trackSummary = std::make_unique<Trk::TrackSummary>(*(rhs.m_trackSummary));
67 }
68 // Create the TrackStateVector and the perigeeParameters
69
70 if (rhs.m_trackStateVector != nullptr) {
71 m_trackStateVector = std::make_unique<TrackStates>();
72 m_trackStateVector->reserve(rhs.m_trackStateVector->size());
73
74 TSoS_iterator itTSoSEnd = rhs.m_trackStateVector->cend();
75 for (TSoS_iterator itTSoS = rhs.m_trackStateVector->cbegin();
76 itTSoS != itTSoSEnd; ++itTSoS) {
77 assert(*itTSoS != nullptr); // check that is defined.
78 // clone and store
79 TrackStateOnSurface* tsos = (**itTSoS).clone();
80 m_trackStateVector->push_back(tsos);
81 // Check if this a perigee so we can already cache it
82 if (tsos != nullptr && tsos->type(TrackStateOnSurface::Perigee)) {
83 const Trk::Perigee* perigee = nullptr;
84 const Trk::TrackParameters* tp = tsos->trackParameters();
85 if (tp && tp->type() == Trk::AtaSurface &&
86 tp->surfaceType() == Trk::SurfaceType::Perigee) {
87 perigee = static_cast<const Trk::Perigee*>(tp);
88 }
89 if (perigee != nullptr) {
90 m_perigeeParameters.store(perigee); // Now they will be valid
91 }
92 }
93 }
94 }
95}
@ Perigee
This represents a perigee, and so will contain a Perigee object only.
std::unique_ptr< Trk::TrackSummary > m_trackSummary
Datamember to cache the TrackSummary.
Trk::TrackInfo m_trackInfo
This is a class which stores the identity of where the track was created, fitted, which properties th...
Trk::TrackStates::const_iterator TSoS_iterator
std::unique_ptr< TrackStates > m_trackStateVector
TrackStateOnSurface.
CxxUtils::CachedValue< const Perigee * > m_perigeeParameters
A pointer to the Track's Perigee parameters.
std::unique_ptr< FitQuality > m_fitQuality
A pointer to the Track's FitQuality.
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
ParametersBase< TrackParametersDim, Charged > TrackParameters

◆ derivativeErr()

const std::vector< AlignModuleDerivatives > * Trk::AlignTrack::derivativeErr ( ) const
inline

The Amg::VectorX is a vector of errors in first-derivatives of the alignTSOS on the alignTrack w.r.t.

a particular alignment parameter. There is one Amg::VectorX in the vector for each alignment parameter of each align module. Set by DerivCalcTool.

Definition at line 140 of file AlignTrack.h.

140{ return m_derivativeErr; }

◆ derivativeMatrix()

const Amg::MatrixX * Trk::AlignTrack::derivativeMatrix ( ) const
inline

set and get derivative matrix

Definition at line 173 of file AlignTrack.h.

173{ return m_derivativeMatrix; }

◆ derivatives()

const std::vector< AlignModuleDerivatives > * Trk::AlignTrack::derivatives ( ) const
inline

The Amg::VectorX is a vector of first-derivatives of the alignTSOS on the alignTrack w.r.t.

a particular alignment parameter. There is one Amg::VectorX in the vector for each alignment parameter of each align module. Set by DerivCalcTool.

Definition at line 133 of file AlignTrack.h.

133{ return m_derivatives; }

◆ doFindPerigee()

void Trk::AlignTrack::doFindPerigee ( ) const
inline

For the AlignTrack, if there is pseudo-measurement in the TSOS collection, the perigee will not alway be in the first position.

We should explicitly do the perigee finding. Fortunately, base Class already has a protected function which loop over the TSOS colleciton to do perigee search and assigin the perigee parameters at the perigee. Just call it

Definition at line 104 of file AlignTrack.h.

104{ findPerigee();}

◆ dump()

void AlignTrack::dump ( MsgStream & msg)

dump align track information

Definition at line 316 of file AlignTrack.cxx.

317 {
318 msg<<"dumping AlignTrack"<<endmsg;
319 double chi2=0.;
320 int imeas(1);
322 int natsos = m_alignTSOSCollection->size();
323 for (int iatsos=0;iatsos<natsos;iatsos++) {
324 const AlignTSOS* atsos=(*m_alignTSOSCollection)[iatsos];
325 std::vector<Residual>::const_iterator itRes = atsos->firstResidual();
326 std::vector<Residual>::const_iterator itRes_end = atsos->lastResidual();
327 for ( ; itRes != itRes_end; ++itRes,++imeas) {
328 double resNorm = itRes->residualNorm();
329 chi2 += resNorm*resNorm;
330 //msg<<"resNorm="<<resNorm
331 // <<", errorMat("<<imeas<<")="<<(*m_localErrorMat)(imeas,imeas)
332 // <<endmsg;
333 }
334 msg<<"iatsos "<<iatsos<<", chi2="<<chi2<<*atsos<<endmsg;
335 }
336 }
337 msg<<"total chi2: "<<m_chi2<<endmsg;
338 }
#define endmsg
double chi2() const
locally calculated chi2
Definition AlignTrack.h:165
MsgStream & msg
Definition testRead.cxx:32

◆ dumpLessTrackInfo()

void AlignTrack::dumpLessTrackInfo ( const Track & track,
MsgStream & msg )
static

dump less track information

Definition at line 276 of file AlignTrack.cxx.

277 {
278 int ntsos(0);
279 for (const TrackStateOnSurface* tsos : *track.trackStateOnSurfaces()) {
280 msg<<"ntsos "<<ntsos<<":"<<", type "<<tsos->dumpType();
281 //msg << " perigee center of this TSOS: "<< tsos->trackParameters()->associatedSurface()->center() << endmsg;
282
283 if (tsos->type(TrackStateOnSurface::Perigee))
284 msg << ", Perigee"<<endmsg;
285
286 else if (tsos->type(TrackStateOnSurface::Outlier))
287 msg << ", Outlier"<<endmsg;
288
289 else if ( !tsos->type(TrackStateOnSurface::Scatterer) &&
291 msg << "," << ( tsos->fitQualityOnSurface() )<<endmsg;
292 }
293
294 else {
295
296 const MaterialEffectsBase* meb = tsos->materialEffectsOnTrack();
297 const MaterialEffectsOnTrack* meot = dynamic_cast<const MaterialEffectsOnTrack*>(meb);
298
299 if (meot) {
300 msg<<", meot";
301 if (meot->scatteringAngles())
302 msg<<", have angles"<<endmsg;
303 else
304 msg<<", no angles"<<endmsg;
305 }
306 else if (tsos->type(TrackStateOnSurface::InertMaterial))
307 msg<<", InertMaterial"<<endmsg;
308 else
309 msg << ", hmm... no material effects on track!"<<endmsg;
310 }
311 ++ntsos;
312 }
313 }
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
@ InertMaterial
This represents inert material, and so will contain MaterialEffectsBase.
@ Scatterer
This represents a scattering point on the track, and so will contain TrackParameters and MaterialEffe...

◆ dumpTrackInfo()

void AlignTrack::dumpTrackInfo ( const Track & track,
MsgStream & msg )
static

dump track information

Definition at line 269 of file AlignTrack.cxx.

270 {
271 for (const TrackStateOnSurface* tsos : *track.trackStateOnSurfaces())
272 msg<<*tsos;
273 }

◆ findPerigee()

void Track::findPerigee ( ) const
protectedinherited

Find perigee in the vector of track parameters.

It can be used to lazy-init the m_perigeeParameters

Definition at line 123 of file Tracking/TrkEvent/TrkTrack/src/Track.cxx.

123 {
124 if (!m_perigeeParameters.isValid()) {
126 }
127}
void findPerigeeImpl() const
find PerigeeImpl.

◆ findPerigeeImpl()

void Track::findPerigeeImpl ( ) const
privateinherited

find PerigeeImpl.

Assumes that Perigee parameters are currently inValid.

Definition at line 129 of file Tracking/TrkEvent/TrkTrack/src/Track.cxx.

129 {
130 // loop through all passed parameters and, if there is a at Perigee in there,
131 // assign it to Perigee parameters. There should never be more
132 // than one perigee type.
133 // Note that there can be other objects, like VertexOnTrack measurements, with
134 // params at a Perigee surface, thus the TSoS check.
135
136 const Trk::Perigee* tmpPerigeeParameters = nullptr;
137 if (!m_trackStateVector) {
138 return;
139 }
141 m_trackStateVector->cbegin();
143 m_trackStateVector->cend();
144 for (; it != itEnd; ++it) {
145 if ((*it)->type(TrackStateOnSurface::Perigee)) {
146 const Trk::TrackParameters* tp = (*it)->trackParameters();
147 if (tp && tp->type() == Trk::AtaSurface &&
148 tp->surfaceType() == Trk::SurfaceType::Perigee) {
149 tmpPerigeeParameters = static_cast<const Trk::Perigee*>(tp);
150 }
151
152 if (tmpPerigeeParameters != nullptr) {
153 break; // found perigee so stop loop.
154 }
155 }
156 }
157 // set to value and valid
158 if (tmpPerigeeParameters) {
159 m_perigeeParameters.set(tmpPerigeeParameters);
160 }
161}
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838

◆ firstAtsos() [1/2]

AlignTSOSCollection::iterator AlignTrack::firstAtsos ( )
inline

retrieve non-const iterator pointer to first element in collection

Definition at line 282 of file AlignTrack.h.

282{ return m_alignTSOSCollection->begin(); }

◆ firstAtsos() [2/2]

AlignTSOSCollection::const_iterator AlignTrack::firstAtsos ( ) const
inline

retrieve iterator pointer to first element in collection

Definition at line 279 of file AlignTrack.h.

279{ return m_alignTSOSCollection->cbegin(); }

◆ fitQuality() [1/2]

FitQuality * Trk::Track::fitQuality ( )
inherited

return a pointer to the fit quality non-const overload

◆ fitQuality() [2/2]

const FitQuality * Trk::Track::fitQuality ( ) const
inherited

return a pointer to the fit quality const-overload

◆ fullCovarianceMatrix()

const Amg::SymMatrixX * Trk::AlignTrack::fullCovarianceMatrix ( ) const
inline

set and get full covariance matrix

Definition at line 177 of file AlignTrack.h.

177{ return m_fullCovarianceMatrix; }

◆ getVtx() [1/2]

AlignVertex * Trk::AlignTrack::getVtx ( )
inline

Definition at line 189 of file AlignTrack.h.

189{ return m_vtx; }

◆ getVtx() [2/2]

const AlignVertex * Trk::AlignTrack::getVtx ( ) const
inline

set and get pointer to the associated vertex

Definition at line 188 of file AlignTrack.h.

188{ return m_vtx; }

◆ info() [1/2]

TrackInfo & Trk::Track::info ( )
inherited

returns a ref to the info.

non-const overload

◆ info() [2/2]

const TrackInfo & Trk::Track::info ( ) const
inherited

Returns a const ref to info of a const tracks.

◆ isSLTrack() [1/2]

bool AlignTrack::isSLTrack ( ) const

method to determine whether a straight line track or not

Definition at line 263 of file AlignTrack.cxx.

264 {
265 return isSLTrack(this);
266 }
bool isSLTrack() const
method to determine whether a straight line track or not

◆ isSLTrack() [2/2]

bool AlignTrack::isSLTrack ( const Track * track)
static

static method to determine whether a track is straight line or not

Definition at line 241 of file AlignTrack.cxx.

242 {
243 const Perigee* pp = track->perigeeParameters();
244 if( pp ){
245
246
247 const AmgSymMatrix(5)* covMatrix = pp->covariance();
248 if( covMatrix ){
249 // sum covariance terms of momentum, use it to determine whether fit was SL fit
250 double momCov = 0.;
251 for( int i=0;i<5;++i )
252 momCov += fabs( (*covMatrix)(4,i));
253 for( int i=0;i<4;++i )
254 momCov += fabs( (*covMatrix)(i,4));
255 if( momCov < 1e-10 )
256 return true;
257 }
258 }
259 return false;
260 }
#define AmgSymMatrix(dim)

◆ isValid()

bool Trk::Track::isValid ( ) const
inherited

returns true if the track has non-nullptr fitQuality and non-empty Trk::TrackStates

◆ lastAtsos() [1/2]

AlignTSOSCollection::iterator AlignTrack::lastAtsos ( )
inline

returns non-const iterator pointer to last element in collection

Definition at line 283 of file AlignTrack.h.

283{ return m_alignTSOSCollection->end(); }

◆ lastAtsos() [2/2]

AlignTSOSCollection::const_iterator AlignTrack::lastAtsos ( ) const
inline

returns iterator pointer to last element in collection

Definition at line 280 of file AlignTrack.h.

280{ return m_alignTSOSCollection->cend(); }

◆ localErrorMatrix()

const Amg::SymMatrixX * Trk::AlignTrack::localErrorMatrix ( ) const
inline

local error matrix, calculated by AlignTrack by calling atsos->hitDistanceVar()

Definition at line 122 of file AlignTrack.h.

122{ return m_localErrorMat; }

◆ localErrorMatrixInv()

const Amg::SymMatrixX * Trk::AlignTrack::localErrorMatrixInv ( ) const
inline

inverse local error matrix, calculated by AlignTrack by calling atsos->hitDistanceVar()

Definition at line 125 of file AlignTrack.h.

125{ return m_localErrorMatInv; }

◆ measurementsOnTrack()

const DataVector< const Trk::MeasurementBase > * Track::measurementsOnTrack ( ) const
inherited

return a pointer to a vector of MeasurementBase (NOT including any that come from outliers).

This DataVector is lazily created by this method and cached.

Returns
Pointer to a DV of MeasurementBase. The MeasurementBases are not owned by the DV (it is a view)

Definition at line 178 of file Tracking/TrkEvent/TrkTrack/src/Track.cxx.

179 {
180 if (!m_trackStateVector) {
181 return nullptr;
182 }
183
184 // We only need to do work if not valid.
185 if (!m_cachedMeasurementVector.isValid()) {
186 // create new DataVector which DOES NOT OWN ELEMENTS .
187 DataVector<const Trk::MeasurementBase> tmpMeasurementVector(
189 // for measurements on track it is very likely that #(meas) ~ #(TSOS)->
190 // reserve(#(TSOS))
191 tmpMeasurementVector.reserve(m_trackStateVector->size());
192
193 TSoS_iterator itTSoSEnd = m_trackStateVector->cend();
194 for (TSoS_iterator itTSoS = m_trackStateVector->cbegin(); itTSoS != itTSoSEnd;
195 ++itTSoS) {
196 if (!(*itTSoS)->type(TrackStateOnSurface::Outlier)) {
197 const Trk::MeasurementBase* rot = (*itTSoS)->measurementOnTrack();
198 // does it have a measurement ?
199 if (rot != nullptr) {
200 tmpMeasurementVector.push_back(rot);
201 }
202 }
203 }
204 m_cachedMeasurementVector.set(std::move(tmpMeasurementVector));
205 }
206
207 return m_cachedMeasurementVector.ptr();
208}
CxxUtils::CachedValue< DataVector< const MeasurementBase > > m_cachedMeasurementVector
A vector of MeasurementBase: these objects represent the "hits" on the track (but not outliers - see ...
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts

◆ nAlignTSOSMeas()

int Trk::AlignTrack::nAlignTSOSMeas ( ) const
inline

number of alignTSOS (including scatterers if included on AlignTrack

Definition at line 128 of file AlignTrack.h.

128{ return m_nAlignTSOSMeas; }

◆ numberOfInstantiations()

std::size_t Trk::ObjectCounter< Trk::Track >::numberOfInstantiations ( )
inlinestaticinherited

Definition at line 25 of file TrkObjectCounter.h.

26 {
27#ifndef NDEBUG
28 return s_numberOfInstantiations.load();
29#endif
30 return 0;
31 }
Helper to enable counting number of instantiations in debug builds.

◆ operator=()

AlignTrack & AlignTrack::operator= ( const AlignTrack & alignTrack)

assignment operator

Definition at line 142 of file AlignTrack.cxx.

143 {
144 if (this!=&atrack) {
145
146 // assign Track content
147 Track::operator=(atrack);
148
149 // now fill the extra stuff
150 m_originalTrack = atrack.m_originalTrack;
151 m_type = atrack.m_type;
152 m_nAlignTSOSMeas = atrack.m_nAlignTSOSMeas;
153 m_chi2 = atrack.m_chi2;
154 m_chi2dof = atrack.m_chi2dof;
155 m_vtx = atrack.m_vtx;
156 m_refitD0 = atrack.m_refitD0;
157 m_refitZ0 = atrack.m_refitZ0;
158 m_refitPhi = atrack.m_refitPhi;
159 m_refitTheta = atrack.m_refitTheta;
160 m_refitQovP = atrack.m_refitQovP;
161
162 for (int i=0;i<6;i++)
163 m_trackAlignParamQuality[i] = atrack.m_trackAlignParamQuality[i];
164
165 // copy AlignTSOSCollection
167 if(atrack.m_alignTSOSCollection!=nullptr) {
169 aTSOScoll->reserve(atrack.m_alignTSOSCollection->size());
170 AlignTSOSIt itAtsos_end = atrack.m_alignTSOSCollection->end();
171 for(AlignTSOSIt itAtsos = atrack.m_alignTSOSCollection->begin(); itAtsos!=itAtsos_end; ++itAtsos) {
172 assert(*itAtsos!=0); // check that is defined.
173 AlignTSOS * atsos = new AlignTSOS(**itAtsos);
174 aTSOScoll->push_back(atsos);
175 }
176 m_alignTSOSCollection=aTSOScoll;
177 }
178 else
179 m_alignTSOSCollection=nullptr;
180
181 findPerigee();
182
183 // fill matrices, vectors, etc.
184 delete m_derivatives;
185 m_derivatives = atrack.m_derivatives ?
186 new std::vector<AlignModuleDerivatives>(*(atrack.m_derivatives)) : nullptr;
187 delete m_derivativeErr;
188 m_derivativeErr = atrack.m_derivativeErr ?
189 new std::vector<AlignModuleDerivatives>(*(atrack.m_derivativeErr)) : nullptr;
191 m_actualSecondDerivatives = atrack.m_actualSecondDerivatives ?
192 new std::vector<std::pair<AlignModule*,std::vector<double> > > (*(atrack.m_actualSecondDerivatives)) : nullptr;
193 delete m_localErrorMat;
194 m_localErrorMat = atrack.m_localErrorMat ?
195 new Amg::SymMatrixX(*(atrack.m_localErrorMat)) : nullptr;
196 delete m_localErrorMatInv;
197 m_localErrorMatInv = atrack.m_localErrorMatInv ?
198 new Amg::SymMatrixX(*(atrack.m_localErrorMatInv)) : nullptr;
199 delete m_derivativeMatrix;
200 m_derivativeMatrix = atrack.m_derivativeMatrix ?
201 new Amg::MatrixX(*(atrack.m_derivativeMatrix)) : nullptr;
203 m_fullCovarianceMatrix = atrack.m_fullCovarianceMatrix ?
204 new Amg::SymMatrixX(*(atrack.m_fullCovarianceMatrix)) : nullptr;
205 delete m_residuals;
206 m_residuals = atrack.m_residuals ?
207 new Amg::VectorX(*(atrack.m_residuals)) : nullptr;
208 delete m_weights;
209 m_weights = atrack.m_weights ?
210 new Amg::SymMatrixX(*(atrack.m_weights)) : nullptr;
211 delete m_weightsFirstDeriv;
212 m_weightsFirstDeriv = atrack.m_weightsFirstDeriv ?
213 new Amg::SymMatrixX(*(atrack.m_weightsFirstDeriv)) : nullptr;
214 }
215
216 return *this;
217 }
Track & operator=(const Track &rhs)
assignment operator

◆ originalTrack()

const Track * Trk::AlignTrack::originalTrack ( ) const
inline

retrieve pointer to original track

Definition at line 90 of file AlignTrack.h.

90{ return m_originalTrack; }

◆ outliersOnTrack()

const DataVector< const Trk::MeasurementBase > * Track::outliersOnTrack ( ) const
inherited

return a pointer to a vector of MeasurementBase, which represent outliers (i.e.

measurements not used in the track fit). This DataVector is created lazily by this method and then cached.

Returns
Pointer to a DV of MeasurementBase, representing outliers. The MeasurementBases are not owned by the DV (it is a view)

Definition at line 210 of file Tracking/TrkEvent/TrkTrack/src/Track.cxx.

211 {
212 if (!m_trackStateVector) {
213 return nullptr;
214 }
215 // We only need to do work if not valid
216 if (!m_cachedOutlierVector.isValid()) {
217 // create new DataVector which DOES NOT OWN ELEMENTS .
218 DataVector<const Trk::MeasurementBase> tmpOutlierVector(SG::VIEW_ELEMENTS);
219 TSoS_iterator itTSoSEnd = m_trackStateVector->cend();
220 for (TSoS_iterator itTSoS = m_trackStateVector->cbegin(); itTSoS != itTSoSEnd;
221 ++itTSoS) {
222 if ((*itTSoS)->type(TrackStateOnSurface::Outlier)) {
223 const Trk::MeasurementBase* rot = (*itTSoS)->measurementOnTrack();
224 assert(rot != nullptr);
225 tmpOutlierVector.push_back(rot);
226 }
227 }
228 m_cachedOutlierVector.set(std::move(tmpOutlierVector));
229 }
230 return m_cachedOutlierVector.ptr();
231}
CxxUtils::CachedValue< DataVector< const MeasurementBase > > m_cachedOutlierVector
These objects represent the "outliers" on the track.

◆ perigeeParameters()

const Trk::Perigee * Track::perigeeParameters ( ) const
inherited

return Perigee.

Can be nullptr if no perigee parameters were assigned to the Track.

This method performs lazy initialization and caches the result.

PLEASE NOTE! if there is more than one Perigee in trackStateOnSurfaces (which there shouldn't be!!), only the first one will be returned by Trk::Track::perigeeParameters Although the Perigee is just a type of TrackParameter, it has a dedicated method because of the specific physics interest

Definition at line 163 of file Tracking/TrkEvent/TrkTrack/src/Track.cxx.

163 {
164 if (!m_perigeeParameters.isValid()) {
165 // findPerigee performs the setting of the parameters
166 // i.e does the CachedValue set
168 }
169
170 // Return payload if valid
171 if (m_perigeeParameters.isValid()) {
172 return *(m_perigeeParameters.ptr());
173 }
174
175 return nullptr;
176}

◆ refitD0()

bool Trk::AlignTrack::refitD0 ( ) const
inline

get refit flags

Definition at line 193 of file AlignTrack.h.

193{ return m_refitD0; }

◆ refitPhi()

bool Trk::AlignTrack::refitPhi ( ) const
inline

Definition at line 195 of file AlignTrack.h.

195{ return m_refitPhi; }

◆ refitQovP()

bool Trk::AlignTrack::refitQovP ( ) const
inline

Definition at line 197 of file AlignTrack.h.

197{ return m_refitQovP; }

◆ refitTheta()

bool Trk::AlignTrack::refitTheta ( ) const
inline

Definition at line 196 of file AlignTrack.h.

196{ return m_refitTheta; }

◆ refitZ0()

bool Trk::AlignTrack::refitZ0 ( ) const
inline

Definition at line 194 of file AlignTrack.h.

194{ return m_refitZ0; }

◆ resetCaches()

void Trk::Track::resetCaches ( )
inherited

reset all caches

◆ residualVector()

const Amg::VectorX * Trk::AlignTrack::residualVector ( ) const
inline

Vector of residuals of the alignTSOS on the alignTrack, to be set by AlignTrackDresser.

Owned by AlignTrack.

Definition at line 150 of file AlignTrack.h.

150{ return m_residuals; }

◆ setActualSecondDerivatives()

void Trk::AlignTrack::setActualSecondDerivatives ( std::vector< std::pair< AlignModule *, std::vector< double > > > * vec)
inline

Definition at line 147 of file AlignTrack.h.

std::vector< size_t > vec

◆ setAlignParameters()

void Trk::AlignTrack::setAlignParameters ( )
private

sets derivatives of alignment parameters

◆ setAlignTSOSCollection()

void AlignTrack::setAlignTSOSCollection ( AlignTSOSCollection * atsosColl)

sets collection of AlignTSOS

Definition at line 341 of file AlignTrack.cxx.

342 {
343 m_alignTSOSCollection=atsosColl;
344
345 // calculate m_nAlignTSOSMeas
346 int natsos = m_alignTSOSCollection->size();
347 for (int iatsos=0;iatsos<natsos;iatsos++)
348 m_nAlignTSOSMeas += (*m_alignTSOSCollection)[iatsos]->nResDim();
349
350 // calculate V and Vinv
352 m_localErrorMat->setZero();
354 m_localErrorMatInv->setZero();
355
356 int matrixindex(0);
359 for ( ; itAtsos != itAtsos_end; ++itAtsos) {
360 const AlignTSOS * atsos = *itAtsos;
361 std::vector<Residual>::const_iterator itRes = atsos->firstResidual();
362 std::vector<Residual>::const_iterator itRes_end = atsos->lastResidual();
363 for ( ; itRes != itRes_end; ++itRes) {
364 (*m_localErrorMat)(matrixindex,matrixindex) = itRes->errSq();
365 (*m_localErrorMatInv)(matrixindex,matrixindex) = 1./itRes->errSq();
366 matrixindex++;
367 }
368 }
369 }
AlignTSOSCollection::const_iterator lastAtsos() const
returns iterator pointer to last element in collection
Definition AlignTrack.h:280
AlignTSOSCollection::const_iterator firstAtsos() const
retrieve iterator pointer to first element in collection
Definition AlignTrack.h:279

◆ setChi2()

void Trk::AlignTrack::setChi2 ( double chi2)
inline

Definition at line 166 of file AlignTrack.h.

166{ m_chi2=chi2; }

◆ setChi2dof()

void Trk::AlignTrack::setChi2dof ( double chi2dof)
inline

Definition at line 170 of file AlignTrack.h.

double chi2dof() const
locally calculated chi2
Definition AlignTrack.h:169

◆ setDerivativeErr()

void Trk::AlignTrack::setDerivativeErr ( std::vector< AlignModuleDerivatives > * vec)
inline

Definition at line 141 of file AlignTrack.h.

◆ setDerivativeMatrix()

void AlignTrack::setDerivativeMatrix ( const Amg::MatrixX * matrix)
inline

Definition at line 269 of file AlignTrack.h.

269 {
271 m_derivativeMatrix=new Amg::MatrixX(*matrix);
272 }

◆ setDerivatives()

void Trk::AlignTrack::setDerivatives ( std::vector< AlignModuleDerivatives > * vec)
inline

Definition at line 134 of file AlignTrack.h.

◆ setFitQuality()

void Trk::Track::setFitQuality ( std::unique_ptr< FitQuality > quality)
inherited

set FitQuality.

◆ setFullCovarianceMatrix()

void AlignTrack::setFullCovarianceMatrix ( const Amg::SymMatrixX * matrix)
inline

Definition at line 274 of file AlignTrack.h.

◆ setInfo()

void Trk::Track::setInfo ( const TrackInfo & input)
inherited

set the info.

◆ setOriginalTrack()

void Trk::AlignTrack::setOriginalTrack ( const Track * track)
inline

set pointer to original track

Definition at line 93 of file AlignTrack.h.

◆ setRefitD0()

void Trk::AlignTrack::setRefitD0 ( bool flag)
inline

set refit flags

Definition at line 200 of file AlignTrack.h.

200{ m_refitD0 = flag; }
bool flag
Definition master.py:29

◆ setRefitPhi()

void Trk::AlignTrack::setRefitPhi ( bool flag)
inline

Definition at line 202 of file AlignTrack.h.

202{ m_refitPhi = flag; }

◆ setRefitQovP()

void Trk::AlignTrack::setRefitQovP ( bool flag)
inline

Definition at line 204 of file AlignTrack.h.

204{ m_refitQovP = flag; }

◆ setRefitTheta()

void Trk::AlignTrack::setRefitTheta ( bool flag)
inline

Definition at line 203 of file AlignTrack.h.

203{ m_refitTheta = flag; }

◆ setRefitZ0()

void Trk::AlignTrack::setRefitZ0 ( bool flag)
inline

Definition at line 201 of file AlignTrack.h.

201{ m_refitZ0 = flag; }

◆ setResidualVector()

void Trk::AlignTrack::setResidualVector ( Amg::VectorX * vec)
inline

Definition at line 151 of file AlignTrack.h.

◆ setTrackAlignParamQuality()

void Trk::AlignTrack::setTrackAlignParamQuality ( int i,
double val )
inline

◆ setTrackStateOnSurfaces()

void Trk::Track::setTrackStateOnSurfaces ( std::unique_ptr< Trk::TrackStates > input)
inherited

Set the TrackStateOnSurfaces.

◆ setTrackSummary()

void Trk::Track::setTrackSummary ( std::unique_ptr< Trk::TrackSummary > input)
inherited

Set the track summary.

◆ setType()

void Trk::AlignTrack::setType ( AlignTrackType type)
inline

Definition at line 97 of file AlignTrack.h.

97{m_type = type;}
AlignTrackType type() const
get and set the refit type
Definition AlignTrack.h:96

◆ setVtx()

void Trk::AlignTrack::setVtx ( AlignVertex *const vtx)
inline

Definition at line 190 of file AlignTrack.h.

190{ m_vtx = vtx; }

◆ setWeightMatrix()

void Trk::AlignTrack::setWeightMatrix ( Amg::SymMatrixX * mat)
inline

Definition at line 157 of file AlignTrack.h.

◆ setWeightMatrixFirstDeriv()

void Trk::AlignTrack::setWeightMatrixFirstDeriv ( Amg::SymMatrixX * mat)
inline

Definition at line 162 of file AlignTrack.h.

◆ trackAlignParamQuality()

double Trk::AlignTrack::trackAlignParamQuality ( int i) const
inline

set and get array (one entry per alignment parameter) of fit chi2 of chi2 vs.

alignment params (used for numerical derivatives)

Definition at line 181 of file AlignTrack.h.

181{ return m_trackAlignParamQuality[i]; }

◆ trackParameters()

const DataVector< const Trk::TrackParameters > * Track::trackParameters ( ) const
inherited

Return a pointer to a vector of TrackParameters.

It is created Lazily by this method and then cached.

Returns
Pointer to a DV of TrackParameters, or 0. The TrackParameters are not owned by the DV (it is a view)

Definition at line 97 of file Tracking/TrkEvent/TrkTrack/src/Track.cxx.

98 {
99
100 if (!m_trackStateVector) {
101 return nullptr;
102 }
103 // Do work only if it is not valid.
104 if (!m_cachedParameterVector.isValid()) {
105 // create cached parameter vector (which DOES NOT OWN ELEMENTS)
106 DataVector<const Trk::TrackParameters> tmp_ParameterVector(
108 tmp_ParameterVector.reserve(m_trackStateVector->size());
109 TSoS_iterator itTSoSEnd = m_trackStateVector->cend();
110 for (TSoS_iterator itTSoS = m_trackStateVector->cbegin(); itTSoS != itTSoSEnd;
111 ++itTSoS) {
112 const TrackParameters* trackParameters = (*itTSoS)->trackParameters();
113 // check to make sure that the TrackParameters exists first
114 if (trackParameters != nullptr) {
115 tmp_ParameterVector.push_back(trackParameters);
116 }
117 }
118 m_cachedParameterVector.set(std::move(tmp_ParameterVector));
119 }
120 return m_cachedParameterVector.ptr();
121}
CxxUtils::CachedValue< DataVector< const TrackParameters > > m_cachedParameterVector
A vector of TrackParameters: these can be any of the classes that derive from Trk::TrackParameters,...
const DataVector< const TrackParameters > * trackParameters() const
Return a pointer to a vector of TrackParameters.

◆ trackStateOnSurfaces() [1/2]

Trk::TrackStates * Trk::Track::trackStateOnSurfaces ( )
inherited

return a pointer to a DataVector of const TrackStateOnSurfaces.

non-const overload

◆ trackStateOnSurfaces() [2/2]

const Trk::TrackStates * Trk::Track::trackStateOnSurfaces ( ) const
inherited

return a pointer to a const DataVector of const TrackStateOnSurfaces.

const overload

◆ trackSummary() [1/2]

Trk::TrackSummary * Trk::Track::trackSummary ( )
inherited

Returns a pointer to the Trk::TrackSummary owned by this track (could be nullptr)

◆ trackSummary() [2/2]

const Trk::TrackSummary * Trk::Track::trackSummary ( ) const
inherited

Returns a pointer to the const Trk::TrackSummary owned by this const track (could be nullptr)

◆ trackWithoutScattering()

const Trk::Track * AlignTrack::trackWithoutScattering ( ) const

returns track with ScatteringAngle pointers all set to zero (used for refit by iPat)

Definition at line 423 of file AlignTrack.cxx.

424 {
425 if (not m_trackWithoutScattering) {
426
428 if (!states) return nullptr;
429
430 // loop over TSOSs
433
434 // This is the list of new TSOS
435 auto newTrackStateOnSurfaces = std::make_unique<Trk::TrackStates>();
436 newTrackStateOnSurfaces->reserve( states->size() );
437
438 for (; tsit!=tsit_end ; ++tsit) {
439 auto newMeas = (*tsit)->measurementOnTrack() ? (*tsit)->measurementOnTrack()->uniqueClone() : nullptr;
440 auto newPars = (*tsit)->trackParameters() ? (*tsit)->trackParameters()->uniqueClone() : nullptr;
441 auto newFitQoS= (*tsit)->fitQualityOnSurface();
442 auto meb = (*tsit)->materialEffectsOnTrack() ? (*tsit)->materialEffectsOnTrack()->uniqueClone() : nullptr;
443
444 if (meb) {
445 //meot is just used as observer, not owner, so can safely duplicate the pointer
446 const auto *meot=dynamic_cast<const Trk::MaterialEffectsOnTrack*>(meb.get());
447 if (meot) {
448 double tinX0=meot->thicknessInX0();
449 std::unique_ptr<Trk::EnergyLoss> eLoss =
450 meot->energyLoss()
451 ? std::unique_ptr<Trk::EnergyLoss>(meot->energyLoss()->clone())
452 : nullptr;
453 const Trk::Surface& surf = meot->associatedSurface();
454 std::bitset<MaterialEffectsBase::NumberOfMaterialEffectsTypes> typeMaterial;
455 if (eLoss) typeMaterial.set(MaterialEffectsBase::EnergyLossEffects);
456 Trk::MaterialEffectsOnTrack* newmeot=
457 new Trk::MaterialEffectsOnTrack(tinX0,std::nullopt,std::move(eLoss),surf,typeMaterial);
458 meb.reset(newmeot);
459 }
460 }
461
462 std::bitset<TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
465 typePattern.set(i);
466 }
467 const Trk::TrackStateOnSurface* newTsos =
468 new Trk::TrackStateOnSurface(newFitQoS,
469 std::move(newMeas),
470 std::move(newPars),
471 std::move(meb),
472 typePattern);
473 newTrackStateOnSurfaces->push_back(newTsos);
474 }
475
476 m_trackWithoutScattering.set(std::make_unique<Trk::Track>( this->info(), std::move(newTrackStateOnSurfaces),
477 this->fitQuality() ?
478 this->fitQuality()->uniqueClone() : nullptr ));
479 }
480 return m_trackWithoutScattering.get();
481 }
@ EnergyLossEffects
contains energy loss corrections
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
const TrackInfo & info() const
Returns a const ref to info of a const tracks.
const FitQuality * fitQuality() const
return a pointer to the fit quality const-overload
DataVector< const Trk::TrackStateOnSurface > TrackStates

◆ type()

AlignTrackType Trk::AlignTrack::type ( ) const
inline

get and set the refit type

Definition at line 96 of file AlignTrack.h.

96{return m_type;}

◆ weightMatrix()

const Amg::SymMatrixX * Trk::AlignTrack::weightMatrix ( ) const
inline

Weight matrix is W from Si alignment (see Eqn.

10 of INDET-PUB-2005-002).
It is related to the residual covariance matrix from TRT alignment by W= V^{-1}RV (R is defined in Eqn. 18 of ATL-INDET-PUB-2007-009).

Definition at line 156 of file AlignTrack.h.

156{ return m_weights; }

◆ weightMatrixFirstDeriv()

const Amg::SymMatrixX * Trk::AlignTrack::weightMatrixFirstDeriv ( ) const
inline

First deriv weight matrix can be either W from Si alignment (see Eqn.

10 of INDET-PUB-2005-002) or the inverse local error matrix

Definition at line 161 of file AlignTrack.h.

161{ return m_weightsFirstDeriv; }

Member Data Documentation

◆ m_actualSecondDerivatives

std::vector<std::pair<AlignModule *,std::vector<double> > >* Trk::AlignTrack::m_actualSecondDerivatives
private

Definition at line 239 of file AlignTrack.h.

◆ m_alignTSOSCollection

AlignTSOSCollection* Trk::AlignTrack::m_alignTSOSCollection {}
private

collection of alignTSOS that make up the alignTrack

Definition at line 223 of file AlignTrack.h.

223{};

◆ m_cachedMeasurementVector

CxxUtils::CachedValue<DataVector<const MeasurementBase> > Trk::Track::m_cachedMeasurementVector {}
protectedinherited

A vector of MeasurementBase: these objects represent the "hits" on the track (but not outliers - see m_cachedOutlierVector)

It is created in the return method by looping over all Trk::TrackStateOnSurface adding their pointers to the payload of m_cachedMeasurementVector

Definition at line 271 of file Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h.

271{};

◆ m_cachedOutlierVector

CxxUtils::CachedValue<DataVector<const MeasurementBase> > Trk::Track::m_cachedOutlierVector {}
protectedinherited

These objects represent the "outliers" on the track.

It is created in the return method by looping over all Trk::TrackStateOnSurface adding their pointers to the payload of m_cachedRioVector

Definition at line 280 of file Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h.

280{};

◆ m_cachedParameterVector

CxxUtils::CachedValue<DataVector<const TrackParameters> > Trk::Track::m_cachedParameterVector {}
protectedinherited

A vector of TrackParameters: these can be any of the classes that derive from Trk::TrackParameters, for example, Perigee, MeasuredPerigee, AtaCylinder etc.

It is created in the return method by looping over all Trk::TrackStateOnSurface adding their pointers to the payload of m_cachedParameterVector

Definition at line 260 of file Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h.

260{};

◆ m_chi2

double Trk::AlignTrack::m_chi2
private

Definition at line 245 of file AlignTrack.h.

◆ m_chi2dof

double Trk::AlignTrack::m_chi2dof
private

Definition at line 246 of file AlignTrack.h.

◆ m_derivativeErr

std::vector<AlignModuleDerivatives >* Trk::AlignTrack::m_derivativeErr
private

Definition at line 238 of file AlignTrack.h.

◆ m_derivativeMatrix

const Amg::MatrixX* Trk::AlignTrack::m_derivativeMatrix
private

matrix containing derivative matrix from track fitter

Definition at line 232 of file AlignTrack.h.

◆ m_derivatives

std::vector<AlignModuleDerivatives >* Trk::AlignTrack::m_derivatives
private

Definition at line 237 of file AlignTrack.h.

◆ m_fitQuality

std::unique_ptr<FitQuality> Trk::Track::m_fitQuality {nullptr}
protectedinherited

A pointer to the Track's FitQuality.

Definition at line 293 of file Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h.

293{nullptr};

◆ m_fullCovarianceMatrix

const Amg::SymMatrixX* Trk::AlignTrack::m_fullCovarianceMatrix
private

matrix containing full covariance matrix from track fitter

Definition at line 235 of file AlignTrack.h.

◆ m_localErrorMat

Amg::SymMatrixX* Trk::AlignTrack::m_localErrorMat
private

matrix containing local error matrices along diagonal

Definition at line 226 of file AlignTrack.h.

◆ m_localErrorMatInv

Amg::SymMatrixX* Trk::AlignTrack::m_localErrorMatInv
private

inverse matrix containing local error matrices along diagonal

Definition at line 229 of file AlignTrack.h.

◆ m_nAlignTSOSMeas

int Trk::AlignTrack::m_nAlignTSOSMeas
private

variables

Definition at line 220 of file AlignTrack.h.

◆ m_originalTrack

const Track* Trk::AlignTrack::m_originalTrack
private

point to original track

Definition at line 214 of file AlignTrack.h.

◆ m_perigeeParameters

CxxUtils::CachedValue<const Perigee*> Trk::Track::m_perigeeParameters {}
protectedinherited

A pointer to the Track's Perigee parameters.

This will be null if the track does not contain a Perigee or MeasuredPerigee parameter

Definition at line 288 of file Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h.

288{};

◆ m_refitD0

bool Trk::AlignTrack::m_refitD0
private

Definition at line 251 of file AlignTrack.h.

◆ m_refitPhi

bool Trk::AlignTrack::m_refitPhi
private

Definition at line 253 of file AlignTrack.h.

◆ m_refitQovP

bool Trk::AlignTrack::m_refitQovP
private

Definition at line 255 of file AlignTrack.h.

◆ m_refitTheta

bool Trk::AlignTrack::m_refitTheta
private

Definition at line 254 of file AlignTrack.h.

◆ m_refitZ0

bool Trk::AlignTrack::m_refitZ0
private

Definition at line 252 of file AlignTrack.h.

◆ m_residuals

Amg::VectorX* Trk::AlignTrack::m_residuals
private

Definition at line 241 of file AlignTrack.h.

◆ m_trackAlignParamQuality

double* Trk::AlignTrack::m_trackAlignParamQuality
private

Definition at line 257 of file AlignTrack.h.

◆ m_trackInfo

Trk::TrackInfo Trk::Track::m_trackInfo {}
protectedinherited

This is a class which stores the identity of where the track was created, fitted, which properties the reconstruction had.

Definition at line 304 of file Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h.

304{};

◆ m_trackStateVector

std::unique_ptr<TrackStates> Trk::Track::m_trackStateVector = nullptr
protectedinherited

TrackStateOnSurface.

These objects link the various parameters related to a surface, for example, TrackParameter, RIO_OnTrack and FitQualityOnSurface

Definition at line 248 of file Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h.

◆ m_trackSummary

std::unique_ptr<Trk::TrackSummary> Trk::Track::m_trackSummary {nullptr}
protectedinherited

Datamember to cache the TrackSummary.

Definition at line 298 of file Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h.

298{nullptr};

◆ m_trackWithoutScattering

CxxUtils::CachedUniquePtr<Trk::Track> Trk::AlignTrack::m_trackWithoutScattering
private

describes the quality of contribution to track to alignment parameter (used by shifting derivatives)

Definition at line 259 of file AlignTrack.h.

◆ m_type

AlignTrackType Trk::AlignTrack::m_type
private

refit type of this alignTrack

Definition at line 217 of file AlignTrack.h.

◆ m_vtx

AlignVertex* Trk::AlignTrack::m_vtx
private

pointer to the associated vertex

Definition at line 249 of file AlignTrack.h.

◆ m_weights

Amg::MatrixX* Trk::AlignTrack::m_weights
private

Definition at line 242 of file AlignTrack.h.

◆ m_weightsFirstDeriv

Amg::MatrixX* Trk::AlignTrack::m_weightsFirstDeriv
private

Definition at line 243 of file AlignTrack.h.

◆ s_numberOfInstantiations

std::atomic_size_t Trk::ObjectCounter< Trk::Track >::s_numberOfInstantiations
inlinestaticinherited

Definition at line 22 of file TrkObjectCounter.h.


The documentation for this class was generated from the following files: