ATLAS Offline Software
Public Member Functions | Protected Attributes | List of all members
InDet::TRT_TrajectoryElement_xk Class Reference

#include <TRT_TrajectoryElement_xk.h>

Collaboration diagram for InDet::TRT_TrajectoryElement_xk:

Public Member Functions

 TRT_TrajectoryElement_xk ()
 
 TRT_TrajectoryElement_xk (const TRT_TrajectoryElement_xk &)
 
 ~TRT_TrajectoryElement_xk ()
 
TRT_TrajectoryElement_xkoperator= (const TRT_TrajectoryElement_xk &)
 
const bool & isCluster () const
 
const bool & isBarrel () const
 
const int & status () const
 
const int & nlinks () const
 
const int & bestlink () const
 
const double & radius () const
 
const double & z () const
 
const double & radiusMin () const
 
const double & radiusMax () const
 
const double & dpositive () const
 
const double & dnegative () const
 
const InDetDD::TRT_BaseElementdetElement () const
 
const TRT_ExtensionDriftCircleLink_xklink (int i) const
 
void set (const TRT_ID *, const Trk::IPatternParametersPropagator *, const Trk::IPatternParametersUpdator *, const Trk::IRIO_OnTrackCreator *, const Trk::IRIO_OnTrackCreator *, double)
 
void set (const Trk::MagneticFieldProperties &, const AtlasFieldCacheCondObj *)
 
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)
 
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)
 
void initiateLinksForPrecisionSeed (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)
 
bool boundaryTest (double, std::pair< Amg::Vector3D, double > &)
 
bool buildForPrecisionSeed (double, double, bool &, bool &)
 
bool buildForTRTSeed (double, double, bool &, bool &)
 
double findCloseLink (double, double)
 
void radiusCorrection (const double &)
 
const Trk::RIO_OnTrackrioOnTrack ()
 
std::unique_ptr< Trk::RIO_OnTrackrioOnTrackSimple () const
 
bool trajectoryGlobalPosition (Amg::Vector3D &, double &)
 
bool trackParametersEstimation (TRT_TrajectoryElement_xk *, TRT_TrajectoryElement_xk *, Trk::PatternTrackParameters &, double)
 
bool trackParametersEstimation (TRT_TrajectoryElement_xk *, Trk::PatternTrackParameters &, double)
 
void polarAngleEstimation (TRT_TrajectoryElement_xk *, Amg::Vector3D &, Amg::Vector3D &, double, double, double *) const
 
bool addCluster (Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, double &)
 
bool propagate (Trk::PatternTrackParameters &, Trk::PatternTrackParameters &)
 

Protected Attributes

bool m_barrel
 
bool m_isCluster
 
int m_status
 
int m_bestlink
 
int m_nlinks
 
double m_z
 
double m_zMin
 
double m_zMax
 
double m_radius
 
double m_radiusMin
 
double m_radiusMax
 
double m_scale_error
 
double m_dpositive
 
double m_dnegative
 
TRT_ExtensionDriftCircleLink_xk m_link [24]
 
const InDetDD::TRT_BaseElementm_detelement
 
const TRT_IDm_trtid
 
const Trk::IPatternParametersPropagatorm_proptool
 
const Trk::IPatternParametersUpdatorm_updatortool
 
const Trk::IRIO_OnTrackCreatorm_riomakerD
 
const Trk::IRIO_OnTrackCreatorm_riomakerN
 
Trk::MagneticFieldProperties m_fieldprop
 
MagField::AtlasFieldCache m_fieldCache
 

Detailed Description

Definition at line 35 of file TRT_TrajectoryElement_xk.h.

Constructor & Destructor Documentation

◆ TRT_TrajectoryElement_xk() [1/2]

InDet::TRT_TrajectoryElement_xk::TRT_TrajectoryElement_xk ( )
inline

Definition at line 170 of file TRT_TrajectoryElement_xk.h.

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  }

◆ TRT_TrajectoryElement_xk() [2/2]

InDet::TRT_TrajectoryElement_xk::TRT_TrajectoryElement_xk ( const TRT_TrajectoryElement_xk E)
inline

Definition at line 194 of file TRT_TrajectoryElement_xk.h.

196  {
197  (*this) = E;
198  }

◆ ~TRT_TrajectoryElement_xk()

InDet::TRT_TrajectoryElement_xk::~TRT_TrajectoryElement_xk ( )
inline

Definition at line 228 of file TRT_TrajectoryElement_xk.h.

228 {}

Member Function Documentation

◆ addCluster()

bool InDet::TRT_TrajectoryElement_xk::addCluster ( Trk::PatternTrackParameters Ta,
Trk::PatternTrackParameters Tb,
double &  Xi2 
)

Definition at line 614 of file TRT_TrajectoryElement_xk.cxx.

616 {
617 
618  if(m_status <=0) return false;
619 
620  int n;
621  if(m_status==2) {
622 
623  const TRT_DriftCircle* DS = m_link[m_bestlink].cluster();
624  double dr = DS->localPosition().x(); if(m_link[m_bestlink].impact() < 0.) dr=-dr;
625 
628 
630  bool Q = m_updatortool->addToState(Ta,lp,DS->localCovariance(),Tb,Xi2,n);
631  if(Q && Xi2 < 15.) return Q;
632  m_status = 1; Ta = To;
633  }
634 
637 
638  AmgSymMatrix(1) cov; cov<<1.33333;
639  return m_updatortool->addToState(Ta,lp,cov,Tb,Xi2,n);
640 }

◆ bestlink()

const int& InDet::TRT_TrajectoryElement_xk::bestlink ( ) const
inline

Definition at line 52 of file TRT_TrajectoryElement_xk.h.

52 {return m_bestlink ;}

◆ boundaryTest()

bool InDet::TRT_TrajectoryElement_xk::boundaryTest ( double  dw,
std::pair< Amg::Vector3D, double > &  gp 
)

Definition at line 90 of file TRT_TrajectoryElement_xk.cxx.

92 {
93  if (!m_detelement){
94  return false;
95  }
96 
97  double x = gp.first.x();
98  double y = gp.first.y();
99  double z = gp.first.z();
100 
101  const Amg::Vector3D& C = m_detelement->center();
102 
103  // Test track position
104  //
105  const Trk::SurfaceBounds& surfBounds = m_detelement->bounds();
106  if (surfBounds.type() == Trk::SurfaceBounds::Rectangle) {
107  const Trk::RectangleBounds* rb =
108  static_cast<const Trk::RectangleBounds*>(&surfBounds);
109  // Barrel
110  //
111  m_barrel = true;
112  m_z = z;
113  m_zMin = C.z() - rb->halflengthY();
114  m_zMax = C.z() + rb->halflengthY();
115  double d = std::abs(z - C.z());
116  if (d > rb->halflengthY() + dw) {
117  return false;
118  }
119  } else if (surfBounds.type() == Trk::SurfaceBounds::Disc) {
120  const Trk::DiscBounds* db =
121  static_cast<const Trk::DiscBounds*>(&surfBounds);
122  // Endcap
123  //
124  m_barrel = false;
125  m_radius = std::sqrt(x * x + y * y);
126  m_z = z;
127  m_radiusMin = db->rMin();
128  m_radiusMax = db->rMax();
129 
130  double d = m_radius - m_radiusMin;
131  if (d < -dw) {
132  return false;
133  }
134  d = m_radiusMax - m_radius;
135  if (d < -dw) {
136  return false;
137  }
138  }
139  return true;
140 }

◆ buildForPrecisionSeed()

