ATLAS Offline Software
Loading...
Searching...
No Matches
MultipleScatteringUpdator.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6// MultipleScatteringUpdator.h, (c) ATLAS Detector software
8
9#ifndef TRKEXTOOLS_MULTIPLESCATTERINGUPDATOR_H
10#define TRKEXTOOLS_MULTIPLESCATTERINGUPDATOR_H
11
13// Trk
15#include "GaudiKernel/ServiceHandle.h"
18
19// Gaudi
21
22#include "CLHEP/Random/RandFlat.h"
25
26namespace Trk {
27
29
43 : public AthAlgTool
44 , virtual public IMultipleScatteringUpdator
45{
46
47public:
49 MultipleScatteringUpdator(const std::string&, const std::string&, const IInterface*);
50
53
55 virtual StatusCode initialize() override;
56
60 virtual double sigmaSquare(const MaterialProperties& mat,
61 double p,
62 double pathcorrection,
63 ParticleHypothesis particle = pion,
64 double deltaE = 0.) const override;
65
66private:
67 BooleanProperty m_useTrkUtils{this, "UseTrkUtils", true,
68 "use eloss parametrisation from TrkUtils MaterialInterAction.h"};
69 BooleanProperty m_log_include{this, "MultipleScatteringLogarithmicTermOn", true,
70 "boolean switch to include log term"};
71 BooleanProperty m_gaussianMixture{this, "GaussianMixtureModel", false,
72 "mainly for Fatras"};
73 BooleanProperty m_optGaussianMixtureG4{this, "G4OptimisedGaussianMixtureModel", true,
74 "modifies the Fruehwirth/Regler model to fit with G4"};
75
76 //========== used for Gaussian mixture model =================================================
78 ServiceHandle<IAthRNGSvc> m_rndGenSvc{this, "RandomNumberService", "AthRNGSvc",
79 "Name of the random number service"};
80
82 StringProperty m_randomEngineName{this, "RandomStreamName", "TrkExRnd",
83 "Name of the random number stream"};
84};
85
86} // end of namespace
87
88#endif // TRKEXTOOLS_MULTIPLESCATTERING_H
89
A wrapper class for event-slot-local random engines.
Definition RNGWrapper.h:56
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Interface class IMultipleScatteringUpdator.
Material with information about thickness of material.
ATHRNG::RNGWrapper * m_rngWrapper
Random engine.
virtual StatusCode initialize() override
AlgTool initailize method.
MultipleScatteringUpdator(const std::string &, const std::string &, const IInterface *)
AlgTool like constructor.
virtual ~MultipleScatteringUpdator()
Virtual destructor.
ServiceHandle< IAthRNGSvc > m_rndGenSvc
Random Generator service.
virtual double sigmaSquare(const MaterialProperties &mat, double p, double pathcorrection, ParticleHypothesis particle=pion, double deltaE=0.) const override
Calculate the sigma on theta introduced by multiple scattering, according to the RutherFord-Scott For...
Ensure that the ATLAS eigen extensions are properly loaded.
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.