ATLAS Offline Software
Loading...
Searching...
No Matches
AlignTrack.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRKALIGNEVENT_ALIGNTRACK_H
6#define TRKALIGNEVENT_ALIGNTRACK_H
7
8#include "GaudiKernel/MsgStream.h"
9
13#include "TrkTrack/Track.h"
14
15#include <vector>
16#include <fstream>
17
28
29namespace CLHEP {
30 class HepSymMatrix;
31}
32
33namespace Trk {
34
35 class AlignVertex;
36
39 typedef std::pair<AlignModule*, std::vector<Amg::VectorX> > AlignModuleDerivatives;
40
41 class AlignTrack : public Track {
42
43 public:
44
55
57 AlignTrack(const Track& associatedTrack);
58
61
63 AlignTrack(const AlignTrack& alignTrack);
64
66 virtual ~AlignTrack();
67
69 AlignTrack& operator= (const AlignTrack& alignTrack);
70
73
76
79
82
85
88
90 const Track * originalTrack() const { return m_originalTrack; }
91
93 void setOriginalTrack(const Track* track) { m_originalTrack = track; }
94
96 inline AlignTrackType type() const {return m_type;}
98
104 void doFindPerigee() const { findPerigee();}
105
107 bool isSLTrack() const;
108
110 static bool isSLTrack(const Track* track);
111
113 static void dumpTrackInfo(const Track& track, MsgStream& msg) ;
114
116 static void dumpLessTrackInfo(const Track& track, MsgStream& msg) ;
117
119 void dump(MsgStream& msg) ;
120
123
126
128 int nAlignTSOSMeas() const { return m_nAlignTSOSMeas; }
129
133 const std::vector<AlignModuleDerivatives>* derivatives() const { return m_derivatives; }
134 void setDerivatives(std::vector<AlignModuleDerivatives>* vec) { m_derivatives=vec; }
135
140 const std::vector<AlignModuleDerivatives>* derivativeErr() const { return m_derivativeErr; }
141 void setDerivativeErr(std::vector<AlignModuleDerivatives>* vec) { m_derivativeErr=vec; }
142
146 const std::vector<std::pair<AlignModule*,std::vector<double> > >* actualSecondDerivatives() const { return m_actualSecondDerivatives; }
147 void setActualSecondDerivatives(std::vector<std::pair<AlignModule*,std::vector<double> > >* vec) { m_actualSecondDerivatives=vec; }
148
150 const Amg::VectorX* residualVector() const { return m_residuals; }
152
156 const Amg::SymMatrixX* weightMatrix() const { return m_weights; }
158
163
165 double chi2() const { return m_chi2; }
166 void setChi2(double chi2) { m_chi2=chi2; }
167
169 double chi2dof() const { return m_chi2dof; }
171
174 void setDerivativeMatrix(const Amg::MatrixX* matrix);
175
178 void setFullCovarianceMatrix(const Amg::SymMatrixX* matrix);
179
181 double trackAlignParamQuality(int i) const { return m_trackAlignParamQuality[i]; }
182 void setTrackAlignParamQuality(int i, double val) { m_trackAlignParamQuality[i]=val; }
183
185 const Trk::Track* trackWithoutScattering() const;
186
188 const AlignVertex* getVtx() const { return m_vtx; }
189 AlignVertex* getVtx() { return m_vtx; }
190 void setVtx(AlignVertex * const vtx) { m_vtx = vtx; }
191
193 bool refitD0() const { return m_refitD0; }
194 bool refitZ0() const { return m_refitZ0; }
195 bool refitPhi() const { return m_refitPhi; }
196 bool refitTheta() const { return m_refitTheta; }
197 bool refitQovP() const { return m_refitQovP; }
198
200 void setRefitD0(bool flag) { m_refitD0 = flag; }
201 void setRefitZ0(bool flag) { m_refitZ0 = flag; }
202 void setRefitPhi(bool flag) { m_refitPhi = flag; }
203 void setRefitTheta(bool flag) { m_refitTheta = flag; }
204 void setRefitQovP(bool flag) { m_refitQovP = flag; }
205
206 private:
207 // methods
209
212
215
218
221
224
226 Amg::SymMatrixX * m_localErrorMat; //Symmetric Matrix
227
230
233
235 const Amg::SymMatrixX * m_fullCovarianceMatrix; //Symmetric Matrix
236
237 std::vector<AlignModuleDerivatives > * m_derivatives;
238 std::vector<AlignModuleDerivatives > * m_derivativeErr;
239 std::vector<std::pair<AlignModule *,std::vector<double> > > * m_actualSecondDerivatives;
240
242 Amg::MatrixX * m_weights; //Symmetric Matrix
243 Amg::MatrixX * m_weightsFirstDeriv; //Symmetric Matrix
244
245 double m_chi2;
246 double m_chi2dof;
247
250
256
258
260
261 }; // end class
262
263 MsgStream& operator<< (MsgStream& sl, const AlignTrack::AlignTrackType type);
264 std::ostream& operator<< (std::ostream& ol, const AlignTrack::AlignTrackType type);
266
268
269 inline void AlignTrack::setDerivativeMatrix(const Amg::MatrixX * matrix) {
271 m_derivativeMatrix=new Amg::MatrixX(*matrix);
272 }
273
278
281
284
285} // end namespace
286
287#endif // TRKALIGNEVENT_ALIGNTRACK_H
Cached unique_ptr with atomic update.
std::vector< size_t > vec
An STL vector of pointers that by default owns its pointed-to elements.
AlignVertex is a simple structure to store objects belonging to a vertex.
Derived DataVector<T>.
Definition DataVector.h:795
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
Definition DataVector.h:838
DataModel_detail::iterator< DataVector > iterator
Definition DataVector.h:842
const Amg::SymMatrixX * fullCovarianceMatrix() const
set and get full covariance matrix
Definition AlignTrack.h:177
Amg::VectorX * m_residuals
Definition AlignTrack.h:241
void setAlignParameters()
sets derivatives of alignment parameters
bool refitZ0() const
Definition AlignTrack.h:194
void setWeightMatrix(Amg::SymMatrixX *mat)
Definition AlignTrack.h:157
static void dumpTrackInfo(const Track &track, MsgStream &msg)
dump track information
AlignTSOSCollection::const_iterator lastAtsos() const
returns iterator pointer to last element in collection
Definition AlignTrack.h:280
double chi2() const
locally calculated chi2
Definition AlignTrack.h:165
std::vector< AlignModuleDerivatives > * m_derivativeErr
Definition AlignTrack.h:238
const Amg::SymMatrixX * localErrorMatrixInv() const
inverse local error matrix, calculated by AlignTrack by calling atsos->hitDistanceVar()
Definition AlignTrack.h:125
Amg::MatrixX * m_weights
Definition AlignTrack.h:242
int nAlignTSOSMeas() const
number of alignTSOS (including scatterers if included on AlignTrack
Definition AlignTrack.h:128
virtual ~AlignTrack()
destructor
const Amg::SymMatrixX * m_fullCovarianceMatrix
matrix containing full covariance matrix from track fitter
Definition AlignTrack.h:235
const std::vector< AlignModuleDerivatives > * derivatives() const
The Amg::VectorX is a vector of first-derivatives of the alignTSOS on the alignTrack w....
Definition AlignTrack.h:133
void setChi2(double chi2)
Definition AlignTrack.h:166
const Amg::MatrixX * m_derivativeMatrix
matrix containing derivative matrix from track fitter
Definition AlignTrack.h:232
void setOriginalTrack(const Track *track)
set pointer to original track
Definition AlignTrack.h:93
const Track * originalTrack() const
retrieve pointer to original track
Definition AlignTrack.h:90
const Amg::SymMatrixX * localErrorMatrix() const
local error matrix, calculated by AlignTrack by calling atsos->hitDistanceVar()
Definition AlignTrack.h:122
void setActualSecondDerivatives(std::vector< std::pair< AlignModule *, std::vector< double > > > *vec)
Definition AlignTrack.h:147
@ 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
const Amg::VectorX * residualVector() const
Vector of residuals of the alignTSOS on the alignTrack, to be set by AlignTrackDresser.
Definition AlignTrack.h:150
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....
Definition AlignTrack.h:146
void setRefitZ0(bool flag)
Definition AlignTrack.h:201
void setTrackAlignParamQuality(int i, double val)
Definition AlignTrack.h:182
AlignVertex * m_vtx
pointer to the associated vertex
Definition AlignTrack.h:249
bool refitQovP() const
Definition AlignTrack.h:197
static void dumpLessTrackInfo(const Track &track, MsgStream &msg)
dump less track information
const std::vector< AlignModuleDerivatives > * derivativeErr() const
The Amg::VectorX is a vector of errors in first-derivatives of the alignTSOS on the alignTrack w....
Definition AlignTrack.h:140
void setDerivatives(std::vector< AlignModuleDerivatives > *vec)
Definition AlignTrack.h:134
void setRefitPhi(bool flag)
Definition AlignTrack.h:202
Amg::MatrixX * m_weightsFirstDeriv
Definition AlignTrack.h:243
AlignTSOSCollection::const_iterator firstAtsos() const
retrieve iterator pointer to first element in collection
Definition AlignTrack.h:279
void setWeightMatrixFirstDeriv(Amg::SymMatrixX *mat)
Definition AlignTrack.h:162
const AlignTSOSCollection * alignTSOSCollection() const
returns collection of alignTSOS
Definition AlignTrack.h:267
AlignVertex * getVtx()
Definition AlignTrack.h:189
const Amg::MatrixX * derivativeMatrix() const
set and get derivative matrix
Definition AlignTrack.h:173
void setRefitQovP(bool flag)
Definition AlignTrack.h:204
void doFindPerigee() const
For the AlignTrack, if there is pseudo-measurement in the TSOS collection, the perigee will not alway...
Definition AlignTrack.h:104
const Track * m_originalTrack
point to original track
Definition AlignTrack.h:214
void setVtx(AlignVertex *const vtx)
Definition AlignTrack.h:190
void setType(AlignTrackType type)
Definition AlignTrack.h:97
const Amg::SymMatrixX * weightMatrixFirstDeriv() const
First deriv weight matrix can be either W from Si alignment (see Eqn.
Definition AlignTrack.h:161
double trackAlignParamQuality(int i) const
set and get array (one entry per alignment parameter) of fit chi2 of chi2 vs.
Definition AlignTrack.h:181
const Trk::Track * trackWithoutScattering() const
returns track with ScatteringAngle pointers all set to zero (used for refit by iPat)
std::vector< AlignModuleDerivatives > * m_derivatives
Definition AlignTrack.h:237
AlignTrackType m_type
refit type of this alignTrack
Definition AlignTrack.h:217
void setRefitD0(bool flag)
set refit flags
Definition AlignTrack.h:200
std::vector< std::pair< AlignModule *, std::vector< double > > > * m_actualSecondDerivatives
Definition AlignTrack.h:239
void setChi2dof(double chi2dof)
Definition AlignTrack.h:170
AlignTrack(const Track &associatedTrack)
constructor takes the track containing the original TrackStateOnSurface objects
AlignTrack & operator=(const AlignTrack &alignTrack)
assignment operator
void setDerivativeErr(std::vector< AlignModuleDerivatives > *vec)
Definition AlignTrack.h:141
bool refitPhi() const
Definition AlignTrack.h:195
void setDerivativeMatrix(const Amg::MatrixX *matrix)
Definition AlignTrack.h:269
void setResidualVector(Amg::VectorX *vec)
Definition AlignTrack.h:151
double * m_trackAlignParamQuality
Definition AlignTrack.h:257
const AlignVertex * getVtx() const
set and get pointer to the associated vertex
Definition AlignTrack.h:188
int m_nAlignTSOSMeas
variables
Definition AlignTrack.h:220
bool refitTheta() const
Definition AlignTrack.h:196
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
AlignTrackType type() const
get and set the refit type
Definition AlignTrack.h:96
void setAlignTSOSCollection(AlignTSOSCollection *atsosColl)
sets collection of AlignTSOS
bool refitD0() const
get refit flags
Definition AlignTrack.h:193
void setRefitTheta(bool flag)
Definition AlignTrack.h:203
const Amg::SymMatrixX * weightMatrix() const
Weight matrix is W from Si alignment (see Eqn.
Definition AlignTrack.h:156
void setFullCovarianceMatrix(const Amg::SymMatrixX *matrix)
Definition AlignTrack.h:274
CxxUtils::CachedUniquePtr< Trk::Track > m_trackWithoutScattering
Definition AlignTrack.h:259
bool isSLTrack() const
method to determine whether a straight line track or not
Amg::SymMatrixX * m_localErrorMatInv
inverse matrix containing local error matrices along diagonal
Definition AlignTrack.h:229
double chi2dof() const
locally calculated chi2
Definition AlignTrack.h:169
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.
CachedUniquePtrT< const T > CachedUniquePtr
Ensure that the ATLAS eigen extensions are properly loaded.
MsgStream & operator<<(MsgStream &sl, const AlignModule &alignModule)
overload of << operator for MsgStream for debug output
DataVector< AlignTSOS >::const_iterator AlignTSOSIt
Definition AlignTrack.h:38
DataVector< AlignTSOS > AlignTSOSCollection
Definition AlignTrack.h:37
std::string dumpAlignTrackType(const AlignTrack::AlignTrackType type)
std::pair< AlignModule *, std::vector< Amg::VectorX > > AlignModuleDerivatives
Definition AlignTrack.h:39
-event-from-file
MsgStream & msg
Definition testRead.cxx:32