5#ifndef ISF_FATRASTOOLS_TRACKONLAYERUPDATOR_H
6#define ISF_FATRASTOOLS_TRACKONLAYERUPDATOR_H
11#include "GaudiKernel/ServiceHandle.h"
12#include "GaudiKernel/ToolHandle.h"
30#ifndef MAXHADINTCHILDREN
31#define MAXHADINTCHILDREN 20
40class CylinderVolumeBounds;
41class IEnergyLossUpdator;
42class IMultipleScatteringUpdator;
43class TrackingGeometry;
57 const char*
what()
const throw()
59 return "Problem with TrackingGeometry loading";
63class IProcessSamplingTool;
64class IPhysicsValidationTool;
65class IHadronicInteractionProcessor;
66class IPhotonConversionTool;
67class IParticleDecayHelper;
82 :
public extends<AthAlgTool, Trk::ITimedMatEffUpdator>
102 std::unique_ptr<Trk::TrackParameters>
update(
111 std::unique_ptr<Trk::TrackParameters>
update(
122 std::unique_ptr<Trk::TrackParameters>
update(
126 double pathcorrection,
131 std::unique_ptr<Trk::TrackParameters>
interact(
200 double sigmaMSproj)
const;
218 const EventContext& ctx)
const;
285 "TrackingGeometryReadKey",
286 "ISF_FatrasTrackingGeometry",
287 "Key of input TrackingGeometry"
293 "TrackingGeometrySvc",
Define macros for attributes used to control the static checker.
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
The generic ISF particle definition,.
The Athena Transient Store API.
Base Class for a Detector Layer in the Tracking realm.
represents the full description of deflection and e-loss of a track in material.
Material with information about thickness of material.
A common object to be contained by.
small converter from the (abs) PDG code to the particle hypothsis used in Tracking
The TrackingGeometry class is the owner of the constructed TrackingVolumes.
Exception to be thrown when TrackingGeometry not found.
const char * what() const
std::string m_validationTreeDescription
validation tree description - second argument in TTree
std::string m_bremValidationTreeDescription
validation tree description
float m_deltaP
nutple variable : energy loss
double m_minimumBremPhotonMomentum
Minimum momentum for brem photons.
std::string m_edValidationTreeName
validation tree name - to be acessed by this from root
ToolHandle< IHadronicInteractionProcessor > m_hadIntProcessor
float m_bremPointZ
ntuple variable : brem point z coordinate
virtual ~McMaterialEffectsUpdator()
Destructor.
void radiate(const ISF::ISFParticle *parent, AmgVector(5) &updatedParameters, const Amg::Vector3D &pos, Amg::Vector3D &dir, Trk::TimeLimit time, double dX0, double &matFraction, double matTot, Trk::PropDirection pdir, Trk::ParticleHypothesis particle) const
ServiceHandle< Trk::ITrackingGeometrySvc > m_trackingGeometrySvc
ToolHandle to the TrackingGeometrySvc.
float m_bremPointY
ntuple variable : brem point y coordinate
float m_thetaMStheta
ntuple variable : ms in theta
McMaterialEffectsUpdator(const std::string &, const std::string &, const IInterface *)
AlgTool constructor for McMaterialEffectsUpdator.
const Trk::Layer * m_layer
cache layer properties
double m_minimumMomentum
Minimum momentum cut.
float m_edLayerIntersectR
ntuple variable : energy deposit r coordinate
float m_edLayerSample
ntuple variable : layer sample
ISF::ISFParticleVector interactLay(const ISF::ISFParticle *isp, double time, const Trk::TrackParameters &parm, Trk::ParticleHypothesis particle, int process, const Trk::MaterialProperties *extMatProp=0) const
bool m_parametricScattering
describe deflection parametric/do real deflection
void recordBremPhotonLay(const ISF::ISFParticle *parent, Trk::TimeLimit time, double pElectron, double gammaE, const Amg::Vector3D &vertex, Amg::Vector3D &particleDir, double matFraction, Trk::PropDirection dir, Trk::ParticleHypothesis particle) const
the helper function for a brem photon record
int m_processCode
MCTruth process code for TruthIncidents created by this tool.
ToolHandle< iFatras::IProcessSamplingTool > m_samplingTool
MCTruth process sampling.
float m_edLayerIntersectY
ntuple variable : energy deposit y coordinate
std::string m_layerIndexCaloSampleMapName
name to record it
const Trk::LayerIndexSampleMap * layerIndexSampleMap() const
return the TrackingGeometry used
const ISF::ISFParticle * m_isp
cache incoming particle
Trk::PdgToParticleHypothesis m_pdgToParticleHypothesis
std::unique_ptr< Trk::TrackParameters > interact(double time, const Amg::Vector3D &position, const Amg::Vector3D &momentum, Trk::ParticleHypothesis particle, int process, const Trk::Material *extMatProp=0) const
float m_bremPhotonEnergy
ntuple variable : brem photon energy
std::string m_bremValidationTreeFolder
stream/folder to for the TTree to be written out
double msSigma(double dInX0, double p, Trk::ParticleHypothesis particle) const
handle the Energy loss
CLHEP::HepRandomEngine * m_randomEngine
Random engine.
bool m_uniformHertzDipoleAngle
use the relativistic hertz dipole for brem photon radiation
void ionize(const Trk::TrackParameters &parm, AmgVector(5) &updatedPar, double dInX0, Trk::PropDirection pdir, Trk::ParticleHypothesis particle) const
StatusCode finalize()
AlgTool finalize method.
float m_deltaPsigma
ntuple variable : stragling on energy loss
bool m_use_msUpdator
switch between MSUpdator and local parametrization
std::string m_edValidationTreeDescription
validation tree description - second argument in TTree
ToolHandle< IParticleDecayHelper > m_particleDecayer
Particle Decay.
bool m_hadInt
hadronic interaction setting
std::string m_validationTreeName
validation tree name - to be acessed by this from root
TTree * m_validationTree
Root Validation Tree.
ToolHandle< IPhysicsValidationTool > m_validationTool
virtual const Trk::TrackingGeometry * trackingGeometry(const EventContext &ctx) const
TTree * m_edValidationTree
Root Validation Tree.
const Trk::LayerIndexSampleMap * m_layerIndexCaloSampleMap
the map for the calo-layer index map
std::string m_edValidationTreeFolder
stream/folder to for the TTree to be written out
float m_edLayerEnergyDeposit
ntuple variable : energy despoit - value
float m_bremPhotonAngle
ntuple variable : brem photon angle
ServiceHandle< ISF::IParticleBroker > m_particleBroker
ToolHandle< Trk::IEnergyLossUpdator > m_eLossUpdator
float m_edLayerIntersectZ
ntuple variable : energy deposit z coordinate
float m_tInX0
nutple variable : t/X0
float m_thetaMSproj
ntuple variable : projected ms
std::unique_ptr< Trk::TrackParameters > updateInLay(const ISF::ISFParticle *isp, const Trk::TrackParameters *parm, double &matFraction, Trk::TimeLimit &time, Trk::PathLimit &path, Trk::PropDirection dir=Trk::alongMomentum, Trk::ParticleHypothesis particle=Trk::pion) const
TTree * m_bremValidationTree
Root Validation Tree.
float m_edLayerIntersectX
ntuple variable : energy deposit x coordinate
std::string m_trackingGeometryName
Name of the TrackingGeometry as given in Detector Store.
double m_oneOverThree
useful for the angle calculation of the brem photon
bool m_ms
IMultipleScatteringUpdator.
float m_thetaMSphi
ntuple variable : ms in phi
std::atomic< unsigned int > m_recordedBremPhotons
for statistics output
float m_bremMotherEnergy
ntuple variable : brem mother energy
std::string m_bremValidationTreeName
validation tree name - to be acessed by this from root
void recordBremPhoton(double time, double pElectron, double gammaE, const Amg::Vector3D &vertex, Amg::Vector3D &particleDir, Trk::ParticleHypothesis particle) const
the helper function for a brem photon record
std::string m_randomEngineName
Name of the random number stream.
bool m_eLoss
IEnergyLossUpdator.
std::unique_ptr< Trk::TrackParameters > update(const Trk::TrackParameters *parm, const Trk::Layer &sf, Trk::TimeLimit &time, Trk::PathLimit &path, Trk::GeometrySignature geoID, Trk::PropDirection dir=Trk::alongMomentum, Trk::ParticleHypothesis particle=Trk::pion) const
Updator interface (full update for a layer): A unique_ptr to Trk::TrackParameters is returned it coul...
int m_currentSample
for the calo energy recording
bool m_bendingCorrection
Switch to use bending correction.
ServiceHandle< ISF::ITruthSvc > m_truthRecordSvc
ServiceHandle< IAtRndmGenSvc > m_rndGenSvc
Random Generator service.
std::string m_validationTreeFolder
stream/folder to for the TTree to be written out
float m_bremPointX
ntuple variable : brem point x coordinate
bool m_referenceMaterial
Switch to use reference material.
double m_projectionFactor
projection factor for the non-parametric scattering
int m_layerIndex
ntuple variable : layer index of material effects update
const Trk::MaterialProperties * m_matProp
SG::ReadCondHandleKey< Trk::TrackingGeometry > m_trackingGeometryReadKey
ToolHandle< iFatras::IPhotonConversionTool > m_conversionTool
IPhotonConversionTool.
bool m_recordEnergyDeposition
for deposition methods
void multipleScatteringUpdate(const Trk::TrackParameters &parm, AmgVector(5) ¶meters, double sigmaMSproj) const
the private multiple Scattering update method, thetaMs is the projected random number
ToolHandle< Trk::IMultipleScatteringUpdator > m_msUpdator
float m_bremPointR
ntuple variable : brem point r distance
const std::string process
Eigen::Matrix< double, 3, 1 > Vector3D
std::vector< ISF::ISFParticle * > ISFParticleVector
ISFParticle vector.
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
std::map< Trk::LayerIndex, int > LayerIndexSampleMap