bool InDet::TRT_TrajectoryElement_xk::buildForPrecisionSeed ( double  a,
double  b,
bool &  useDriftTime,
bool &  hole 
)

Definition at line 455 of file TRT_TrajectoryElement_xk.cxx.

457 {
458 
459  m_bestlink = -1;
460  m_status = -1;
461  hole = false; if(!m_nlinks) return false;
462 
463  for(int l=0; l!=m_nlinks; ++l) {
464 
465  double v = (a*m_link[l].way()+b)*m_link[l].way();
466  double d = m_link[l].distance()-v;
467  double ad = std::abs(d);
468 
469  if(ad > 2.05) continue;
470 
471  if(!m_link[l].cluster()) {
472 
473  if(ad < 1.85) {
475  }
476  return false;
477  }
478 
480  if(!useDriftTime) return true;
481 
483  double e = m_scale_error*std::sqrt(m_link[l].cluster()->localCovariance()(0,0));
484 
485  if(r > 2.05) r = 2.05;
486  double r2 = r+e; if(r2 > 2.05) r2 = 2.05;
487  double r1 = r-e; if(r1 >= r2) r1 = r2-2.*e;
488 
489  if(ad < r1 || ad > r2) useDriftTime = false; else m_status = 2;
490 
491  return true;
492  }
493  return false;
494 }

◆ buildForTRTSeed()

bool InDet::TRT_TrajectoryElement_xk::buildForTRTSeed ( double  a,
double  b,
bool &  useDriftTime,
bool &  hole 
)

Definition at line 501 of file TRT_TrajectoryElement_xk.cxx.

503 {
504 
505  m_status = -1;
506  hole = false; if( m_bestlink < 0) return false;
507  int l = m_bestlink;
508 
509  double v = (a*m_link[l].way()+b)*m_link[l].way();
510  double d = m_link[l].distance()-v;
511  double ad = std::abs(d);
512 
513  if(ad > 2.05) return false;
514 
515  if(!m_link[l].cluster()) {
516 
517  if(ad < 1.85) {
519  }
520  return false;
521  }
523  if(!useDriftTime) return true;
524 
526  double e = m_scale_error*std::sqrt(m_link[l].cluster()->localCovariance()(0,0));
527 
528  if(r > 2.05) r = 2.05;
529  double r2 = r+e; if(r2 > 2.05) r2 = 2.05;
530  double r1 = r-e; if(r1 >= r2) r1 = r2-2.*e;
531  if(ad < r1 || ad > r2) useDriftTime = false; else m_status = 2;
532  return true;
533 }

◆ detElement()

const InDetDD::TRT_BaseElement* InDet::TRT_TrajectoryElement_xk::detElement ( ) const
inline

Definition at line 59 of file TRT_TrajectoryElement_xk.h.

59 {return m_detelement;}

◆ dnegative()

const double& InDet::TRT_TrajectoryElement_xk::dnegative ( ) const
inline

Definition at line 58 of file TRT_TrajectoryElement_xk.h.

58 {return m_dnegative ;}

◆ dpositive()

const double& InDet::TRT_TrajectoryElement_xk::dpositive ( ) const
inline

Definition at line 57 of file TRT_TrajectoryElement_xk.h.

57 {return m_dpositive ;}

◆ findCloseLink()

double InDet::TRT_TrajectoryElement_xk::findCloseLink ( double  a,
double  b 
)

Definition at line 539 of file TRT_TrajectoryElement_xk.cxx.

541 {
542  m_bestlink = -1;
543  double dm = 10000.;
544 
545  for(int l=0; l < m_nlinks; ++l) {
546 
547  double v = (a*m_link[l].way()+b)*m_link[l].way();
548  double d = std::abs(m_link[l].distance()-v);
549 
550  if(d < dm) {dm=d; m_bestlink=l;}
551  }
552  return dm;
553 }

◆ initiateForPrecisionSeed()

bool InDet::TRT_TrajectoryElement_xk::initiateForPrecisionSeed ( bool  st,
const InDetDD::TRT_BaseElement de,
InDet::TRT_DriftCircleCollection::const_iterator &  sb,
InDet::TRT_DriftCircleCollection::const_iterator &  se,
std::pair< Amg::Vector3D, double > &  gp,
const double *  dir,
double  width2 
)

Definition at line 41 of file TRT_TrajectoryElement_xk.cxx.

47 {
48  m_isCluster = st;
49  m_detelement = de;
50 
51  // Test boundary active region of detector elements
52  //
53  if(!boundaryTest(3.,gp)) return false;
54 
55  // Trajectory element links production
56  //
58  return true;
59 }

◆ initiateForTRTSeed()

bool InDet::TRT_TrajectoryElement_xk::initiateForTRTSeed ( bool  st,
const InDetDD::TRT_BaseElement de,
InDet::TRT_DriftCircleCollection::const_iterator &  sb,
InDet::TRT_DriftCircleCollection::const_iterator &  se,
std::pair< Amg::Vector3D, double > &  gp,
const double *  dir,
double  width2 
)

Definition at line 65 of file TRT_TrajectoryElement_xk.cxx.

71 {
72 
73  m_isCluster = st ;
74  m_detelement = de ;
75 
76  // Test boundary active region of detector elements
77  //
78  bool boundary = boundaryTest(7.,gp);
79 
80  // Trajectory element links production
81  //
82  initiateLinksForTRTSeed(sb,se,gp,dir,width2);
83  return boundary;
84 }

◆ initiateLinksForPrecisionSeed()

void InDet::TRT_TrajectoryElement_xk::initiateLinksForPrecisionSeed ( InDet::TRT_DriftCircleCollection::const_iterator &  sb,
InDet::TRT_DriftCircleCollection::const_iterator &  se,
std::pair< Amg::Vector3D, double > &  gp,
const double *  dir,
double  width2 
)

Definition at line 147 of file TRT_TrajectoryElement_xk.cxx.

