ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
Trk::VKalExtPropagator Class Reference

#include <VKalExtPropagator.h>

Inheritance diagram for Trk::VKalExtPropagator:
Collaboration diagram for Trk::VKalExtPropagator:

Public Member Functions

 VKalExtPropagator (TrkVKalVrtFitter *)
 
virtual ~VKalExtPropagator ()
 
virtual void Propagate (long int trkID, long int Charge, double *ParOld, double *CovOld, double *RefStart, double *RefEnd, double *ParNew, double *CovNew, IVKalState &istate) const override
 
virtual bool checkTarget (double *, const IVKalState &istate) const override
 
void setPropagator (const IExtrapolator *)
 
const TrackParametersmyExtrapWithMatUpdate (long int TrkID, const TrackParameters *inpPer, Amg::Vector3D *endPoint, const IVKalState &istate) const
 
const TrackParametersmyExtrapToLine (long int TrkID, const TrackParameters *inpPer, Amg::Vector3D *endPoint, StraightLineSurface &lineTarget, const IVKalState &istate) const
 
const NeutralParametersmyExtrapNeutral (const NeutralParameters *inpPer, Amg::Vector3D *endPoint) const
 
const PerigeemyxAODFstPntOnTrk (const xAOD::TrackParticle *xprt) const
 

Private Member Functions

double Protection (const double *, const IVKalState &istate) const
 

Private Attributes

const IExtrapolatorm_extrapolator
 Pointer to Extrapolator AlgTool. More...
 
TrkVKalVrtFitterm_vkalFitSvc
 Pointer to TrkVKalVrtFitter. More...
 

Detailed Description

Definition at line 21 of file VKalExtPropagator.h.

Constructor & Destructor Documentation

◆ VKalExtPropagator()

Trk::VKalExtPropagator::VKalExtPropagator ( TrkVKalVrtFitter pnt)

Definition at line 33 of file VKalExtPropagator.cxx.

34  {
35  m_extrapolator = nullptr;
36  m_vkalFitSvc = pnt;
37  }

◆ ~VKalExtPropagator()

Trk::VKalExtPropagator::~VKalExtPropagator ( )
virtualdefault

Member Function Documentation

◆ checkTarget()

bool Trk::VKalExtPropagator::checkTarget ( double *  RefEnd,
const IVKalState istate 
) const
overridevirtual

Implements Trk::basePropagator.

Definition at line 69 of file VKalExtPropagator.cxx.

71  {
72  //double targV[3]={ RefEnd[0], RefEnd[1], RefEnd[2]};
73  return Protection(RefEnd, istate) <= 1.;
74  }

◆ myExtrapNeutral()

const NeutralParameters * Trk::VKalExtPropagator::myExtrapNeutral ( const NeutralParameters inpPer,
Amg::Vector3D endPoint 
) const

Definition at line 422 of file VKalExtPropagator.cxx.

424  {
425  const Trk::NeutralParameters* endPer=nullptr;
426 //End surface
427  PerigeeSurface surfEnd( *endPoint );
428  endPer = m_extrapolator->extrapolate( *inpPer, surfEnd, anyDirection, true).release();
429  return endPer;
430  }

◆ myExtrapToLine()

const TrackParameters * Trk::VKalExtPropagator::myExtrapToLine ( long int  TrkID,
const TrackParameters inpPer,
Amg::Vector3D endPoint,
StraightLineSurface lineTarget,
const IVKalState istate 
) const

Definition at line 357 of file VKalExtPropagator.cxx.

