ATLAS Offline Software
TRT_Trajectory_xk.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 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 
24 namespace Trk {
25  class Track;
26 }
27 
28 namespace InDet{
29 
30  class samiStruct{
31  public:
32  double m_F;
33  int m_NA;
34  };
35 
37  {
39  // Public methods:
41 
42  public:
43 
48 
50  // Main methods
52 
53  const int& nholes () const {return m_nholes ;}
54  const int& dholes () const {return m_dholes ;}
55  const int& nholesb () const {return m_nholesb ;}
56  const int& nholese () const {return m_nholese ;}
57  const int& nclusters () const {return m_nclusters ;}
58  const int& ntclusters () const {return m_ntclusters;}
59  const int& nElements () const {return m_nElements ;}
60  const int& naElements () const {return m_naElements;}
61 
62  bool isFirstElementBarrel();
63  bool isLastElementBarrel ();
64 
65  void set(const TRT_ID *,
70  double,
71  double,
72  double,
73  double,
74  double);
75 
77 
79  std::vector<std::pair<Amg::Vector3D, double> >&,
80  const std::vector<const InDetDD::TRT_BaseElement*>&,
82 
83  void initiateForTRTSeed(
84  std::vector<std::pair<Amg::Vector3D, double> >&,
85  const std::vector<const InDetDD::TRT_BaseElement*>&,
87 
88  void convert(std::vector<const Trk::MeasurementBase*>&);
90  Trk::Track * convert(const Trk::Track&);
92 
94  // Track finding with and without drift time information
96 
97  void trackFindingWithDriftTime (double);
98  void trackFindingWithoutDriftTime (double);
99  void trackFindingWithDriftTimeBL (double);
100  void trackFindingWithoutDriftTimeBL (double);
102  void buildTrajectoryForTRTSeed (bool);
103 
105  // Search start and stop trajectory for endcap TRT
107 
108  bool searchStartStop();
109 
111  // Trajectory correction for new polar angle
113 
114  void radiusCorrection();
115 
117  // Backward kalman fitter
119 
120  bool fitter();
121 
123  // Track parameters estimators
125 
130 
131  std::ostream& dump(std::ostream& out) const;
132 
133  protected:
134 
136  // Protected Data
138 
139  int m_firstRoad ; //
140  int m_lastRoad ; //
143  int m_nclusters ; //
144  int m_ntclusters ; //
145  int m_nholesb ; //
146  int m_nholese ; //
147  int m_nholes ; //
148  int m_dholes ; //
149  int m_naElements ; //
150  int m_nElements ; // nindex
151  int m_ndf ; //
152  double m_xi2 ; //
153  double m_roadwidth2 ; // road width**2
154  double m_zVertexWidth ; // z-vertex half width
155  double m_impact ; // max impact parameters
156  double m_scale_error ; // scale factor for hit uncertainty
162 
164  // Work arrey for stab line search
166 
167  int m_MA[5000];
168  double m_U [5000];
169  double m_V [5000];
171  double m_A;
172  double m_B;
173 
175  // min pT cut for TRT Segment trajectory
177 
178  double m_minTRTSegmentpT; //min pT check for initial segment
179 
181  // Methods
183 
184  void stabline(int,double);
185  static void sort (samiStruct*,int);
186  void erase (int);
187  std::pair<const Trk::PseudoMeasurementOnTrack*,const Trk::PseudoMeasurementOnTrack*>
188  pseudoMeasurements(const Trk::Surface*,const Trk::Surface*,int bec);
189  };
190 
192  // Inline methods
194 
196  {
197  m_nElements = 0;
198  m_proptool = 0;
199  m_updatortool = 0;
200  m_scale_error = 0.;
201  m_firstRoad = 0 ;
202  m_lastRoad = 0 ;
203  m_firstTrajectory = 0 ;
204  m_lastTrajectory = 0 ;
205  m_nclusters = 0 ;
206  m_ntclusters = 0 ;
207  m_nholesb = 0 ;
208  m_nholese = 0 ;
209  m_nholes = 0 ;
210  m_dholes = 0 ;
211  m_naElements = 0 ;
212  m_ndf = 0 ;
213  m_xi2 = 0.;
214  m_roadwidth2 = 0.;
215  m_zVertexWidth = 0.;
216  m_impact = 0.;
217  m_A = 0.;
218  m_B = 0.;
219  for(int i=0; i!=5000; ++i) {m_SS[i].m_F = 0.; m_SS[i].m_NA = 0; m_U[i]=0.; m_V[i]=0.;}
220  }
221 
223  {
224  (*this) = T;
225  }
226 
227  // cppcheck-suppress operatorEqVarError; scratch arrays not copied.
228  inline TRT_Trajectory_xk& TRT_Trajectory_xk::operator =
229  (const TRT_Trajectory_xk& T)
230  {
231  m_firstRoad = T.m_firstRoad ;
232  m_lastRoad = T.m_lastRoad ;
233  m_firstTrajectory = T.m_firstTrajectory;
234  m_lastTrajectory = T.m_lastTrajectory ;
235  m_nclusters = T.m_nclusters ;
236  m_ntclusters = T.m_ntclusters ;
237  m_nholesb = T.m_nholesb ;
238  m_nholese = T.m_nholese ;
239  m_nholes = T.m_nholes ;
240  m_dholes = T.m_dholes ;
241  m_naElements = T.m_naElements ;
242  m_nElements = T.m_nElements ;
243  m_roadwidth2 = T.m_roadwidth2 ;
244  m_parameters = T.m_parameters ;
245  m_fieldprop = T.m_fieldprop ;
246  m_proptool = T.m_proptool ;
247  m_updatortool = T.m_updatortool ;
248  m_ndf = T.m_ndf ;
249  m_xi2 = T.m_xi2 ;
250  m_zVertexWidth = T.m_zVertexWidth ;
251  m_impact = T.m_impact ;
252  m_scale_error = T.m_scale_error ;
253  for(int i=0; i!=400; ++i) m_elements[i]=T.m_elements[i];
254  return(*this);
255  }
256 
258 
259  std::ostream& operator << (std::ostream&,const TRT_Trajectory_xk&);
260 
262  {
264  }
266  {
268  }
269 
270 } // end of name space
271 
272 #endif // TRT_Trajectory_xk
InDet::TRT_Trajectory_xk::m_impact
double m_impact
Definition: TRT_Trajectory_xk.h:155
InDet::TRT_Trajectory_xk::nholese
const int & nholese() const
Definition: TRT_Trajectory_xk.h:56
InDet::operator<<
MsgStream & operator<<(MsgStream &, const GNNTrackReaderTool &)
InDet::TRT_Trajectory_xk::m_roadwidth2
double m_roadwidth2
Definition: TRT_Trajectory_xk.h:153
InDet::TRT_Trajectory_xk::m_U
double m_U[5000]
Definition: TRT_Trajectory_xk.h:168
InDet::TRT_Trajectory_xk
Definition: TRT_Trajectory_xk.h:37
InDet::TRT_Trajectory_xk::m_minTRTSegmentpT
double m_minTRTSegmentpT
Definition: TRT_Trajectory_xk.h:178
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
DUMMY Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
InDet::TRT_Trajectory_xk::m_lastRoad
int m_lastRoad
Definition: TRT_Trajectory_xk.h:140
InDet::TRT_Trajectory_xk::m_zVertexWidth
double m_zVertexWidth
Definition: TRT_Trajectory_xk.h:154
InDet::TRT_Trajectory_xk::m_firstTrajectory
int m_firstTrajectory
Definition: TRT_Trajectory_xk.h:141
InDet::samiStruct
Definition: TRT_Trajectory_xk.h:30
InDet::TRT_Trajectory_xk::nholesb
const int & nholesb() const
Definition: TRT_Trajectory_xk.h:55
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
InDet::TRT_Trajectory_xk::m_nholesb
int m_nholesb
Definition: TRT_Trajectory_xk.h:145
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:156
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:265
InDet::TRT_Trajectory_xk::m_parameters
Trk::PatternTrackParameters m_parameters
Definition: TRT_Trajectory_xk.h:157
InDet::TRT_Trajectory_xk::m_naElements
int m_naElements
Definition: TRT_Trajectory_xk.h:149
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:160
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:158
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:92
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::trackParametersEstimationForFirstPoint
bool trackParametersEstimationForFirstPoint()
Definition: TRT_Trajectory_xk.cxx:715
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:59
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:142
InDet::TRT_Trajectory_xk::m_fieldprop
Trk::MagneticFieldProperties m_fieldprop
Definition: TRT_Trajectory_xk.h:159
InDet::TRT_Trajectory_xk::m_nElements
int m_nElements
Definition: TRT_Trajectory_xk.h:150
InDet::TRT_Trajectory_xk::m_ndf
int m_ndf
Definition: TRT_Trajectory_xk.h:151
InDet::TRT_Trajectory_xk::m_ntclusters
int m_ntclusters
Definition: TRT_Trajectory_xk.h:144
InDet::TRT_Trajectory_xk::m_V
double m_V[5000]
Definition: TRT_Trajectory_xk.h:169
InDet::TRT_Trajectory_xk::m_nclusters
int m_nclusters
Definition: TRT_Trajectory_xk.h:143
InDet::TRT_Trajectory_xk::nclusters
const int & nclusters() const
Definition: TRT_Trajectory_xk.h:57
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:32
InDet::TRT_Trajectory_xk::TRT_Trajectory_xk
TRT_Trajectory_xk()
Definition: TRT_Trajectory_xk.h:195
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:167
InDet::TRT_Trajectory_xk::m_nholes
int m_nholes
Definition: TRT_Trajectory_xk.h:147
InDet::TRT_Trajectory_xk::~TRT_Trajectory_xk
~TRT_Trajectory_xk()
Definition: TRT_Trajectory_xk.h:257
InDet::TRT_Trajectory_xk::operator=
TRT_Trajectory_xk & operator=(const TRT_Trajectory_xk &)
Definition: TRT_Trajectory_xk.h:229
InDet::TRT_Trajectory_xk::m_firstRoad
int m_firstRoad
Definition: TRT_Trajectory_xk.h:139
InDet::TRT_Trajectory_xk::dholes
const int & dholes() const
Definition: TRT_Trajectory_xk.h:54
InDet::TRT_Trajectory_xk::m_dholes
int m_dholes
Definition: TRT_Trajectory_xk.h:148
InDet::TRT_Trajectory_xk::naElements
const int & naElements() const
Definition: TRT_Trajectory_xk.h:60
TRT_ID
Definition: TRT_ID.h:84
InDet::TRT_Trajectory_xk::isFirstElementBarrel
bool isFirstElementBarrel()
Definition: TRT_Trajectory_xk.h:261
InDet::TRT_Trajectory_xk::erase
void erase(int)
Trk::PatternTrackParameters
Definition: PatternTrackParameters.h:38
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:53
InDet::TRT_Trajectory_xk::m_A
double m_A
Definition: TRT_Trajectory_xk.h:171
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:58
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
InDet::TRT_Trajectory_xk::m_B
double m_B
Definition: TRT_Trajectory_xk.h:172
InDet::TRT_Trajectory_xk::m_xi2
double m_xi2
Definition: TRT_Trajectory_xk.h:152
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:32
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:161
InDet::samiStruct::m_NA
int m_NA
Definition: TRT_Trajectory_xk.h:33
InDet::TRT_Trajectory_xk::m_nholese
int m_nholese
Definition: TRT_Trajectory_xk.h:146
InDet::TRT_Trajectory_xk::m_SS
samiStruct m_SS[5000]
Definition: TRT_Trajectory_xk.h:170