ATLAS Offline Software
Loading...
Searching...
No Matches
HadIntProcessorParametric.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ISF_FATRASTOOLS_HadIntProcessorParametric_H
6#define ISF_FATRASTOOLS_HadIntProcessorParametric_H
7
8// GaudiKernel & Athena
11#include "GaudiKernel/ServiceHandle.h"
12#include "GaudiKernel/ToolHandle.h"
14
15// Fatras
17
18// Trk
20
21// ISF
23
24#ifndef MAXHADINTCHILDREN
25#define MAXHADINTCHILDREN 20
26#endif
27
28class StoreGateSvc;
29
30class TTree;
31
32namespace Trk {
33 class Material;
34 class MaterialProperties;
35}
36
37namespace ISF {
38 class IParticleBroker;
39 class ITruthSvc;
40}
41namespace iFatras {
42
44
53
54 class ATLAS_NOT_THREAD_SAFE HadIntProcessorParametric : public extends<AthAlgTool, iFatras::IHadronicInteractionProcessor> { // deprecated: ATLASSIM-6020
55 public:
57 HadIntProcessorParametric(const std::string&,const std::string&,const IInterface*);
60
62 StatusCode initialize();
64 StatusCode finalize();
65
67 bool hadronicInteraction(const Amg::Vector3D& position, const Amg::Vector3D& momentum,
68 double p, double E, double charge,
69 const Trk::MaterialProperties& mprop, double pathCorrection,
70 Trk::ParticleHypothesis particle=Trk::pion) const;
71
73 bool recordHadState(double time, double p,
74 const Amg::Vector3D& vertex,
75 const Amg::Vector3D& particleDir,
76 Trk::ParticleHypothesis particle ) const;
77
78 bool doHadronicInteraction(double time, const Amg::Vector3D& position, const Amg::Vector3D& momentum,
79 const Trk::Material* emat,
81 bool processSecondaries) const;
82
84 const Amg::Vector3D& position, const Amg::Vector3D& momentum,
85 const Trk::Material* emat,
86 Trk::ParticleHypothesis particle) const;
87
88 private:
90 static double absorptionLength(const Trk::MaterialProperties* mat,
91 double p, double q, Trk::ParticleHypothesis particle=Trk::pion) ;
92
95 double time, double p,
96 const Amg::Vector3D& vertex,
97 const Amg::Vector3D& particleDir,
98 Trk::ParticleHypothesis particle ) const;
99
107
108
112
117
119 CLHEP::HepRandomEngine* m_randomEngine;
120 std::string m_randomEngineName;
121
122
124 ToolHandle<IPhysicsValidationTool> m_validationTool;
125
130
132
133 // ------ ntuple branches
134 mutable float m_hadIntPointX;
135 mutable float m_hadIntPointY;
136 mutable float m_hadIntPointR;
137 mutable float m_hadIntPointZ;
138 mutable int m_hadIntMotherPdg;
140 mutable float m_hadIntMotherP;
141 mutable float m_hadIntMotherPt;
142 mutable float m_hadIntMotherPhi;
143 mutable float m_hadIntMotherEta;
144
145 mutable int m_hadIntChildren;
146 mutable float m_hadIntChildE;
156
157 };
158}
159
160#endif // ISF_FATRASTOOLS_HadIntProcessorParametric_H
double charge(const T &p)
Definition AtlasPID.h:997
#define MAXHADINTCHILDREN
@ Material
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
@ class IParticleBroker
The generic ISF particle definition,.
Definition ISFParticle.h:42
@ class ITruthSvc
Definition ITruthSvc.h:29
The Athena Transient Store API.
Material with information about thickness of material.
A common object to be contained by.
Definition Material.h:117
float m_hadIntPointY
ntuple variable : hadronic interaction point y coordinate
ISF::ISFParticleVector getHadState(const ISF::ISFParticle *parent, double time, double p, const Amg::Vector3D &vertex, const Amg::Vector3D &particleDir, Trk::ParticleHypothesis particle) const
collect secondaries for layer material update
StatusCode finalize()
AlgTool finalize method.
float m_hadIntPointR
ntuple variable : hadronic interaction point r distance
int m_processCode
MCTruth process code for TruthIncidents created by this tool.
float m_hadIntPointX
ntuple variable : hadronic interaction point x coordinate
float m_hadIntChildEta[MAXHADINTCHILDREN]
nutple variable : hadronic interaction child eta
double m_minimumHadOutEnergy
hadronic interaction setting
ServiceHandle< ISF::ITruthSvc > m_truthRecordSvc
bool hadronicInteraction(const Amg::Vector3D &position, const Amg::Vector3D &momentum, double p, double E, double charge, const Trk::MaterialProperties &mprop, double pathCorrection, Trk::ParticleHypothesis particle=Trk::pion) const
interface for processing of the nuclear interactions
static double absorptionLength(const Trk::MaterialProperties *mat, double p, double q, Trk::ParticleHypothesis particle=Trk::pion)
interface for calculation of absorption length
int m_hadIntChildPdg[MAXHADINTCHILDREN]
nutple variable : hadronic interaction child Pdg
std::string m_hadIntValidationTreeFolder
stream/folder to for the TTree to be written out
int m_hadIntMotherBarcode
ntuple variable : hadronic interaction mother barcode
float m_hadIntPointZ
ntuple variable : hadronic interaction point z coordinate
TTree * m_hadIntValidationTree
Root Validation Tree.
ToolHandle< IPhysicsValidationTool > m_validationTool
ServiceHandle< IAtRndmGenSvc > m_rndGenSvc
Random Generator service.
float m_hadIntChildPcms[MAXHADINTCHILDREN]
nutple variable : hadronic interaction child Energy
float m_hadIntMotherEta
ntuple variable : hadronic interaction photon eta
bool doHadronicInteraction(double time, const Amg::Vector3D &position, const Amg::Vector3D &momentum, const Trk::Material *emat, Trk::ParticleHypothesis particle, bool processSecondaries) const
int m_hadIntMotherPdg
ntuple variable : hadronic interaction mother Pdg
float m_hadIntMotherPhi
ntuple variable : hadronic interaction mother phi
float m_hadIntChildPhi[MAXHADINTCHILDREN]
nutple variable : hadronic interaction child phi
std::string m_randomEngineName
Name of the random number stream.
float m_hadIntChildDeltaEta[MAXHADINTCHILDREN]
nutple variable : hadronic interaction child delta eta
ServiceHandle< ISF::IParticleBroker > m_particleBroker
ISF services & Tools.
std::string m_hadIntValidationTreeDescription
validation tree description - second argument in TTree
float m_hadIntMotherP
ntuple variable : hadronic interaction mother momentum
int m_hadIntChildren
nutple variable : hadronic interaction children numbers
float m_hadIntMotherPt
ntuple variable : hadronic interaction mother momentum
ISF::ISFParticleVector doHadIntOnLayer(const ISF::ISFParticle *parent, double time, const Amg::Vector3D &position, const Amg::Vector3D &momentum, const Trk::Material *emat, Trk::ParticleHypothesis particle) const
virtual ~HadIntProcessorParametric()
Destructor.
CLHEP::HepRandomEngine * m_randomEngine
Random engine.
HadIntProcessorParametric(const std::string &, const std::string &, const IInterface *)
AlgTool constructor for HadIntProcessorParametric.
std::string m_hadIntValidationTreeName
validation tree name - to be acessed by this from root
float m_hadIntChildDeltaPhi[MAXHADINTCHILDREN]
nutple variable : hadronic interaction child delta phi
bool recordHadState(double time, double p, const Amg::Vector3D &vertex, const Amg::Vector3D &particleDir, Trk::ParticleHypothesis particle) const
interface for processing of the presampled nuclear interaction
float m_hadIntChildP[MAXHADINTCHILDREN]
nutple variable : hadronic interaction child Energy
float m_hadIntChildTh[MAXHADINTCHILDREN]
nutple variable : hadronic interaction child phi
float m_hadIntChildThc[MAXHADINTCHILDREN]
nutple variable : hadronic interaction child eta
float m_hadIntChildE
nutple variable : hadronic interaction children total energy
Eigen::Matrix< double, 3, 1 > Vector3D
ISFParticleOrderedQueue.
std::vector< ISF::ISFParticle * > ISFParticleVector
ISFParticle vector.
Ensure that the ATLAS eigen extensions are properly loaded.
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
void initialize()