362  {
363  const TrkVKalVrtFitter::State& state = static_cast<const TrkVKalVrtFitter::State&> (istate);
364  const EventContext& ctx = (state.m_eventContext)
365  ? *(state.m_eventContext)
366  : Gaudi::Hive::currentContext();
367 
368 
369  const Trk::TrackParameters* endPer=nullptr;
370  ParticleHypothesis prtType = muon;
371 //Initial point
372  Amg::Vector3D iniPoint = inpPer->position();
373  Amg::Vector3D step = (*endPoint) - iniPoint;
374 //
375  int Strategy = 0; if(TrkID>=0) Strategy = state.m_trkControl[TrkID].extrapolationType;
376 //
377 // Extrapolation for new track - no material at all
378 //
379  const TrackParameters *pntOnTrk=nullptr;
380  if(TrkID<0){
381  return endPer;
382  }
383  pntOnTrk=dynamic_cast<const TrackParameters*> (state.m_trkControl.at(TrkID).TrkPnt);
384  if(!pntOnTrk) return endPer;
385  //double inpMass=state.m_trkControl[TrkID].prtMass;
386  //if( inpMass > 0. && inpMass< 20.) { prtType=electron; } //VK Disabled according to users request
387  //else if(inpMass > 20. && inpMass<120.) { prtType=muon; } // May be activated in future
388  //else if(inpMass >120. && inpMass<200.) { prtType=pion; }
389  //else if(inpMass >200. && inpMass<700.) { prtType=kaon; }
390  //else if(inpMass >700. && inpMass<999.) { prtType=proton; }
391  //else { prtType=undefined; }
392  prtType=muon; // Muon hypothesis is always used for extrapolation
393  iniPoint = pntOnTrk->position();
394  step = (*endPoint) - iniPoint;
395 
396  Amg::Vector3D pmom=pntOnTrk->momentum();
397 //
398 // Extrapolation for first measured point strategy. Start from it and always add material
399 //
400  if( Strategy == 0) {
402  endPer = m_extrapolator->extrapolate(ctx, *pntOnTrk, lineTarget, dir, true, prtType, addNoise).release();
403  if (!endPer)
404  endPer = m_extrapolator->extrapolateDirectly(ctx, *pntOnTrk, lineTarget, dir, true, prtType).release();
405  return endPer;
406  }
407 //
408 // Extrapolation for any measured point
409 //
410  if( Strategy == 1 || Strategy == 2) {
412  if(pmom.dot(step)<0){ dir=oppositeMomentum; mmode=removeNoise;}
413  endPer = m_extrapolator->extrapolate(ctx, *pntOnTrk, lineTarget, dir, true, prtType, mmode).release();
414  return endPer;
415  }
416  return endPer;
417  }

◆ myExtrapWithMatUpdate()

const TrackParameters * Trk::VKalExtPropagator::myExtrapWithMatUpdate ( long int  TrkID,
const TrackParameters inpPer,
Amg::Vector3D endPoint,
const IVKalState istate 
) const

Definition at line 204 of file VKalExtPropagator.cxx.

