ATLAS Offline Software
PhotonConversionTool.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_PHOTONCONVERSIONTOOL_H
6 #define ISF_FATRASTOOLS_PHOTONCONVERSIONTOOL_H
7 
8 // Gaudi & Athena
10 #include "GaudiKernel/ServiceHandle.h"
11 #include "GaudiKernel/ToolHandle.h"
14 // Trk
18 // Fatras
20 
21 class TTree;
22 
23 class StoreGateSvc;
24 
25 namespace Trk {
26  class Layer;
27  class CylinderVolumeBounds;
28  class PdgToParticleHypothesis;
29  class TrackingGeometry;
30 }
31 
32 namespace ISF {
33  class IParticleBroker;
34  class ITruthSvc;
35 }
36 
37 namespace iFatras {
38 
39  class IPhysicsValidationTool;
40 
48  class ATLAS_NOT_THREAD_SAFE PhotonConversionTool : public extends<AthAlgTool, iFatras::IPhotonConversionTool> { // deprecated: ATLASSIM-6020
49  public:
51  PhotonConversionTool(const std::string&,const std::string&,const IInterface*);
54 
59 
60 
62  bool pairProduction(const Trk::MaterialProperties& mprop,
63  double pathCorrection,
64  double p) const;
65 
67  bool doConversion(double time, const Trk::NeutralParameters& parm,
68  const Trk::ExtendedMaterialProperties* extMatProp=0) const;
69 
71  ISF::ISFParticleVector doConversionOnLayer(const ISF::ISFParticle* parent,
72  double time, const Trk::NeutralParameters& parm,
73  const Trk::ExtendedMaterialProperties *ematprop=0) const;
74 
75 
76 
77  private:
79  void recordChilds(double time,
80  const Amg::Vector3D& vertex,
81  const Amg::Vector3D& photonDirection,
82  double childEnergy, double photonEnergy,
83  const Amg::Vector3D& childDirection,
84  Trk::ParticleHypothesis childType=Trk::electron) const;
85 
88  double time,
89  const Amg::Vector3D& vertex,
90  const Amg::Vector3D& photonDirection,
91  double childEnergy, double photonEnergy,
92  const Amg::Vector3D& childDirection,
93  Trk::ParticleHypothesis childType) const;
94 
96  double childEnergyFraction(const Trk::MaterialProperties& mprop, double gammaMom) const;
97  double childEnergyFraction(double gammaMom) const;
98 
100  Amg::Vector3D childDirection(const Amg::Vector3D& gammaMom,
101  double childE) const;
102 
104  double phi1(double delta) const;
105 
107  double phi2(double delta) const;
108 
112 
115 
118 
123 
124 
127  CLHEP::HepRandomEngine* m_randomEngine;
128  std::string m_randomEngineName;
129 
132  mutable int m_droppedConversions;
133 
134  // ------------------------ Validation section ------------------------------------
136  std::string m_validationTreeName;
139 
141  ToolHandle<IPhysicsValidationTool> m_validationTool;
142 
143  // ------ ntuple branches
144  mutable float m_conversionPointX;
145  mutable float m_conversionPointY;
146  mutable float m_conversionPointR;
147  mutable float m_conversionPointZ;
149  mutable float m_conversionChildEnergy;
150  mutable float m_conversionChildAngle;
151  // --------------------------------------------------------------------------------
152 
154  };
155 
156 
157 inline double PhotonConversionTool::phi1(double delta) const {
158  if (delta <= 1.)
159  return 20.867 - 3.242 * delta + 0.625*delta*delta;
160  else
161  return 21.12 - 4.184*log(delta+0.952);
162 }
163 
164 inline double PhotonConversionTool::phi2(double delta) const {
165  if (delta <= 1.)
166  return 20.209 - 1.930 * delta + 0.086*delta*delta;
167  return 21.12 - 4.184*log(delta+0.952);
168 }
169 
170 }
171 
172 #endif
iFatras::PhotonConversionTool::phi1
double phi1(double delta) const
helper functions for the Phi1/phi2
Definition: PhotonConversionTool.h:157
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:53
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
GeometrySignature.h
iFatras::PhotonConversionTool::m_conversionPhotonEnergy
float m_conversionPhotonEnergy
Definition: PhotonConversionTool.h:148
ATLAS_NOT_THREAD_SAFE
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
Definition: checker_macros.h:212
iFatras::PhotonConversionTool::m_validationTreeFolder
std::string m_validationTreeFolder
stream/folder to for the TTree to be written out
Definition: PhotonConversionTool.h:138
iFatras::PhotonConversionTool::m_conversionPointX
float m_conversionPointX
Definition: PhotonConversionTool.h:144
initialize
void initialize()
Definition: run_EoverP.cxx:894
iFatras::PhotonConversionTool::m_processCode
int m_processCode
MCTruth process code for TruthIncidents created by this tool.
Definition: PhotonConversionTool.h:114
iFatras::PhotonConversionTool::m_recordedConversions
int m_recordedConversions
debug output - count the conversions
Definition: PhotonConversionTool.h:131
iFatras::PhotonConversionTool::m_conversionChildEnergy
float m_conversionChildEnergy
Definition: PhotonConversionTool.h:149
ISF::ISFParticle
Definition: ISFParticle.h:42
PropDirection.h
iFatras::PhotonConversionTool::m_childEnergyScaleFactor
double m_childEnergyScaleFactor
Definition: PhotonConversionTool.h:121
iFatras::PhotonConversionTool::m_referenceMaterial
bool m_referenceMaterial
Switch to use reference material.
Definition: PhotonConversionTool.h:117
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
IPhotonConversionTool.h
iFatras
Definition: ActsFatrasSimTool.h:52
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
iFatras::PhotonConversionTool::m_randomEngine
CLHEP::HepRandomEngine * m_randomEngine
Definition: PhotonConversionTool.h:127
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::electron
@ electron
Definition: ParticleHypothesis.h:27
AthAlgTool.h
iFatras::PhotonConversionTool::m_rndGenSvc
ServiceHandle< IAtRndmGenSvc > m_rndGenSvc
Random Generator service
Definition: PhotonConversionTool.h:126
ISF::ISFParticleVector
std::vector< ISF::ISFParticle * > ISFParticleVector
ISFParticle vector.
Definition: ISFParticleContainer.h:26
test_pyathena.parent
parent
Definition: test_pyathena.py:15
iFatras::PhotonConversionTool::m_randomEngineName
std::string m_randomEngineName
Name of the random number stream.
Definition: PhotonConversionTool.h:128
Trk::ParametersBase
Definition: ParametersBase.h:55
iFatras::PhotonConversionTool::m_validationTreeName
std::string m_validationTreeName
validation tree name - to be acessed by this from root
Definition: PhotonConversionTool.h:136
iFatras::PhotonConversionTool::phi2
double phi2(double delta) const
helper functions for the Phi1/phi2
Definition: PhotonConversionTool.h:164
IAtRndmGenSvc.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::PdgToParticleHypothesis
Definition: PdgToParticleHypothesis.h:29
iFatras::PhotonConversionTool::~PhotonConversionTool
virtual ~PhotonConversionTool()
Destructor.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
iFatras::PhotonConversionTool::m_validationTree
TTree * m_validationTree
Root Validation Tree.
Definition: PhotonConversionTool.h:140
iFatras::PhotonConversionTool::m_conversionChildAngle
float m_conversionChildAngle
Definition: PhotonConversionTool.h:150
iFatras::PhotonConversionTool::m_conversionProbScaleFactor
double m_conversionProbScaleFactor
Definition: PhotonConversionTool.h:122
MaterialUpdateMode.h
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
iFatras::PhotonConversionTool::s_pdgToHypo
static const Trk::PdgToParticleHypothesis s_pdgToHypo
Definition: PhotonConversionTool.h:153
Trk::MaterialProperties
Definition: MaterialProperties.h:40
iFatras::PhotonConversionTool::m_minChildEnergy
double m_minChildEnergy
The cut from which on the child products are followed.
Definition: PhotonConversionTool.h:120
iFatras::PhotonConversionTool::m_conversionPointR
float m_conversionPointR
Definition: PhotonConversionTool.h:146
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
ISF
ISFParticleOrderedQueue.
Definition: PrimaryParticleInformation.h:13
iFatras::PhotonConversionTool::m_conversionPointZ
float m_conversionPointZ
Definition: PhotonConversionTool.h:147
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
iFatras::PhotonConversionTool::m_validationTreeDescription
std::string m_validationTreeDescription
validation tree description - second argument in TTree
Definition: PhotonConversionTool.h:137
iFatras::PhotonConversionTool::m_validationMode
bool m_validationMode
Definition: PhotonConversionTool.h:135
checker_macros.h
Define macros for attributes used to control the static checker.
iFatras::PhotonConversionTool::m_truthRecordSvc
ServiceHandle< ISF::ITruthSvc > m_truthRecordSvc
Definition: PhotonConversionTool.h:111
iFatras::PhotonConversionTool::m_particleBroker
ServiceHandle< ISF::IParticleBroker > m_particleBroker
ISF services & Tools.
Definition: PhotonConversionTool.h:110
iFatras::PhotonConversionTool::m_validationTool
ToolHandle< IPhysicsValidationTool > m_validationTool
Definition: PhotonConversionTool.h:141
iFatras::PhotonConversionTool
Definition: PhotonConversionTool.h:48
iFatras::PhotonConversionTool::m_conversionPointY
float m_conversionPointY
Definition: PhotonConversionTool.h:145
ServiceHandle< ISF::IParticleBroker >
iFatras::PhotonConversionTool::m_droppedConversions
int m_droppedConversions
Definition: PhotonConversionTool.h:132