ATLAS Offline Software
IHadronicInteractionProcessor.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // IHadronicInteractionProcessor.h, (c) ATLAS Detector software
8 
9 #ifndef ISF_FATRASINTERFACES_IHADRONICINTERACTIONPROCESSOR_H
10 #define ISF_FATRASINTERFACES_IHADRONICINTERACTIONPROCESSOR_H
11 
12 // Gaudi
13 #include "GaudiKernel/IAlgTool.h"
15 // Event primitives
18 // ISF
20 
21 namespace Trk {
22  class Material;
23  class MaterialProperties;
24 }
25 
26 /*-------------------------------------------------------------------------
27  * class IHadronicInteractionProcessor
28  *-------------------------------------------------------------------------*/
29 namespace iFatras
30 {
39  class ATLAS_NOT_THREAD_SAFE IHadronicInteractionProcessor : virtual public IAlgTool { // deprecated: ATLASSIM-6020
40 
41  public:
44 
47 
49  virtual bool hadronicInteraction(const Amg::Vector3D& position, const Amg::Vector3D& momentum,
50  double p, double E, double charge,
51  const Trk::MaterialProperties& mprop, double pathCorrection,
53 
55  virtual bool recordHadState(double time, double p,
56  const Amg::Vector3D& vertex,
57  const Amg::Vector3D& momDir,
59 
61  virtual bool doHadronicInteraction(double time, const Amg::Vector3D& position, const Amg::Vector3D& momentum,
62  const Trk::Material *ematprop,
64  bool processSecondaries=true) const ;
65 
67  virtual ISF::ISFParticleVector doHadIntOnLayer(const ISF::ISFParticle* parent, double time,
68  const Amg::Vector3D& position, const Amg::Vector3D& momentum,
69  const Trk::Material *mat,
71 
72  };
73 
74  inline bool IHadronicInteractionProcessor::recordHadState(double /*time*/, double /*p*/,
75  const Amg::Vector3D& /*vertex*/,
76  const Amg::Vector3D& /*momDir*/,
77  Trk::ParticleHypothesis /*particle*/) const {
78  return false;
79  }
80 
82  const Amg::Vector3D& /* position */,
83  const Amg::Vector3D& /* momentum */,
84  const Trk::Material* /*ematprop*/,
85  Trk::ParticleHypothesis /*particle*/,
86  bool /*processSecondaries*/) const {
87  return false;
88  }
89 
91  const Amg::Vector3D& /* position */,
92  const Amg::Vector3D& /* momentum */,
93  const Trk::Material* /*matprop*/,
94  Trk::ParticleHypothesis /*particle=Trk::pion*/) const {
95  ISF::ISFParticleVector vec(0); return vec;
96  }
97 
98 }
99 
100 #endif // ISF_FATRASINTERFACES_IHADRONICINTERACTIONPROCESSOR_H
101 
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
TrackParameters.h
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
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:53
ISF::ISFParticle
Definition: ISFParticle.h:42
iFatras::IHadronicInteractionProcessor::doHadronicInteraction
virtual bool doHadronicInteraction(double time, const Amg::Vector3D &position, const Amg::Vector3D &momentum, const Trk::Material *ematprop, Trk::ParticleHypothesis particle=Trk::pion, bool processSecondaries=true) const
interface for processing of the presampled nuclear interactions
Definition: IHadronicInteractionProcessor.h:81
iFatras::IHadronicInteractionProcessor::doHadIntOnLayer
virtual ISF::ISFParticleVector doHadIntOnLayer(const ISF::ISFParticle *parent, double time, const Amg::Vector3D &position, const Amg::Vector3D &momentum, const Trk::Material *mat, Trk::ParticleHypothesis particle=Trk::pion) const
interface for processing of the presampled nuclear interactions on layer
Definition: IHadronicInteractionProcessor.h:90
iFatras::IHadronicInteractionProcessor
Definition: IHadronicInteractionProcessor.h:39
ISFParticleContainer.h
iFatras
Definition: ActsFatrasSimTool.h:52
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
CxxUtils::vec
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
Definition: vec.h:207
iFatras::IHadronicInteractionProcessor::recordHadState
virtual bool recordHadState(double time, double p, const Amg::Vector3D &vertex, const Amg::Vector3D &momDir, Trk::ParticleHypothesis particle=Trk::pion) const
interface for processing of the presampled nuclear interactions
Definition: IHadronicInteractionProcessor.h:74
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
ISF::ISFParticleVector
std::vector< ISF::ISFParticle * > ISFParticleVector
ISFParticle vector.
Definition: ISFParticleContainer.h:26
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ParticleHypothesis.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
charge
double charge(const T &p)
Definition: AtlasPID.h:494
iFatras::IHadronicInteractionProcessor::hadronicInteraction
virtual 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 =0
interface for processing of the nuclear interactions
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
Trk::MaterialProperties
Definition: MaterialProperties.h:40
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
iFatras::IHadronicInteractionProcessor::DeclareInterfaceID
DeclareInterfaceID(IHadronicInteractionProcessor, 1, 0)
Creates the InterfaceID and interfaceID() method.
Trk::Material
Definition: Material.h:116
checker_macros.h
Define macros for attributes used to control the static checker.
Material
@ Material
Definition: MaterialTypes.h:8