4 #include "SimG4Core/CustomPhysics/interface/G4ProcessHelper.hh"
12 #include "G4hMultipleScattering.hh"
13 #include "G4hIonisation.hh"
14 #include "G4CoulombScattering.hh"
15 #include "G4ProcessManager.hh"
17 #include "SimG4Core/CustomPhysics/interface/FullModelHadronicProcess.hh"
18 #include "SimG4Core/CustomPhysics/interface/ToyModelHadronicProcess.hh"
20 using namespace CLHEP;
26 : G4VPhysicsConstructor(name)
33 <<
"CustomPhysicsListSS: Path for custom particle definition file: \n"
48 <<
"CustomPhysicsListSS: adding CustomPhysics processes";
51 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
53 aParticleIterator->reset();
54 G4ParticleDefinition* particle;
56 while((*aParticleIterator)()) {
57 particle = aParticleIterator->value();
60 G4ProcessManager* pmanager = particle->GetProcessManager();
62 <<
"CustomPhysicsListSS: " << particle->GetParticleName()
63 <<
" PDGcode= " << particle->GetPDGEncoding()
64 <<
" Mass= " << particle->GetPDGMass()/
GeV <<
" GeV.";
66 if(particle->GetPDGCharge() != 0.0) {
67 ph->RegisterProcess(
new G4hMultipleScattering, particle);
68 ph->RegisterProcess(
new G4hIonisation, particle);
76 <<
"CustomPhysicsListSS: " << particle->GetParticleName()
78 <<
" GeV; SpectatorMass= " << cp->
GetSpectator()->GetPDGMass()/
GeV <<
" GeV.";
81 pmanager->AddDiscreteProcess(
new FullModelHadronicProcess(
myHelper));
std::string particleDefFilePath
T getParameter(std::string const &) const
G4ParticleDefinition * GetCloud()
virtual void ConstructParticle()
CustomPhysicsListSS(std::string name, const edm::ParameterSet &p)
static G4ThreadLocal G4ProcessHelper * myHelper
static void loadCustomParticles(const std::string &filePath)
static G4ThreadLocal G4Decay * fDecayProcess
bool fHadronicInteraction
G4ParticleDefinition * GetSpectator()
edm::ParameterSet myConfig
static bool s_isRHadron(int pdg)
virtual ~CustomPhysicsListSS()
static bool isCustomParticle(G4ParticleDefinition *particle)
std::string fullPath() const
virtual void ConstructProcess()