153 {
154  m_status = -1;
155  m_bestlink = -1;
156  m_nlinks = 0;
157  double x = gp.first.x();
158  double y = gp.first.y();
159  double z = gp.first.z();
160 
162 
163  double step = std::abs(dir[0] * T(0, 2) + dir[1] * T(1, 2) + dir[2] * T(2, 2));
164  step > .05 ? step = 1. / step : step = 20.;
165 
166  int Nstraws = m_detelement->nStraws();
167 
169 
170  for (int ns = 0; ns != Nstraws; ++ns) {
171 
173 
174  double xs = t(0, 3);
175  double ys = t(1, 3);
176  double dx = x - xs;
177  double dy = y - ys;
178  double d = dx * dx + dy * dy;
179  if (d > width2) {
180  continue;
181  }
182 
183  double Az[3] = { t(0, 2), t(1, 2), t(2, 2) };
184  double D = dir[0] * Az[0] + dir[1] * Az[1] + dir[2] * Az[2];
185  double A = (1. - D) * (1. + D);
186  double dz = z - t(2, 3);
187  double S = (dx * (D * Az[0] - dir[0]) + dy * (D * Az[1] - dir[1]) +
188  dz * (D * Az[2] - dir[2])) /
189  A;
190  dx += (dir[0] * S);
191  dy += (dir[1] * S);
192  dz += (dir[2] * S);
193  double Bx = Az[1] * dir[2] - Az[2] * dir[1];
194  double By = Az[2] * dir[0] - Az[0] * dir[2];
195  double Bz = Az[0] * dir[1] - Az[1] * dir[0];
196  double im =
197  (dx * Bx + dy * By + dz * Bz) / std::sqrt(Bx * Bx + By * By + Bz * Bz);
198  double zl = dx * Az[0] + dy * Az[1] + dz * Az[2];
199  S += gp.second;
200  d = std::abs(im);
201  if (y * xs - x * ys > 0.) {
202  d = -d;
203  }
204  m_link[m_nlinks].set(ns, d, im, zl, S);
205  if (++m_nlinks == 24) {
206  break;
207  }
208  }
209  } else {
210 
211  for (int ns = 0; ns != Nstraws; ++ns) {
212 
214 
215  double xs = t(0, 3);
216  double ys = t(1, 3);
217  double as = m_radius / std::sqrt(xs * xs + ys * ys);
218  double dx = x - xs * as;
219  double dy = y - ys * as;
220  double d = dx * dx + dy * dy;
221  if (d > width2) {
222  continue;
223  }
224 
225  double zs = t(2, 3);
226  double Az[3] = { t(0, 2), t(1, 2), t(2, 2) };
227  double D = dir[0] * Az[0] + dir[1] * Az[1] + dir[2] * Az[2];
228  double A = (1. - D) * (1. + D);
229  dx = x - xs;
230  dy = y - ys;
231  double dz = z - zs;
232  double S = (dx * (D * Az[0] - dir[0]) + dy * (D * Az[1] - dir[1]) +
233  dz * (D * Az[2] - dir[2])) /
234  A;
235  dx += (dir[0] * S);
236  dy += (dir[1] * S);
237  dz += (dir[2] * S);
238  double Bx = Az[1] * dir[2] - Az[2] * dir[1];
239  double By = Az[2] * dir[0] - Az[0] * dir[2];
240  double Bz = Az[0] * dir[1] - Az[1] * dir[0];
241  double im =
242  (dx * Bx + dy * By + dz * Bz) / std::sqrt(Bx * Bx + By * By + Bz * Bz);
243  double zl = dx * Az[0] + dy * Az[1] + dz * Az[2];
244  S += gp.second;
245  d = std::abs(im);
246  if (y * xs - x * ys > 0.) {
247  d = -d;
248  }
249  m_link[m_nlinks].set(ns, d, im, zl, S);
250  if (++m_nlinks == 24) {
251  break;
252  }
253  }
254  }
255  m_dpositive = 1000.;
256  m_dnegative = -1000.;
257  if (m_isCluster && m_nlinks) {
258 
259  bool nl = false;
260  for (; sb != se; ++sb) {
261 
262  int ns = m_trtid->straw((*sb)->identify());
263 
264  for (int l = 0; l != m_nlinks; ++l) {
265  if (ns != m_link[l].number()) {
266  continue;
267  }
268  nl = true;
269  m_link[l].set((*sb));
270 
271  double d = m_link[l].distance();
272  if (d >= 0.) {
273  if (d < m_dpositive)
274  m_dpositive = d;
275  } else {
276  if (d > m_dnegative) {
277  m_dnegative = d;
278  }
279  }
280  break;
281  }
282  }
283  if (!nl) {
284  m_isCluster = false;
285  }
286  }
287 }

◆ initiateLinksForTRTSeed()

void InDet::TRT_TrajectoryElement_xk::initiateLinksForTRTSeed ( InDet::TRT_DriftCircleCollection::const_iterator &  sb,
InDet::TRT_DriftCircleCollection::const_iterator &  se,
std::pair< Amg::Vector3D, double > &  gp,
const double *  dir,
double  width2 
)

Definition at line 293 of file TRT_TrajectoryElement_xk.cxx.

298 {
299  m_status = -1;
300  m_bestlink = -1;
301  m_nlinks = 0;
302  double x = gp.first.x();
303  double y = gp.first.y();
304  double z = gp.first.z();
305 
307 
308  double step =
309  std::abs(dir[0] * T(0, 2) + dir[1] * T(1, 2) + dir[2] * T(2, 2));
310  step > .05 ? step = 1. / step : step = 20.;
311 
312  int Nstraws = m_detelement->nStraws();
314 
315  for (int ns = 0; ns != Nstraws; ++ns) {
316 
318 
319  double xs = t(0, 3);
320  double ys = t(1, 3);
321  double dx = x - xs;
322  double dy = y - ys;
323  double d = dx * dx + dy * dy;
324  if (d > width2){
325  continue;
326  }
327 
328  double Az[3] = { t(0, 2), t(1, 2), t(2, 2) };
329  double D = dir[0] * Az[0] + dir[1] * Az[1] + dir[2] * Az[2];
330  double A = (1. - D) * (1. + D);
331  double dz = z - t(2, 3);
332  double S = (dx * (D * Az[0] - dir[0]) + dy * (D * Az[1] - dir[1]) +
333  dz * (D * Az[2] - dir[2])) /
334  A;
335  dx += (dir[0] * S);
336  dy += (dir[1] * S);
337  dz += (dir[2] * S);
338  double Bx = Az[1] * dir[2] - Az[2] * dir[1];
339  double By = Az[2] * dir[0] - Az[0] * dir[2];
340  double Bz = Az[0] * dir[1] - Az[1] * dir[0];
341  double im =
342  (dx * Bx + dy * By + dz * Bz) / std::sqrt(Bx * Bx + By * By + Bz * Bz);
343  double zl = dx * Az[0] + dy * Az[1] + dz * Az[2];
344  S += gp.second;
345  d = std::abs(im);
346  if (y * xs - x * ys > 0.){
347  d = -d;
348  }
349  m_link[m_nlinks].set(ns, d, im, zl, S);
350  if (++m_nlinks == 24){
351  break;
352  }
353  }
354  } else {
355 
356  double ri = 1. / m_radius;
357  double ax = x * ri;
358  double ay = y * ri;
359 
360  for (int ns = 0; ns != Nstraws; ++ns) {
361 
363 
364  double xs = t(0, 3);
365  double ys = t(1, 3);
366  double as = m_radius / std::sqrt(xs * xs + ys * ys);
367  double dx = x - xs * as;
368  double dy = y - ys * as;
369  double d = dx * dx + dy * dy;
370  if (d > width2){
371  continue;
372  }
373 
374  double zs = t(2, 3);
375  double Az[3] = { t(0, 2), t(1, 2), t(2, 2) };
376  double D = dir[0] * Az[0] + dir[1] * Az[1] + dir[2] * Az[2];
377  double A = 1. / ((1. - D) * (1. + D));
378  dx = x - xs;
379  dy = y - ys;
380  double dz = z - zs;
381  double Dx = (D * Az[0] - dir[0]);
382  double Dy = (D * Az[1] - dir[1]);
383  double S = (dx * Dx + dy * Dy + dz * (D * Az[2] - dir[2])) * A;
384  dx += (dir[0] * S);
385  dy += (dir[1] * S);
386  dz += (dir[2] * S);
387  double Bx = Az[1] * dir[2] - Az[2] * dir[1];
388  double By = Az[2] * dir[0] - Az[0] * dir[2];
389  double Bz = Az[0] * dir[1] - Az[1] * dir[0];
390  double B = 1. / std::sqrt(Bx * Bx + By * By + Bz * Bz);
391  double im = (dx * Bx + dy * By + dz * Bz) * B;
392  double zl = dx * Az[0] + dy * Az[1] + dz * Az[2];
393 
394  // d(im)/dr calculation for endcap
395  //
396  double dS = (ax * Dx + ay * Dy) * A;
397  double sx = ax + dir[0] * dS;
398  double sy = ay + dir[1] * dS;
399  double sd = (sx * Bx + sy * By) * B;
400  double sz = sx * Az[0] + sy * Az[1];
401  S += gp.second;
402  if (y * xs - x * ys > 0.) {
403  d = -std::abs(im);
404  sd = -std::abs(im + sd) - d;
405  } else {
406  d = std::abs(im);
407  sd = std::abs(im + sd) - d;
408  }
409 
410  m_link[m_nlinks].set(ns, d, im, zl, S, sd, sz);
411  if (++m_nlinks == 24){
412  break;
413  }
414  }
415  }
416 
417  m_dpositive = 1000.;
418  m_dnegative = -1000.;
419  if (m_isCluster && m_nlinks) {
420 
421  bool nl = false;
422  for (; sb != se; ++sb) {
423 
424  int ns = m_trtid->straw((*sb)->identify());
425 
426  for (int l = 0; l != m_nlinks; ++l) {
427  if (ns != m_link[l].number())
428  continue;
429  nl = true;
430  m_link[l].set((*sb));
431 
432  double d = m_link[l].distance();
433  if (d >= 0.) {
434  if (d < m_dpositive){
435  m_dpositive = d;
436  }
437  } else {
438  if (d > m_dnegative){
439  m_dnegative = d;
440  }
441  }
442  break;
443  }
444  }
445  if (!nl){
446  m_isCluster = false;
447  }
448  }
449 }

