Loading [MathJax]/extensions/MathMenu.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
STEP_Propagator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 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 ScatteringAngles;
53 class AlignableTrackingVolume;
54 class ExtrapolationCache;
164  : public AthAlgTool
165  , virtual public IPropagator
166 {
168  // Public methods:
170 public:
172 
173  STEP_Propagator(const std::string&, const std::string&, const IInterface*);
174 
175  virtual ~STEP_Propagator();
176 
178  virtual StatusCode initialize() override final;
179 
181  virtual StatusCode finalize() override final;
182 
185  virtual std::unique_ptr<Trk::NeutralParameters> propagate(
187  const Trk::Surface&,
190  bool rC = false) const override final;
191 
193  virtual std::unique_ptr<Trk::TrackParameters> propagate(
194  const EventContext& ctx,
195  const Trk::TrackParameters& trackParameters,
196  const Trk::Surface& targetSurface,
197  Trk::PropDirection propagationDirection,
198  const Trk::BoundaryCheck& boundaryCheck,
199  const MagneticFieldProperties& magneticFieldProperties,
200  ParticleHypothesis particle,
201  bool returnCurv = false,
202  const Trk::TrackingVolume* tVol = nullptr) const override final;
203 
205  virtual std::unique_ptr<Trk::TrackParameters> propagate(
206  const EventContext& ctx,
207  const Trk::TrackParameters& trackParameters,
208  std::vector<Trk::DestSurf>& targetSurfaces,
209  Trk::PropDirection propagationDirection,
210  const MagneticFieldProperties& magneticFieldProperties,
211  ParticleHypothesis particle,
212  std::vector<unsigned int>& solutions,
213  double& path,
214  bool usePathLimit = false,
215  bool returnCurv = false,
216  const Trk::TrackingVolume* tVol = nullptr) const override final;
217 
220  virtual std::unique_ptr<Trk::TrackParameters> propagateT(
221  const EventContext& ctx,
222  const Trk::TrackParameters& trackParameters,
223  std::vector<Trk::DestSurf>& targetSurfaces,
224  Trk::PropDirection propagationDirection,
225  const MagneticFieldProperties& magneticFieldProperties,
226  ParticleHypothesis particle,
227  std::vector<unsigned int>& solutions,
228  Trk::PathLimit& path,
229  Trk::TimeLimit& time,
230  bool returnCurv,
231  const Trk::TrackingVolume* tVol,
232  std::vector<Trk::HitInfo>*& hitVector) const override final;
233 
236  virtual std::unique_ptr<Trk::TrackParameters> propagateM(
237  const EventContext& ctx,
238  const Trk::TrackParameters& trackParameters,
239  std::vector<Trk::DestSurf>& targetSurfaces,
240  Trk::PropDirection propagationDirection,
241  const MagneticFieldProperties& magneticFieldProperties,
242  ParticleHypothesis particle,
243  std::vector<unsigned int>& solutions,
244  std::vector<const Trk::TrackStateOnSurface*>*& matstates,
245  std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>>*
246  intersections,
247  double& path,
248  bool usePathLimit = false,
249  bool returnCurv = false,
250  const Trk::TrackingVolume* tVol = nullptr,
251  Trk::ExtrapolationCache* = nullptr) const override final;
252 
255  virtual std::unique_ptr<Trk::TrackParameters> propagate(
256  const EventContext& ctx,
257  const Trk::TrackParameters& trackParameters,
258  const Trk::Surface& targetSurface,
259  Trk::PropDirection propagationDirection,
260  const Trk::BoundaryCheck& boundaryCheck,
261  const MagneticFieldProperties& magneticFieldProperties,
262  std::optional<Trk::TransportJacobian>& jacobian,
263  double& pathLimit,
264  ParticleHypothesis particle,
265  bool returnCurv = false,
266  const Trk::TrackingVolume* tVol = nullptr) const override final;
267 
269  virtual std::unique_ptr<Trk::TrackParameters> propagateParameters(
270  const EventContext& ctx,
271  const Trk::TrackParameters& trackParameters,
272  const Trk::Surface& targetSurface,
273  Trk::PropDirection propagationDirection,
274  const Trk::BoundaryCheck& boundaryCheck,
275  const MagneticFieldProperties& magneticFieldProperties,
276  ParticleHypothesis particle,
277  bool returnCurv = false,
278  const Trk::TrackingVolume* tVol = nullptr) const override final;
279 
282  virtual std::unique_ptr<Trk::TrackParameters> propagateParameters(
283  const EventContext& ctx,
284  const Trk::TrackParameters& trackParameters,
285  const Trk::Surface& targetSurface,
286  Trk::PropDirection propagationDirection,
287  const Trk::BoundaryCheck& boundaryCheck,
288  const MagneticFieldProperties& magneticFieldProperties,
289  std::optional<Trk::TransportJacobian>& jacobian,
290  ParticleHypothesis particle,
291  bool returnCurv = false,
292  const Trk::TrackingVolume* tVol = nullptr) const override final;
293 
295  virtual std::optional<TrackSurfaceIntersection> intersect(
296  const EventContext& ctx,
297  const Trk::TrackParameters& trackParameters,
298  const Trk::Surface& targetSurface,
299  const Trk::MagneticFieldProperties& magneticFieldProperties,
300  ParticleHypothesis particle,
301  const Trk::TrackingVolume* tVol = nullptr) const override final;
302 
305  virtual std::optional<TrackSurfaceIntersection> intersectSurface(
306  const EventContext& ctx,
307  const Surface& surface,
308  const TrackSurfaceIntersection& trackIntersection,
309  const double qOverP,
311  ParticleHypothesis particle) const override final;
312 
314  virtual void globalPositions(
315  const EventContext& ctx,
316  std::deque<Amg::Vector3D>& positionsList,
317  const TrackParameters& trackParameters,
318  const MagneticFieldProperties& magneticFieldProperties,
319  const CylinderBounds& cylinderBounds,
320  double maxStepSize,
321  ParticleHypothesis particle,
322  const Trk::TrackingVolume* tVol = 0) const override final;
323 
326  const EventContext&,
328  const Surface&,
332  const ParticleHypothesis) const override final
333  {
334  ATH_MSG_ERROR("Call to non-implemented multiStatePropagate");
335  return {};
336  }
338  const EventContext&,
341  Trk::TargetSurfaceVector&) const override final
342  {
344  }
345 
347  // Private methods:
349 
353  struct Cache
354  {
355  bool m_energyLoss{ true };
356  bool m_detailedElossFlag{ true };
357  bool m_straggling{ true };
358  bool m_solenoid{ false };
360  bool m_matPropOK{ true };
361  bool m_brem{ false };
362  bool m_includeBgradients{ true };
363  bool m_includeGgradient{ false };
364  bool m_MPV{ false };
365  bool m_multipleScattering{ true };
371  double m_delRad{ 0 }; // deRad/dl;
372  double m_delIoni{ 0 }; // deIoni/dl;
373  double m_sigmaIoni{ 0 }; // dsigma(ioni)/dl;
374  double m_kazL{ 0 }; // kazL constant;
375  double m_sigmaRad{ 0 }; // dsigma(rad)/dl;
376  // cache for input variance
379  double m_pathLimit{};
380  double m_timeOfFlight{};
381  double m_timeStep{};
382  double m_particleMass{ 0 };
383  double m_charge{};
385  double m_tolerance{ 1e-05 };
386  double m_momentumCutOff{ 50. };
387  double m_scatteringScale{ 1. };
388  double m_maxPath{ 100000. };
389  int m_maxSteps{ 10000 };
390  double m_layXmax{ 1. };
391  // secondary interactions
392  double m_timeIn{};
393  double m_bremMom{ 0. };
394  double m_bremEmitThreshold{ 0. };
395  double m_bremSampleThreshold{ 0. };
396  double m_P[45]{};
397 
398  const Trk::BinnedMaterial* m_binMat{ nullptr };
400  std::vector<const Trk::TrackStateOnSurface*>* m_matstates{ nullptr };
402  std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>>*
404 
406  std::vector<Trk::HitInfo>* m_hitVector{ nullptr };
407 
409  const TrackingVolume* m_trackingVolume{ nullptr };
410  const Material* m_material{ nullptr };
413  // cache for combined covariance matrix contribution
414  AmgSymMatrix(5) m_combinedCovariance;
415  // cache for differential covariance matrix contribution ( partial material
416  // dump )
417  AmgSymMatrix(5) m_covariance;
419  std::vector<std::pair<int, std::pair<double, double>>> m_currentDist;
420  MagField::AtlasFieldCache m_fieldCache;
421  CLHEP::HepRandomEngine* m_randomEngine { nullptr };
422  const EventContext& m_ctx;
423 
424  Cache (const EventContext& ctx) : m_ctx (ctx) {}
425  };
426 
427 private:
429  // the configured properties.
430  void setCacheFromProperties(Cache& cache) const
431  {
434  cache.m_energyLoss = m_energyLoss;
436  cache.m_MPV = m_MPV;
438  cache.m_straggling = m_straggling;
439  cache.m_tolerance = m_tolerance;
442  cache.m_maxPath = m_maxPath;
443  cache.m_maxSteps = m_maxSteps;
444  cache.m_layXmax = m_layXmax;
445  }
446 
448  // Main function for propagation
449  // with search of closest surface (ST)
451  std::unique_ptr<Trk::TrackParameters> propagateRungeKutta(
452  Cache& cache,
453  bool errorPropagation,
454  const Trk::TrackParameters& trackParameters,
455  std::vector<DestSurf>& targetSurfaces,
456  Trk::PropDirection propagationDirection,
457  const MagneticFieldProperties& magneticFieldProperties,
458  ParticleHypothesis particle,
459  std::vector<unsigned int>& solutions,
460  double& path,
461  bool returnCurv = false) const;
462 
464  // Method for propagation with search of closest surface (ST)
466  bool propagateWithJacobian(Cache& cache,
467  bool errorPropagation,
468  std::vector<DestSurf>& sfs,
469  double* P,
470  Trk::PropDirection propDir,
471  std::vector<unsigned int>& solutions,
472  double& path,
473  double sumPath) const;
474 
476  // dump material effects
478  void dumpMaterialEffects(Cache& cache,
479  const Trk::CurvilinearParameters* trackParameters,
480  double path) const;
481 
483  // Momentum smearing (simulation mode)
485  void smear(Cache& cache,
486  double& phi,
487  double& theta,
488  const Trk::TrackParameters* parms,
489  double radDist) const;
491  // Bremstrahlung (simulation mode)
493  void sampleBrem(Cache& cache, double mom) const;
494 
495  DoubleProperty m_tolerance{this, "Tolerance", 1e-05,
496  "Error tolerance. Low tolerance gives igh accuracy"};
497  BooleanProperty m_materialEffects{this, "MaterialEffects", true,
498  "Switch material effects on or off"};
499  BooleanProperty m_includeBgradients{this, "IncludeBgradients", true,
500  "Include B-field gradients in the error propagation"};
501  BooleanProperty m_includeGgradient{this, "IncludeGgradient", false,
502  "Include dg/dlambda into the error propagation? Only relevant when energy loss is true."};
503  DoubleProperty m_momentumCutOff{this, "MomentumCutOff", 50.,
504  "Stop propagation below this momentum in MeV"};
505  BooleanProperty m_multipleScattering{this, "MultipleScattering", true,
506  "Add multiple scattering to the covariance matrix?"};
507  BooleanProperty m_energyLoss{this, "EnergyLoss", true, "Include energy loss?"};
508  BooleanProperty m_detailedEloss{this, "DetailedEloss", true,
509  "Provide the extended EnergyLoss object with MopIonization etc."};
510  BooleanProperty m_straggling{this, "Straggling", true,
511  "Add energy loss fluctuations (straggling) to the covariance matrix?"};
512  BooleanProperty m_MPV{this, "MostProbableEnergyLoss", false,
513  "Use the most probable value of the energy loss, else use the mean energy loss."};
514  DoubleProperty m_stragglingScale{this, "StragglingScale", 1.,
515  "Scale for adjusting the width of the energy loss fluctuations."};
516  DoubleProperty m_scatteringScale{this, "MultipleScatteringScale", 1.,
517  "Scale for adjusting the multiple scattering contribution to the covariance matrix."};
518  DoubleProperty m_maxPath{this, "MaxPath", 100000.,
519  "Maximum propagation length in mm."};
520  IntegerProperty m_maxSteps{this, "MaxSteps", 10000,
521  "Maximum number of allowed steps (to avoid infinite loops)."};
522  DoubleProperty m_layXmax{this, "MSstepMax", 1.,
523  "maximal layer thickness for multiple scattering calculations"};
524 
525  // The following are needed for simulation
526  // enable simulation mode
527  BooleanProperty m_simulation{this, "SimulationMode", false,
528  "flag for simulation mode"};
530  ToolHandle<ITimedMatEffUpdator> m_simMatUpdator{this, "SimMatEffUpdator", ""};
532  ServiceHandle<IAthRNGSvc> m_rndGenSvc{this, "RandomNumberService", "AthRNGSvc",
533  "Random number generator"};
536  StringProperty m_randomEngineName{this, "RandomStreamName", "FatrasRnd",
537  "Name of the random number stream"};
538 
539  // Read handle for conditions object to get the field cache
541  this,
542  "AtlasFieldCacheCondObj",
543  "fieldCondObj",
544  "Name of the Magnetic Field conditions object key"
545  };
546  void getFieldCacheObject(Cache& cache, const EventContext& ctx) const;
547 
548  CLHEP::HepRandomEngine* getRandomEngine (const EventContext& ctx) const;
549 };
550 
551 } // end of namespace Trk
552 
553 #endif // STEP_Propagator_H
BinnedMaterial.h
Trk::STEP_Propagator::dumpMaterialEffects
void dumpMaterialEffects(Cache &cache, const Trk::CurvilinearParameters *trackParameters, double path) const
Definition: STEP_Propagator.cxx:2708
Trk::STEP_Propagator::Cache::m_kazL
double m_kazL
Definition: STEP_Propagator.h:374
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
Trk::STEP_Propagator::Cache::m_bremEmitThreshold
double m_bremEmitThreshold
Definition: STEP_Propagator.h:394
Trk::STEP_Propagator::Cache::m_momentumCutOff
double m_momentumCutOff
Definition: STEP_Propagator.h:386
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:337
Trk::STEP_Propagator::m_includeGgradient
BooleanProperty m_includeGgradient
Definition: STEP_Propagator.h:501
Trk::STEP_Propagator::Cache::m_bremSampleThreshold
double m_bremSampleThreshold
Definition: STEP_Propagator.h:395
Trk::STEP_Propagator::m_maxSteps
IntegerProperty m_maxSteps
Definition: STEP_Propagator.h:520
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:390
Trk::STEP_Propagator::Cache::m_multipleScattering
bool m_multipleScattering
Definition: STEP_Propagator.h:365
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
Trk::STEP_Propagator::m_tolerance
DoubleProperty m_tolerance
Definition: STEP_Propagator.h:495
Trk::STEP_Propagator::Cache::m_ctx
const EventContext & m_ctx
Definition: STEP_Propagator.h:422
Trk::STEP_Propagator::Cache::m_matPropOK
bool m_matPropOK
Definition: STEP_Propagator.h:360
SurfaceTypes.h
Trk::STEP_Propagator::Cache::m_P
double m_P[45]
Definition: STEP_Propagator.h:396
AtlasFieldCacheCondObj.h
Trk::STEP_Propagator::Cache::m_stragglingVariance
double m_stragglingVariance
Definition: STEP_Propagator.h:378
DMTest::P
P_v1 P
Definition: P.h:23
Trk::STEP_Propagator::Cache::m_charge
double m_charge
Definition: STEP_Propagator.h:383
Trk::Cache
Definition: LocalExtrapolatorCache.h:27
Trk::STEP_Propagator::Cache::m_bremMom
double m_bremMom
Definition: STEP_Propagator.h:393
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:362
Trk::STEP_Propagator::m_maxPath
DoubleProperty m_maxPath
Definition: STEP_Propagator.h:518
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:1780
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
Trk::STEP_Propagator::Cache::m_solenoid
bool m_solenoid
Switch for turning off material effects temporarily.
Definition: STEP_Propagator.h:358
Trk::STEP_Propagator::Cache::m_hitVector
std::vector< Trk::HitInfo > * m_hitVector
Definition: STEP_Propagator.h:406
Trk::STEP_Propagator::Cache::Cache
Cache(const EventContext &ctx)
Definition: STEP_Propagator.h:424
PropDirection.h
IPropagator.h
Trk::TrackSurfaceIntersection
Definition: TrackSurfaceIntersection.h:32
Trk::STEP_Propagator::m_simulation
BooleanProperty m_simulation
Definition: STEP_Propagator.h:527
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
Trk::STEP_Propagator::Cache::m_sigmaIoni
double m_sigmaIoni
Definition: STEP_Propagator.h:373
Trk::STEP_Propagator::Cache::m_tolerance
double m_tolerance
Definition: STEP_Propagator.h:385
Trk::STEP_Propagator::Cache::m_timeStep
double m_timeStep
Definition: STEP_Propagator.h:381
Trk::STEP_Propagator::Cache::m_combinedThickness
double m_combinedThickness
Definition: STEP_Propagator.h:384
Trk::STEP_Propagator::Cache::m_timeIn
double m_timeIn
Definition: STEP_Propagator.h:392
Trk::STEP_Propagator::Cache::m_maxSteps
int m_maxSteps
Definition: STEP_Propagator.h:389
Trk::STEP_Propagator::Cache::m_scatteringScale
double m_scatteringScale
Definition: STEP_Propagator.h:387
Trk::STEP_Propagator::m_multipleScattering
BooleanProperty m_multipleScattering
Definition: STEP_Propagator.h:505
Trk::STEP_Propagator::m_randomEngineName
StringProperty m_randomEngineName
Definition: STEP_Propagator.h:536
Trk::STEP_Propagator::m_scatteringScale
DoubleProperty m_scatteringScale
Definition: STEP_Propagator.h:516
Trk::STEP_Propagator::m_energyLoss
BooleanProperty m_energyLoss
Definition: STEP_Propagator.h:507
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Trk::STEP_Propagator::Cache::m_straggling
bool m_straggling
Definition: STEP_Propagator.h:357
GeoPrimitives.h
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::STEP_Propagator
Definition: STEP_Propagator.h:166
Trk::STEP_Propagator::Cache::m_particleMass
double m_particleMass
cache
Definition: STEP_Propagator.h:382
Trk::STEP_Propagator::sampleBrem
void sampleBrem(Cache &cache, double mom) const
Definition: STEP_Propagator.cxx:2792
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:370
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Trk::STEP_Propagator::Cache::m_energyLoss
bool m_energyLoss
Definition: STEP_Propagator.h:355
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:2100
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:354
vector
Definition: MultiHisto.h:13
Trk::STEP_Propagator::m_layXmax
DoubleProperty m_layXmax
Definition: STEP_Propagator.h:522
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:1528
Trk::CylinderBounds
Definition: CylinderBounds.h:46
Trk::STEP_Propagator::Cache::AmgSymMatrix
AmgSymMatrix(5) m_combinedCovariance
CLHEP
STD'S.
Definition: IAtRndmGenSvc.h:19
AthAlgTool.h
Trk::STEP_Propagator::Cache::m_inputThetaVariance
double m_inputThetaVariance
Definition: STEP_Propagator.h:377
Trk::ExtrapolationCode
Definition: ExtrapolationCell.h:105
AtlasFieldCache.h
Trk::STEP_Propagator::m_includeBgradients
BooleanProperty m_includeBgradients
Definition: STEP_Propagator.h:499
Trk::STEP_Propagator::getFieldCacheObject
void getFieldCacheObject(Cache &cache, const EventContext &ctx) const
Definition: STEP_Propagator.cxx:2806
Trk::MultiComponentState
std::vector< ComponentParameters > MultiComponentState
Definition: ComponentParameters.h:27
Trk::STEP_Propagator::Cache::m_pathLimit
double m_pathLimit
Definition: STEP_Propagator.h:379
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:1328
Trk::STEP_Propagator::getRandomEngine
CLHEP::HepRandomEngine * getRandomEngine(const EventContext &ctx) const
Definition: STEP_Propagator.cxx:2818
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:325
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:398
Trk::STEP_Propagator::m_simMatUpdator
ToolHandle< ITimedMatEffUpdator > m_simMatUpdator
secondary interactions (brem photon emission)
Definition: STEP_Propagator.h:530
Trk::STEP_Propagator::Cache::m_particle
ParticleHypothesis m_particle
Definition: STEP_Propagator.h:408
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:535
Trk::STEP_Propagator::Cache::m_delIoni
double m_delIoni
Definition: STEP_Propagator.h:372
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:1612
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:1752
Trk::STEP_Propagator::Cache::m_currentLayerBin
size_t m_currentLayerBin
Definition: STEP_Propagator.h:367
Trk::STEP_Propagator::m_detailedEloss
BooleanProperty m_detailedEloss
Definition: STEP_Propagator.h:508
Trk::STEP_Propagator::m_fieldCacheCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Definition: STEP_Propagator.h:540
EventPrimitives.h
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:419
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:1890
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:364
ATHRNG::RNGWrapper
A wrapper class for event-slot-local random engines.
Definition: RNGWrapper.h:56
columnar::final
CM final
Definition: ColumnAccessor.h:106
Trk::STEP_Propagator::Cache::m_detailedElossFlag
bool m_detailedElossFlag
Definition: STEP_Propagator.h:356
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:418
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:361
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:2755
Trk::STEP_Propagator::Cache::m_extrapolationCache
Trk::ExtrapolationCache * m_extrapolationCache
Definition: STEP_Propagator.h:412
SG::ReadCondHandleKey< AtlasFieldCacheCondObj >
Trk::STEP_Propagator::Cache::m_matupd_lastpath
double m_matupd_lastpath
Definition: STEP_Propagator.h:369
Trk::STEP_Propagator::Cache::m_material
const Material * m_material
cache for collecting the total X0 ans Elos
Definition: STEP_Propagator.h:410
Trk::STEP_Propagator::Cache::m_sigmaRad
double m_sigmaRad
Definition: STEP_Propagator.h:375
Trk::ExtrapolationCell
Definition: ExtrapolationCell.h:231
Trk::STEP_Propagator::m_stragglingScale
DoubleProperty m_stragglingScale
Definition: STEP_Propagator.h:514
ITimedMatEffUpdator.h
Trk::STEP_Propagator::Cache::m_matstates
std::vector< const Trk::TrackStateOnSurface * > * m_matstates
cache of intersections
Definition: STEP_Propagator.h:400
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:403
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:420
Trk::STEP_Propagator::Cache::m_delRad
double m_delRad
Definition: STEP_Propagator.h:371
Trk::TargetSurfaceVector
std::vector< TargetSurface > TargetSurfaceVector
Definition: TargetSurfaces.h:121
Trk::STEP_Propagator::Cache::m_trackingVolume
const TrackingVolume * m_trackingVolume
Definition: STEP_Propagator.h:409
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:532
Trk::STEP_Propagator::m_momentumCutOff
DoubleProperty m_momentumCutOff
Definition: STEP_Propagator.h:503
Trk::STEP_Propagator::Cache::m_propagateWithPathLimit
int m_propagateWithPathLimit
Definition: STEP_Propagator.h:366
Trk::STEP_Propagator::Cache::m_randomEngine
CLHEP::HepRandomEngine * m_randomEngine
Definition: STEP_Propagator.h:421
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:1414
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:430
Trk::HitInfo
Definition: HelperStructs.h:12
Trk::phi
@ phi
Definition: ParamDefs.h:75
Trk::Material
Definition: Material.h:116
Trk::STEP_Propagator::Cache::m_includeGgradient
bool m_includeGgradient
Definition: STEP_Propagator.h:363
AthAlgTool
Definition: AthAlgTool.h:26
Trk::STEP_Propagator::Cache::m_matupd_lastmom
double m_matupd_lastmom
Definition: STEP_Propagator.h:368
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:380
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:1193
Trk::STEP_Propagator::Cache::m_maxPath
double m_maxPath
Definition: STEP_Propagator.h:388
Trk::STEP_Propagator::m_MPV
BooleanProperty m_MPV
Definition: STEP_Propagator.h:512
Trk::STEP_Propagator::m_materialEffects
BooleanProperty m_materialEffects
Definition: STEP_Propagator.h:497
Trk::STEP_Propagator::finalize
virtual StatusCode finalize() override final
AlgTool finalize method.
Definition: STEP_Propagator.cxx:1220
IAthRNGSvc.h
ServiceHandle< IAthRNGSvc >
Trk::STEP_Propagator::m_straggling
BooleanProperty m_straggling
Definition: STEP_Propagator.h:510
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:1225