diff --git a/Tracking/TrkExtrapolation/TrkExInterfaces/TrkExInterfaces/IPropagator.h b/Tracking/TrkExtrapolation/TrkExInterfaces/TrkExInterfaces/IPropagator.h index a789b51e9fb36b87cf12b9b2819c8e5428a0d1ae..5f003e3b048921accb22172e4de25c8bb89c4bfc 100755 --- a/Tracking/TrkExtrapolation/TrkExInterfaces/TrkExInterfaces/IPropagator.h +++ b/Tracking/TrkExtrapolation/TrkExInterfaces/TrkExInterfaces/IPropagator.h @@ -68,7 +68,7 @@ namespace Trk { const Surface& sf, PropDirection dir, BoundaryCheck bcheck, - bool returnCurv = false) const = 0; + bool returnCurv = false) const = 0; /** N 0) <b>Neutral parameters method </b> - symmetric interface for new Extrapolation engine @@ -82,12 +82,11 @@ namespace Trk { ParticleHypothesis, bool returnCurv, const TrackingVolume* tVol=0) const - { //avoid warning for tVol + { //avoid warning for tVol return propagate(parameters,sf,dir,bcheck,returnCurv); if (tVol) return 0; } - /** [TrackParameters] --------------------------------------------------------- */ /** Propagation interface: @@ -100,8 +99,8 @@ namespace Trk { BoundaryCheck bcheck, const MagneticFieldProperties& mprop, ParticleHypothesis particle=pion, - bool returnCurv = false, - const TrackingVolume* tVol=0) const = 0; + bool returnCurv = false, + const TrackingVolume* tVol=0) const = 0; /** Propagation interface: @@ -117,8 +116,8 @@ namespace Trk { std::vector<unsigned int>& solutions, double& path, bool usePathLim = false, - bool returnCurv = false, - const TrackingVolume* tVol=0) const = 0; + bool returnCurv = false, + const TrackingVolume* tVol=0) const = 0; /** Propagation interface: @@ -128,7 +127,7 @@ namespace Trk { virtual const TrackParameters* propagateT( const TrackParameters& parm, std::vector<DestSurf>& sfs, PropDirection dir, - const MagneticFieldProperties& mprop, + const MagneticFieldProperties& mprop, ParticleHypothesis particle, std::vector<unsigned int>& solutions, PathLimit& pathLim, TimeLimit& timeLim, @@ -144,7 +143,7 @@ namespace Trk { virtual const TrackParameters* propagateT( const TrackParameters& parm, TargetSurfaces& sfs, PropDirection dir, - const MagneticFieldProperties& mprop, + const MagneticFieldProperties& mprop, ParticleHypothesis particle, TargetSurfaceVector& solutions, PathLimit& pathLim, TimeLimit& timeLim, @@ -157,8 +156,8 @@ namespace Trk { The propagation method called by the TrkExEngine. All options included. */ virtual Trk::ExtrapolationCode propagate( Trk::ExCellCharged& eCell, - Trk::TargetSurfaces& sfs, - Trk::TargetSurfaceVector& solutions) const; + Trk::TargetSurfaces& sfs, + Trk::TargetSurfaceVector& solutions) const; /** Propagation interface: The propagation method with internal material collection. The propagator @@ -167,7 +166,7 @@ namespace Trk { virtual const TrackParameters* propagateM( const TrackParameters& parm, std::vector<DestSurf>& sfs, PropDirection dir, - const MagneticFieldProperties& mprop, + const MagneticFieldProperties& mprop, ParticleHypothesis particle, std::vector<unsigned int>& solutions, std::vector<const Trk::TrackStateOnSurface*>*& matstates, @@ -192,8 +191,8 @@ namespace Trk { TransportJacobian*&, double& pathLength, ParticleHypothesis particle=pion, - bool returnCurv = false, - const TrackingVolume* tVol=0) const = 0; + bool returnCurv = false, + const TrackingVolume* tVol=0) const = 0; /** Propagation interface without Covariance matrix propagation @@ -206,18 +205,18 @@ namespace Trk { BoundaryCheck bcheck, const MagneticFieldProperties& mprop, ParticleHypothesis particle=pion, - bool returnCurv = false, - const TrackingVolume* tVol=0) const = 0; + bool returnCurv = false, + const TrackingVolume* tVol=0) const = 0; virtual const TrackParameters* propagateParameters( const TrackParameters& parm, const Surface& sf, PropDirection dir, BoundaryCheck bcheck, const MagneticFieldProperties& mprop, - TransportJacobian*&, + TransportJacobian*&, ParticleHypothesis particle=pion, - bool returnCurv = false, - const TrackingVolume* tVol=0) const = 0; + bool returnCurv = false, + const TrackingVolume* tVol=0) const = 0; /** Intersection interface: @@ -229,7 +228,7 @@ namespace Trk { const Surface& sf, const MagneticFieldProperties& mprop, ParticleHypothesis particle=pion, - const TrackingVolume* tVol=0) const = 0; + const TrackingVolume* tVol=0) const = 0; /** Intersection and Intersector interface: */ @@ -264,12 +263,12 @@ namespace Trk { double step, Amg::Vector3D& outputPosition, Amg::Vector3D& outputMomentum, - const MagneticFieldProperties& mprop); + const MagneticFieldProperties& mprop) const; /** Validation Action: - Can be implemented optionally, outside access to internal validation steps */ - virtual void validationAction() const {} + Can be implemented optionally, outside access to internal validation steps */ + virtual void validationAction() const {} }; @@ -339,7 +338,13 @@ inline const Trk::TrackParameters* Trk::IPropagator::propagateM( const TrackPara } /** a very simple propagation along a given path length */ -inline void Trk::IPropagator::propagateStep(const Amg::Vector3D&, const Amg::Vector3D&, double, double, Amg::Vector3D&, Amg::Vector3D&, const MagneticFieldProperties&) {} +inline void Trk::IPropagator::propagateStep(const Amg::Vector3D&, + const Amg::Vector3D&, + double, + double, + Amg::Vector3D&, + Amg::Vector3D&, + const MagneticFieldProperties&) const {} #endif // TRKEXINTERFACES_PROPAGATOR_H diff --git a/Tracking/TrkExtrapolation/TrkExRungeKuttaPropagator/TrkExRungeKuttaPropagator/RungeKuttaPropagator.h b/Tracking/TrkExtrapolation/TrkExRungeKuttaPropagator/TrkExRungeKuttaPropagator/RungeKuttaPropagator.h index 1dd81aec07c856d196b555865de1cacf35b519f9..b5f907c517ba12b0bf106427625e92996aac9553 100755 --- a/Tracking/TrkExtrapolation/TrkExRungeKuttaPropagator/TrkExRungeKuttaPropagator/RungeKuttaPropagator.h +++ b/Tracking/TrkExtrapolation/TrkExRungeKuttaPropagator/TrkExRungeKuttaPropagator/RungeKuttaPropagator.h @@ -104,7 +104,7 @@ parameters and jacobian of transformation according straight line model @author Igor.Gavrilenko@cern.ch */ - class RungeKuttaPropagator : public AthAlgTool, virtual public IPropagator, + class RungeKuttaPropagator final: public AthAlgTool, virtual public IPropagator, virtual public IPatternParametersPropagator { ///////////////////////////////////////////////////////////////////////////////// @@ -118,23 +118,23 @@ public: virtual ~RungeKuttaPropagator (); /** AlgTool initailize method.*/ - StatusCode initialize(); + virtual StatusCode initialize() override final; /** AlgTool finalize method */ - StatusCode finalize(); + virtual StatusCode finalize() override final; /** Main propagation mehtod NeutralParameters */ - const NeutralParameters* propagate + virtual const NeutralParameters* propagate (const NeutralParameters &, const Surface &, PropDirection , BoundaryCheck , - bool ) const; + bool ) const override final; /** Main propagation mehtod without transport jacobian production*/ - const TrackParameters* propagate + virtual const TrackParameters* propagate (const TrackParameters &, const Surface &, const PropDirection , @@ -142,11 +142,11 @@ public: const MagneticFieldProperties &, ParticleHypothesis , bool , - const TrackingVolume* ) const; + const TrackingVolume* ) const override final; /** Main propagation mehtod with transport jacobian production*/ - const TrackParameters* propagate + virtual const TrackParameters* propagate (const TrackParameters &, const Surface &, const PropDirection , @@ -156,11 +156,11 @@ public: double &, ParticleHypothesis , bool , - const TrackingVolume* ) const; + const TrackingVolume* ) const override final; /** The propagation method finds the closest surface */ - const TrackParameters* propagate + virtual const TrackParameters* propagate (const TrackParameters &, std::vector<DestSurf> &, PropDirection , @@ -170,11 +170,11 @@ public: double &, bool , bool , - const TrackingVolume* ) const; + const TrackingVolume* ) const override final; /** Main propagation mehtod for parameters only without transport jacobian productio*/ - const TrackParameters* propagateParameters + virtual const TrackParameters* propagateParameters (const TrackParameters &, const Surface &, const PropDirection , @@ -182,12 +182,12 @@ public: const MagneticFieldProperties &, ParticleHypothesis , bool , - const TrackingVolume* ) const; + const TrackingVolume* ) const override final; /** Main propagation mehtod for parameters only with transport jacobian productio*/ - const TrackParameters* propagateParameters + virtual const TrackParameters* propagateParameters (const TrackParameters &, const Surface &, const PropDirection , @@ -196,100 +196,93 @@ public: TransportJacobian *&, ParticleHypothesis , bool , - const TrackingVolume* ) const; + const TrackingVolume* ) const override final; /** Global position together with direction of the trajectory on the surface */ - const IntersectionSolution* intersect + virtual const IntersectionSolution* intersect (const TrackParameters &, const Surface &, const MagneticFieldProperties &, ParticleHypothesis particle=pion, - const TrackingVolume* tvol=0 ) const; + const TrackingVolume* tvol=0 ) const override final; /** GlobalPositions list interface:*/ - void globalPositions + virtual void globalPositions (std::list<Amg::Vector3D> &, const TrackParameters &, const MagneticFieldProperties &, const CylinderBounds& , double , ParticleHypothesis particle=pion, - const TrackingVolume* tvol=0 ) const; + const TrackingVolume* tvol=0 ) const override final; - /** Test quality Jacobian calculation */ - - void JacobianTest - (const TrackParameters &, - const Surface &, - const MagneticFieldProperties&) const; - - ///////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////// // Public methods for Trk::PatternTrackParameters (from IPattern'Propagator) ///////////////////////////////////////////////////////////////////////////////// /** Main propagation method */ using IPropagator::propagate; - bool propagate + virtual bool propagate (PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection , const MagneticFieldProperties &, - ParticleHypothesis particle=pion) const; + ParticleHypothesis particle=pion) const override final; /** Main propagation mehtod with step to surface calculation*/ - bool propagate + virtual bool propagate (PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection , const MagneticFieldProperties &, double &, - ParticleHypothesis particle=pion) const; + ParticleHypothesis particle=pion) const override final; /** Main propagation mehtod for parameters only */ - bool propagateParameters + virtual bool propagateParameters (PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection , const MagneticFieldProperties &, - ParticleHypothesis particle=pion) const; + ParticleHypothesis particle=pion) const override final; /** Main propagation mehtod for parameters only with step to surface calculation*/ - bool propagateParameters + virtual bool propagateParameters (PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection , const MagneticFieldProperties &, double &, - ParticleHypothesis particle=pion) const; + ParticleHypothesis particle=pion) const override final; /** GlobalPositions list interface:*/ - void globalPositions + virtual void globalPositions (std::list<Amg::Vector3D> &, const PatternTrackParameters &, const MagneticFieldProperties &, const CylinderBounds &, double , - ParticleHypothesis particle=pion) const; + ParticleHypothesis particle=pion) const override final; /** GlobalPostions and steps for set surfaces */ - void globalPositions + virtual void globalPositions (const PatternTrackParameters &, std::list<const Surface*> &, std::list< std::pair<Amg::Vector3D,double> > &, const MagneticFieldProperties &, - ParticleHypothesis particle=pion ) const; + ParticleHypothesis particle=pion ) const override final; /** a very simple propagation along a given path length */ @@ -299,7 +292,7 @@ public: double step, Amg::Vector3D& outputPosition, Amg::Vector3D& outputMomentum, - const MagneticFieldProperties& mprop); + const MagneticFieldProperties& mprop) const override final; private: @@ -319,6 +312,14 @@ private: // Private methods: ///////////////////////////////////////////////////////////////////////////////// + /** Test quality Jacobian calculation */ + + void JacobianTest + (const TrackParameters &, + const Surface &, + const MagneticFieldProperties&) const; + + /** Internal RungeKutta propagation method for charge track parameters*/ const TrackParameters* propagateRungeKutta diff --git a/Tracking/TrkExtrapolation/TrkExRungeKuttaPropagator/src/RungeKuttaPropagator.cxx b/Tracking/TrkExtrapolation/TrkExRungeKuttaPropagator/src/RungeKuttaPropagator.cxx index e489d75ffd0b0364679255d46858360ec370c0c6..f60f3f6680c6fe6cca2ed91eaea2ed32904dd306 100755 --- a/Tracking/TrkExtrapolation/TrkExRungeKuttaPropagator/src/RungeKuttaPropagator.cxx +++ b/Tracking/TrkExtrapolation/TrkExRungeKuttaPropagator/src/RungeKuttaPropagator.cxx @@ -1837,11 +1837,10 @@ double Trk::RungeKuttaPropagator::stepReduction(const double* E) const // Ro and Po - output coordinate and momentum after propagation ///////////////////////////////////////////////////////////////////////////////// -void Trk::RungeKuttaPropagator::propagateStep -( const Amg::Vector3D& Ri,const Amg::Vector3D& Pi, - double Charge,double Step, - Amg::Vector3D& Ro, Amg::Vector3D& Po, - const MagneticFieldProperties& Mag) +void Trk::RungeKuttaPropagator::propagateStep( const Amg::Vector3D& Ri,const Amg::Vector3D& Pi, + double Charge,double Step, + Amg::Vector3D& Ro, Amg::Vector3D& Po, + const MagneticFieldProperties& Mag) const { Cache cache{}; diff --git a/Tracking/TrkExtrapolation/TrkExSTEP_Propagator/TrkExSTEP_Propagator/STEP_Propagator.h b/Tracking/TrkExtrapolation/TrkExSTEP_Propagator/TrkExSTEP_Propagator/STEP_Propagator.h index 4fb864b62beac5c8ebb039e0d973e9f2795369d9..e014e0b1481eb4d44fd11765f8a98be30979869a 100755 --- a/Tracking/TrkExtrapolation/TrkExSTEP_Propagator/TrkExSTEP_Propagator/STEP_Propagator.h +++ b/Tracking/TrkExtrapolation/TrkExSTEP_Propagator/TrkExSTEP_Propagator/STEP_Propagator.h @@ -128,7 +128,7 @@ namespace Trk { @author esben.lund@fys.uio.no **/ - class STEP_Propagator : public AthAlgTool, virtual public IPropagator + class STEP_Propagator final : public AthAlgTool, virtual public IPropagator { ///////////////////////////////////////////////////////////////////////////////// // Public methods: @@ -144,11 +144,11 @@ namespace Trk { /** AlgTool initailize method.*/ - virtual StatusCode initialize() override; + virtual StatusCode initialize() override final; /** AlgTool finalize method */ - virtual StatusCode finalize() override; + virtual StatusCode finalize() override final; /** Main propagation method for ParametersBase. Use StraightLinePropagator for neutrals */ @@ -170,7 +170,7 @@ namespace Trk { const Trk::Surface&, Trk::PropDirection, Trk::BoundaryCheck, - bool rC=false) const override; + bool rC=false) const override final; /** Propagate parameters and covariance without returning the Jacobian */ @@ -182,7 +182,7 @@ namespace Trk { const MagneticFieldProperties& magneticFieldProperties, ParticleHypothesis particle, bool returnCurv = false, - const Trk::TrackingVolume* tVol = 0) const override; + const Trk::TrackingVolume* tVol = 0) const override final; /** Propagate parameters and covariance with search of closest surface */ virtual const Trk::TrackParameters* @@ -195,7 +195,7 @@ namespace Trk { double& path, bool usePathLimit = false, bool returnCurv = false, - const Trk::TrackingVolume* tVol = 0) const override; + const Trk::TrackingVolume* tVol = 0) const override final; /** Propagate parameters and covariance with search of closest surface */ virtual const Trk::TrackParameters* @@ -209,7 +209,7 @@ namespace Trk { Trk::TimeLimit& time, bool returnCurv, const Trk::TrackingVolume* tVol, - std::vector<Trk::HitInfo>*& hitVector) const override; + std::vector<Trk::HitInfo>*& hitVector) const override final; /** Propagate parameters and covariance with search of closest surface and material collection */ virtual const Trk::TrackParameters* @@ -225,7 +225,7 @@ namespace Trk { bool usePathLimit = false, bool returnCurv = false, const Trk::TrackingVolume* tVol = nullptr, - Trk::ExtrapolationCache* = nullptr) const override; + Trk::ExtrapolationCache* = nullptr) const override final; /** Propagate parameters and covariance, and return the Jacobian. WARNING: Multiple Scattering is not included in the Jacobian! */ virtual const Trk::TrackParameters* @@ -238,7 +238,7 @@ namespace Trk { double& pathLimit, ParticleHypothesis particle, bool returnCurv=false, - const Trk::TrackingVolume* tVol = nullptr) const override; + const Trk::TrackingVolume* tVol = nullptr) const override final; /** Propagate parameters only */ @@ -250,7 +250,7 @@ namespace Trk { const MagneticFieldProperties& magneticFieldProperties, ParticleHypothesis particle, bool returnCurv = false, - const Trk::TrackingVolume* tVol = nullptr) const override; + const Trk::TrackingVolume* tVol = nullptr) const override final; /** Propagate parameters and return Jacobian. WARNING: Multiple Scattering is not included in the Jacobian! */ @@ -263,7 +263,7 @@ namespace Trk { Trk::TransportJacobian*& jacobian, ParticleHypothesis particle, bool returnCurv = false, - const Trk::TrackingVolume* tVol = 0) const override; + const Trk::TrackingVolume* tVol = 0) const override final; /** Propagate parameters and return path (Similar to propagateParameters */ @@ -272,7 +272,7 @@ namespace Trk { const Trk::Surface& targetSurface, const Trk::MagneticFieldProperties& magneticFieldProperties, ParticleHypothesis particle, - const Trk::TrackingVolume* tVol = 0) const override; + const Trk::TrackingVolume* tVol = 0) const override final; /** Intersection and propagation: */ @@ -281,7 +281,7 @@ namespace Trk { const TrackSurfaceIntersection* trackIntersection, const double qOverP, const MagneticFieldProperties& mft, - ParticleHypothesis particle) const override; + ParticleHypothesis particle) const override final; /** Return a list of positions along the track */ virtual void @@ -291,7 +291,7 @@ namespace Trk { const CylinderBounds& cylinderBounds, double maxStepSize, ParticleHypothesis particle, - const Trk::TrackingVolume* tVol = 0) const override; + const Trk::TrackingVolume* tVol = 0) const override final; /////////////////////////////////////////////////////////////////////////////////