208  {
209  const TrkVKalVrtFitter::State& state = static_cast<const TrkVKalVrtFitter::State&> (istate);
210  const EventContext& ctx = (state.m_eventContext)
211  ? *(state.m_eventContext)
212  : Gaudi::Hive::currentContext();
213 
214  const Trk::TrackParameters* endPer=nullptr;
215  const Trk::TrackParameters* tmpPer=nullptr;
216  ParticleHypothesis prtType = pion;
217  //End surface
218  PerigeeSurface surfEnd( *endPoint );
219  //Initial point (global frame)
220  Amg::Vector3D iniPoint = inpPer->position();
221  Amg::Vector3D pmom=inpPer->momentum();
222  //Track reference point ( some point on track provided initially, global frame )
223  Amg::Vector3D refPoint(0.,0.,0.);
224  if(TrkID>=0)refPoint = state.m_trkControl.at(TrkID).trkRefGlobPos;
225  //
226  Amg::Vector3D step = (*endPoint) - iniPoint;
227  //
228  int Strategy = 0; if(TrkID>=0) Strategy = state.m_trkControl[TrkID].extrapolationType;
229  //
230  // Extrapolation for new track - no material at all
231  //
232  const TrackParameters *pntOnTrk=nullptr;
233  if (TrkID < 0) {
234  prtType = undefined;
235  if (pmom.dot(step) > 0.) {
236  endPer = m_extrapolator->extrapolateDirectly(ctx,
237  *inpPer, surfEnd, alongMomentum, true, pion).release();
238  } else {
239  endPer = m_extrapolator->extrapolateDirectly(ctx,
240  *inpPer, surfEnd, oppositeMomentum, true, pion).release();
241  }
242  return endPer;
243  }
244  pntOnTrk = dynamic_cast<const TrackParameters*>(
245  state.m_trkControl.at(TrkID).TrkPnt);
246  if (pntOnTrk == nullptr){
247  return endPer;
248  }
249  prtType = pion; // Pion hypothesis is always used for extrapolation
250  // Redefinition of starting point for extrapolation
251  iniPoint = pntOnTrk->position();
252  step = (*endPoint) - iniPoint;
253 
254  //
255  // Extrapolation for first measured point strategy. Start from it and
256  // always add material
257  //
258  if( Strategy == 0) {
260  if (pmom.dot(step) < 0) {
262  }
263  endPer = m_extrapolator->extrapolate(
264  ctx, *pntOnTrk, surfEnd, dir, true, prtType, addNoise).release();
265  return endPer;
266  }
267  //
268  // Extrapolation for any measured point
269  //
270  if (Strategy == 1) {
273  if (pmom.dot(step) < 0) {
275  mmode = removeNoise;
276  }
277  endPer = m_extrapolator->extrapolate(
278  ctx, *pntOnTrk, surfEnd, dir, true, prtType, mmode).release();
279  return endPer;
280  }
281  //
282  // Extrapolation for perigee and B-hit
283  //
284  if (Strategy == 2) {
285  double Border = 25.;
286  bool dirPositive = true;
287  if (pmom.dot(step) < 0.)
288  dirPositive = false;
289  if ((*endPoint).perp() > Border && iniPoint.perp() > Border) {
290  if (dirPositive) {
291  endPer = m_extrapolator->extrapolate(
292  ctx, *pntOnTrk, surfEnd, alongMomentum, true, prtType, addNoise).release();
293  } else {
294  endPer = m_extrapolator->extrapolate(ctx,
295  *pntOnTrk,
296  surfEnd,
298  true,
299  prtType,
300  removeNoise).release();
301  }
302  return endPer;
303  }
304  if ((*endPoint).perp() < Border && iniPoint.perp() < Border) {
305  if (dirPositive) {
306  endPer = m_extrapolator->extrapolate(ctx,
307  *pntOnTrk,
308  surfEnd,
310  true,
311  prtType,
312  removeNoise).release();
313  } else {
314  endPer = m_extrapolator->extrapolate(ctx,
315  *pntOnTrk,
316  surfEnd,
318  true,
319  prtType,
320  addNoise).release();
321  }
322  return endPer;
323  }
324  Amg::Transform3D trnsf;
325  trnsf.setIdentity();
326  CylinderSurface surfBorder(trnsf, Border, 3000.);
327  if (iniPoint.perp() < Border) {
328  tmpPer = m_extrapolator->extrapolate(ctx,
329  *pntOnTrk,
330  surfBorder,
332  true,
333  prtType,
334  removeNoise).release();
335  if (tmpPer == nullptr) {
336  return nullptr;
337  }
338  endPer = m_extrapolator->extrapolate(
339  ctx, *tmpPer, surfEnd, alongMomentum, true, prtType, addNoise).release();
340  } else {
341  endPer = m_extrapolator->extrapolate(
342  ctx, *pntOnTrk, surfEnd, oppositeMomentum, true, prtType, addNoise).release();
343  return endPer;
344  }
345  delete tmpPer;
346  return endPer;
347  }
348  return endPer;
349  }

◆ myxAODFstPntOnTrk()

const Perigee * Trk::VKalExtPropagator::myxAODFstPntOnTrk ( const xAOD::TrackParticle xprt) const

Definition at line 439 of file VKalExtPropagator.cxx.

