|
ATLAS Offline Software
|
Go to the documentation of this file.
9 #ifndef TRKEXTOOLS_MATERIALEFFECTSUPDATOR_H
10 #define TRKEXTOOLS_MATERIALEFFECTSUPDATOR_H
19 #include "GaudiKernel/ToolHandle.h"
24 #include <boost/thread/tss.hpp>
26 #define TRKEXTOOLS_MAXUPDATES 100
27 #ifndef COVARIANCEUPDATEWITHCHECK
28 #define COVARIANCEUPDATEWITHCHECK(cov, sign, value) \
29 cov += (sign > 0 ? value : (value > cov ? 0 : sign * value))
36 class MaterialProperties;
37 class IEnergyLossUpdator;
38 class IMultipleScatteringUpdator;
39 class IMaterialMapper;
93 virtual std::unique_ptr<TrackParameters>
update(
107 virtual std::unique_ptr<TrackParameters>
update(
146 virtual std::unique_ptr<TrackParameters>
update(
150 double pathcorrection,
156 cache, parm, mprop, pathcorrection,
dir,
particle, matupmode);
180 virtual std::unique_ptr<TrackParameters>
update(
192 virtual std::unique_ptr<TrackParameters>
update(
224 virtual std::unique_ptr<TrackParameters>
update(
227 double pathcorrection,
234 cache, parm, mprop, pathcorrection,
dir,
particle, matupmode);
288 double pathcorrection,
297 double pathcorrection,
359 #endif // TRKEXTOOLS_MATERIALEFFECTSUPDATOR_H
virtual StatusCode initialize() override
AlgTool initailize method.
virtual void validationAction() const override final
Validation Action: outside access to internal validation steps Optional.
double m_momentumCut
Minimal momentum cut for update.
bool m_useMostProbableEloss
use the most probable energy loss
Cache class to allow passing information to/between calls.
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
virtual ~MaterialEffectsUpdator()
Virtual destructor.
virtual void modelAction(const TrackParameters *parm=nullptr) const override final
Model Action: Provides the possibility of doing non-local MaterialEffectsUpdates for different models...
static void modelActionImpl(ICache &cache, const TrackParameters *parm=nullptr)
virtual std::unique_ptr< TrackParameters > update(ICache &cache, const TrackParameters *parm, const MaterialEffectsOnTrack &meff, Trk::ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override
Updator interface (full update for a layer) according to user input through MaterialEffectsOnTrack —>...
bool m_validationMode
Switch for validation mode.
bool m_validationIgnoreUnmeasured
Ignore unmeasured TrackParameters (Navigation!)
virtual std::unique_ptr< TrackParameters > preUpdate(ICache &cache, const TrackParameters *parm, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override
Updator interface (pre-update for a layer): —> ALWAYS pointer to new TrackParameters is returned.
virtual std::unique_ptr< TrackParameters > update(const TrackParameters *parm, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override final
Updator interface (full update for a layer):
bool m_msgOutputValidationDirection
validation direction used for screen output
virtual std::unique_ptr< TrackParameters > postUpdate(ICache &cache, const TrackParameters &parm, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override final
Updator interface (post-update for a layer): —> ALWAYS pointer to new TrackParameters is returned if ...
ToolHandle< IEnergyLossUpdator > m_eLossUpdator
AlgoTool for EnergyLoss updates.
bool m_xKalmanStraggling
the momentum Error as calculated in xKalman
ICache & getTLSCache() const
ToolHandle< IMaterialMapper > m_materialMapper
the material mapper for recording the layer material
int m_validationDirection
validation direction
MaterialEffectsUpdator(const std::string &, const std::string &, const IInterface *)
AlgTool like constructor.
MaterialUpdateMode
This is a steering enum to force the material update it can be: (1) addNoise (-1) removeNoise Second ...
virtual std::unique_ptr< TrackParameters > update(const TrackParameters &parm, const MaterialProperties &mprop, double pathcorrection, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override final
Updator interface: MaterialProperties based material update.
bool const RAWDATA *ch2 const
bool m_doEloss
steer energy loss On/Off from outside
AmgSymMatrix(5) &GXFTrackState
represents the full description of deflection and e-loss of a track in material.
virtual void validationAction(ICache &cache) const override final
Validation Action - calls the writing and resetting of the TTree variables.
bool m_doCompoundLayerCheck
turn on/off the necessary checks when we may have compound layers
::StatusCode StatusCode
StatusCode definition for legacy code.
boost::thread_specific_ptr< ICache > m_cache_tls
double m_forcedMomentum
Forced momentum value.
double m_momentumMax
Maximal momentum cut for update.
std::unique_ptr< TrackParameters > updateImpl(ICache &cache, const TrackParameters *parm, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
virtual std::unique_ptr< TrackParameters > update(ICache &cache, const TrackParameters &parm, const MaterialProperties &mprop, double pathcorrection, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override final
Dedicated Updator interface:-> create new track parameters.
bool m_landauMode
If in Landau mode, error propagation is done as for landaus.
ToolHandle< IMultipleScatteringUpdator > m_msUpdator
AlgoTool for MultipleScatterin effects.
static void validationActionImpl(ICache &cache)
virtual std::unique_ptr< TrackParameters > update(const TrackParameters *parm, const MaterialEffectsOnTrack &meff, Trk::ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override final
User updator interface (full update for a layer):
Ensure that the ATLAS eigen extensions are properly loaded.
virtual std::unique_ptr< TrackParameters > postUpdate(const TrackParameters &parm, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override final
Updator interface (pre-update for a layer):
bool checkCovariance(AmgSymMatrix(5) &updated) const
A simple check method for the 'removeNoise' update model.
bool m_msgOutputCorrections
screen output of actual corrections
bool m_doMs
steer multiple scattering On/Off from outside
bool m_forceMomentum
Force the momentum to be a specific value.
virtual std::unique_ptr< TrackParameters > preUpdate(const TrackParameters *parm, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override final
Updator interface (pre-update for a layer):
virtual void modelAction(ICache &cache, const TrackParameters *parm=nullptr) const override final
Only has an effect if m_landauMode == true.
virtual std::unique_ptr< TrackParameters > update(ICache &cache, const TrackParameters *parm, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override
Updator interface (full update for a layer) —> ALWAYS pointer to new TrackParameters is returned.
TrackParameters * finalLandauCovarianceUpdate(const TrackParameters *parm) const
std::unique_ptr< TrackParameters > postUpdateImpl(ICache &cache, const TrackParameters &parm, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
IMaterialEffectsUpdator::ICache ICache
std::unique_ptr< TrackParameters > preUpdateImpl(ICache &cache, const TrackParameters *parm, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const