9#ifndef TRKEXTOOLS_MATERIALEFFECTSUPDATOR_H
10#define TRKEXTOOLS_MATERIALEFFECTSUPDATOR_H
22#include "GaudiKernel/ToolHandle.h"
27#include <boost/thread/tss.hpp>
87 virtual std::unique_ptr<TrackParameters>
update(
95 return updateImpl(cache, parm, sf, dir, particle, matupmode);
101 virtual std::unique_ptr<TrackParameters>
update(
108 return updateImpl(cache, parm, meff, particle, matupmode);
122 return preUpdateImpl(cache, parm, sf, dir, particle, matupmode);
140 virtual std::unique_ptr<TrackParameters>
update(
144 double pathcorrection,
150 cache, parm, mprop, pathcorrection, dir, particle, matupmode);
174 virtual std::unique_ptr<TrackParameters>
update(
183 return updateImpl(cache, parm, sf, dir, particle, matupmode);
186 virtual std::unique_ptr<TrackParameters>
update(
193 return updateImpl(cache, parm, meff, particle, matupmode);
204 return preUpdateImpl(cache, parm, sf, dir, particle, matupmode);
218 virtual std::unique_ptr<TrackParameters>
update(
221 double pathcorrection,
228 cache, parm, mprop, pathcorrection, dir, particle, matupmode);
282 double pathcorrection,
291 double pathcorrection,
308 "steer energy loss On/Off from outside"};
309 BooleanProperty
m_doMs{
this,
"MultipleScattering",
true,
310 "steer multiple scattering On/Off from outside"};
313 "Force the momentum to be a specific value"};
315 "use the most probable energy loss"};
318 {
this,
"ScreenOutputValidationDirection",
true,
319 "validation direction used for screen output"};
321 "screen output of actual corrections"};
326 "Switch for validation mode"};
328 {
this,
"ValidationIgnoreUnmeasured",
false,
329 "Ignore unmeasured TrackParameters (Navigation!)"};
331 "If in Landau mode, error propagation is done as for landaus"};
333 "validation direction"};
335 DoubleProperty
m_momentumCut{
this,
"MinimalMomentum", 50. * Gaudi::Units::MeV,
336 "Minimal momentum cut for update"};
337 DoubleProperty
m_momentumMax{
this,
"MaximalMomentum", 10. * Gaudi::Units::TeV,
338 "Maximal momentum cut for update"};
340 {
this,
"ForcedMomentumValue", 2000. * Gaudi::Units::MeV,
"Forced momentum value"};
343 {
this,
"EnergyLossUpdator",
"Trk::EnergyLossUpdator/AtlasEnergyLossUpdator",
344 "AlgoTool for EnergyLoss updates"};
346 {
this,
"MultipleScatteringUpdator",
347 "Trk::MultipleScatteringUpdator/AtlasMultipleScatteringUpdator",
348 "AlgoTool for MultipleScatterin effects"};
350 {
this,
"ValidationMaterialMapper",
"Trk::MaterialMapper/AtlasMaterialMapper",
351 "the material mapper for recording the layer material"};
#define AmgSymMatrix(dim)
Cache class to allow passing information to/between calls.
Interface class for the updater AlgTool, it inherits from IAlgTool.
Base Class for a Detector Layer in the Tracking realm.
represents the full description of deflection and e-loss of a track in material.
ToolHandle< IMultipleScatteringUpdator > m_msUpdator
ICache & getTLSCache() const
std::unique_ptr< TrackParameters > postUpdateImpl(ICache &cache, const TrackParameters &parm, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
BooleanProperty m_validationIgnoreUnmeasured
static void validationActionImpl(ICache &cache)
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.
IMaterialEffectsUpdator::ICache ICache
BooleanProperty m_validationMode
BooleanProperty m_landauMode
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 --...
BooleanProperty m_msgOutputCorrections
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):
TrackParameters * finalLandauCovarianceUpdate(const TrackParameters *parm) const
ToolHandle< IEnergyLossUpdator > m_eLossUpdator
DoubleProperty m_forcedMomentum
virtual void modelAction(const TrackParameters *parm=nullptr) const override final
Model Action: Provides the possibility of doing non-local MaterialEffectsUpdates for different models...
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.
BooleanProperty m_useMostProbableEloss
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 i...
virtual void validationAction() const override final
Validation Action: outside access to internal validation steps Optional.
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 MaterialProperties &mprop, double pathcorrection, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override final
Dedicated Updator interface:-> create new track parameters.
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.
std::unique_ptr< TrackParameters > preUpdateImpl(ICache &cache, const TrackParameters *parm, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
DoubleProperty m_momentumMax
MaterialEffectsUpdator(const std::string &, const std::string &, const IInterface *)
AlgTool like constructor.
IntegerProperty m_validationDirection
DoubleProperty m_momentumCut
virtual void validationAction(ICache &cache) const override final
Validation Action - calls the writing and resetting of the TTree variables.
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(const TrackParameters *parm, const MaterialEffectsOnTrack &meff, Trk::ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override final
User updator interface (full update for a layer):
ToolHandle< IMaterialMapper > m_materialMapper
boost::thread_specific_ptr< ICache > m_cache_tls
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):
BooleanProperty m_forceMomentum
virtual StatusCode initialize() override
AlgTool initailize method.
static void modelActionImpl(ICache &cache, const TrackParameters *parm=nullptr)
BooleanProperty m_msgOutputValidationDirection
BooleanProperty m_doEloss
virtual ~MaterialEffectsUpdator()
Virtual destructor.
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.
Material with information about thickness of material.
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
MaterialUpdateMode
This is a steering enum to force the material update it can be: (1) addNoise (-1) removeNoise Second ...
ParametersBase< TrackParametersDim, Charged > TrackParameters