440  {
441  static const SG::ConstAccessor<float> radiusOfFirstHitAcc ("radiusOfFirstHit");
442  if(!radiusOfFirstHitAcc.isAvailable (*xprt)) return nullptr; // No radiusOfFirstHit on track
443 
444  const EventContext& ctx = Gaudi::Hive::currentContext();
445  const Trk::Perigee* mPer = &(xprt->perigeeParameters());
446  Amg::Transform3D trnsf;
447  trnsf.setIdentity();
448  CylinderSurface surfacePntOnTrk( trnsf, xprt->radiusOfFirstHit(), 20000.);
449  ParticleHypothesis prtType = pion;
450 
451  const TrackParameters *hitOnTrk =
453  *mPer,
454  surfacePntOnTrk,
456  true, prtType, removeNoise).release();
457 //std::cout<<" Radius="<<xprt->radiusOfFirstHit()<<" extrap="<<hitOnTrk<<'\n';
458  if(hitOnTrk==nullptr)hitOnTrk=m_extrapolator->extrapolateDirectly(ctx,
459  *mPer,
460  surfacePntOnTrk,
462  true, prtType).release();
463  if(hitOnTrk==nullptr)return nullptr;
464 
465  //convert result to Perigee
466  PerigeeSurface surfacePerigee( hitOnTrk->position() );
467  const TrackParameters *hitOnTrkPerig = m_extrapolator->extrapolate(ctx,
468  *hitOnTrk,
469  surfacePerigee).release();
470  delete hitOnTrk; // Delete temporary results
471  if(hitOnTrkPerig==nullptr)return nullptr;
472 //std::cout<<" perig="<<(*hitOnTrkPerig)<<'\n';
473  return dynamic_cast<const Perigee* > (hitOnTrkPerig);
474  }

◆ Propagate()

void Trk::VKalExtPropagator::Propagate ( long int  trkID,
long int  Charge,
double *  ParOld,
double *  CovOld,
double *  RefStart,
double *  RefEnd,
double *  ParNew,
double *  CovNew,
IVKalState istate 
) const
overridevirtual

Implements Trk::basePropagator.

Definition at line 86 of file VKalExtPropagator.cxx.

