ATLAS Offline Software
StepEngine.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // StaticEngine.cxx, (c) ATLAS Detector software
8 
9 // STL
10 #include <sstream>
11 // Trk include
12 #include "TrkExEngine/StepEngine.h"
13 
14 // constructor
15 Trk::StepEngine::StepEngine(const std::string& t, const std::string& n, const IInterface* p)
16 : AthAlgTool(t,n,p),
17  m_propagator(""),
18  m_materialEffectsEngine(""),
19  m_navigationEngine(""),
20  m_tolerance(0.01),
21  m_debugAndFix(true),
22  m_debugCall(false)
23 {
24  declareInterface<Trk::IExtrapolationEngine>(this);
25  // The Tools needed
26  declareProperty("Propagator" , m_propagator);
27  declareProperty("MaterialEffectsEngine" , m_materialEffectsEngine);
28  declareProperty("NavigationEngine" , m_navigationEngine);
29  // steering of the screen outoput (SOP)
30  declareProperty("OutputPrefix" , m_sopPrefix);
31  declareProperty("OutputPostfix" , m_sopPostfix);
32  declareProperty("DebugAndFixMode" , m_debugAndFix);
33 }
34 
35 // destructor
37 = default;
38 
39 
40 // the interface method initialize
42 {
43  if (m_propagator.retrieve().isFailure()){
44  EX_MSG_FATAL("", "initialize", "", "failed to retrieve propagator '"<< m_propagator << "'. Aborting." );
45  return StatusCode::FAILURE;
46  } else
47  EX_MSG_DEBUG("", "initialize", "", "successfully retrieved '" << m_propagator << "'." );
48 
49  if (m_materialEffectsEngine.retrieve().isFailure()){
50  EX_MSG_FATAL("", "initialize", "", "failed to retrieve material effect engine '"<< m_materialEffectsEngine << "'. Aborting." );
51  return StatusCode::FAILURE;
52  } else
53  EX_MSG_DEBUG("", "initialize", "", "successfully retrieved '" << m_materialEffectsEngine << "'." );
54 
55  if (m_navigationEngine.retrieve().isFailure()){
56  EX_MSG_FATAL("", "initialize", "", "failed to retrieve navigation engine '"<< m_navigationEngine << "'. Aborting." );
57  return StatusCode::FAILURE;
58  } else
59  EX_MSG_DEBUG("", "initialize", "", "successfully retrieved '" << m_navigationEngine << "'." );
60 
61  EX_MSG_DEBUG("", "initialize", "", "successful." );
62 
63  m_targetSurfaces.setDebugModeOff();
64 
65  return StatusCode::SUCCESS;
66 }
67 
68 // the interface method finalize
70 {
71  EX_MSG_DEBUG("", "finalize", "", "successful." );
72  return StatusCode::SUCCESS;
73 }
74 
75 
78  const Surface* sf,
79  const BoundaryCheck& bcheck) const
80 {
81  // check the input
83  if (!ecCharged.leadVolume) { // should not happen : try to recover anyway
84  Trk::ExtrapolationCode eVol = m_navigationEngine->resolvePosition(ecCharged,ecCharged.propDirection,false);
85  if (!eVol.isSuccessOrRecovered() && !eVol.inProgress()) return eVol;
86  }
87 
88  // cache the last lead parameters, useful in case a navigation error occured
89  ecCharged.lastLeadParameters = ecCharged.leadParameters;
90  // new extrapolation call : find possible target surfaces
91  //Trk::TargetSurfaceVector ts;
92  //Trk::ExtrapolationCode eCode = targetSurfacesT(ecCharged,ts,false,sf,bcheck);
93 
94  // test new class
95  Trk::ExtrapolationCode exC = m_targetSurfaces.setOnInput(ecCharged,sf,bcheck);
96 
97  // catch an infinite loop in frame navigation
98  if (exC==Trk::ExtrapolationCode::FailureLoop) { // should not happen : try to recover once
99 
100  EX_MSG_WARNING("", "extrapolate", "", "frame navigation recovery attempt for:"<< ecCharged.leadVolume->volumeName());
101 
102  Trk::ExtrapolationCode eVol = m_navigationEngine->resolvePosition(ecCharged,ecCharged.propDirection,true);
103  if (!eVol.isSuccessOrRecovered() && !eVol.inProgress()) return eVol;
104  //ts.clear();
105  //eVol = targetSurfacesT(ecCharged,ts,false,sf,bcheck);
106  exC = m_targetSurfaces.setOnInput(ecCharged,sf,bcheck);
107  if (!eVol.isSuccessOrRecovered() && !eVol.inProgress()) return eVol;
108  }
109 
110  // build PathLimit from eCell info
111  Trk::PathLimit pathLim(ecCharged.materialLimitX0-ecCharged.materialX0, ecCharged.materialProcess);
112  // build TimeLimit from eCell info
113  //Trk::TimeLimit timeLim(ecCharged.timeLimit,ecCharged.time,201); // Fatras decay code
114  Trk::TimeLimit timeLim(-1.,ecCharged.time,201); // temporary till time limit absent in eCell
115 
116  // loop over intersections
117  // std::vector<unsigned int> solutions;
118  Trk::TargetSurfaceVector solutions;
119  while (ecCharged.leadParameters ) {
120  solutions.clear();
121  // TODO pass TargetSurfaces directly to the propagator
122 
123  EX_MSG_VERBOSE(ecCharged.navigationStep, "propagate", "loop", "starting propagation at position : " << ecCharged.leadParameters->position()<<","<<ecCharged.leadParameters->momentum() );
124  if (m_debugCall) EX_MSG_DEBUG(ecCharged.navigationStep, "propagate", "debug loop", "starting propagation at position : " << ecCharged.leadParameters->position()<<","<<ecCharged.leadParameters->momentum() );
125  //const Trk::TrackParameters* nextPar = m_propagator->propagateT(*ecCharged.leadParameters,m_targetSurfaces,ecCharged.propDirection,
126  // ecCharged.mFieldMode, ecCharged.pHypothesis, solutions,
127  // pathLim,timeLim,ecCharged.navigationCurvilinear,hitVector);
128  // cache the last lead parameters, useful in case a navigation error occured
129  //ecCharged.lastLeadParameters = ecCharged.leadParameters;
130 
131  Trk::ExtrapolationCode eCode = m_propagator->propagate(
132  Gaudi::Hive::currentContext(),
133  ecCharged,
134  m_targetSurfaces,
135  solutions);
136 
137  // enforced debugging
138  if (eCode==Trk::ExtrapolationCode::FailureNavigation && m_debugAndFix) {
139  if (m_debugCall) {
140  EX_MSG_INFO(ecCharged.navigationStep, "extrapolate", "loop:debug mode:"," stopping execution for further debugging");
141  exit(0);
142  } else {
143  // repeat the call with printout && stop the execution
144  EX_MSG_INFO(ecCharged.navigationStep, "extrapolate", "loop:debug mode:","rerun last extrapolation call"<<ecCharged.lastLeadParameters->position());
145  ecCharged.leadParameters = ecCharged.lastLeadParameters;
146  ecCharged.leadVolume = nullptr;
147  m_debugCall = true;
148  m_targetSurfaces.setDebugModeOn();
149  eCode = extrapolate(ecCharged,sf,bcheck);
150  exit(0);
151  }
152  }
153 
154  const Trk::TrackParameters* nextPar = (eCode.isSuccess() || eCode.inProgress()) ? ecCharged.leadParameters : nullptr ;
155  if (!nextPar) EX_MSG_VERBOSE(ecCharged.navigationStep, "propagate", "loop", "propagation failed ");
156  else EX_MSG_VERBOSE(ecCharged.navigationStep, "propagate", "loop", "propagated to :"<< nextPar->position());
157 
158  if (!nextPar) return ( sf ? Trk::ExtrapolationCode::FailureDestination : eCode ) ;
159 
160  EX_MSG_VERBOSE(ecCharged.navigationStep, "propagate", "loop", "propagation arrived at position : " << ecCharged.leadParameters->position() );
161  if (m_debugCall) EX_MSG_DEBUG(ecCharged.navigationStep, "propagate", "loop", "propagation arrived at position : " << ecCharged.leadParameters->position() );
162 
163  // record the parameters as sensitive or passive depending on the surface
164  //Trk::ExtrapolationMode::eMode emode = csf.object->isActive() ? Trk::ExtrapolationMode::CollectSensitive : Trk::ExtrapolationMode::CollectPassive;
165  // fill the corresponding parameters, the material effects updator can attach material to them
166  // ecCharged.stepParameters(ecCharged.leadParameters, Trk::ExtrapolationMode::CollectPassive);
167 
168  // handle extrapolation step
169  Trk::ExtrapolationCode eStep = handleIntersection(ecCharged,solutions);
170 
171  if (eStep != Trk::ExtrapolationCode::InProgress ) return eStep;
172  }
173 
175  }
176 
177 
180  const Surface* sf,
181  const BoundaryCheck& bcheck) const
182 {
183  // check the input
184 
186  if (!ecNeutral.leadVolume) { // should not happen : try to recover anyway
187  Trk::ExtrapolationCode eVol = m_navigationEngine->resolvePosition(ecNeutral,ecNeutral.propDirection,false);
188  if (!eVol.isSuccessOrRecovered() && !eVol.inProgress()) return eVol;
189  }
190 
191  // new extrapolation call : find valid intersections
192  Trk::TargetSurfaceVector ts; ts.clear();
193  Trk::ExtrapolationCode eCode = targetSurfacesT(ecNeutral,ts,true,sf,bcheck);
194 
195  CHECK_ECODE_SUCCESS(ecNeutral, eCode);
196 
197  // catch an infinite loop in frame navigation
198  if (eCode==Trk::ExtrapolationCode::FailureLoop) { // should not happen : try to recover once
199  Trk::ExtrapolationCode eVol = m_navigationEngine->resolvePosition(ecNeutral,ecNeutral.propDirection,true);
200  if (!eVol.isSuccessOrRecovered() && !eVol.inProgress()) return eVol;
201  ts.clear();
202  eVol = targetSurfacesT(ecNeutral,ts,true,sf,bcheck);
203  if (!eVol.isSuccessOrRecovered() && !eVol.inProgress()) return eVol;
204  }
205 
206  // catch an infinite loop in frame navigation
207  if (!ecNeutral.leadVolume) { // should not happen : try to recover once
208  Trk::ExtrapolationCode eVol = m_navigationEngine->resolvePosition(ecNeutral,ecNeutral.propDirection);
209  if (!eVol.isSuccessOrRecovered() && !eVol.inProgress()) return eVol;
210 
211  eVol = targetSurfacesT(ecNeutral,ts,true,sf,bcheck);
212  if (!eVol.isSuccessOrRecovered() && !eVol.inProgress()) return eVol;
213 
214  }
215 
216  // loop over intersections
217  for (auto & t : ts) {
218 
219 
221  if ( t.sfType == Trk::SurfNavigType::BoundaryFrame ) {
222  const auto &bounds = ecNeutral.leadVolume->boundarySurfaces();
223  const Trk::TrackingVolume* nextVolume = bounds[t.index]->attachedVolume(t.intersection,
224  ecNeutral.leadParameters->momentum(),
225  ecNeutral.propDirection);
226 
227  if (!nextVolume) return Trk::ExtrapolationCode::SuccessBoundaryReached;
228 
229  ecNeutral.leadParameters = new Trk::NeutralCurvilinearParameters(t.intersection,ecNeutral.leadParameters->momentum(),0.);
230 
231  // - geometrySignature change and configuration to stop then triggers a Success
232  bool stopAtThisBoundary = ecNeutral.checkConfigurationMode(Trk::ExtrapolationMode::StopAtBoundary)
233  && (nextVolume->geometrySignature() != ecNeutral.leadVolume->geometrySignature());
234  // fill the boundary into the cache if successfully hit boundary surface
235  // - only cache if those are not the final parameters caused by a StopAtBoundary
236  if (!stopAtThisBoundary)
238  // loop protection - relaxed for the cases where you start from the boundary
239  if (ecNeutral.leadVolume == nextVolume ) {
240  // the start parameters where on the boundary already give a relaxed return code
241  // if (&bSurface == eCell.lastBoundarySurface) return Trk::ExtrapolationCode::Unset;
242  // give some screen output as of why this happens
243  EX_MSG_VERBOSE(ecNeutral.navigationStep, "navigation", "", "loop detected while trying to leave TrackingVolume '" << nextVolume->volumeName() << ".");
244  // return a loop failure, parameter deletion will be done by cache
246  }
247  // break if configured to break at volume boundary and signature change
248  if (stopAtThisBoundary){
249  EX_MSG_VERBOSE(ecNeutral.navigationStep, "navigation", "", "geometry signature change from " <<
250  ecNeutral.leadVolume->geometrySignature() << " to " << nextVolume->geometrySignature());
251  ecNeutral.nextGeometrySignature = nextVolume->geometrySignature();
252  // return the boundary reached
254  }
255  // remember the last boundary surface for loop protection
256  // ecNeutral.lastBoundarySurface = &bounds[index];
257  ecNeutral.lastBoundaryParameters = ecNeutral.leadParameters;
258  // set next volume
259  ecNeutral.leadVolume = nextVolume;
261  }
262  }
263 
265  }
266 
267 
269  Trk::TargetSurfaceVector&ts, bool trueOrdered) const
270 {
271  Trk::DistanceSolution distSol = tt.surf->straightLineDistanceEstimate(pos,mom);
272 
273  double dist = distSol.first();
274  Amg::Vector3D posi = pos + dist*mom;
275  // skip trivial solutions
276  if (distSol.numberOfSolutions()>1 && dist<m_tolerance && distSol.second()>m_tolerance) {
277  dist = distSol.second();
278  posi = pos + dist*mom;
279  if (trueOrdered && !tt.surf->isOnSurface(posi,tt.bcheck,m_tolerance,m_tolerance) ) return;
280  double dAbs = distSol.currentDistance(true);
281  tt.setDistance(dist,fabs(dAbs),distSol.signedDistance() && dAbs!=0. ? dAbs/fabs(dAbs) : 0.);
282  tt.setPosition(posi);
283  ts.push_back(tt);
284  return;
285  }
286  // save closest solution
287  if (!trueOrdered || dist>m_tolerance ) {
288  double dAbs = distSol.currentDistance(true);
289  tt.setDistance(dist,fabs(dAbs),distSol.signedDistance() && dAbs!=0. ? dAbs/fabs(dAbs) : 0.);
290  tt.setPosition(posi);
291  ts.push_back(tt);
292  }
293 
294  // save multiple intersection for neutral transport
295  if (distSol.numberOfSolutions()>1 && distSol.second()>m_tolerance && trueOrdered) {
296  dist = distSol.second();
297  posi = pos + dist*mom;
298  if ( tt.surf->isOnSurface(posi,tt.bcheck,m_tolerance,m_tolerance) ) {
299  double dAbs = distSol.currentDistance(true);
300  tt.setDistance(dist,fabs(dAbs),distSol.signedDistance() && dAbs!=0. ? dAbs/fabs(dAbs) : 0.);
301  tt.setPosition(posi);
302  ts.push_back(tt);
303  }
304  }
305 
306  }
307 
308 // handle extrapolation step
310  Trk::TargetSurfaceVector& solutions) const
311 {
312  for (const auto & thisSurface : solutions){
313  // destination
314  if ( thisSurface.sfType == Trk::SurfNavigType::Target ){
316  }
317  // frame boundary : update of target surfaces
318  if ( thisSurface.sfType == Trk::SurfNavigType::BoundaryFrame ) {
319  return resolveFrameBoundaryT(ecCharged,ecCharged.leadParameters->position(),
320  thisSurface.index);
321  }
322  }
324 }
Trk::ExtrapolationCell::materialLimitX0
double materialLimitX0
given material limit in X0
Definition: ExtrapolationCell.h:273
Trk::DistanceSolution::currentDistance
double currentDistance(bool signedDist=false) const
Current distance to surface (spatial), signed (along/opposite to surface normal) if input argument tr...
Trk::DistanceSolution::signedDistance
bool signedDistance() const
This method indicates availability of signed current distance (false for Perigee and StraighLineSurfa...
Trk::StepEngine::handleIntersection
Trk::ExtrapolationCode handleIntersection(ExCellCharged &ecCharged, Trk::TargetSurfaceVector &solutions) const
handle extrapolation step
Definition: StepEngine.cxx:309
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
Trk::StepEngine::m_navigationEngine
ToolHandle< INavigationEngine > m_navigationEngine
access to tracking geometry
Definition: StepEngine.h:109
Trk::StepEngine::finalize
virtual StatusCode finalize() override
AlgTool finalize method.
Definition: StepEngine.cxx:69
Trk::ExtrapolationCode::inProgress
bool inProgress() const
return inProgress
Definition: ExtrapolationCell.h:150
Trk::DistanceSolution
Definition: DistanceSolution.h:25
Trk::TargetSurface
target surface info ( navigation )
Definition: TargetSurfaces.h:56
Trk::ExtrapolationMode::CollectBoundary
@ CollectBoundary
Definition: ExtrapolationCell.h:58
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Trk::TrackingVolume::geometrySignature
GeometrySignature geometrySignature() const
return the Signature
Trk::DistanceSolution::numberOfSolutions
int numberOfSolutions() const
Number of intersection solutions.
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::StepEngine::evaluateDistance
void evaluateDistance(Trk::TargetSurface &tt, const Amg::Vector3D &pos, const Amg::Vector3D &mom, Trk::TargetSurfaceVector &ts, bool trueOrdered) const
distance calculations
Definition: StepEngine.cxx:268
Trk::TrackingVolume::boundarySurfaces
std::vector< SharedObject< BoundarySurface< TrackingVolume > > > & boundarySurfaces()
Method to return the BoundarySurfaces.
Definition: TrackingVolume.cxx:982
Trk::ExtrapolationCell::propDirection
PropDirection propDirection
this is the propagation direction
Definition: ExtrapolationCell.h:260
Trk::StepEngine::~StepEngine
virtual ~StepEngine()
Destructor.
Trk::StepEngine::m_propagator
ToolHandle< IPropagator > m_propagator
the used propagation engine
Definition: StepEngine.h:107
Trk::ExtrapolationCode::SuccessBoundaryReached
@ SuccessBoundaryReached
Definition: ExtrapolationCell.h:113
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Trk::DistanceSolution::first
double first() const
Distance to first intersection solution along direction.
Trk::ExtrapolationCode::SuccessDestination
@ SuccessDestination
Definition: ExtrapolationCell.h:112
Trk::ExtrapolationCode::FailureDestination
@ FailureDestination
Definition: ExtrapolationCell.h:120
python.ElectronD3PDObject.Target
Target
Definition: ElectronD3PDObject.py:172
Trk::IExtrapolationEngine::m_sopPostfix
std::string m_sopPostfix
prefix for screen output
Definition: IExtrapolationEngine.h:64
Trk::ExtrapolationCell::stepParameters
void stepParameters(const T *pars, ExtrapolationMode::eMode fillMode)
fill or attach the parameters from a step - memory management steered by extrapolationConfiguration
Definition: ExtrapolationCell.h:537
Trk::ExtrapolationCell::navigationStep
int navigationStep
a counter of the navigation Step
Definition: ExtrapolationCell.h:268
Trk::ExtrapolationCell::materialX0
double materialX0
collected material so far in units of X0
Definition: ExtrapolationCell.h:272
Trk::ExtrapolationCell::nextGeometrySignature
GeometrySignature nextGeometrySignature
when a boundary is reached the geometry signature is updated to the next volume one
Definition: ExtrapolationCell.h:265
Trk::IExtrapolationEngine::m_sopPrefix
std::string m_sopPrefix
< SCREEN output formatting (SOP) - unify amongst extrapolation engines
Definition: IExtrapolationEngine.h:63
EX_MSG_FATAL
#define EX_MSG_FATAL(navstep, step, idx, x)
Definition: ExtrapolationMacros.h:16
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
Trk::ExtrapolationCode::isSuccessOrRecovered
bool isSuccessOrRecovered() const
return success or recovered
Definition: ExtrapolationCell.h:162
Trk::ExtrapolationCode::FailureNavigation
@ FailureNavigation
Definition: ExtrapolationCell.h:122
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::DistanceSolution::second
double second() const
Distance to second intersection solution along direction (for a cylinder surface)
Trk::ExtrapolationCode::isSuccess
bool isSuccess() const
return success
Definition: ExtrapolationCell.h:153
Trk::ExtrapolationCode
Definition: ExtrapolationCell.h:105
EX_MSG_INFO
#define EX_MSG_INFO(navstep, step, idx, x)
Definition: ExtrapolationMacros.h:12
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::TimeLimit
Definition: HelperStructs.h:58
Trk::ExtrapolationCell::materialProcess
int materialProcess
the material process to be generated
Definition: ExtrapolationCell.h:276
calibdata.exit
exit
Definition: calibdata.py:236
Trk::ExtrapolationCell::checkConfigurationMode
bool checkConfigurationMode(ExtrapolationMode::eMode em) const
check the configuration mode
Definition: ExtrapolationCell.h:351
Trk::BoundaryFrame
@ BoundaryFrame
Definition: TargetSurfaces.h:41
Trk::ExtrapolationCell::lastBoundaryParameters
T * lastBoundaryParameters
this is the last boundary surface to prevent loops
Definition: ExtrapolationCell.h:253
Trk::ExtrapolationCell::lastLeadParameters
T * lastLeadParameters
this is for caching the last valid
Definition: ExtrapolationCell.h:258
Trk::TrackingVolume::volumeName
const std::string & volumeName() const
Returns the VolumeName - for debug reason, might be depreciated later.
Trk::StepEngine::extrapolate
virtual ExtrapolationCode extrapolate(ExCellCharged &ecCharged, const Surface *sf=0, const BoundaryCheck &bcheck=true) const override
charged extrapolation - public interface
Definition: StepEngine.cxx:77
Trk::PathLimit
Definition: HelperStructs.h:34
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::ExtrapolationCode::FailureConfiguration
@ FailureConfiguration
Definition: ExtrapolationCell.h:124
EX_MSG_DEBUG
#define EX_MSG_DEBUG(navstep, step, idx, x)
Definition: ExtrapolationMacros.h:13
Trk::NeutralCurvilinearParameters
CurvilinearParametersT< 5, Neutral, PlaneSurface > NeutralCurvilinearParameters
Definition: NeutralParameters.h:26
EX_MSG_VERBOSE
#define EX_MSG_VERBOSE(navstep, step, idx, x)
Definition: ExtrapolationMacros.h:14
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::ExtrapolationCell
Definition: ExtrapolationCell.h:231
Trk::ExtrapolationCell::leadParameters
T * leadParameters
the one last truely valid parameter in the stream
Definition: ExtrapolationCell.h:246
Trk::StepEngine::m_materialEffectsEngine
ToolHandle< IMaterialEffectsEngine > m_materialEffectsEngine
the material effects updated
Definition: StepEngine.h:108
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Trk::TargetSurfaceVector
std::vector< TargetSurface > TargetSurfaceVector
Definition: TargetSurfaces.h:121
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
Trk::StepEngine::m_debugAndFix
bool m_debugAndFix
Definition: StepEngine.h:118
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:569
Trk::StepEngine::StepEngine
StepEngine(const std::string &, const std::string &, const IInterface *)
Constructor.
Definition: StepEngine.cxx:15
EX_MSG_WARNING
#define EX_MSG_WARNING(navstep, step, idx, x)
Definition: ExtrapolationMacros.h:15
MuonHough::extrapolate
float extrapolate(const MuonLayerHough::Maximum &ref, const MuonLayerHough::Maximum &ex, bool doparabolic=false)
Definition: MuonLayerHough.cxx:519
Trk::ExtrapolationCell::time
float time
timing info
Definition: ExtrapolationCell.h:297
StepEngine.h
AthAlgTool
Definition: AthAlgTool.h:26
python.CaloScaleNoiseConfig.ts
ts
Definition: CaloScaleNoiseConfig.py:86
Trk::ExtrapolationCode::FailureLoop
@ FailureLoop
Definition: ExtrapolationCell.h:121
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::ExtrapolationMode::StopAtBoundary
@ StopAtBoundary
Definition: ExtrapolationCell.h:55
Trk::ExtrapolationCell::leadVolume
const TrackingVolume * leadVolume
the lead Volume - carrying the navigation stream
Definition: ExtrapolationCell.h:248
Trk::TrackingVolume
Definition: TrackingVolume.h:121
TileDCSDataPlotter.tt
tt
Definition: TileDCSDataPlotter.py:874
CHECK_ECODE_SUCCESS
#define CHECK_ECODE_SUCCESS(ecell, ecode)
Definition: ExtrapolationMacros.h:28
Trk::StepEngine::initialize
virtual StatusCode initialize() override
AlgTool initialize method.
Definition: StepEngine.cxx:41
Trk::ExtrapolationCode::InProgress
@ InProgress
Definition: ExtrapolationCell.h:111