5#ifndef ISF_FATRASTOOLSG4_G4HADINTPROCESSOR_H
6#define ISF_FATRASTOOLSG4_G4HADINTPROCESSOR_H
12#include "GaudiKernel/ToolHandle.h"
13#include "GaudiKernel/ServiceHandle.h"
19#include "G4ThreeVector.hh"
28class G4DynamicParticle;
31class G4VUserPhysicsList;
32class G4LayerDetectorConstruction;
33class G4LayerPrimaryGeneratorAction;
34class G4LayerTrackingAction;
39class G4MaterialCutsCouple;
76 double p,
double E,
double charge,
83 bool processSecondaries=
true)
const;
101 std::map<int,G4VProcess*>::const_iterator
initProcessPDG(
int pdg);
124 std::vector<std::pair<float,std::pair< G4Material*, G4MaterialCutsCouple> > >
m_g4Material;
double charge(const T &p)
Define macros for attributes used to control the static checker.
ATLAS custom singleton run manager.
The generic ISF particle definition,.
Material with information about thickness of material.
A common object to be contained by.
ServiceHandle< ISF::ITruthSvc > m_truthRecordSvc
double m_minMomentum
Geant4 processes <PDGcode, process> TODO : fission, capture.
std::map< int, G4VProcess * > m_g4HadrInelasticProcesses
ISF::ISFParticleVector doHadIntOnLayer(const ISF::ISFParticle *parent, double time, const Amg::Vector3D &position, const Amg::Vector3D &momentum, const Trk::Material *ematprop, Trk::ParticleHypothesis particle=Trk::pion) const
interface for processing of the presampled nuclear interactions on layer
std::vector< std::pair< float, std::pair< G4Material *, G4MaterialCutsCouple > > > m_g4Material
CLHEP::HepRandomEngine * m_randomEngine
Random engine.
ISF::ISFParticleVector getHadState(const ISF::ISFParticle *parent, double time, const Amg::Vector3D &position, const Amg::Vector3D &momentum, const Trk::Material *ematprop) const
collect secondaries for layer material update
G4HadIntProcessor(const std::string &, const std::string &, const IInterface *)
AlgTool constructor for G4HadIntProcessor.
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
std::map< int, G4VProcess * > m_g4HadrElasticProcesses
ServiceHandle< IAtRndmGenSvc > m_rndGenSvc
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
ServiceHandle< ISF::IParticleBroker > m_particleBroker
ISF services & Tools.
unsigned int retrieveG4MaterialIndex(const Trk::Material *ematprop) const
random number service
StatusCode finalize()
AlgTool finalize method.
std::map< int, G4VProcess * >::const_iterator initProcessPDG(int pdg)
choose for list of predefined (pure) materials
StatusCode initG4RunManager ATLAS_NOT_THREAD_SAFE()
initialize G4RunManager on first call if not done by then
std::string m_randomEngineName
Name of the random number stream.
ToolHandle< ISF::IG4RunManagerHelper > m_g4RunManagerHelper
steering: enable elastic interactions?
Eigen::Matrix< double, 3, 1 > Vector3D
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.