90  {
91  TrkVKalVrtFitter::State& state = static_cast<TrkVKalVrtFitter::State&> (istate);
92 
93  int trkID_loc=trkID; if(trkID_loc<0)trkID_loc=0;
94 //std::cout<<__func__<<" Ext.Propagator TrkID="<<trkID<<"to (local!!!)="<<RefEnd[0]<<", "<<RefEnd[1]<<", "<<RefEnd[2]<<'\n';
95 //-----------
96  double vX=RefEnd[0]; double vY=RefEnd[1]; double vZ=RefEnd[2]; //relative coords
97  // Propagation target in GLOBAL frame
98  Amg::Vector3D endPointG( vX + state.m_refFrameX, vY + state.m_refFrameY, vZ + state.m_refFrameZ);
99 //
100 // ---- Make MeasuredPerigee from input. Mag.field at start point is used here
101 //
102  std::vector<double> PerigeeIni( ParOld, ParOld+5 );
103  std::vector<double> CovPerigeeIni( 15, 0. );
104  if( CovOld != nullptr) {
105 // for(int i=0; i<15;i++) CovPerigeeIni.push_back( CovOld[i] );
106  std::copy(CovOld,CovOld+15,CovPerigeeIni.begin() );
107  }else{
108 // for(int i=0; i<15;i++) CovPerigeeIni.push_back(0.);
109  CovPerigeeIni[0]=1.e6;CovPerigeeIni[2]=1.e6;CovPerigeeIni[5]=1.;CovPerigeeIni[9]=1.;CovPerigeeIni[14]=fabs(PerigeeIni[4]);
110  }
111  //--- This creates Perigee in GLOBAL frame from input in realtive coordinates
112  const Perigee* inpPer =
113  m_vkalFitSvc->CreatePerigee( RefStart[0], RefStart[1], RefStart[2], PerigeeIni, CovPerigeeIni, state).release();
114  const TrackParameters * inpPar= inpPer;
115 //
116 // ----- Magnetic field is taken at target point (GLOBAL calculated from relative frame input)
117 //
118  double fx,fy,fz;
119  state.m_fitField.getMagFld(vX,vY,vZ,fx,fy,fz);
120 //
121 //-------------------- Extrapolation itself
122 //
123  const Trk::TrackParameters* endPer = nullptr;
124  if(trkID<0){
125  endPer = myExtrapWithMatUpdate( trkID, inpPar, &endPointG, state);
126  }else{
127  endPer = myExtrapWithMatUpdate( trkID, inpPar, &endPointG, state);
128  }
129 //-----------------------------------
130  if( endPer == nullptr ) { // No extrapolation done!!!
131  ParNew[0]=0.; ParNew[1]=0.;ParNew[2]=0.;ParNew[3]=0.;ParNew[4]=0.;
132  delete inpPer; return;
133  }
134  const Perigee* mPer = dynamic_cast<const Perigee*>(endPer);
135  const AtaStraightLine* Line = dynamic_cast<const AtaStraightLine*>(endPer);
136  AmgVector(5) VectPerig; VectPerig.setZero();
137  const AmgSymMatrix(5) *CovMtx=nullptr;
138  if( mPer ){
139  VectPerig = mPer->parameters();
140  CovMtx = mPer->covariance();
141  }
142  if( Line ){
143  VectPerig = Line->parameters();
144  CovMtx = Line->covariance();
145  }
146  if( (Line==nullptr && mPer==nullptr) || CovMtx==nullptr ){
147  ParNew[0]=0.; ParNew[1]=0.;ParNew[2]=0.;ParNew[3]=0.;ParNew[4]=0.;
148  delete inpPer; return;
149  }
150 
151  if((*CovMtx)(0,0)<=0. || (*CovMtx)(1,1)<=0.){ //protection against bad error matrix
152  ParNew[0]=0.; ParNew[1]=0.;ParNew[2]=0.;ParNew[3]=0.;ParNew[4]=0.;
153  delete inpPer; delete endPer;
154  return;
155  }
156  double CovVertTrk[15];
157  long int locCharge=Charge;
158  CovVertTrk[ 0] =(*CovMtx)(0,0);
159  CovVertTrk[ 1] =(*CovMtx)(1,0);
160  CovVertTrk[ 2] =(*CovMtx)(1,1);
161  CovVertTrk[ 3] =(*CovMtx)(2,0);
162  CovVertTrk[ 4] =(*CovMtx)(2,1);
163  CovVertTrk[ 5] =(*CovMtx)(2,2);
164  CovVertTrk[ 6] =(*CovMtx)(3,0);
165  CovVertTrk[ 7] =(*CovMtx)(3,1);
166  CovVertTrk[ 8] =(*CovMtx)(3,2);
167  CovVertTrk[ 9] =(*CovMtx)(3,3);
168  CovVertTrk[10] =(*CovMtx)(4,0);
169  CovVertTrk[11] =(*CovMtx)(4,1);
170  CovVertTrk[12] =(*CovMtx)(4,2);
171  CovVertTrk[13] =(*CovMtx)(4,3);
172  CovVertTrk[14] =(*CovMtx)(4,4);
173 //std::cout<<" extrapPoint="<<endPer->position().x()<<", "<<endPer->position().y()<<", "<<endPer->position().y()<<'\n';
174 //std::cout<<" extrapCov="<<(*CovMtx)(0,0)<<", "<<(*CovMtx)(1,1)<<", "<<(*CovMtx)(2,2)<<
175 // ", "<<(*CovMtx)(3,3)<<", "<<(*CovMtx)(4,4)<<'\n';
176 
177  double effectiveBMAG=state.m_fitField.getEffField(fx, fy, fz, VectPerig[2], VectPerig[3]);
178  if(fabs(effectiveBMAG) < 0.01) effectiveBMAG=0.01;
179  if(CovNew != nullptr) {
180  m_vkalFitSvc->VKalTransform( effectiveBMAG, VectPerig(0), VectPerig(1),
181  VectPerig(2), VectPerig(3), VectPerig(4), CovVertTrk,
182  locCharge, &ParNew[0] , &CovNew[0]);
183  }else{
184  double CovVertTrkTmp[15];
185  m_vkalFitSvc->VKalTransform( effectiveBMAG, VectPerig(0), VectPerig(1),
186  VectPerig(2), VectPerig(3), VectPerig(4), CovVertTrk,
187  locCharge, &ParNew[0] , CovVertTrkTmp);
188  }
189  delete inpPer; delete endPer;
190  }

