|
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 ITimedMatEffUpdator;
53 class ScatteringAngles;
54 class AlignableTrackingVolume;
55 class ExtrapolationCache;
174 STEP_Propagator(
const std::string&,
const std::string&,
const IInterface*);
191 bool rC = false)
const override final;
195 const EventContext& ctx,
202 bool returnCurv = false,
207 const EventContext& ctx,
213 std::
vector<
unsigned int>& solutions,
215 bool usePathLimit = false,
216 bool returnCurv = false,
222 const EventContext& ctx,
228 std::
vector<
unsigned int>& solutions,
238 const EventContext& ctx,
244 std::
vector<
unsigned int>& solutions,
249 bool usePathLimit = false,
250 bool returnCurv = false,
257 const EventContext& ctx,
266 bool returnCurv = false,
271 const EventContext& ctx,
278 bool returnCurv = false,
284 const EventContext& ctx,
292 bool returnCurv = false,
297 const EventContext& ctx,
307 const EventContext& ctx,
316 const EventContext& ctx,
335 ATH_MSG_ERROR(
"Call to non-implemented multiStatePropagate");
401 std::vector<const Trk::TrackStateOnSurface*>*
m_matstates{
nullptr };
403 std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>,
int>>*
454 bool errorPropagation,
456 std::vector<DestSurf>& targetSurfaces,
460 std::vector<unsigned int>& solutions,
462 bool returnCurv =
false)
const;
468 bool errorPropagation,
469 std::vector<DestSurf>& sfs,
472 std::vector<unsigned int>& solutions,
474 double sumPath)
const;
490 double radDist)
const;
526 "AtlasFieldCacheCondObj",
528 "Name of the Magnetic Field conditions object key"
532 CLHEP::HepRandomEngine*
getRandomEngine (
const EventContext& ctx)
const;
537 #endif // STEP_Propagator_H
bool m_includeBgradients
Include B-gradients in the error propagation.
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.
double m_bremSampleThreshold
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
path
python interpreter configuration --------------------------------------—
bool m_multipleScattering
double m_momentumCutOff
Stop propagation below this momentum.
bool m_includeGgradient
Include g-gradient in the error propagation.
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)
bool m_materialEffects
Switch material effects on or off.
bool const RAWDATA *ch2 const
double m_combinedThickness
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
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.
bool m_multipleScattering
Switch multiple scattering on or off.
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:
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
std::string m_randomEngineName
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
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.
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
double m_tolerance
Error tolerance.
virtual ~STEP_Propagator()
virtual StatusCode initialize() override final
AlgTool initialize method.
virtual StatusCode finalize() override final
AlgTool finalize method.
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.