◆ isBarrel()

const bool& InDet::TRT_TrajectoryElement_xk::isBarrel ( ) const
inline

Definition at line 49 of file TRT_TrajectoryElement_xk.h.

49 {return m_barrel ;}

◆ isCluster()

const bool& InDet::TRT_TrajectoryElement_xk::isCluster ( ) const
inline

Definition at line 48 of file TRT_TrajectoryElement_xk.h.

48 {return m_isCluster ;}

◆ link()

const TRT_ExtensionDriftCircleLink_xk& InDet::TRT_TrajectoryElement_xk::link ( int  i) const
inline

Definition at line 60 of file TRT_TrajectoryElement_xk.h.

60 {return m_link[i] ;}

◆ nlinks()

const int& InDet::TRT_TrajectoryElement_xk::nlinks ( ) const
inline

Definition at line 51 of file TRT_TrajectoryElement_xk.h.

51 {return m_nlinks ;}

◆ operator=()

TRT_TrajectoryElement_xk & InDet::TRT_TrajectoryElement_xk::operator= ( const TRT_TrajectoryElement_xk E)
inline

Definition at line 200 of file TRT_TrajectoryElement_xk.h.

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  }

◆ polarAngleEstimation()

void InDet::TRT_TrajectoryElement_xk::polarAngleEstimation ( TRT_TrajectoryElement_xk E,
Amg::Vector3D G0,
Amg::Vector3D G1,
double  C,
double  VZ,
double *  Tp 
) const

Definition at line 881 of file TRT_TrajectoryElement_xk.cxx.

883 {
884  double dx = G1[0]-G0[0] ;
885  double dy = G1[1]-G0[1] ;
886  double dz = G1[2]-G0[2] ;
887  double dr = std::sqrt(dx*dx+dy*dy) ;
888  double rc = dr*C ;
889  Tp[0] = dz/(dr*(1.+.04*rc*rc));
890 
891  double r0 = G0[0]*G0[0]+G0[1]*G0[1];
892  double r1 = G1[0]*G1[0]+G1[1]*G1[1];
893 
894  if( r0 > r1) {
895 
896  Tp[0] =-Tp[0];
897  if ( m_barrel ) { //---------------------------->BB
898 
899  double dZ = m_zMax-m_zMin ;
900  double dT = (dZ+2.*VZ) ;
901  Tp[1] = dZ*dZ*.1 ;
902  Tp[2] = dT*dT*.1/r0 ;
903  }
904  else if(E->m_barrel) { //---------------------------->EB
905 
906  double T2 = Tp[0]*Tp[0] ;
907  Tp[1] = 400. ;
908  Tp[2] = (VZ*VZ)/((1.+T2)*r0) ;
909  }
910  else { //---------------------------->EE
911 
912  double T2 = Tp[0]*Tp[0] ;
913  Tp[1] = 400. ;
914  Tp[2] = (VZ*VZ)/((1.+T2)*r0) ;
915  }
916  }
917  else {
918  if (E->m_barrel) { //---------------------------->BB
919 
920  double dZ = m_zMax-m_zMin ;
921  double dT = (E->m_zMax-E->m_zMin+2.*VZ);
922  Tp[1] = dZ*dZ*.1 ;
923  Tp[2] = dT*dT*.1/r1 ;
924  }
925  else if( m_barrel ) { //---------------------------->BE
926 
927  double T2 = Tp[0]*Tp[0] ;
928  double dr = std::sqrt(r1)-std::sqrt(r0) ;
929  Tp[1] = dr*dr*VZ*VZ/r1 ;
930  Tp[2] = (VZ*VZ)/((1.+T2)*r1) ;
931 
932  }
933  else { //---------------------------->EE
934 
935  double T2 = Tp[0]*Tp[0] ;
936  Tp[1] = 400. ;
937  Tp[2] = (VZ*VZ)/((1.+T2)*r1) ;
938  }
939  }
940 }

◆ propagate()

bool InDet::TRT_TrajectoryElement_xk::propagate ( Trk::PatternTrackParameters Ta,
Trk::PatternTrackParameters Tb 
)

Definition at line 600 of file TRT_TrajectoryElement_xk.cxx.

