Loading [MathJax]/extensions/MathMenu.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
17 #ifndef STEP_Propagator_H
18 #define STEP_Propagator_H
22 #include "GaudiKernel/ToolHandle.h"
45 class HepRandomEngine;
52 class ScatteringAngles;
53 class AlignableTrackingVolume;
54 class ExtrapolationCache;
173 STEP_Propagator(
const std::string&,
const std::string&,
const IInterface*);
190 bool rC = false)
const override final;
194 const EventContext& ctx,
201 bool returnCurv = false,
206 const EventContext& ctx,
212 std::
vector<
unsigned int>& solutions,
214 bool usePathLimit = false,
215 bool returnCurv = false,
221 const EventContext& ctx,
227 std::
vector<
unsigned int>& solutions,
237 const EventContext& ctx,
243 std::
vector<
unsigned int>& solutions,
248 bool usePathLimit = false,
249 bool returnCurv = false,
256 const EventContext& ctx,
265 bool returnCurv = false,
270 const EventContext& ctx,
277 bool returnCurv = false,
283 const EventContext& ctx,
291 bool returnCurv = false,
296 const EventContext& ctx,
306 const EventContext& ctx,
315 const EventContext& ctx,
334 ATH_MSG_ERROR(
"Call to non-implemented multiStatePropagate");
400 std::vector<const Trk::TrackStateOnSurface*>*
m_matstates{
nullptr };
402 std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>,
int>>*
453 bool errorPropagation,
455 std::vector<DestSurf>& targetSurfaces,
459 std::vector<unsigned int>& solutions,
461 bool returnCurv =
false)
const;
467 bool errorPropagation,
468 std::vector<DestSurf>& sfs,
471 std::vector<unsigned int>& solutions,
473 double sumPath)
const;
489 double radDist)
const;
496 "Error tolerance. Low tolerance gives igh accuracy"};
498 "Switch material effects on or off"};
500 "Include B-field gradients in the error propagation"};
502 "Include dg/dlambda into the error propagation? Only relevant when energy loss is true."};
504 "Stop propagation below this momentum in MeV"};
506 "Add multiple scattering to the covariance matrix?"};
507 BooleanProperty
m_energyLoss{
this,
"EnergyLoss",
true,
"Include energy loss?"};
509 "Provide the extended EnergyLoss object with MopIonization etc."};
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."};
515 "Scale for adjusting the width of the energy loss fluctuations."};
517 "Scale for adjusting the multiple scattering contribution to the covariance matrix."};
519 "Maximum propagation length in mm."};
521 "Maximum number of allowed steps (to avoid infinite loops)."};
523 "maximal layer thickness for multiple scattering calculations"};
528 "flag for simulation mode"};
533 "Random number generator"};
537 "Name of the random number stream"};
542 "AtlasFieldCacheCondObj",
544 "Name of the Magnetic Field conditions object key"
548 CLHEP::HepRandomEngine*
getRandomEngine (
const EventContext& ctx)
const;
553 #endif // STEP_Propagator_H
void dumpMaterialEffects(Cache &cache, const Trk::CurvilinearParameters *trackParameters, double path) const
double m_bremEmitThreshold
virtual Trk::ExtrapolationCode propagate(const EventContext &, Trk::ExCellCharged &, Trk::TargetSurfaces &, Trk::TargetSurfaceVector &) const override final
Propagation method needed for StepEngine.
BooleanProperty m_includeGgradient
double m_bremSampleThreshold
IntegerProperty m_maxSteps
path
python interpreter configuration --------------------------------------—
bool m_multipleScattering
DoubleProperty m_tolerance
const EventContext & m_ctx
double m_stragglingVariance
std::vector< FPGATrackSimHit > hitVector
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.
bool m_solenoid
Switch for turning off material effects temporarily.
std::vector< Trk::HitInfo > * m_hitVector
Cache(const EventContext &ctx)
BooleanProperty m_simulation
bool const RAWDATA *ch2 const
double m_combinedThickness
BooleanProperty m_multipleScattering
StringProperty m_randomEngineName
DoubleProperty m_scatteringScale
BooleanProperty m_energyLoss
double m_particleMass
cache
void sampleBrem(Cache &cache, double mom) const
double m_matdump_lastpath
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
::StatusCode StatusCode
StatusCode definition for legacy code.
stuct to pass information to the heavy lifting calculation internal methods
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.
AmgSymMatrix(5) m_combinedCovariance
double m_inputThetaVariance
BooleanProperty m_includeBgradients
void getFieldCacheObject(Cache &cache, const EventContext &ctx) const
std::vector< ComponentParameters > MultiComponentState
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.
CLHEP::HepRandomEngine * getRandomEngine(const EventContext &ctx) const
virtual Trk::MultiComponentState multiStatePropagate(const EventContext &, const MultiComponentState &, const Surface &, const MagneticFieldProperties &, const PropDirection, const BoundaryCheck &, const ParticleHypothesis) const override final
unimplemented multiStatePropagate
const Trk::BinnedMaterial * m_binMat
cache of TrackStateOnSurfaces
ToolHandle< ITimedMatEffUpdator > m_simMatUpdator
secondary interactions (brem photon emission)
ParticleHypothesis m_particle
std::pair< const Surface *, BoundaryCheck > DestSurf
typedef for input surfaces, boundary check
ATHRNG::RNGWrapper * m_rngWrapper
Random engine.
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.
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
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:
BooleanProperty m_detailedEloss
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Ensure that the ATLAS eigen extensions are properly loaded.
std::vector< std::pair< int, std::pair< double, double > > > m_currentDist
Macro wrapping the nonstandard restrict keyword.
Definition of ATLAS Math & Geometry primitives (Amg)
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
represents the track state (measurement, material, fit parameters and quality) at a surface.
A wrapper class for event-slot-local random engines.
This class describes energy loss material effects in the ATLAS tracking EDM.
Trk::EnergyLoss m_combinedEloss
Eigen::Matrix< double, 3, 1 > Vector3D
void smear(Cache &cache, double &phi, double &theta, const Trk::TrackParameters *parms, double radDist) const
Trk::ExtrapolationCache * m_extrapolationCache
const Material * m_material
cache for collecting the total X0 ans Elos
DoubleProperty m_stragglingScale
std::vector< const Trk::TrackStateOnSurface * > * m_matstates
cache of intersections
std::vector< std::pair< std::unique_ptr< Trk::TrackParameters >, int > > * m_identifiedParameters
cache of intersections/hit info
virtual std::unique_ptr< NeutralParameters > propagate(const NeutralParameters ¶meters, const Surface &sf, PropDirection dir, const BoundaryCheck &bcheck, bool returnCurv=false) const =0
Main propagation method for NeutralParameters.
MagField::AtlasFieldCache m_fieldCache
std::vector< TargetSurface > TargetSurfaceVector
const TrackingVolume * m_trackingVolume
STEP_Propagator(const std::string &, const std::string &, const IInterface *)
ServiceHandle< IAthRNGSvc > m_rndGenSvc
Random Generator service.
DoubleProperty m_momentumCutOff
int m_propagateWithPathLimit
CLHEP::HepRandomEngine * m_randomEngine
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.
void setCacheFromProperties(Cache &cache) const
initialize cache with the variables we need to take from
virtual ~STEP_Propagator()
virtual StatusCode initialize() override final
AlgTool initialize method.
BooleanProperty m_materialEffects
virtual StatusCode finalize() override final
AlgTool finalize method.
BooleanProperty m_straggling
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.