|  | 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");
 
  391     std::vector<const Trk::TrackStateOnSurface*>* 
m_matstates{ 
nullptr };
 
  393     std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, 
int>>*
 
  444     bool errorPropagation,
 
  446     std::vector<DestSurf>& targetSurfaces,
 
  450     std::vector<unsigned int>& solutions,
 
  452     bool returnCurv = 
false) 
const;
 
  458                              bool errorPropagation,
 
  459                              std::vector<DestSurf>& sfs,
 
  462                              std::vector<unsigned int>& solutions,
 
  464                              double sumPath) 
const;
 
  480              double radDist) 
const;
 
  487     "Error tolerance. Low tolerance gives igh accuracy"};
 
  489     "Switch material effects on or off"};
 
  491     "Include B-field gradients in the error propagation"};
 
  493     "Include dg/dlambda into the error propagation? Only relevant when energy loss is true."};
 
  495     "Stop propagation below this momentum in MeV"};
 
  497     "Add multiple scattering to the covariance matrix?"};
 
  498   BooleanProperty 
m_energyLoss{
this, 
"EnergyLoss", 
true, 
"Include energy loss?"};
 
  500     "Provide the extended EnergyLoss object with MopIonization etc."};
 
  502     "Add energy loss fluctuations (straggling) to the covariance matrix?"};
 
  503   BooleanProperty 
m_MPV{
this, 
"MostProbableEnergyLoss", 
false,
 
  504     "Use the most probable value of the energy loss, else use the mean energy loss."};
 
  506     "Scale for adjusting the width of the energy loss fluctuations."};
 
  508     "Scale for adjusting the multiple scattering contribution to the covariance matrix."};
 
  510     "Maximum propagation length in mm."};
 
  512     "Maximum number of allowed steps (to avoid infinite loops)."};
 
  514     "maximal layer thickness for multiple scattering calculations"};
 
  519     "flag for simulation mode"};
 
  524     "Random number generator"};
 
  528     "Name of the random number stream"};
 
  533     "AtlasFieldCacheCondObj",
 
  535     "Name of the Magnetic Field conditions object key" 
  539   CLHEP::HepRandomEngine* 
getRandomEngine (
const EventContext& ctx) 
const;
 
  544 #endif // STEP_Propagator_H 
  
void dumpMaterialEffects(Cache &cache, const Trk::CurvilinearParameters *trackParameters, double path) const
double m_bremEmitThreshold
BooleanProperty m_includeGgradient
double m_bremSampleThreshold
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
IntegerProperty m_maxSteps
path
python interpreter configuration --------------------------------------—
bool m_multipleScattering
DoubleProperty m_tolerance
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.
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
def time(flags, cells_name, *args, **kw)
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
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
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.