602 {
603  if(m_bestlink<0) return false;
604 
605  return m_proptool->propagate
606  (Gaudi::Hive::currentContext(),
608 }

◆ radius()

const double& InDet::TRT_TrajectoryElement_xk::radius ( ) const
inline

Definition at line 53 of file TRT_TrajectoryElement_xk.h.

53 {return m_radius ;}

◆ radiusCorrection()

void InDet::TRT_TrajectoryElement_xk::radiusCorrection ( const double &  dr)
inline

Definition at line 230 of file TRT_TrajectoryElement_xk.h.

231  {
233  }

◆ radiusMax()

const double& InDet::TRT_TrajectoryElement_xk::radiusMax ( ) const
inline

Definition at line 56 of file TRT_TrajectoryElement_xk.h.

56 {return m_radiusMax ;}

◆ radiusMin()

const double& InDet::TRT_TrajectoryElement_xk::radiusMin ( ) const
inline

Definition at line 55 of file TRT_TrajectoryElement_xk.h.

55 {return m_radiusMin ;}

◆ rioOnTrack()

const Trk::RIO_OnTrack * InDet::TRT_TrajectoryElement_xk::rioOnTrack ( )

Definition at line 559 of file TRT_TrajectoryElement_xk.cxx.

560 {
561  if(m_bestlink < 0 || m_status<=0) return nullptr;
562 
563  int l = m_bestlink;
564 
566  (&(m_link[l].cluster()->detectorElement())->surface(m_link[l].cluster()->identify()));
567  Trk::AtaStraightLine Tp(m_link[l].impact(),m_link[l].zlocal(),1.,1.,1.,*line);
568  if(m_status==2)
569  return m_riomakerD->correct(*m_link[l].cluster(),Tp);
570  else
571  return m_riomakerN->correct(*m_link[l].cluster(),Tp);
572 }

◆ rioOnTrackSimple()

std::unique_ptr< Trk::RIO_OnTrack > InDet::TRT_TrajectoryElement_xk::rioOnTrackSimple ( ) const

Definition at line 579 of file TRT_TrajectoryElement_xk.cxx.

580 {
581  if(m_bestlink < 0 || m_status<=0) return nullptr;
582 
583  int l = m_bestlink;
584  Amg::Vector3D dir(1.,0.,0.);
586  Amg::MatrixX cov(1,1);
587  cov(0,0) = 1.;
588  if(m_status==2) {
589  return std::make_unique<InDet::TRT_DriftCircleOnTrack>(m_link[l].cluster(),Trk::LocalParameters(radius),
590  std::move(cov),0,0.,dir,Trk::DECIDED);
591  }
592  return std::make_unique<InDet::TRT_DriftCircleOnTrack>(m_link[l].cluster(),Trk::LocalParameters(radius),
593  std::move(cov),0,0.,dir,Trk::NODRIFTTIME);
594 }

◆ set() [1/2]

void InDet::TRT_TrajectoryElement_xk::set ( const Trk::MagneticFieldProperties mf,
const AtlasFieldCacheCondObj fieldCondObj 
)

Definition at line 30 of file TRT_TrajectoryElement_xk.cxx.

32 {
33  m_fieldprop = mf;
34  fieldCondObj->getInitializedCache (m_fieldCache);
35 }

◆ set() [2/2]

void InDet::TRT_TrajectoryElement_xk::set ( const TRT_ID m,
const Trk::IPatternParametersPropagator pr,
const Trk::IPatternParametersUpdator up,
const Trk::IRIO_OnTrackCreator riod,
const Trk::IRIO_OnTrackCreator rion,
double  scale 
)

Definition at line 14 of file TRT_TrajectoryElement_xk.cxx.

21 {
22  m_trtid = m ;
23  m_riomakerD = riod ;
24  m_riomakerN = rion ;
25  m_proptool = pr ;
26  m_updatortool = up ;
28 }

◆ status()

const int& InDet::TRT_TrajectoryElement_xk::status ( ) const
inline

Definition at line 50 of file TRT_TrajectoryElement_xk.h.

50 {return m_status ;}

◆ trackParametersEstimation() [1/2]

bool InDet::TRT_TrajectoryElement_xk::trackParametersEstimation ( TRT_TrajectoryElement_xk E1,
Trk::PatternTrackParameters Tp,
double  ZvHW 
)

Definition at line 790 of file TRT_TrajectoryElement_xk.cxx.

792 {
793 
794  if(!E1) return false;
795 
796  Amg::Vector3D Gp[3];
797  double Wa[3];
798  if (! trajectoryGlobalPosition(Gp[1],Wa[1])) return false;
799  if (!E1->trajectoryGlobalPosition(Gp[2],Wa[2])) return false;
800 
801  double dx = Gp[2][0]-Gp[1][0];
802  double dy = Gp[2][1]-Gp[1][1];
803  Gp[0][0] = 0.;
804  Gp[0][1] = 0.;
805  Gp[0][2] = Gp[1][2]-(Gp[2][2]-Gp[1][2])*std::sqrt((Gp[1][0]*Gp[1][0]+Gp[1][1]*Gp[1][1])/(dx*dx+dy*dy));
806  Wa[0] = 0.;
807 
808  double x0 = Gp[0][0] ;
809  double y0 = Gp[0][1] ;
810  double x1 = Gp[1][0]-x0 ;
811  double y1 = Gp[1][1]-y0 ;
812  double x2 = Gp[2][0]-x0 ;
813  double y2 = Gp[2][1]-y0 ;
814  double r1 = std::sqrt(x1*x1+y1*y1) ;
815  double u1 = 1./r1 ;
816  double r2 = 1./(x2*x2+y2*y2) ;
817  double a = x1*u1 ;
818  double b = y1*u1 ;
819  double u2 = (a*x2+b*y2)*r2 ;
820  double v2 = (a*y2-b*x2)*r2 ;
821  double A = v2/(u2-u1) ;
822  double B = 2.*(v2-A*u2) ;
823  double C = B/std::sqrt(1.+A*A) ;
824 
825  double f,TP[3];
826 
827  f = atan2( b+a*A, a-b*A); polarAngleEstimation(E1,Gp[1],Gp[2],C,ZvHW,TP);
828 
829  // Track parameters estimation
830  //
831  double P[5] = {0.,Gp[0][2],f,atan2(1.,TP[0]),.0001};
832 
833  double pos0[3]; pos0[0]=Gp[0][0]; pos0[1]=Gp[0][1]; pos0[2]=Gp[0][2];
834  double pos1[3]; pos1[0]=Gp[1][0]; pos1[1]=Gp[1][1]; pos1[2]=Gp[1][2];
835  double pos2[3]; pos2[0]=Gp[2][0]; pos2[1]=Gp[2][1]; pos2[2]=Gp[2][2];
836  double H0 [3];
837  double H1 [3];
838  double H2 [3];
839  m_fieldCache.getFieldZR (pos0,H0);
840  m_fieldCache.getFieldZR (pos1,H1);
841  m_fieldCache.getFieldZR (pos2,H2);
842 
843  double Hz = .333333*(H0[2]+H1[2]+H2[2]);
844 
845  // If magnetic field exist
846  //
847  double Cm = 1.;
848  double T2 = TP[0]*TP[0];
849  if(std::abs(Hz)>1.e-9) {Cm = 1./(300.*Hz*std::sqrt(1.+T2)); P[4] = -C*Cm;}
850 
851  // Covariance of track parameters estimation
852  //
853  double wa = 1./Wa[2];
854 
855  const double dS = 4. ;
856  double df = dS*wa ;
857  double dp = 8.*df*wa*Cm ;
858  double c0 = .1 ;
859  double c1 = ZvHW*ZvHW*.1 ;
860  double c2 = df*df*(1.+T2);
861  double c3 = TP[2] ;
862  double c4 = dp*dp ;
863  double V[15] ={c0,
864  0.,c1,
865  0.,0.,c2,
866  0.,0.,0.,c3,
867  0.,0.,0.,0.,c4};
868 
869  Tp.setParametersWithCovariance(nullptr,P,V);
870  return true;
871 }

◆ trackParametersEstimation() [2/2]

bool InDet::TRT_TrajectoryElement_xk::trackParametersEstimation ( TRT_TrajectoryElement_xk E1,
TRT_TrajectoryElement_xk E2,
Trk::PatternTrackParameters Tp,
double  ZvHW 
)

Definition at line 685 of file TRT_TrajectoryElement_xk.cxx.

688 {
689 
690  if(!E1) return false;
691 
692  Amg::Vector3D Gp[3];
693  double Wa[3];
694 
695  if (! trajectoryGlobalPosition(Gp[0],Wa[0])) return false;
696  if (!E1->trajectoryGlobalPosition(Gp[1],Wa[1])) return false;
697 
698  int mode; Wa[0] > Wa[1] ? mode=0 : mode=1;
699 
700  if(E2) {
701  if(!E2->trajectoryGlobalPosition(Gp[2],Wa[2])) return false;
702  }
703  else {
704  double dx = Gp[1][0]-Gp[0][0];
705  double dy = Gp[1][1]-Gp[0][1];
706  Gp[2][0] = 0.;
707  Gp[2][1] = 0.;
708  Gp[2][2] = Gp[0][2]-(Gp[1][2]-Gp[0][2])*std::sqrt((Gp[0][0]*Gp[0][0]+Gp[0][1]*Gp[0][1])/(dx*dx+dy*dy));
709  Wa[2] = 0.;
710  mode = 2 ;
711  }
712 
713  double x0 = Gp[0][0] ;
714  double y0 = Gp[0][1] ;
715  double x1 = Gp[1][0]-x0 ;
716  double y1 = Gp[1][1]-y0 ;
717  double x2 = Gp[2][0]-x0 ;
718  double y2 = Gp[2][1]-y0 ;
719  double r1 = std::sqrt(x1*x1+y1*y1) ;
720  double u1 = 1./r1 ;
721  double r2 = 1./(x2*x2+y2*y2) ;
722  double a = x1*u1 ;
723  double b = y1*u1 ;
724  double u2 = (a*x2+b*y2)*r2 ;
725  double v2 = (a*y2-b*x2)*r2 ;
726  double A = v2/(u2-u1) ;
727  double B = 2.*(v2-A*u2) ;
728  double C = B/std::sqrt(1.+A*A) ;
729 
730  double f,TP[3];
731 
732  if(mode==0) {
733  f = atan2(-b-a*A,-a+b*A); C=-C; polarAngleEstimation(E2,Gp[0],Gp[2],C,ZvHW,TP);
734  }
735  else if(mode==1) {
736  f = atan2( b+a*A, a-b*A); polarAngleEstimation(E2,Gp[0],Gp[2],C,ZvHW,TP);
737  }
738  else {
739  f = atan2( b+a*A, a-b*A); polarAngleEstimation(E1,Gp[0],Gp[1],C,ZvHW,TP);
740  }
741 
742  // Track parameters estimation
743  //
744  double P[5] = {m_link[m_bestlink].impact(),m_link[m_bestlink].zlocal(),f,atan2(1.,TP[0]),.0001};
745 
746  double pos0[3]; pos0[0]=Gp[0][0]; pos0[1]=Gp[0][1]; pos0[2]=Gp[0][2];
747  double pos1[3]; pos1[0]=Gp[1][0]; pos1[1]=Gp[1][1]; pos1[2]=Gp[1][2];
748  double pos2[3]; pos2[0]=Gp[2][0]; pos2[1]=Gp[2][1]; pos2[2]=Gp[2][2];
749  double H0 [3];
750  double H1 [3];
751  double H2 [3];
752  m_fieldCache.getFieldZR (pos0,H0);
753  m_fieldCache.getFieldZR (pos1,H1);
754  m_fieldCache.getFieldZR (pos2,H2);
755 
756  double Hz = .333333*(H0[2]+H1[2]+H2[2]);
757 
758  // If magnetic field exist
759  //
760  double Cm = 1. ;
761  double T2 = TP[0]*TP[0];
762  if(std::abs(Hz)>1.e-9) {Cm = 1./(300.*Hz*std::sqrt(1.+T2)); P[4] = -C*Cm;}
763 
764  // Covariance of track parameters estimation
765  //
766  double wa; mode != 2 ? wa = 1./(Wa[0]-Wa[2]) : wa = 1./Wa[1];
767  const double dS = 4. ;
768 
769  double df = dS*wa ;
770  double dp = 8.*df*wa*Cm ;
771  double c0 = 4. ;
772  double c1 = TP[1] ;
773  double c2 = df*df*(1.+T2);
774  double c3 = TP[2] ;
775  double c4 = dp*dp ;
776  double V[15] ={c0,
777  0.,c1,
778  0.,0.,c2,
779  0.,0.,0.,c3,
780  0.,0.,0.,0.,c4};
781 
782  Tp.setParametersWithCovariance(&m_link[m_bestlink].surface(),P,V);
783  return true;
784 }

◆ trajectoryGlobalPosition()

bool InDet::TRT_TrajectoryElement_xk::trajectoryGlobalPosition ( Amg::Vector3D G,
double &  WAY 
)

Definition at line 646 of file TRT_TrajectoryElement_xk.cxx.

648 {
649  int l = m_bestlink;
650  if( l<0 ) return false;
651 
653 
654  double Az[3] = {t(0,2),t(1,2),t(2,2)};
655  double Rc[3] = {t(0,3),t(1,3),t(2,3)};
656 
657  double Bx,By;
658 
659  if(std::abs(Az[2]) > .7) { // Barrel
660 
661  double Ri = 1./std::sqrt(Rc[0]*Rc[0]+Rc[1]*Rc[1]);
662  Bx =-Az[2]*Rc[1]*Ri; By = Az[2]*Rc[0]*Ri;
663  }
664  else if(Rc[2] > 0. ) { // Positive endcap
665 
666  Bx = Az[1]; By =-Az[0];
667  }
668  else { // Negative endcap
669 
670  Bx =-Az[1]; By = Az[0];
671  }
672  double zl = m_link[l].zlocal();
673  double im = m_link[l].impact();
674  G[0] = zl*Az[0]+Bx*im+Rc[0];
675  G[1] = zl*Az[1]+By*im+Rc[1];
676  G[2] = zl*Az[2] +Rc[2];
677  WAY = m_link[l].way() ;
678  return true;
679 }

◆ z()

const double& InDet::TRT_TrajectoryElement_xk::z ( ) const
inline

Definition at line 54 of file TRT_TrajectoryElement_xk.h.

54 {return m_z ;}

Member Data Documentation

◆ m_barrel

bool InDet::TRT_TrajectoryElement_xk::m_barrel
protected

Definition at line 128 of file TRT_TrajectoryElement_xk.h.

◆ m_bestlink

int InDet::TRT_TrajectoryElement_xk::m_bestlink
protected

Definition at line 131 of file TRT_TrajectoryElement_xk.h.

◆ m_detelement

const InDetDD::TRT_BaseElement* InDet::TRT_TrajectoryElement_xk::m_detelement
protected

Definition at line 143 of file TRT_TrajectoryElement_xk.h.

◆ m_dnegative

double InDet::TRT_TrajectoryElement_xk::m_dnegative
protected

Definition at line 141 of file TRT_TrajectoryElement_xk.h.

◆ m_dpositive

double InDet::TRT_TrajectoryElement_xk::m_dpositive
protected

Definition at line 140 of file TRT_TrajectoryElement_xk.h.

◆ m_fieldCache

MagField::AtlasFieldCache InDet::TRT_TrajectoryElement_xk::m_fieldCache
protected

Definition at line 150 of file TRT_TrajectoryElement_xk.h.

◆ m_fieldprop

Trk::MagneticFieldProperties InDet::TRT_TrajectoryElement_xk::m_fieldprop
protected

Definition at line 149 of file TRT_TrajectoryElement_xk.h.

◆ m_isCluster

bool InDet::TRT_TrajectoryElement_xk::m_isCluster
protected

Definition at line 129 of file TRT_TrajectoryElement_xk.h.

◆ m_link

TRT_ExtensionDriftCircleLink_xk InDet::TRT_TrajectoryElement_xk::m_link[24]
protected

Definition at line 142 of file TRT_TrajectoryElement_xk.h.

◆ m_nlinks

int InDet::TRT_TrajectoryElement_xk::m_nlinks
protected

Definition at line 132 of file TRT_TrajectoryElement_xk.h.

◆ m_proptool

const Trk::IPatternParametersPropagator* InDet::TRT_TrajectoryElement_xk::m_proptool
protected

Definition at line 145 of file TRT_TrajectoryElement_xk.h.

◆ m_radius

double InDet::TRT_TrajectoryElement_xk::m_radius
protected

Definition at line 136 of file TRT_TrajectoryElement_xk.h.

◆ m_radiusMax

double InDet::TRT_TrajectoryElement_xk::m_radiusMax
protected

Definition at line 138 of file TRT_TrajectoryElement_xk.h.

◆ m_radiusMin

double InDet::TRT_TrajectoryElement_xk::m_radiusMin
protected

Definition at line 137 of file TRT_TrajectoryElement_xk.h.

◆ m_riomakerD

const Trk::IRIO_OnTrackCreator* InDet::TRT_TrajectoryElement_xk::m_riomakerD
protected

Definition at line 147 of file TRT_TrajectoryElement_xk.h.

◆ m_riomakerN

const Trk::IRIO_OnTrackCreator* InDet::TRT_TrajectoryElement_xk::m_riomakerN
protected

Definition at line 148 of file TRT_TrajectoryElement_xk.h.

◆ m_scale_error

double InDet::TRT_TrajectoryElement_xk::m_scale_error
protected

Definition at line 139 of file TRT_TrajectoryElement_xk.h.

◆ m_status

int InDet::TRT_TrajectoryElement_xk::m_status
protected

Definition at line 130 of file TRT_TrajectoryElement_xk.h.

◆ m_trtid

const TRT_ID* InDet::TRT_TrajectoryElement_xk::m_trtid
protected

Definition at line 144 of file TRT_TrajectoryElement_xk.h.

◆ m_updatortool

const Trk::IPatternParametersUpdator* InDet::TRT_TrajectoryElement_xk::m_updatortool
protected

Definition at line 146 of file TRT_TrajectoryElement_xk.h.

◆ m_z

double InDet::TRT_TrajectoryElement_xk::m_z
protected

Definition at line 133 of file TRT_TrajectoryElement_xk.h.

◆ m_zMax

double InDet::TRT_TrajectoryElement_xk::m_zMax
protected

Definition at line 135 of file TRT_TrajectoryElement_xk.h.

◆ m_zMin

double InDet::TRT_TrajectoryElement_xk::m_zMin
protected

Definition at line 134 of file TRT_TrajectoryElement_xk.h.


The documentation for this class was generated from the following files:
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
InDet::TRT_TrajectoryElement_xk::m_updatortool
const Trk::IPatternParametersUpdator * m_updatortool
Definition: TRT_TrajectoryElement_xk.h:146
beamspotman.r
def r
Definition: beamspotman.py:676
Trk::LocalParameters
Definition: LocalParameters.h:98
Trk::RectangleBounds
Definition: RectangleBounds.h:38
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
InDet::TRT_TrajectoryElement_xk::polarAngleEstimation
void polarAngleEstimation(TRT_TrajectoryElement_xk *, Amg::Vector3D &, Amg::Vector3D &, double, double, double *) const
Definition: TRT_TrajectoryElement_xk.cxx:882
TileDCSDataPlotter.dp
dp
Definition: TileDCSDataPlotter.py:840
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
Trk::PatternTrackParameters::setParametersWithCovariance
void setParametersWithCovariance(const Surface *, const double *, const double *)
fitman.sy
sy
Definition: fitman.py:524
checkFileSG.line
line
Definition: checkFileSG.py:75
Trk::IPatternParametersPropagator::propagate
virtual bool propagate(const ::EventContext &ctx, PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection, const MagneticFieldProperties &, ParticleHypothesis particle=pion) const =0
Interfaces WITH EventContext (new)
InDet::TRT_TrajectoryElement_xk::m_radiusMax
double m_radiusMax
Definition: TRT_TrajectoryElement_xk.h:138
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:29
fitman.sz
sz
Definition: fitman.py:527
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
fitman.ax
ax
Definition: fitman.py:522
InDet::TRT_TrajectoryElement_xk::m_barrel
bool m_barrel
Definition: TRT_TrajectoryElement_xk.h:128
Trk::locX
@ locX
Definition: ParamDefs.h:43
InDet::TRT_TrajectoryElement_xk::m_dpositive
double m_dpositive
Definition: TRT_TrajectoryElement_xk.h:140
WriteCellNoiseToCool.rb
rb
Definition: WriteCellNoiseToCool.py:229
InDet::TRT_TrajectoryElement_xk::m_fieldCache
MagField::AtlasFieldCache m_fieldCache
Definition: TRT_TrajectoryElement_xk.h:150
MagField::AtlasFieldCache::getFieldZR
void getFieldZR(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field valaue on the z-r plane at given position works only inside the solenoid.
Definition: AtlasFieldCache.cxx:86
Trk::SurfaceBounds::Rectangle
@ Rectangle
Definition: SurfaceBounds.h:65
hist_file_dump.d
d
Definition: hist_file_dump.py:137
Trk::IPatternParametersUpdator::addToState
virtual bool addToState(PatternTrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &, PatternTrackParameters &) const =0
add a PRD-level local position to a track state given by pattern track pars (no chi2 calculated).
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
Trk::SurfaceBounds
Definition: SurfaceBounds.h:47
CaloCondBlobAlgs_fillNoiseFromASCII.db
db
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:43
InDetDD::TRT_BaseElement::nStraws
unsigned int nStraws() const
Number of straws in the element.
plotBeamSpotCompare.x2
x2
Definition: plotBeamSpotCompare.py:218
extractSporadic.c1
c1
Definition: extractSporadic.py:134
DMTest::C
C_v1 C
Definition: C.h:26
python.compressB64.sx
string sx
Definition: compressB64.py:96
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
python.atlas_oh.im
im
Definition: atlas_oh.py:167
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
InDet::TRT_TrajectoryElement_xk::m_zMax
double m_zMax
Definition: TRT_TrajectoryElement_xk.h:135
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
InDet::TRT_TrajectoryElement_xk::m_proptool
const Trk::IPatternParametersPropagator * m_proptool
Definition: TRT_TrajectoryElement_xk.h:145
MCP::ScaleSmearParam::r2
@ r2
Trk::IRIO_OnTrackCreator::correct
virtual RIO_OnTrack * correct(const PrepRawData &hit, const TrackParameters &trk) const =0
abstract base method for the creation of RIO_OnTrack it takes a RIO (PrepRawData) and the given Track...
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
keylayer_zslicemap.se
se
Definition: keylayer_zslicemap.py:194
x
#define x
JetTiledMap::S
@ S
Definition: TiledEtaPhiMap.h:44
H2
#define H2(x, y, z)
Definition: MD5.cxx:115
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
InDet::TRT_TrajectoryElement_xk::m_radius
double m_radius
Definition: TRT_TrajectoryElement_xk.h:136
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
Trk::DefinedParameter
std::pair< double, ParamDefs > DefinedParameter
Definition: DefinedParameter.h:27
DQPostProcessTest.mf
mf
Definition: DQPostProcessTest.py:19
python.selector.AtlRunQuerySelectorLhcOlc.sd
sd
Definition: AtlRunQuerySelectorLhcOlc.py:612
dqt_zlumi_alleff_HIST.A
A
Definition: dqt_zlumi_alleff_HIST.py:110
InDet::TRT_TrajectoryElement_xk::m_dnegative
double m_dnegative
Definition: TRT_TrajectoryElement_xk.h:141
compileRPVLLRates_emergingFilterTest.c3
c3
Definition: compileRPVLLRates_emergingFilterTest.py:559
hotSpotInTAG.c0
c0
Definition: hotSpotInTAG.py:192
Trk::SurfaceBounds::type
virtual BoundsType type() const =0
Return the bounds type - for persistency optimization.
TRT_ID::straw
int straw(const Identifier &id) const
Definition: TRT_ID.h:902
AtlasFieldCacheCondObj::getInitializedCache
void getInitializedCache(MagField::AtlasFieldCache &cache) const
get B field cache for evaluation as a function of 2-d (solenoid) or 3-d (toroid) position.
Definition: AtlasFieldCacheCondObj.h:52
InDet::TRT_TrajectoryElement_xk::m_riomakerD
const Trk::IRIO_OnTrackCreator * m_riomakerD
Definition: TRT_TrajectoryElement_xk.h:147
InDet::TRT_TrajectoryElement_xk::m_nlinks
int m_nlinks
Definition: TRT_TrajectoryElement_xk.h:132
lumiFormat.i
int i
Definition: lumiFormat.py:92
InDet::TRT_TrajectoryElement_xk::m_isCluster
bool m_isCluster
Definition: TRT_TrajectoryElement_xk.h:129
G
#define G(x, y, z)
Definition: MD5.cxx:113
beamspotman.n
n
Definition: beamspotman.py:731
makeTRTBarrelCans.y2
tuple y2
Definition: makeTRTBarrelCans.py:18
Trk::driftRadius
@ driftRadius
trt, straws
Definition: ParamDefs.h:59
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
CalibCoolCompareRT.up
up
Definition: CalibCoolCompareRT.py:109
TileDCSDataPlotter.pr
pr
Definition: TileDCSDataPlotter.py:922
TRT_PAI_physicsConstants::r0
const double r0
electron radius{cm}
Definition: TRT_PAI_physicsConstants.h:20
InDetDD::TRT_BaseElement::BARREL
@ BARREL
Definition: TRT_BaseElement.h:61
InDet::TRT_TrajectoryElement_xk::z
const double & z() const
Definition: TRT_TrajectoryElement_xk.h:54
Preparation.mode
mode
Definition: Preparation.py:95
InDetDD::TRT_BaseElement::type
virtual TRT_BaseElement::Type type() const =0
Type information: returns BARREL or ENDCAP.
InDet::TRT_TrajectoryElement_xk::m_fieldprop
Trk::MagneticFieldProperties m_fieldprop
Definition: TRT_TrajectoryElement_xk.h:149
Trk::NODRIFTTIME
@ NODRIFTTIME
drift time was not used - drift radius is 0.
Definition: DriftCircleStatus.h:24
InDet::TRT_TrajectoryElement_xk::boundaryTest
bool boundaryTest(double, std::pair< Amg::Vector3D, double > &)
Definition: TRT_TrajectoryElement_xk.cxx:91
InDet::TRT_TrajectoryElement_xk::m_trtid
const TRT_ID * m_trtid
Definition: TRT_TrajectoryElement_xk.h:144
InDet::TRT_TrajectoryElement_xk::m_scale_error
double m_scale_error
Definition: TRT_TrajectoryElement_xk.h:139
ReadCellNoiseFromCool.dm
dm
Definition: ReadCellNoiseFromCool.py:235
InDet::TRT_TrajectoryElement_xk::m_z
double m_z
Definition: TRT_TrajectoryElement_xk.h:133
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk::DECIDED
@ DECIDED
sign of drift radius has been determined
Definition: DriftCircleStatus.h:18
Trk::RIO_OnTrackType::TRT_DriftCircle
@ TRT_DriftCircle
Definition: RIO_OnTrack.h:59
keylayer_zslicemap.sb
sb
Definition: keylayer_zslicemap.py:192
python.selection.number
number
Definition: selection.py:20
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
compileRPVLLRates.c2
c2
Definition: compileRPVLLRates.py:361
Trk::PrepRawData::localPosition
const Amg::Vector2D & localPosition() const
return the local position reference
dqt_zlumi_alleff_HIST.B
B
Definition: dqt_zlumi_alleff_HIST.py:110
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
InDetDD::TRT_BaseElement::bounds
virtual const Trk::SurfaceBounds & bounds() const override final
Straw layer bounds.
InDet::TRT_TrajectoryElement_xk::m_status
int m_status
Definition: TRT_TrajectoryElement_xk.h:130
ReadCellNoiseFromCoolCompare.v2
v2
Definition: ReadCellNoiseFromCoolCompare.py:364
python.PyAthena.v
v
Definition: PyAthena.py:157
makeTRTBarrelCans.dy
tuple dy
Definition: makeTRTBarrelCans.py:21
InDetDD::TRT_BaseElement::strawTransform
const Amg::Transform3D & strawTransform(unsigned int straw) const
Straw transform - fast access in array, in Tracking frame: Amg.
Definition: TRT_BaseElement.cxx:89
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
a
TList * a
Definition: liststreamerinfos.cxx:10
y
#define y
InDet::TRT_TrajectoryElement_xk::radius
const double & radius() const
Definition: TRT_TrajectoryElement_xk.h:53
Trk::SurfaceBounds::Disc
@ Disc
Definition: SurfaceBounds.h:63
Trk::PatternTrackParameters
Definition: PatternTrackParameters.h:38
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
InDetDD::TRT_BaseElement::center
virtual const Amg::Vector3D & center() const override final
Element Surface: center of a straw layer.
InDet::TRT_TrajectoryElement_xk::m_zMin
double m_zMin
Definition: TRT_TrajectoryElement_xk.h:134
InDet::TRT_TrajectoryElement_xk::m_riomakerN
const Trk::IRIO_OnTrackCreator * m_riomakerN
Definition: TRT_TrajectoryElement_xk.h:148
LArCellBinning.step
step
Definition: LArCellBinning.py:158
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
Trk::hole
@ hole
Definition: MeasurementType.h:36
InDet::TRT_TrajectoryElement_xk::initiateLinksForTRTSeed
void initiateLinksForTRTSeed(InDet::TRT_DriftCircleCollection::const_iterator &, InDet::TRT_DriftCircleCollection::const_iterator &, std::pair< Amg::Vector3D, double > &, const double *, double)
Definition: TRT_TrajectoryElement_xk.cxx:294
MCP::ScaleSmearParam::r1
@ r1
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
python.TriggerAPI.TriggerAPISession.df
df
Definition: TriggerAPISession.py:359
InDet::TRT_TrajectoryElement_xk::m_detelement
const InDetDD::TRT_BaseElement * m_detelement
Definition: TRT_TrajectoryElement_xk.h:143
InDetDD::TRT_BaseElement::surface
virtual const Trk::Surface & surface() const override final
Element Surface: access to the Surface (straw layer)
InDet::TRT_TrajectoryElement_xk::trajectoryGlobalPosition
bool trajectoryGlobalPosition(Amg::Vector3D &, double &)
Definition: TRT_TrajectoryElement_xk.cxx:647
InDet::TRT_TrajectoryElement_xk::initiateLinksForPrecisionSeed
void initiateLinksForPrecisionSeed(InDet::TRT_DriftCircleCollection::const_iterator &, InDet::TRT_DriftCircleCollection::const_iterator &, std::pair< Amg::Vector3D, double > &, const double *, double)
Definition: TRT_TrajectoryElement_xk.cxx:147
InDet::TRT_TrajectoryElement_xk::m_link
TRT_ExtensionDriftCircleLink_xk m_link[24]
Definition: TRT_TrajectoryElement_xk.h:142
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
python.trfValidateRootFile.rc
rc
Definition: trfValidateRootFile.py:350
InDet::TRT_TrajectoryElement_xk::m_bestlink
int m_bestlink
Definition: TRT_TrajectoryElement_xk.h:131
Trk::StraightLineSurface
Definition: StraightLineSurface.h:51
Trk::DiscBounds
Definition: DiscBounds.h:44
InDet::TRT_TrajectoryElement_xk::m_radiusMin
double m_radiusMin
Definition: TRT_TrajectoryElement_xk.h:137
fitman.ay
ay
Definition: fitman.py:525