ATLAS Offline Software
Loading...
Searching...
No Matches
SiTrajectoryElement_xk.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
6// Header file for class SiTrajectoryElement_xk
8// (c) ATLAS Detector software
10// Class for trajector elements in Pixels and SCT
12// Version 1.0 3/10/2004 I.Gavrilenko
14
15#ifndef SiTrajectoryElement_xk_H
16#define SiTrajectoryElement_xk_H
17
28// MagField cache
30
31#include <any>
32
33namespace InDet{
34
36 {
38 // Public methods:
40
41 public:
42
47
48 const int& detstatus () const {return m_detstatus;}
49 const int& inside () const {return m_inside; }
51 const int& ndist () const {return m_nMissing ; }
52 const int& nlinksF () const {return m_nlinksForward; }
53 const int& nlinksB () const {return m_nlinksBackward; }
54 const int& nholesF () const {return m_nholesForward; }
55 const int& nholesB () const {return m_nholesBackward; }
56 const int& dholesF () const {return m_dholesForward; }
57 const int& dholesB () const {return m_dholesBackward; }
58 const int& nclustersF () const {return m_nclustersForward;}
59 const int& nclustersB () const {return m_nclustersBackward;}
60 const int& npixelsB () const {return m_npixelsBackward; }
61 const bool& stereo () const {return m_stereo; }
62 const int& status () const {return m_status; }
63 const int& noiseModel () const {return m_noisemodel;}
64 const int& ndf () const {return m_ndf; }
65 const int& ndfF () const {return m_ndfForward; }
66 const int& ndfB () const {return m_ndfBackward; }
67 const int& ntsos () const {return m_ntsos; }
68 const double& step () const {return m_step; }
69 const double& dist () const {return m_dist; }
70 bool isBarrel () const {return m_detelement->isBarrel();}
71
73 const InDet::SiCluster* cluster () const {return m_cluster ; }
74 const InDet::SiCluster* clusterOld () const {return m_clusterOld; }
77
78 bool isNextClusterHoleB(bool&,double&);
79 bool isNextClusterHoleF(bool&,double&);
80
84
85 bool addCluster
87 bool addCluster
93
94 bool combineStates
99
103
104 // if rad_length==-1, then the private member m_radlength is used.
105 void noiseProduction
106 (int,const Trk::PatternTrackParameters&,double rad_length = -1., bool useMomentum=false);
107 void noiseInitiate();
108
109 bool addNextClusterB();
110 bool addNextClusterF();
113 void setCluster(const InDet::SiCluster*);
114 void setClusterB(const InDet::SiCluster*,double);
115
118 void setNdist(int);
119
120 int numberClusters() const;
121 const double& xi2F () const {return m_xi2Forward ;}
122 const double& xi2B () const {return m_xi2Backward ;}
123 const double& xi2totalF () const {return m_xi2totalForward ;}
124 const double& xi2totalB () const {return m_xi2totalBackward ;}
125 const double& radlength () const {return m_radlength ;}
126 const double& energylose() const {return m_energylose;}
137
143
144 const Trk::Surface* surface() const {return m_surface;}
145 const InDet::SiClusterLink_xk& linkF (int i) const {return m_linkForward[i];}
146 const InDet::SiClusterLink_xk& linkB (int i) const {return m_linkBackward[i];}
148
152
153
159 template <typename T>
160 bool set(int st,
162 const T& sb,
163 const T& se,
164 const InDet::SiCluster* si,
165 const EventContext& ctx);
166
167 bool setDead(const Trk::Surface*);
169 void setTools(const InDet::SiTools_xk*);
170 void setParameters();
171 void bremNoiseModel();
173
178
179 bool firstTrajectorElement(const Trk::TrackParameters&, const EventContext& ctx);
180 bool firstTrajectorElement(bool correction);
182
184 // @name Forward propagation
186
189 bool ForwardPropagationWithSearch(SiTrajectoryElement_xk&, const EventContext&);
195 template <typename T>
197 (int n,
198 const Trk::TrackParameters& Tpa,
200 const T& sb,
201 const T& se,
202 const EventContext& ctx);
204
210 template <typename T>
214 const T& sb,
215 const T& se);
216
218
222
226
230
231 bool BackwardPropagationSmoother(SiTrajectoryElement_xk&,bool, const EventContext& ctx);
232 bool BackwardPropagationPrecise (SiTrajectoryElement_xk&, const EventContext& ctx);
233 bool BackwardPropagationFilter (SiTrajectoryElement_xk&, const EventContext& ctx);
235
239
241 template <typename T>
243
244 template <typename T>
246 template <typename T>
248 template <typename T>
251
255
256 template <typename T>
258 template <typename T>
260 template <typename T>
263
265 bool difference() const;
266
268 // @name TrackStateOnSurface production
270
275
279
280 std::unique_ptr<Trk::TrackParameters> trackParameters(bool,int);
281 std::unique_ptr<Trk::TrackParameters> trackParametersWithNewDirection(bool,int);
282 static std::unique_ptr<Trk::TrackParameters> trackParameters(Trk::PatternTrackParameters&,bool);
284
286 // @name Initiate state
292
298
300 // @name Last detector elements with clusters
302
303 void lastActive();
305
309
311 double stepToPerigee();
313
317
320
324
325 double quality(int&) const;
327
331
332
335 bool propagate(Trk::PatternTrackParameters & startingParameters,
336 Trk::PatternTrackParameters & outParameters,
337 double & step,
338 const EventContext& ctx);
340
347
348 bool propagateParameters(Trk::PatternTrackParameters& startingParameters,
349 Trk::PatternTrackParameters& outParameters,
350 double & step);
352
356
357
358
374 // /////////////////////////////////////////////////////////////////////////////////
375 bool transformPlaneToGlobal(bool,
376 Trk::PatternTrackParameters& localParameters,
377 double* globalPars);
378
379
397 // /////////////////////////////////////////////////////////////////////////////////
398 bool transformGlobalToPlane(bool updateJacobian,
399 double* globalPars ,
400 Trk::PatternTrackParameters& startingParameters,
401 Trk::PatternTrackParameters& outputParameters);
402
403
410 bool rungeKuttaToPlane(bool updateJacobian, double* globalPars);
417 bool straightLineStepToPlane(bool updateJacobian, double* globalPars);
419
420
421 private:
422
426
433
434 bool m_stereo{} ;
435 bool m_utsos[3]{} ;
436 bool m_fieldMode{} ;
437 bool m_useassoTool = false ;
442 int m_status{} ;
443 int m_detstatus{} ;
444 int m_inside{} ;
456 int m_ndf{} ;
459 int m_ntsos{} ;
462 double m_dist{} ;
463 double m_xi2Forward{} ;
464 double m_xi2Backward{} ;
467 double m_radlength{} ;
468 double m_radlengthN{} ;
469 double m_energylose{} ;
470 double m_halflength{} ;
471 double m_step{} ;
472 double m_xi2max{} ;
473 double m_xi2maxNoAdd{} ;
474 double m_xi2maxlink{} ;
475 double m_xi2multi{} ;
476 double m_localTransform[13]{} ;
477 double m_localDir [ 3]{} ;
478 double m_invMoment{} ;
479
492 std::any m_sibegin ;
493 std::any m_siend ;
498
500
521
525
526 static constexpr double s_oneOverTwelve{0.08333} ;
527
529
533
534 void patternCovariances(const InDet::SiCluster*,double&,double&,double&) const;
536 };
537
538} // end of name space
539
541
542#endif // SiTrajectoryElement_xk
Class to hold geometrical description of a silicon detector element.
bool ForwardPropagationWithSearch(SiTrajectoryElement_xk &, const EventContext &)
Trk::TrackStateOnSurface * m_tsos[3]
int searchClustersSub(Trk::PatternTrackParameters &, SiClusterLink_xk *)
void precisePosCov(Trk::PatternTrackParameters &)
const Trk::PatternTrackParameters & parametersUF() const
updated
Trk::PatternTrackParameters m_parametersPredForward
Pattern track parameters.
double m_localDir[3]
the transform for this element
Trk::TrackStateOnSurface * trackStateOnSurface(bool, bool, bool, int)
bool BackwardPropagationFilter(SiTrajectoryElement_xk &, const EventContext &ctx)
bool BackwardPropagationSmoother(SiTrajectoryElement_xk &, bool, const EventContext &ctx)
int searchClusters(Trk::PatternTrackParameters &, SiClusterLink_xk *)
std::unique_ptr< Trk::TrackParameters > trackParameters(bool, int)
bool ForwardPropagationWithoutSearch(SiTrajectoryElement_xk &, const EventContext &)
const Trk::IPatternParametersPropagator * m_proptool
const InDet::SiCluster * clusterOld() const
SiTrajectoryElement_xk & operator=(const SiTrajectoryElement_xk &)
const Trk::IRIO_OnTrackCreator * m_riotool
const Trk::PatternTrackParameters & parametersUB() const
observed
const InDet::SiCluster * cluster() const
void setCluster(const InDet::SiCluster *)
Trk::TrackStateOnSurface * trackSimpleStateOnSurface(bool, bool, int)
const InDetDD::SiDetectorElement * m_detelement
void setTools(const InDet::SiTools_xk *)
const Trk::PatternTrackParameters * parameters() const
return pattern parameters matching the status of this element
Trk::PatternTrackParameters m_parametersPredBackward
For backward filtering / smoothing Predicted state, backward.
Trk::PatternTrackParameters m_parametersSM
bool ForwardPropagationForClusterSeach(int n, const Trk::TrackParameters &Tpa, const InDet::SiDetElementBoundaryLink_xk *&dl, const T &sb, const T &se, const EventContext &ctx)
T = InDet::SiClusterCollection::const_iterator or InDet::PixelClusterCollection::const_iterator or In...
bool initiateStatePrecise(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &)
int searchClustersWithoutStereoAssPIX(Trk::PatternTrackParameters &, SiClusterLink_xk *, const Trk::PRDtoTrackMap &)
const InDet::SiCluster * m_clusterOld
bool rungeKuttaToPlane(bool updateJacobian, double *globalPars)
Runge Kutta step to plane Updates the "globalPars" array, which is also used to pass the input.
const Trk::IPatternParametersUpdator * m_updatorTool
bool firstTrajectorElement(const Trk::TrackParameters &, const EventContext &ctx)
void checkBoundaries(const Trk::PatternTrackParameters &pars)
bool initiateStateWithCorrection(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, Trk::PatternTrackParameters &)
const InDet::SiCluster * clusterNoAdd() const
const Trk::PatternTrackParameters & parametersPB() const
predicted
void setParametersB(Trk::PatternTrackParameters &)
std::unique_ptr< Trk::TrackParameters > trackParametersWithNewDirection(bool, int)
void setDeadRadLength(Trk::PatternTrackParameters &)
const Trk::Surface * surface() const
bool addClusterPreciseWithCorrection(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, double &)
bool addCluster(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, double &)
bool combineStates(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, Trk::PatternTrackParameters &)
const InDet::SiDetElementBoundaryLink_xk * m_detlink
bool transformGlobalToPlane(bool updateJacobian, double *globalPars, Trk::PatternTrackParameters &startingParameters, Trk::PatternTrackParameters &outputParameters)
Tramsform from global to plane surface Will take the global parameters in globalPars,...
int searchClustersWithoutStereoPIX(Trk::PatternTrackParameters &, SiClusterLink_xk *)
bool ForwardPropagationWithoutSearchPreciseWithCorrection(SiTrajectoryElement_xk &, const EventContext &)
bool transformPlaneToGlobal(bool, Trk::PatternTrackParameters &localParameters, double *globalPars)
Tramsform from plane to global Will take the surface and parameters from localParameters and populate...
bool addClusterPrecise(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, double &)
const InDet::SiClusterLink_xk & linkB(int i) const
const InDet::SiClusterLink_xk & linkF(int i) const
void setClusterB(const InDet::SiCluster *, double)
bool BackwardPropagationPrecise(SiTrajectoryElement_xk &, const EventContext &ctx)
bool initiateState(Trk::PatternTrackParameters &inputPars, Trk::PatternTrackParameters &outputPars)
inputPars: input parameters.
static constexpr double s_oneOverTwelve
Trk::PatternTrackParameters m_parametersUpdatedForward
Updated state, forward.
bool propagateParameters(Trk::PatternTrackParameters &startingParameters, Trk::PatternTrackParameters &outParameters, double &step)
Start from 'startingParameters', propagate to current surface.
const InDetDD::SiDetectorElement * detElement() const
const InDet::SiCluster * m_clusterNoAdd
const Trk::PatternTrackParameters & parametersSM() const
Trk::PatternTrackParameters m_parametersUpdatedBackward
Updated state, backward.
void setParametersF(Trk::PatternTrackParameters &)
int searchClustersWithoutStereoSCT(Trk::PatternTrackParameters &, SiClusterLink_xk *)
int searchClustersWithStereo(Trk::PatternTrackParameters &, SiClusterLink_xk *)
void CloseClusterSeach(Trk::PatternTrackParameters &Tpa, const InDet::SiDetElementBoundaryLink_xk *&dl, const T &sb, const T &se)
T = InDet::SiClusterCollection::const_iterator or InDet::PixelClusterCollection::const_iterator or In...
void patternCovariances(const InDet::SiCluster *, double &, double &, double &) const
Private Methods.
const Trk::PRDtoTrackMap * m_prdToTrackMap
void noiseProduction(int, const Trk::PatternTrackParameters &, double rad_length=-1., bool useMomentum=false)
bool setDead(const Trk::Surface *)
MagField::AtlasFieldCache m_fieldCache
Trk::TrackStateOnSurface * tsos(int i)
const Trk::PatternTrackParameters & parametersPF() const
track parameters for forward filter / smoother predicted
InDet::SiClusterLink_xk m_linkBackward[10]
const int & ndist() const
number of crossed without hit - dead + holes
bool isNextClusterHoleF(bool &, double &)
checks if removing this cluster from the forward propagation would result in a critical number of hol...
bool propagate(Trk::PatternTrackParameters &startingParameters, Trk::PatternTrackParameters &outParameters, double &step, const EventContext &ctx)
Will propagate the startingParameters from their reference to the surface associated with this elemen...
const InDet::SiTools_xk * m_tools
Trk::TrackStateOnSurface * trackPerigeeStateOnSurface(const EventContext &ctx)
InDet::SiClusterLink_xk m_linkForward[10]
bool difference() const
check for a difference between forward and back propagation
int searchClustersWithoutStereoAssSCT(Trk::PatternTrackParameters &, SiClusterLink_xk *, const Trk::PRDtoTrackMap &)
bool straightLineStepToPlane(bool updateJacobian, double *globalPars)
Straight line step to plane Updates the "globalPars" array, which is also used to pass the input.
bool set(int st, const InDet::SiDetElementBoundaryLink_xk *&dl, const T &sb, const T &se, const InDet::SiCluster *si, const EventContext &ctx)
T = InDet::SiClusterCollection::const_iterator or InDet::PixelClusterCollection::const_iterator or In...
int searchClustersWithStereoAss(Trk::PatternTrackParameters &, SiClusterLink_xk *, const Trk::PRDtoTrackMap &)
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
interface for track parameter propagation through the magnetic field, using the Trk::PatternTrackPara...
Interface for updating Trk::PatternTrackParameters, the fast internal representation of track paramet...
Interface class for transforming Trk::PrepRawData to Trk::RIO_OnTrack using a local track hypothesis.
Abstract Base Class for tracking surfaces.
represents the track state (measurement, material, fit parameters and quality) at a surface.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
Primary Vertex Finder.
ParametersBase< TrackParametersDim, Charged > TrackParameters