◆ Protection()

double Trk::VKalExtPropagator::Protection ( const double *  RefEnd,
const IVKalState istate 
) const
private

Definition at line 48 of file VKalExtPropagator.cxx.

50  {
51  const TrkVKalVrtFitter::State& state = static_cast<const TrkVKalVrtFitter::State&> (istate);
52 
53  double Xend=RefEnd[0] + state.m_refFrameX;
54  double Yend=RefEnd[1] + state.m_refFrameY;
55  double Zend=RefEnd[2] + state.m_refFrameZ;
56 
57  double sizeR = state.m_allowUltraDisplaced ? m_vkalFitSvc->m_MSsizeR : m_vkalFitSvc->m_IDsizeR;
58  double sizeZ = state.m_allowUltraDisplaced ? m_vkalFitSvc->m_MSsizeZ : m_vkalFitSvc->m_IDsizeZ;
59  double Rlim=std::hypot(Xend, Yend) / sizeR;
60  double Zlim=std::abs(Zend) / sizeZ;
61 
62  double Scale = Rlim; if(Zlim>Rlim) Scale=Zlim;
63 //std::cout<<"relative TARG="<<RefEnd[0]<<","<<RefEnd[1]<<","<<RefEnd[2]
64 //<<" global ref.="<<m_vkalFitSvc->state.m_refFrameX<<","<<m_vkalFitSvc->state.m_refFrameY<<","<<m_vkalFitSvc->state.m_refFrameZ
65 //<<" Limits="<<m_vkalFitSvc->m_IDsizeR<<","<<m_vkalFitSvc->m_IDsizeZ<<" scale="<<Scale<<'\n';
66  return Scale;
67  }

◆ setPropagator()

void Trk::VKalExtPropagator::setPropagator ( const IExtrapolator Pnt)

Definition at line 41 of file VKalExtPropagator.cxx.

42  {
43  m_extrapolator = Pnt;
44  }

Member Data Documentation

◆ m_extrapolator

const IExtrapolator* Trk::VKalExtPropagator::m_extrapolator
private

Pointer to Extrapolator AlgTool.

Definition at line 53 of file VKalExtPropagator.h.

◆ m_vkalFitSvc

TrkVKalVrtFitter* Trk::VKalExtPropagator::m_vkalFitSvc
private

Pointer to TrkVKalVrtFitter.

Definition at line 54 of file VKalExtPropagator.h.


