ATLAS Offline Software
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 
27 namespace Trk {
28  class Track;
29 }
30 
31 namespace InDet{
32 
33  class samiStruct{
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 
65  bool isFirstElementBarrel();
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 
86  void initiateForTRTSeed(
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*>&);
93  Trk::Track * convert(const Trk::Track&);
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 {}; //
145  int m_lastTrajectory {}; //
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]{};
173  samiStruct m_SS[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  {
234  }
236  {
238  }
239 
240 } // end of name space
241 
242 #endif // TRT_Trajectory_xk
InDet::TRT_Trajectory_xk::m_impact
double m_impact
Definition: TRT_Trajectory_xk.h:158
InDet::TRT_Trajectory_xk::nholese
const int & nholese() const
Definition: TRT_Trajectory_xk.h:59
InDet::operator<<
MsgStream & operator<<(MsgStream &, const GNNTrackReaderTool &)
InDet::TRT_Trajectory_xk::m_roadwidth2
double m_roadwidth2
Definition: TRT_Trajectory_xk.h:156
InDet::TRT_Trajectory_xk::m_U
double m_U[5000]
Definition: TRT_Trajectory_xk.h:171
InDet::TRT_Trajectory_xk
Definition: TRT_Trajectory_xk.h:40
InDet::TRT_Trajectory_xk::m_minTRTSegmentpT
double m_minTRTSegmentpT
Definition: TRT_Trajectory_xk.h:181
InDet::TRT_Trajectory_xk::~TRT_Trajectory_xk
~TRT_Trajectory_xk()=default
InDet::TRT_Trajectory_xk::fitter
bool fitter()
Definition: TRT_Trajectory_xk.cxx:753
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
AtlasFieldCacheCondObj
Definition: AtlasFieldCacheCondObj.h:19
ParticleGun_SamplingFraction.bec
int bec
Definition: ParticleGun_SamplingFraction.py:89
AtlasFieldCacheCondObj.h
InDet
Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
InDet::TRT_Trajectory_xk::m_lastRoad
int m_lastRoad
Definition: TRT_Trajectory_xk.h:143
InDet::TRT_Trajectory_xk::m_zVertexWidth
double m_zVertexWidth
Definition: TRT_Trajectory_xk.h:157
InDet::TRT_Trajectory_xk::m_firstTrajectory
int m_firstTrajectory
Definition: TRT_Trajectory_xk.h:144
InDet::samiStruct
Definition: TRT_Trajectory_xk.h:33
InDet::TRT_Trajectory_xk::nholesb
const int & nholesb() const
Definition: TRT_Trajectory_xk.h:58
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
InDet::TRT_Trajectory_xk::m_nholesb
int m_nholesb
Definition: TRT_Trajectory_xk.h:148
InDet::TRT_Trajectory_xk::trackFindingWithoutDriftTime
void trackFindingWithoutDriftTime(double)
Definition: TRT_Trajectory_xk.cxx:290
Trk::TrackSegment
Definition: TrackSegment.h:56
InDet::TRT_Trajectory_xk::m_scale_error
double m_scale_error
Definition: TRT_Trajectory_xk.h:159
Trk::IPatternParametersPropagator
interface for track parameter propagation through the magnetic field, using the Trk::PatternTrackPara...
Definition: IPatternParametersPropagator.h:41
InDet::TRT_Trajectory_xk::isLastElementBarrel
bool isLastElementBarrel()
Definition: TRT_Trajectory_xk.h:235
InDet::TRT_Trajectory_xk::m_parameters
Trk::PatternTrackParameters m_parameters
Definition: TRT_Trajectory_xk.h:160
InDet::TRT_Trajectory_xk::m_naElements
int m_naElements
Definition: TRT_Trajectory_xk.h:152
InDet::TRT_Trajectory_xk::buildTrajectoryForPrecisionSeed
void buildTrajectoryForPrecisionSeed(bool)
Definition: TRT_Trajectory_xk.cxx:438
InDet::TRT_Trajectory_xk::m_proptool
const Trk::IPatternParametersPropagator * m_proptool
Definition: TRT_Trajectory_xk.h:163
InDet::TRT_Trajectory_xk::trackParametersEstimationForLastPoint
bool trackParametersEstimationForLastPoint()
Definition: TRT_Trajectory_xk.cxx:698
TrackSegment.h
InDet::TRT_Trajectory_xk::sort
static void sort(samiStruct *, int)
Definition: TRT_Trajectory_xk.cxx:884
Trk::IPatternParametersUpdator
Interface for updating Trk::PatternTrackParameters, the fast internal representation of track paramet...
Definition: IPatternParametersUpdator.h:40
InDet::TRT_Trajectory_xk::m_elements
TRT_TrajectoryElement_xk m_elements[400]
Definition: TRT_Trajectory_xk.h:161
InDet::TRT_Trajectory_xk::trackParametersEstimationForFirstPointWithVertexConstraint
bool trackParametersEstimationForFirstPointWithVertexConstraint()
Definition: TRT_Trajectory_xk.cxx:732
InDet::TRT_Trajectory_xk::initiateForPrecisionSeed
void initiateForPrecisionSeed(std::vector< std::pair< Amg::Vector3D, double > > &, const std::vector< const InDetDD::TRT_BaseElement * > &, const TRT_DriftCircleContainer *&, const Trk::PatternTrackParameters &)
Definition: TRT_Trajectory_xk.cxx:52
InDet::TRT_Trajectory_xk::trackFindingWithoutDriftTimeBL
void trackFindingWithoutDriftTimeBL(double)
Definition: TRT_Trajectory_xk.cxx:369
InDet::TRT_Trajectory_xk::pseudoMeasurements
std::pair< const Trk::PseudoMeasurementOnTrack *, const Trk::PseudoMeasurementOnTrack * > pseudoMeasurements(const Trk::Surface *, const Trk::Surface *, int bec)
Definition: TRT_Trajectory_xk.cxx:611
lumiFormat.i
int i
Definition: lumiFormat.py:85
InDet::TRT_Trajectory_xk::stabline
void stabline(int, double)
Definition: TRT_Trajectory_xk.cxx:804
InDet::TRT_Trajectory_xk::dump
std::ostream & dump(std::ostream &out) const
Definition: TRT_Trajectory_xk.cxx:1084
InDet::TRT_Trajectory_xk::TRT_Trajectory_xk
TRT_Trajectory_xk()=default
InDet::TRT_Trajectory_xk::trackParametersEstimationForFirstPoint
bool trackParametersEstimationForFirstPoint()
Definition: TRT_Trajectory_xk.cxx:715
InDet::TRT_Trajectory_xk::TRT_Trajectory_xk
TRT_Trajectory_xk(const TRT_Trajectory_xk &)=default
PseudoMeasurementOnTrack.h
InDet::TRT_Trajectory_xk::convert
Trk::TrackSegment * convert()
Definition: TRT_Trajectory_xk.cxx:539
InDet::TRT_Trajectory_xk::nElements
const int & nElements() const
Definition: TRT_Trajectory_xk.h:62
InDet::TRT_Trajectory_xk::trackFindingWithDriftTimeBL
void trackFindingWithDriftTimeBL(double)
Definition: TRT_Trajectory_xk.cxx:329
InDet::TRT_Trajectory_xk::m_lastTrajectory
int m_lastTrajectory
Definition: TRT_Trajectory_xk.h:145
InDet::TRT_Trajectory_xk::m_fieldprop
Trk::MagneticFieldProperties m_fieldprop
Definition: TRT_Trajectory_xk.h:162
InDet::TRT_Trajectory_xk::m_nElements
int m_nElements
Definition: TRT_Trajectory_xk.h:153
InDet::TRT_Trajectory_xk::m_ndf
int m_ndf
Definition: TRT_Trajectory_xk.h:154
InDet::TRT_Trajectory_xk::m_ntclusters
int m_ntclusters
Definition: TRT_Trajectory_xk.h:147
InDet::TRT_Trajectory_xk::m_V
double m_V[5000]
Definition: TRT_Trajectory_xk.h:172
InDet::TRT_Trajectory_xk::m_nclusters
int m_nclusters
Definition: TRT_Trajectory_xk.h:146
InDet::TRT_Trajectory_xk::nclusters
const int & nclusters() const
Definition: TRT_Trajectory_xk.h:60
InDet::TRT_Trajectory_xk::searchStartStop
bool searchStartStop()
Definition: TRT_Trajectory_xk.cxx:394
InDet::TRT_DriftCircleContainer
Trk::PrepRawDataContainer< TRT_DriftCircleCollection > TRT_DriftCircleContainer
Definition: TRT_DriftCircleContainer.h:27
InDet::TRT_Trajectory_xk::initiateForTRTSeed
void initiateForTRTSeed(std::vector< std::pair< Amg::Vector3D, double > > &, const std::vector< const InDetDD::TRT_BaseElement * > &, const TRT_DriftCircleContainer *&, const Trk::PatternTrackParameters &)
Definition: TRT_Trajectory_xk.cxx:134
InDet::TRT_Trajectory_xk::buildTrajectoryForTRTSeed
void buildTrajectoryForTRTSeed(bool)
Definition: TRT_Trajectory_xk.cxx:468
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
InDet::samiStruct::m_F
double m_F
Definition: TRT_Trajectory_xk.h:35
InDet::TRT_Trajectory_xk::trackFindingWithDriftTime
void trackFindingWithDriftTime(double)
Definition: TRT_Trajectory_xk.cxx:238
InDet::TRT_TrajectoryElement_xk::isBarrel
const bool & isBarrel() const
Definition: TRT_TrajectoryElement_xk.h:49
InDet::TRT_Trajectory_xk::m_MA
int m_MA[5000]
Definition: TRT_Trajectory_xk.h:170
InDet::TRT_Trajectory_xk::m_nholes
int m_nholes
Definition: TRT_Trajectory_xk.h:150
InDet::TRT_Trajectory_xk::operator=
TRT_Trajectory_xk & operator=(const TRT_Trajectory_xk &)
Definition: TRT_Trajectory_xk.h:201
InDet::TRT_Trajectory_xk::m_firstRoad
int m_firstRoad
Definition: TRT_Trajectory_xk.h:142
InDet::TRT_Trajectory_xk::dholes
const int & dholes() const
Definition: TRT_Trajectory_xk.h:57
InDet::TRT_Trajectory_xk::m_dholes
int m_dholes
Definition: TRT_Trajectory_xk.h:151
InDet::TRT_Trajectory_xk::naElements
const int & naElements() const
Definition: TRT_Trajectory_xk.h:63
TRT_ID
Definition: TRT_ID.h:84
InDet::TRT_Trajectory_xk::isFirstElementBarrel
bool isFirstElementBarrel()
Definition: TRT_Trajectory_xk.h:231
InDet::TRT_Trajectory_xk::erase
void erase(int)
Trk::PatternTrackParameters
Definition: PatternTrackParameters.h:32
InDet::TRT_Trajectory_xk::radiusCorrection
void radiusCorrection()
Definition: TRT_Trajectory_xk.cxx:497
InDet::TRT_Trajectory_xk::nholes
const int & nholes() const
Definition: TRT_Trajectory_xk.h:56
InDet::TRT_Trajectory_xk::m_A
double m_A
Definition: TRT_Trajectory_xk.h:174
InDet::TRT_Trajectory_xk::trackParametersEstimationForPerigeeWithVertexConstraint
bool trackParametersEstimationForPerigeeWithVertexConstraint()
Definition: TRT_Trajectory_xk.cxx:743
InDet::TRT_Trajectory_xk::ntclusters
const int & ntclusters() const
Definition: TRT_Trajectory_xk.h:61
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
InDet::TRT_Trajectory_xk::m_B
double m_B
Definition: TRT_Trajectory_xk.h:175
InDet::TRT_Trajectory_xk::m_xi2
double m_xi2
Definition: TRT_Trajectory_xk.h:155
InDet::TRT_Trajectory_xk::updateTrackParameters
void updateTrackParameters(Trk::PatternTrackParameters &)
Definition: TRT_Trajectory_xk.cxx:1013
Trk::IRIO_OnTrackCreator
Interface class for transforming Trk::PrepRawData to Trk::RIO_OnTrack using a local track hypothesis.
Definition: IRIO_OnTrackCreator.h:33
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
InDet::TRT_TrajectoryElement_xk
Definition: TRT_TrajectoryElement_xk.h:36
TRT_TrajectoryElement_xk.h
InDet::TRT_Trajectory_xk::set
void set(const TRT_ID *, const Trk::IPatternParametersPropagator *, const Trk::IPatternParametersUpdator *, const Trk::IRIO_OnTrackCreator *, const Trk::IRIO_OnTrackCreator *, double, double, double, double, double)
Definition: TRT_Trajectory_xk.cxx:19
InDet::TRT_Trajectory_xk::m_updatortool
const Trk::IPatternParametersUpdator * m_updatortool
Definition: TRT_Trajectory_xk.h:164
InDet::samiStruct::m_NA
int m_NA
Definition: TRT_Trajectory_xk.h:36
InDet::TRT_Trajectory_xk::m_nholese
int m_nholese
Definition: TRT_Trajectory_xk.h:149
InDet::TRT_Trajectory_xk::m_SS
samiStruct m_SS[5000]
Definition: TRT_Trajectory_xk.h:173