ATLAS Offline Software
Loading...
Searching...
No Matches
TRT_Trajectory_xk.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
6// Header file for class TRT_Trajectory_xk
8// (c) ATLAS Detector software
10// Class for trajectory in Pixels and SCT
12// Version 1.0 3/10/2004 I.Gavrilenko
14
15#ifndef TRT_Trajectory_xk_H
16#define TRT_Trajectory_xk_H
17
21// MagField cache
23#include <iosfwd>
24#include <utility>
25#include <vector>
26
27namespace Trk {
28 class Track;
29}
30
31namespace InDet{
32
34 public:
35 double m_F{};
36 int m_NA{};
37 };
38
40 {
42 // Public methods:
44
45 public:
46
47 TRT_Trajectory_xk() = default;
49 ~TRT_Trajectory_xk() = default;
51
53 // Main methods
55
56 const int& nholes () const {return m_nholes ;}
57 const int& dholes () const {return m_dholes ;}
58 const int& nholesb () const {return m_nholesb ;}
59 const int& nholese () const {return m_nholese ;}
60 const int& nclusters () const {return m_nclusters ;}
61 const int& ntclusters () const {return m_ntclusters;}
62 const int& nElements () const {return m_nElements ;}
63 const int& naElements () const {return m_naElements;}
64
66 bool isLastElementBarrel ();
67
68 void set(const TRT_ID *,
73 double,
74 double,
75 double,
76 double,
77 double);
78
80
82 std::vector<std::pair<Amg::Vector3D, double> >&,
83 const std::vector<const InDetDD::TRT_BaseElement*>&,
85
87 std::vector<std::pair<Amg::Vector3D, double> >&,
88 const std::vector<const InDetDD::TRT_BaseElement*>&,
90
91 void convert(std::vector<const Trk::MeasurementBase*>&);
95
97 // Track finding with and without drift time information
99
100 void trackFindingWithDriftTime (double);
101 void trackFindingWithoutDriftTime (double);
102 void trackFindingWithDriftTimeBL (double);
103 void trackFindingWithoutDriftTimeBL (double);
105 void buildTrajectoryForTRTSeed (bool);
106
108 // Search start and stop trajectory for endcap TRT
110
111 bool searchStartStop();
112
114 // Trajectory correction for new polar angle
116
117 void radiusCorrection();
118
120 // Backward kalman fitter
122
123 bool fitter();
124
126 // Track parameters estimators
128
133
134 std::ostream& dump(std::ostream& out) const;
135
136 protected:
137
139 // Protected Data
141
142 int m_firstRoad {}; //
143 int m_lastRoad {}; //
146 int m_nclusters {}; //
147 int m_ntclusters {}; //
148 int m_nholesb {}; //
149 int m_nholese {}; //
150 int m_nholes {}; //
151 int m_dholes {}; //
152 int m_naElements {}; //
153 int m_nElements {}; // nindex
154 int m_ndf {}; //
155 double m_xi2 {}; //
156 double m_roadwidth2 {}; // road width**2
157 double m_zVertexWidth {}; // z-vertex half width
158 double m_impact {}; // max impact parameters
159 double m_scale_error {}; // scale factor for hit uncertainty
165
167 // Work arrey for stab line search
169
170 int m_MA[5000]{};
171 double m_U [5000]{};
172 double m_V [5000]{};
174 double m_A{};
175 double m_B{};
176
178 // min pT cut for TRT Segment trajectory
180
181 double m_minTRTSegmentpT{}; //min pT check for initial segment
182
184 // Methods
186
187 void stabline(int,double);
188 static void sort (samiStruct*,int);
189 void erase (int);
190 std::pair<const Trk::PseudoMeasurementOnTrack*,const Trk::PseudoMeasurementOnTrack*>
191 pseudoMeasurements(const Trk::Surface*,const Trk::Surface*,int bec);
192 };
193
195 // Inline methods
197
198
199 // cppcheck-suppress operatorEqVarError; scratch arrays not copied.
200 inline TRT_Trajectory_xk& TRT_Trajectory_xk::operator =
201 (const TRT_Trajectory_xk& T)
202 {
203 m_firstRoad = T.m_firstRoad ;
204 m_lastRoad = T.m_lastRoad ;
205 m_firstTrajectory = T.m_firstTrajectory;
206 m_lastTrajectory = T.m_lastTrajectory ;
207 m_nclusters = T.m_nclusters ;
208 m_ntclusters = T.m_ntclusters ;
209 m_nholesb = T.m_nholesb ;
210 m_nholese = T.m_nholese ;
211 m_nholes = T.m_nholes ;
212 m_dholes = T.m_dholes ;
213 m_naElements = T.m_naElements ;
214 m_nElements = T.m_nElements ;
215 m_roadwidth2 = T.m_roadwidth2 ;
216 m_parameters = T.m_parameters ;
217 m_fieldprop = T.m_fieldprop ;
218 m_proptool = T.m_proptool ;
219 m_updatortool = T.m_updatortool ;
220 m_ndf = T.m_ndf ;
221 m_xi2 = T.m_xi2 ;
222 m_zVertexWidth = T.m_zVertexWidth ;
223 m_impact = T.m_impact ;
224 m_scale_error = T.m_scale_error ;
225 for(int i=0; i!=400; ++i) m_elements[i]=T.m_elements[i];
226 return(*this);
227 }
228
229 std::ostream& operator << (std::ostream&,const TRT_Trajectory_xk&);
230
232 {
233 return m_elements[m_firstTrajectory].isBarrel();
234 }
236 {
237 return m_elements[m_lastTrajectory].isBarrel();
238 }
239
240} // end of name space
241
242#endif // TRT_Trajectory_xk
void set(const TRT_ID *, const Trk::IPatternParametersPropagator *, const Trk::IPatternParametersUpdator *, const Trk::IRIO_OnTrackCreator *, const Trk::IRIO_OnTrackCreator *, double, double, double, double, double)
Trk::MagneticFieldProperties m_fieldprop
const int & naElements() const
Trk::PatternTrackParameters m_parameters
Trk::TrackSegment * convert()
const Trk::IPatternParametersPropagator * m_proptool
const int & ntclusters() const
void updateTrackParameters(Trk::PatternTrackParameters &)
void initiateForPrecisionSeed(std::vector< std::pair< Amg::Vector3D, double > > &, const std::vector< const InDetDD::TRT_BaseElement * > &, const TRT_DriftCircleContainer *&, const Trk::PatternTrackParameters &)
const int & nElements() const
const Trk::IPatternParametersUpdator * m_updatortool
void trackFindingWithoutDriftTimeBL(double)
bool trackParametersEstimationForFirstPointWithVertexConstraint()
const int & nclusters() const
TRT_Trajectory_xk(const TRT_Trajectory_xk &)=default
TRT_Trajectory_xk & operator=(const TRT_Trajectory_xk &)
const int & nholesb() const
const int & nholese() const
static void sort(samiStruct *, int)
const int & dholes() const
bool trackParametersEstimationForPerigeeWithVertexConstraint()
const int & nholes() const
std::pair< const Trk::PseudoMeasurementOnTrack *, const Trk::PseudoMeasurementOnTrack * > pseudoMeasurements(const Trk::Surface *, const Trk::Surface *, int bec)
void initiateForTRTSeed(std::vector< std::pair< Amg::Vector3D, double > > &, const std::vector< const InDetDD::TRT_BaseElement * > &, const TRT_DriftCircleContainer *&, const Trk::PatternTrackParameters &)
TRT_TrajectoryElement_xk m_elements[400]
Trk::PrepRawDataContainer< TRT_DriftCircleCollection > TRT_DriftCircleContainer
This is an Identifier helper class for the TRT subdetector.
Definition TRT_ID.h:82
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.
magnetic field properties to steer the behavior of the extrapolation
Abstract Base Class for tracking surfaces.
Class for a generic track segment that holdes polymorphic Trk::MeasurementBase objects,...
Primary Vertex Finder.
MsgStream & operator<<(MsgStream &, const GNNTrackFinderTritonTool &)
Ensure that the ATLAS eigen extensions are properly loaded.
-event-from-file