ATLAS Offline Software
Loading...
Searching...
No Matches
TRT_TrajectoryElement_xk.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
6// Header file for class TRT_TrajectoryElement_xk
8// (c) ATLAS Detector software
10// Class for trajector element in TRT
12// Version 1.0 3/10/2004 I.Gavrilenko
14
15#ifndef TRT_TrajectoryElement_xk_H
16#define TRT_TrajectoryElement_xk_H
17
26// MagField cache
29#include <memory>
30
31class TRT_ID;
32
33namespace InDet{
34
36 {
38 // Public methods:
40
41 public:
42
47
48 const bool & isCluster() const {return m_isCluster ;}
49 const bool & isBarrel () const {return m_barrel ;}
50 const int & status () const {return m_status ;}
51 const int & nlinks () const {return m_nlinks ;}
52 const int & bestlink () const {return m_bestlink ;}
53 const double& radius () const {return m_radius ;}
54 const double& z () const {return m_z ;}
55 const double& radiusMin() const {return m_radiusMin ;}
56 const double& radiusMax() const {return m_radiusMax ;}
57 const double& dpositive() const {return m_dpositive ;}
58 const double& dnegative() const {return m_dnegative ;}
60 const TRT_ExtensionDriftCircleLink_xk& link (int i) const {return m_link[i] ;}
61
63 // Main methods
65 void set
66 (const TRT_ID *,
71 double );
72
73 void set
75
77 InDet::TRT_DriftCircleCollection::const_iterator&,
78 InDet::TRT_DriftCircleCollection::const_iterator&,
79 std::pair<Amg::Vector3D,double>&, const double*,double);
80
82 InDet::TRT_DriftCircleCollection::const_iterator&,
83 InDet::TRT_DriftCircleCollection::const_iterator&,
84 std::pair<Amg::Vector3D,double>&, const double*,double);
85
86 void initiateLinksForPrecisionSeed(InDet::TRT_DriftCircleCollection::const_iterator&,
87 InDet::TRT_DriftCircleCollection::const_iterator&,
88 std::pair<Amg::Vector3D,double>&,
89 const double*,double);
90
91 void initiateLinksForTRTSeed (InDet::TRT_DriftCircleCollection::const_iterator&,
92 InDet::TRT_DriftCircleCollection::const_iterator&,
93 std::pair<Amg::Vector3D,double>&,
94 const double*,double);
95
96 bool boundaryTest(double,std::pair<Amg::Vector3D,double>&);
97
98 bool buildForPrecisionSeed(double,double,bool&,bool&);
99 bool buildForTRTSeed (double,double,bool&,bool&);
100
101 double findCloseLink(double,double);
102 void radiusCorrection(const double&);
104 std::unique_ptr<Trk::RIO_OnTrack> rioOnTrackSimple() const;
105
107
110
113
115 (TRT_TrajectoryElement_xk*,Amg::Vector3D&,Amg::Vector3D&,double,double,double*) const;
116
117 bool addCluster
119 bool propagate
121
122 protected:
123
125 // Protected Data
127
128 bool m_barrel ;
133 double m_z ;
134 double m_zMin ;
135 double m_zMax ;
136 double m_radius ;
137 double m_radiusMin ;
138 double m_radiusMax ;
140 double m_dpositive ;
141 double m_dnegative ;
144 const TRT_ID * m_trtid ;
151
153 // Comments
154 // m_status = -1 no crossed straw
155 // m_status = 0 crossed straw without signal (hole)
156 // m_status = 1 crossed straw with signal but without drift time
157 // m_status = 2 crossed straw with signal and with drift time
159
161 // Methods
163
164 };
165
167 // Inline methods
169
171 {
172 m_isCluster = false;
173 m_status =-1 ;
174 m_riomakerD = 0 ;
175 m_riomakerN = 0 ;
176 m_proptool = 0 ;
177 m_updatortool = 0 ;
178 m_trtid = 0 ;
179 m_scale_error = 2. ;
180 m_barrel = false;
181 m_bestlink = 0 ;
182 m_nlinks = 0 ;
183 m_z = 0. ;
184 m_zMin = 0. ;
185 m_zMax = 0. ;
186 m_radius = 0. ;
187 m_radiusMin = 0. ;
188 m_radiusMax = 0. ;
189 m_dpositive = 0. ;
190 m_dnegative = 0. ;
191 m_detelement = 0 ;
192 }
193
195 (const TRT_TrajectoryElement_xk& E)
196 {
197 (*this) = E;
198 }
199
200 inline TRT_TrajectoryElement_xk& TRT_TrajectoryElement_xk::operator =
201 (const TRT_TrajectoryElement_xk& E)
202 {
203 m_status = E.m_status ;
204 m_isCluster = E.m_isCluster ;
205 m_barrel = E.m_barrel ;
206 m_bestlink = E.m_bestlink ;
207 m_nlinks = E.m_nlinks ;
208 m_detelement = E.m_detelement ;
209 m_trtid = E.m_trtid ;
210 m_proptool = E.m_proptool ;
211 m_updatortool = E.m_updatortool;
212 m_fieldprop = E.m_fieldprop ;
213 m_riomakerD = E.m_riomakerD ;
214 m_riomakerN = E.m_riomakerN ;
215 m_z = E.m_z ;
216 m_zMin = E.m_zMin ;
217 m_zMax = E.m_zMax ;
218 m_radius = E.m_radius ;
219 m_radiusMin = E.m_radiusMin ;
220 m_radiusMax = E.m_radiusMax ;
221 m_scale_error = E.m_scale_error;
222 m_dpositive = E.m_dpositive ;
223 m_dnegative = E.m_dnegative ;
224 for(int i=0; i!=m_nlinks; ++i) {m_link[i]=E.m_link[i];}
225 return(*this);
226 }
227
229
230 inline void TRT_TrajectoryElement_xk::radiusCorrection(const double& dr)
231 {
232 if(m_bestlink >= 0) m_link[m_bestlink].radiusCorrection(dr);
233 }
234
235} // end of name space
236
237#endif // TRT_TrajectoryElement_xk
Virtual base class of TRT readout elements.
const InDetDD::TRT_BaseElement * detElement() const
bool trackParametersEstimation(TRT_TrajectoryElement_xk *, TRT_TrajectoryElement_xk *, Trk::PatternTrackParameters &, double)
bool addCluster(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, double &)
void polarAngleEstimation(TRT_TrajectoryElement_xk *, Amg::Vector3D &, Amg::Vector3D &, double, double, double *) const
const TRT_ExtensionDriftCircleLink_xk & link(int i) const
TRT_ExtensionDriftCircleLink_xk m_link[24]
void set(const TRT_ID *, const Trk::IPatternParametersPropagator *, const Trk::IPatternParametersUpdator *, const Trk::IRIO_OnTrackCreator *, const Trk::IRIO_OnTrackCreator *, double)
bool buildForTRTSeed(double, double, bool &, bool &)
void initiateLinksForPrecisionSeed(InDet::TRT_DriftCircleCollection::const_iterator &, InDet::TRT_DriftCircleCollection::const_iterator &, std::pair< Amg::Vector3D, double > &, const double *, double)
const Trk::IPatternParametersPropagator * m_proptool
bool boundaryTest(double, std::pair< Amg::Vector3D, double > &)
const Trk::IRIO_OnTrackCreator * m_riomakerD
bool trajectoryGlobalPosition(Amg::Vector3D &, double &)
bool initiateForTRTSeed(bool, const InDetDD::TRT_BaseElement *, InDet::TRT_DriftCircleCollection::const_iterator &, InDet::TRT_DriftCircleCollection::const_iterator &, std::pair< Amg::Vector3D, double > &, const double *, double)
bool propagate(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &)
bool buildForPrecisionSeed(double, double, bool &, bool &)
const Trk::IPatternParametersUpdator * m_updatortool
std::unique_ptr< Trk::RIO_OnTrack > rioOnTrackSimple() const
const Trk::IRIO_OnTrackCreator * m_riomakerN
Trk::MagneticFieldProperties m_fieldprop
TRT_TrajectoryElement_xk & operator=(const TRT_TrajectoryElement_xk &)
const InDetDD::TRT_BaseElement * m_detelement
bool initiateForPrecisionSeed(bool, const InDetDD::TRT_BaseElement *, InDet::TRT_DriftCircleCollection::const_iterator &, InDet::TRT_DriftCircleCollection::const_iterator &, std::pair< Amg::Vector3D, double > &, const double *, double)
void initiateLinksForTRTSeed(InDet::TRT_DriftCircleCollection::const_iterator &, InDet::TRT_DriftCircleCollection::const_iterator &, std::pair< Amg::Vector3D, double > &, const double *, double)
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
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
Class to handle RIO On Tracks ROT) for InDet and Muons, it inherits from the common MeasurementBase.
Definition RIO_OnTrack.h:70
Eigen::Matrix< double, 3, 1 > Vector3D
Primary Vertex Finder.