The documentation for this class was generated from the following files:
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
Trk::TrkVKalVrtFitter::CreatePerigee
virtual std::unique_ptr< Trk::Perigee > CreatePerigee(const std::vector< double > &VKPerigee, const std::vector< double > &VKCov, IVKalState &istate) const override final
Definition: CvtPerigee.cxx:160
Trk::TrkVKalVrtFitter::VKalTransform
void VKalTransform(double MAG, double A0V, double ZV, double PhiV, double ThetaV, double PInv, const double[15], long int &Charge, double[5], double[15]) const
Definition: VKalTransform.cxx:59
Trk::oppositeMomentum
@ oppositeMomentum
Definition: PropDirection.h:21
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
Trig::MatchingStrategy::Strategy
Strategy
Definition: MatchingImplementation.h:26
Trk::TrkVKalVrtFitter::m_IDsizeR
Gaudi::Property< double > m_IDsizeR
Definition: TrkVKalVrtFitter.h:326
Trk::MaterialUpdateMode
MaterialUpdateMode
This is a steering enum to force the material update it can be: (1) addNoise (-1) removeNoise Second ...
Definition: MaterialUpdateMode.h:18
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
Trk::VKalExtPropagator::myExtrapWithMatUpdate
const TrackParameters * myExtrapWithMatUpdate(long int TrkID, const TrackParameters *inpPer, Amg::Vector3D *endPoint, const IVKalState &istate) const
Definition: VKalExtPropagator.cxx:204
Trk::TrkVKalVrtFitter::m_MSsizeZ
Gaudi::Property< double > m_MSsizeZ
Definition: TrkVKalVrtFitter.h:329
SG::ConstAccessor< float >
Trk::undefined
@ undefined
Definition: ParticleHypothesis.h:41
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
Trk::Perigee
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
Definition: Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:33
Trk::TrkVKalVrtFitter::m_MSsizeR
Gaudi::Property< double > m_MSsizeR
Definition: TrkVKalVrtFitter.h:328
Trk::IExtrapolator::extrapolateDirectly
virtual std::unique_ptr< TrackParameters > extrapolateDirectly(const EventContext &ctx, const TrackParameters &parm, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion) const =0
Extrapolate directly: Forwards directly the call to the configured "Global" propagator.
Trk::AtaStraightLine
ParametersT< TrackParametersDim, Charged, StraightLineSurface > AtaStraightLine
Definition: Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:35
Trk::AmgSymMatrix
AmgSymMatrix(5) &GXFTrackState
Definition: GXFTrackState.h:156
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:28
xAOD::TrackParticle_v1::perigeeParameters
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
Definition: TrackParticle_v1.cxx:415
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
AmgVector
AmgVector(4) T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.cxx:114
xAOD::TrackParticle_v1::radiusOfFirstHit
float radiusOfFirstHit() const
Returns the radius of the first hit.
MuonR4::State
CalibratedSpacePoint::State State
Definition: SpacePointCalibrator.cxx:42
Trk::pion
@ pion
Definition: ParticleHypothesis.h:32
Trk::IExtrapolator::extrapolate
virtual std::unique_ptr< NeutralParameters > extrapolate(const NeutralParameters &parameters, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true) const =0
Main extrapolation Interface starting from neutral parameters and aiming at surface.
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
Trk::VKalExtPropagator::m_vkalFitSvc
TrkVKalVrtFitter * m_vkalFitSvc
Pointer to TrkVKalVrtFitter.
Definition: VKalExtPropagator.h:54
Trk::ParametersBase
Definition: ParametersBase.h:55
Scale
void Scale(TH1 *h, double d=1)
Definition: comparitor.cxx:79
Trk::muon
@ muon
Definition: ParticleHypothesis.h:31
beamspotman.dir
string dir
Definition: beamspotman.py:619
Trk::TrackParameters
ParametersBase< TrackParametersDim, Charged > TrackParameters
Definition: Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:27
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::addNoise
@ addNoise
Definition: MaterialUpdateMode.h:19
Trk::VKalExtPropagator::Protection
double Protection(const double *, const IVKalState &istate) const
Definition: VKalExtPropagator.cxx:48
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:567
LArCellBinning.step
step
Definition: LArCellBinning.py:158
calibdata.copy
bool copy
Definition: calibdata.py:26
Trk::VKalExtPropagator::m_extrapolator
const IExtrapolator * m_extrapolator
Pointer to Extrapolator AlgTool.
Definition: VKalExtPropagator.h:53
Trk::SurfaceType::Line
@ Line
Trk::removeNoise
@ removeNoise
Definition: MaterialUpdateMode.h:20
Trk::TrkVKalVrtFitter::m_IDsizeZ
Gaudi::Property< double > m_IDsizeZ
Definition: TrkVKalVrtFitter.h:327