ATLAS Offline Software
STEP_Propagator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3  */
4 
6 // Header file for class STEP_Propagator
8 // (c) ATLAS Detector software
10 // Class for track status propagation through magnetic field
12 // Based on RungeKuttaPropagator Version 1.0 21/05/2004 I.Gavrilenko
13 // Version 0.1 16/2/2005 Esben Lund
14 // Extended by S.Todorova for propagation to multiple surfaces
16 
17 #ifndef STEP_Propagator_H
18 #define STEP_Propagator_H
19 
22 #include "GaudiKernel/ToolHandle.h"
26 //
29 #include "TrkGeometry/BinnedMaterial.h" //Identified material typedef
31 #include "TrkParameters/TrackParameters.h" //TrackParameters typedef
32 //#include "TrkExUtils/ExtrapolationCache.h"
33 // Amg
36 // MagField cache
39 //
40 #include "CxxUtils/restrict.h"
41 #include <list>
42 #include <vector>
43 
44 namespace CLHEP{
45  class HepRandomEngine;
46 }
47 
49 namespace Trk {
50 class Surface;
51 class TrackingVolume;
52 class ITimedMatEffUpdator;
53 class ScatteringAngles;
54 class AlignableTrackingVolume;
55 class ExtrapolationCache;
164 class STEP_Propagator final
165  : public AthAlgTool
166  , virtual public IPropagator
167 {
169  // Public methods:
171 public:
173 
174  STEP_Propagator(const std::string&, const std::string&, const IInterface*);
175 
176  virtual ~STEP_Propagator();
177 
179  virtual StatusCode initialize() override final;
180 
182  virtual StatusCode finalize() override final;
183 
186  virtual std::unique_ptr<Trk::NeutralParameters> propagate(
188  const Trk::Surface&,
191  bool rC = false) const override final;
192 
194  virtual std::unique_ptr<Trk::TrackParameters> propagate(
195  const EventContext& ctx,
196  const Trk::TrackParameters& trackParameters,
197  const Trk::Surface& targetSurface,
198  Trk::PropDirection propagationDirection,
199  const Trk::BoundaryCheck& boundaryCheck,
200  const MagneticFieldProperties& magneticFieldProperties,
202  bool returnCurv = false,
203  const Trk::TrackingVolume* tVol = nullptr) const override final;
204 
206  virtual std::unique_ptr<Trk::TrackParameters> propagate(
207  const EventContext& ctx,
208  const Trk::TrackParameters& trackParameters,
209  std::vector<Trk::DestSurf>& targetSurfaces,
210  Trk::PropDirection propagationDirection,
211  const MagneticFieldProperties& magneticFieldProperties,
213  std::vector<unsigned int>& solutions,
214  double& path,
215  bool usePathLimit = false,
216  bool returnCurv = false,
217  const Trk::TrackingVolume* tVol = nullptr) const override final;
218 
221  virtual std::unique_ptr<Trk::TrackParameters> propagateT(
222  const EventContext& ctx,
223  const Trk::TrackParameters& trackParameters,
224  std::vector<Trk::DestSurf>& targetSurfaces,
225  Trk::PropDirection propagationDirection,
226  const MagneticFieldProperties& magneticFieldProperties,
228  std::vector<unsigned int>& solutions,
229  Trk::PathLimit& path,
230  Trk::TimeLimit& time,
231  bool returnCurv,
232  const Trk::TrackingVolume* tVol,
233  std::vector<Trk::HitInfo>*& hitVector) const override final;
234 
237  virtual std::unique_ptr<Trk::TrackParameters> propagateM(
238  const EventContext& ctx,
239  const Trk::TrackParameters& trackParameters,
240  std::vector<Trk::DestSurf>& targetSurfaces,
241  Trk::PropDirection propagationDirection,
242  const MagneticFieldProperties& magneticFieldProperties,
244  std::vector<unsigned int>& solutions,
245  std::vector<const Trk::TrackStateOnSurface*>*& matstates,
246  std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>>*
247  intersections,
248  double& path,
249  bool usePathLimit = false,
250  bool returnCurv = false,
251  const Trk::TrackingVolume* tVol = nullptr,
252  Trk::ExtrapolationCache* = nullptr) const override final;
253 
256  virtual std::unique_ptr<Trk::TrackParameters> propagate(
257  const EventContext& ctx,
258  const Trk::TrackParameters& trackParameters,
259  const Trk::Surface& targetSurface,
260  Trk::PropDirection propagationDirection,
261  const Trk::BoundaryCheck& boundaryCheck,
262  const MagneticFieldProperties& magneticFieldProperties,
263  std::optional<Trk::TransportJacobian>& jacobian,
264  double& pathLimit,
266  bool returnCurv = false,
267  const Trk::TrackingVolume* tVol = nullptr) const override final;
268 
270  virtual std::unique_ptr<Trk::TrackParameters> propagateParameters(
271  const EventContext& ctx,
272  const Trk::TrackParameters& trackParameters,
273  const Trk::Surface& targetSurface,
274  Trk::PropDirection propagationDirection,
275  const Trk::BoundaryCheck& boundaryCheck,
276  const MagneticFieldProperties& magneticFieldProperties,
278  bool returnCurv = false,
279  const Trk::TrackingVolume* tVol = nullptr) const override final;
280 
283  virtual std::unique_ptr<Trk::TrackParameters> propagateParameters(
284  const EventContext& ctx,
285  const Trk::TrackParameters& trackParameters,
286  const Trk::Surface& targetSurface,
287  Trk::PropDirection propagationDirection,
288  const Trk::BoundaryCheck& boundaryCheck,
289  const MagneticFieldProperties& magneticFieldProperties,
290  std::optional<Trk::TransportJacobian>& jacobian,
292  bool returnCurv = false,
293  const Trk::TrackingVolume* tVol = nullptr) const override final;
294 
296  virtual std::optional<TrackSurfaceIntersection> intersect(
297  const EventContext& ctx,
298  const Trk::TrackParameters& trackParameters,
299  const Trk::Surface& targetSurface,
300  const Trk::MagneticFieldProperties& magneticFieldProperties,
302  const Trk::TrackingVolume* tVol = nullptr) const override final;
303 
306  virtual std::optional<TrackSurfaceIntersection> intersectSurface(
307  const EventContext& ctx,
308  const Surface& surface,
309  const TrackSurfaceIntersection& trackIntersection,
310  const double qOverP,
312  ParticleHypothesis particle) const override final;
313 
315  virtual void globalPositions(
316  const EventContext& ctx,
317  std::deque<Amg::Vector3D>& positionsList,
318  const TrackParameters& trackParameters,
319  const MagneticFieldProperties& magneticFieldProperties,
320  const CylinderBounds& cylinderBounds,
321  double maxStepSize,
323  const Trk::TrackingVolume* tVol = 0) const override final;
324 
327  const EventContext&,
329  const Surface&,
333  const ParticleHypothesis) const override final
334  {
335  ATH_MSG_ERROR("Call to non-implemented multiStatePropagate");
336  return {};
337  }
339  const EventContext&,
342  Trk::TargetSurfaceVector&) const override final
343  {
345  }
346 
348  // Private methods:
350 
354  struct Cache
355  {
356  bool m_energyLoss{ true };
357  bool m_detailedElossFlag{ true };
358  bool m_straggling{ true };
359  bool m_solenoid{ false };
361  bool m_matPropOK{ true };
362  bool m_brem{ false };
363  bool m_includeBgradients{ true };
364  bool m_includeGgradient{ false };
365  bool m_MPV{ false };
366  bool m_multipleScattering{ true };
372  double m_delRad{ 0 }; // deRad/dl;
373  double m_delIoni{ 0 }; // deIoni/dl;
374  double m_sigmaIoni{ 0 }; // dsigma(ioni)/dl;
375  double m_kazL{ 0 }; // kazL constant;
376  double m_sigmaRad{ 0 }; // dsigma(rad)/dl;
377  // cache for input variance
380  double m_pathLimit{};
381  double m_timeOfFlight{};
382  double m_timeStep{};
383  double m_particleMass{ 0 };
384  double m_charge{};
386  double m_tolerance{ 1e-05 };
387  double m_momentumCutOff{ 50. };
388  double m_scatteringScale{ 1. };
389  double m_maxPath{ 100000. };
390  double m_maxSteps{ 10000 };
391  double m_layXmax{ 1. };
392  // secondary interactions
393  double m_timeIn{};
394  double m_bremMom{ 0. };
395  double m_bremEmitThreshold{ 0. };
396  double m_bremSampleThreshold{ 0. };
397  double m_P[45];
398 
399  const Trk::BinnedMaterial* m_binMat{ nullptr };
401  std::vector<const Trk::TrackStateOnSurface*>* m_matstates{ nullptr };
403  std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>>*
405 
407  std::vector<Trk::HitInfo>* m_hitVector{ nullptr };
408 
410  const TrackingVolume* m_trackingVolume{ nullptr };
411  const Material* m_material{ nullptr };
414  // cache for combined covariance matrix contribution
415  AmgSymMatrix(5) m_combinedCovariance;
416  // cache for differential covariance matrix contribution ( partial material
417  // dump )
418  AmgSymMatrix(5) m_covariance;
420  std::vector<std::pair<int, std::pair<double, double>>> m_currentDist;
421  MagField::AtlasFieldCache m_fieldCache;
422  CLHEP::HepRandomEngine* m_randomEngine { nullptr };
423  const EventContext& m_ctx;
424 
425  Cache (const EventContext& ctx) : m_ctx (ctx) {}
426  };
427 
428 private:
430  // the configured properties.
431  void setCacheFromProperties(Cache& cache) const
432  {
435  cache.m_energyLoss = m_energyLoss;
437  cache.m_MPV = m_MPV;
439  cache.m_straggling = m_straggling;
440  cache.m_tolerance = m_tolerance;
443  cache.m_maxPath = m_maxPath;
444  cache.m_maxSteps = m_maxSteps;
445  cache.m_layXmax = m_layXmax;
446  }
447 
449  // Main function for propagation
450  // with search of closest surface (ST)
452  std::unique_ptr<Trk::TrackParameters> propagateRungeKutta(
453  Cache& cache,
454  bool errorPropagation,
455  const Trk::TrackParameters& trackParameters,
456  std::vector<DestSurf>& targetSurfaces,
457  Trk::PropDirection propagationDirection,
458  const MagneticFieldProperties& magneticFieldProperties,
460  std::vector<unsigned int>& solutions,
461  double& path,
462  bool returnCurv = false) const;
463 
465  // Method for propagation with search of closest surface (ST)
467  bool propagateWithJacobian(Cache& cache,
468  bool errorPropagation,
469  std::vector<DestSurf>& sfs,
470  double* P,
471  Trk::PropDirection propDir,
472  std::vector<unsigned int>& solutions,
473  double& path,
474  double sumPath) const;
475 
477  // dump material effects
479  void dumpMaterialEffects(Cache& cache,
480  const Trk::CurvilinearParameters* trackParameters,
481  double path) const;
482 
484  // Momentum smearing (simulation mode)
486  void smear(Cache& cache,
487  double& phi,
488  double& theta,
489  const Trk::TrackParameters* parms,
490  double radDist) const;
492  // Bremstrahlung (simulation mode)
494  void sampleBrem(Cache& cache, double mom) const;
495 
496  double m_tolerance;
505  bool m_MPV;
508  double m_maxPath;
509  double m_maxSteps;
510  double m_layXmax;
511 
512  // The following are needed for simulation
513  // enable simulation mode
516  ToolHandle<ITimedMatEffUpdator> m_simMatUpdator;
521  std::string m_randomEngineName;
522 
523  // Read handle for conditions object to get the field cache
525  this,
526  "AtlasFieldCacheCondObj",
527  "fieldCondObj",
528  "Name of the Magnetic Field conditions object key"
529  };
530  void getFieldCacheObject(Cache& cache, const EventContext& ctx) const;
531 
532  CLHEP::HepRandomEngine* getRandomEngine (const EventContext& ctx) const;
533 };
534 
535 } // end of namespace Trk
536 
537 #endif // STEP_Propagator_H
BinnedMaterial.h
Trk::STEP_Propagator::m_includeBgradients
bool m_includeBgradients
Include B-gradients in the error propagation.
Definition: STEP_Propagator.h:498
Trk::STEP_Propagator::dumpMaterialEffects
void dumpMaterialEffects(Cache &cache, const Trk::CurvilinearParameters *trackParameters, double path) const
Definition: STEP_Propagator.cxx:2744
Trk::STEP_Propagator::Cache::m_kazL
double m_kazL
Definition: STEP_Propagator.h:375
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
Trk::STEP_Propagator::Cache::m_bremEmitThreshold
double m_bremEmitThreshold
Definition: STEP_Propagator.h:395
Trk::STEP_Propagator::Cache::m_momentumCutOff
double m_momentumCutOff
Definition: STEP_Propagator.h:387
Trk::TransportJacobian
Definition: TransportJacobian.h:46
EnergyLoss.h
Trk::STEP_Propagator::propagate
virtual Trk::ExtrapolationCode propagate(const EventContext &, Trk::ExCellCharged &, Trk::TargetSurfaces &, Trk::TargetSurfaceVector &) const override final
Propagation method needed for StepEngine.
Definition: STEP_Propagator.h:338
Trk::STEP_Propagator::m_energyLoss
bool m_energyLoss
Definition: STEP_Propagator.h:502
Trk::STEP_Propagator::Cache::m_bremSampleThreshold
double m_bremSampleThreshold
Definition: STEP_Propagator.h:396
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
Trk::STEP_Propagator::m_stragglingScale
double m_stragglingScale
Definition: STEP_Propagator.h:506
athena.path
path
python interpreter configuration --------------------------------------—
Definition: athena.py:128
TrackParameters.h
Trk::STEP_Propagator::Cache::m_layXmax
double m_layXmax
Definition: STEP_Propagator.h:391
Trk::STEP_Propagator::Cache::m_multipleScattering
bool m_multipleScattering
Definition: STEP_Propagator.h:366
Trk::STEP_Propagator::m_momentumCutOff
double m_momentumCutOff
Stop propagation below this momentum.
Definition: STEP_Propagator.h:500
Trk::STEP_Propagator::m_includeGgradient
bool m_includeGgradient
Include g-gradient in the error propagation.
Definition: STEP_Propagator.h:499
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
Trk::STEP_Propagator::Cache::m_ctx
const EventContext & m_ctx
Definition: STEP_Propagator.h:423
Trk::STEP_Propagator::Cache::m_matPropOK
bool m_matPropOK
Definition: STEP_Propagator.h:361
SurfaceTypes.h
Trk::STEP_Propagator::Cache::m_P
double m_P[45]
Definition: STEP_Propagator.h:397
AtlasFieldCacheCondObj.h
Trk::STEP_Propagator::Cache::m_stragglingVariance
double m_stragglingVariance
Definition: STEP_Propagator.h:379
DMTest::P
P_v1 P
Definition: P.h:23
Trk::STEP_Propagator::Cache::m_charge
double m_charge
Definition: STEP_Propagator.h:384
Trk::Cache
Definition: LocalExtrapolatorCache.h:27
Trk::STEP_Propagator::Cache::m_bremMom
double m_bremMom
Definition: STEP_Propagator.h:394
hitVector
std::vector< FPGATrackSimHit > hitVector
Definition: FPGATrackSimCluster.h:22
Trk::BinnedMaterial
Definition: BinnedMaterial.h:38
Trk::STEP_Propagator::Cache::m_includeBgradients
bool m_includeBgradients
Definition: STEP_Propagator.h:363
Trk::STEP_Propagator::globalPositions
virtual void globalPositions(const EventContext &ctx, std::deque< Amg::Vector3D > &positionsList, const TrackParameters &trackParameters, const MagneticFieldProperties &magneticFieldProperties, const CylinderBounds &cylinderBounds, double maxStepSize, ParticleHypothesis particle, const Trk::TrackingVolume *tVol=0) const override final
Return a list of positions along the track.
Definition: STEP_Propagator.cxx:1816
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
Trk::STEP_Propagator::m_MPV
bool m_MPV
Definition: STEP_Propagator.h:505
Trk::STEP_Propagator::Cache::m_solenoid
bool m_solenoid
Switch for turning off material effects temporarily.
Definition: STEP_Propagator.h:359
Trk::STEP_Propagator::Cache::m_hitVector
std::vector< Trk::HitInfo > * m_hitVector
Definition: STEP_Propagator.h:407
Trk::STEP_Propagator::Cache::Cache
Cache(const EventContext &ctx)
Definition: STEP_Propagator.h:425
PropDirection.h
IPropagator.h
Trk::TrackSurfaceIntersection
Definition: TrackSurfaceIntersection.h:32
Trk::STEP_Propagator::m_materialEffects
bool m_materialEffects
Switch material effects on or off.
Definition: STEP_Propagator.h:497
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
Trk::STEP_Propagator::Cache::m_sigmaIoni
double m_sigmaIoni
Definition: STEP_Propagator.h:374
Trk::STEP_Propagator::Cache::m_tolerance
double m_tolerance
Definition: STEP_Propagator.h:386
Trk::STEP_Propagator::Cache::m_timeStep
double m_timeStep
Definition: STEP_Propagator.h:382
Trk::STEP_Propagator::Cache::m_combinedThickness
double m_combinedThickness
Definition: STEP_Propagator.h:385
Trk::STEP_Propagator::Cache::m_timeIn
double m_timeIn
Definition: STEP_Propagator.h:393
Trk::STEP_Propagator::Cache::m_scatteringScale
double m_scatteringScale
Definition: STEP_Propagator.h:388
Trk::STEP_Propagator::m_simulation
bool m_simulation
Definition: STEP_Propagator.h:514
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Trk::STEP_Propagator::Cache::m_straggling
bool m_straggling
Definition: STEP_Propagator.h:358
GeoPrimitives.h
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::STEP_Propagator
Definition: STEP_Propagator.h:167
Trk::STEP_Propagator::Cache::m_particleMass
double m_particleMass
cache
Definition: STEP_Propagator.h:383
Trk::STEP_Propagator::sampleBrem
void sampleBrem(Cache &cache, double mom) const
Definition: STEP_Propagator.cxx:2828
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
Trk::STEP_Propagator::Cache::m_matdump_lastpath
double m_matdump_lastpath
Definition: STEP_Propagator.h:371
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Trk::STEP_Propagator::m_scatteringScale
double m_scatteringScale
Definition: STEP_Propagator.h:507
Trk::STEP_Propagator::Cache::m_energyLoss
bool m_energyLoss
Definition: STEP_Propagator.h:356
Trk::STEP_Propagator::m_layXmax
double m_layXmax
Definition: STEP_Propagator.h:510
Trk::STEP_Propagator::propagateWithJacobian
bool propagateWithJacobian(Cache &cache, bool errorPropagation, std::vector< DestSurf > &sfs, double *P, Trk::PropDirection propDir, std::vector< unsigned int > &solutions, double &path, double sumPath) const
Definition: STEP_Propagator.cxx:2136
Trk::theta
@ theta
Definition: ParamDefs.h:66
Trk::IPropagator
Definition: IPropagator.h:55
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::STEP_Propagator::Cache
stuct to pass information to the heavy lifting calculation internal methods
Definition: STEP_Propagator.h:355
vector
Definition: MultiHisto.h:13
Trk::STEP_Propagator::m_maxPath
double m_maxPath
Definition: STEP_Propagator.h:508
Trk::STEP_Propagator::propagateParameters
virtual std::unique_ptr< Trk::TrackParameters > propagateParameters(const EventContext &ctx, const Trk::TrackParameters &trackParameters, const Trk::Surface &targetSurface, Trk::PropDirection propagationDirection, const Trk::BoundaryCheck &boundaryCheck, const MagneticFieldProperties &magneticFieldProperties, ParticleHypothesis particle, bool returnCurv=false, const Trk::TrackingVolume *tVol=nullptr) const override final
Propagate parameters only.
Definition: STEP_Propagator.cxx:1564
Trk::CylinderBounds
Definition: CylinderBounds.h:46
Trk::STEP_Propagator::Cache::AmgSymMatrix
AmgSymMatrix(5) m_combinedCovariance
Trk::STEP_Propagator::m_detailedEloss
bool m_detailedEloss
Definition: STEP_Propagator.h:503
CLHEP
STD'S.
Definition: IAtRndmGenSvc.h:19
AthAlgTool.h
Trk::STEP_Propagator::Cache::m_inputThetaVariance
double m_inputThetaVariance
Definition: STEP_Propagator.h:378
Trk::ExtrapolationCode
Definition: ExtrapolationCell.h:105
AtlasFieldCache.h
Trk::STEP_Propagator::getFieldCacheObject
void getFieldCacheObject(Cache &cache, const EventContext &ctx) const
Definition: STEP_Propagator.cxx:2842
Trk::MultiComponentState
std::vector< ComponentParameters > MultiComponentState
Definition: ComponentParameters.h:27
Trk::STEP_Propagator::Cache::m_pathLimit
double m_pathLimit
Definition: STEP_Propagator.h:380
Trk::STEP_Propagator::propagateT
virtual std::unique_ptr< Trk::TrackParameters > propagateT(const EventContext &ctx, const Trk::TrackParameters &trackParameters, std::vector< Trk::DestSurf > &targetSurfaces, Trk::PropDirection propagationDirection, const MagneticFieldProperties &magneticFieldProperties, ParticleHypothesis particle, std::vector< unsigned int > &solutions, Trk::PathLimit &path, Trk::TimeLimit &time, bool returnCurv, const Trk::TrackingVolume *tVol, std::vector< Trk::HitInfo > *&hitVector) const override final
Propagate parameters and covariance with search of closest surface time included.
Definition: STEP_Propagator.cxx:1364
Trk::STEP_Propagator::getRandomEngine
CLHEP::HepRandomEngine * getRandomEngine(const EventContext &ctx) const
Definition: STEP_Propagator.cxx:2854
Trk::STEP_Propagator::multiStatePropagate
virtual Trk::MultiComponentState multiStatePropagate(const EventContext &, const MultiComponentState &, const Surface &, const MagneticFieldProperties &, const PropDirection, const BoundaryCheck &, const ParticleHypothesis) const override final
unimplemented multiStatePropagate
Definition: STEP_Propagator.h:326
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::CurvilinearParametersT
Definition: CurvilinearParametersT.h:48
Trk::STEP_Propagator::Cache::m_binMat
const Trk::BinnedMaterial * m_binMat
cache of TrackStateOnSurfaces
Definition: STEP_Propagator.h:399
Trk::STEP_Propagator::m_simMatUpdator
ToolHandle< ITimedMatEffUpdator > m_simMatUpdator
secondary interactions (brem photon emission)
Definition: STEP_Propagator.h:516
Trk::STEP_Propagator::Cache::m_particle
ParticleHypothesis m_particle
Definition: STEP_Propagator.h:409
Trk::DestSurf
std::pair< const Surface *, BoundaryCheck > DestSurf
typedef for input surfaces, boundary check
Definition: IPropagator.h:45
Trk::TimeLimit
Definition: HelperStructs.h:58
Trk::STEP_Propagator::m_rngWrapper
ATHRNG::RNGWrapper * m_rngWrapper
Random engine.
Definition: STEP_Propagator.h:520
Trk::STEP_Propagator::m_multipleScattering
bool m_multipleScattering
Switch multiple scattering on or off.
Definition: STEP_Propagator.h:501
Trk::STEP_Propagator::Cache::m_delIoni
double m_delIoni
Definition: STEP_Propagator.h:373
Trk::STEP_Propagator::intersect
virtual std::optional< TrackSurfaceIntersection > intersect(const EventContext &ctx, const Trk::TrackParameters &trackParameters, const Trk::Surface &targetSurface, const Trk::MagneticFieldProperties &magneticFieldProperties, ParticleHypothesis particle, const Trk::TrackingVolume *tVol=nullptr) const override final
Propagate parameters and return path (Similar to propagateParameters.
Definition: STEP_Propagator.cxx:1648
MagField
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Definition: ForwardRegionFieldSvc.h:27
Trk::STEP_Propagator::intersectSurface
virtual std::optional< TrackSurfaceIntersection > intersectSurface(const EventContext &ctx, const Surface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP, const MagneticFieldProperties &mft, ParticleHypothesis particle) const override final
Intersection and propagation:
Definition: STEP_Propagator.cxx:1788
Trk::STEP_Propagator::Cache::m_currentLayerBin
size_t m_currentLayerBin
Definition: STEP_Propagator.h:368
Trk::STEP_Propagator::m_fieldCacheCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Definition: STEP_Propagator.h:524
EventPrimitives.h
Trk::STEP_Propagator::m_randomEngineName
std::string m_randomEngineName
Definition: STEP_Propagator.h:521
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::STEP_Propagator::Cache::m_currentDist
std::vector< std::pair< int, std::pair< double, double > > > m_currentDist
Definition: STEP_Propagator.h:420
restrict.h
Macro wrapping the nonstandard restrict keyword.
Amg
Definition of ATLAS Math & Geometry primitives (Amg)
Definition: AmgStringHelpers.h:19
Trk::STEP_Propagator::propagateRungeKutta
std::unique_ptr< Trk::TrackParameters > propagateRungeKutta(Cache &cache, bool errorPropagation, const Trk::TrackParameters &trackParameters, std::vector< DestSurf > &targetSurfaces, Trk::PropDirection propagationDirection, const MagneticFieldProperties &magneticFieldProperties, ParticleHypothesis particle, std::vector< unsigned int > &solutions, double &path, bool returnCurv=false) const
Definition: STEP_Propagator.cxx:1926
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
Trk::STEP_Propagator::Cache::m_MPV
bool m_MPV
Definition: STEP_Propagator.h:365
ATHRNG::RNGWrapper
A wrapper class for event-slot-local random engines.
Definition: RNGWrapper.h:56
Trk::STEP_Propagator::Cache::m_detailedElossFlag
bool m_detailedElossFlag
Definition: STEP_Propagator.h:357
Trk::EnergyLoss
This class describes energy loss material effects in the ATLAS tracking EDM.
Definition: EnergyLoss.h:34
Trk::STEP_Propagator::Cache::m_combinedEloss
Trk::EnergyLoss m_combinedEloss
Definition: STEP_Propagator.h:419
Trk::PathLimit
Definition: HelperStructs.h:34
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MaterialInteraction.h
Trk::STEP_Propagator::Cache::m_brem
bool m_brem
Definition: STEP_Propagator.h:362
Trk::ExtrapolationCode::FailureConfiguration
@ FailureConfiguration
Definition: ExtrapolationCell.h:124
Trk::STEP_Propagator::smear
void smear(Cache &cache, double &phi, double &theta, const Trk::TrackParameters *parms, double radDist) const
Definition: STEP_Propagator.cxx:2791
Trk::STEP_Propagator::Cache::m_extrapolationCache
Trk::ExtrapolationCache * m_extrapolationCache
Definition: STEP_Propagator.h:413
SG::ReadCondHandleKey< AtlasFieldCacheCondObj >
Trk::STEP_Propagator::Cache::m_matupd_lastpath
double m_matupd_lastpath
Definition: STEP_Propagator.h:370
Trk::STEP_Propagator::Cache::m_material
const Material * m_material
cache for collecting the total X0 ans Elos
Definition: STEP_Propagator.h:411
Trk::STEP_Propagator::Cache::m_sigmaRad
double m_sigmaRad
Definition: STEP_Propagator.h:376
Trk::ExtrapolationCell
Definition: ExtrapolationCell.h:231
Trk::STEP_Propagator::m_maxSteps
double m_maxSteps
Definition: STEP_Propagator.h:509
ITimedMatEffUpdator.h
Trk::STEP_Propagator::Cache::m_matstates
std::vector< const Trk::TrackStateOnSurface * > * m_matstates
cache of intersections
Definition: STEP_Propagator.h:401
Trk::STEP_Propagator::Cache::m_identifiedParameters
std::vector< std::pair< std::unique_ptr< Trk::TrackParameters >, int > > * m_identifiedParameters
cache of intersections/hit info
Definition: STEP_Propagator.h:404
Trk::IPropagator::propagate
virtual std::unique_ptr< NeutralParameters > propagate(const NeutralParameters &parameters, const Surface &sf, PropDirection dir, const BoundaryCheck &bcheck, bool returnCurv=false) const =0
Main propagation method for NeutralParameters.
Trk::STEP_Propagator::Cache::m_fieldCache
MagField::AtlasFieldCache m_fieldCache
Definition: STEP_Propagator.h:421
Trk::STEP_Propagator::Cache::m_delRad
double m_delRad
Definition: STEP_Propagator.h:372
Trk::STEP_Propagator::Cache::m_maxSteps
double m_maxSteps
Definition: STEP_Propagator.h:390
Trk::TargetSurfaceVector
std::vector< TargetSurface > TargetSurfaceVector
Definition: TargetSurfaces.h:121
Trk::STEP_Propagator::Cache::m_trackingVolume
const TrackingVolume * m_trackingVolume
Definition: STEP_Propagator.h:410
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
Trk::STEP_Propagator::STEP_Propagator
STEP_Propagator(const std::string &, const std::string &, const IInterface *)
Definition: STEP_Propagator.cxx:1179
Trk::STEP_Propagator::m_rndGenSvc
ServiceHandle< IAthRNGSvc > m_rndGenSvc
Random Generator service.
Definition: STEP_Propagator.h:518
Trk::STEP_Propagator::Cache::m_propagateWithPathLimit
int m_propagateWithPathLimit
Definition: STEP_Propagator.h:367
Trk::STEP_Propagator::Cache::m_randomEngine
CLHEP::HepRandomEngine * m_randomEngine
Definition: STEP_Propagator.h:422
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:67
Trk::STEP_Propagator::propagateM
virtual std::unique_ptr< Trk::TrackParameters > propagateM(const EventContext &ctx, const Trk::TrackParameters &trackParameters, std::vector< Trk::DestSurf > &targetSurfaces, Trk::PropDirection propagationDirection, const MagneticFieldProperties &magneticFieldProperties, ParticleHypothesis particle, std::vector< unsigned int > &solutions, std::vector< const Trk::TrackStateOnSurface * > *&matstates, std::vector< std::pair< std::unique_ptr< Trk::TrackParameters >, int >> *intersections, double &path, bool usePathLimit=false, bool returnCurv=false, const Trk::TrackingVolume *tVol=nullptr, Trk::ExtrapolationCache *=nullptr) const override final
Propagate parameters and covariance with search of closest surface and material collection.
Definition: STEP_Propagator.cxx:1450
Trk::TargetSurfaces
Definition: TargetSurfaces.h:126
Trk::STEP_Propagator::setCacheFromProperties
void setCacheFromProperties(Cache &cache) const
initialize cache with the variables we need to take from
Definition: STEP_Propagator.h:431
Trk::STEP_Propagator::m_tolerance
double m_tolerance
Error tolerance.
Definition: STEP_Propagator.h:496
Trk::HitInfo
Definition: HelperStructs.h:12
Trk::phi
@ phi
Definition: ParamDefs.h:75
Trk::STEP_Propagator::m_straggling
bool m_straggling
Definition: STEP_Propagator.h:504
Trk::Material
Definition: Material.h:116
Trk::STEP_Propagator::Cache::m_includeGgradient
bool m_includeGgradient
Definition: STEP_Propagator.h:364
AthAlgTool
Definition: AthAlgTool.h:26
Trk::STEP_Propagator::Cache::m_matupd_lastmom
double m_matupd_lastmom
Definition: STEP_Propagator.h:369
TrackSurfaceIntersection.h
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::STEP_Propagator::~STEP_Propagator
virtual ~STEP_Propagator()
Trk::STEP_Propagator::Cache::m_timeOfFlight
double m_timeOfFlight
Definition: STEP_Propagator.h:381
Trk::TrackingVolume
Definition: TrackingVolume.h:121
Trk::ExtrapolationCache
Definition: ExtrapolationCache.h:26
Trk::STEP_Propagator::initialize
virtual StatusCode initialize() override final
AlgTool initialize method.
Definition: STEP_Propagator.cxx:1229
Trk::STEP_Propagator::Cache::m_maxPath
double m_maxPath
Definition: STEP_Propagator.h:389
Trk::STEP_Propagator::finalize
virtual StatusCode finalize() override final
AlgTool finalize method.
Definition: STEP_Propagator.cxx:1256
IAthRNGSvc.h
ServiceHandle< IAthRNGSvc >
Trk::STEP_Propagator::propagate
virtual std::unique_ptr< Trk::NeutralParameters > propagate(const Trk::NeutralParameters &, const Trk::Surface &, Trk::PropDirection, const Trk::BoundaryCheck &, bool rC=false) const override final
Main propagation method NeutralParameters.
Definition: STEP_Propagator.cxx:1261