4 #include "SimG4Core/CustomPhysics/interface/G4ProcessHelper.hh"
11 #include "G4hMultipleScattering.hh"
12 #include "G4hIonisation.hh"
13 #include "G4ProcessManager.hh"
15 #include "G4LeptonConstructor.hh"
16 #include "G4MesonConstructor.hh"
17 #include "G4BaryonConstructor.hh"
18 #include "G4ShortLivedConstructor.hh"
19 #include "G4IonConstructor.hh"
21 #include "SimG4Core/CustomPhysics/interface/FullModelHadronicProcess.hh"
22 #include "SimG4Core/CustomPhysics/interface/ToyModelHadronicProcess.hh"
24 using namespace CLHEP;
28 : G4VPhysicsConstructor(name)
33 edm::LogInfo(
"CustomPhysics")<<
"Path for custom particle definition file: "
52 edm::LogInfo(
"CustomPhysics") <<
" CustomPhysicsList: adding CustomPhysics processes "
53 <<
"for the list of particles: \n";
54 aParticleIterator->reset();
56 while((*aParticleIterator)()) {
57 G4ParticleDefinition* particle = aParticleIterator->value();
60 edm::LogInfo(
"CustomPhysics") << particle->GetParticleName()
61 <<
" PDGcode= "<<particle->GetPDGEncoding()
63 <<particle->GetPDGMass()/
GeV <<
" GeV.";
65 edm::LogInfo(
"CustomPhysics") << particle->GetParticleName()
68 <<
" GeV; SpectatorMass= "
72 G4ProcessManager* pmanager = particle->GetProcessManager();
74 if(particle->GetPDGCharge() != 0.0) {
75 pmanager->AddProcess(
new G4hMultipleScattering,-1, 1, 1);
76 pmanager->AddProcess(
new G4hIonisation, -1, 2, 2);
79 if(particle->GetParticleType()==
"rhadron" ||
80 particle->GetParticleType()==
"mesonino" ||
81 particle->GetParticleType() ==
"sbaryon"){
83 pmanager->AddDiscreteProcess(
new FullModelHadronicProcess(
myHelper));
87 else LogDebug(
"CustomPhysics") <<
" No pmanager";
103 <<
" GeV. Spectator mass is "
107 G4ProcessManager* pmanager = particle->GetProcessManager();
110 if(particle->GetPDGCharge()/eplus != 0){
111 pmanager->AddProcess(
new G4hMultipleScattering,-1, 1, 1);
112 pmanager->AddProcess(
new G4hIonisation, -1, 2, 2);
114 pmanager->AddDiscreteProcess(
new FullModelHadronicProcess(
myHelper));
116 else LogDebug(
"CustomPhysics") <<
" No pmanager";
121 G4ProcessManager* pmanager = particle->GetProcessManager();
123 if(particle->GetPDGCharge()/eplus != 0){
124 pmanager->AddProcess(
new G4hMultipleScattering,-1, 1, 1);
125 pmanager->AddProcess(
new G4hIonisation, -1, 2, 2);
127 pmanager->AddProcess(
new G4Decay, 1, -1, 3);
129 else LogDebug(
"CustomPhysics") <<
" No pmanager";
T getParameter(std::string const &) const
edm::ParameterSet myConfig
std::string particleDefFilePath
G4ParticleDefinition * GetCloud()
void setupRHadronPhycis(G4ParticleDefinition *particle)
static void loadCustomParticles(const std::string &filePath)
virtual ~CustomPhysicsList()
void setupSUSYPhycis(G4ParticleDefinition *particle)
G4ParticleDefinition * GetSpectator()
G4ProcessHelper * myHelper
CustomPhysicsList(std::string name, const edm::ParameterSet &p)
static bool isCustomParticle(G4ParticleDefinition *particle)
std::string fullPath() const
virtual void ConstructParticle()
virtual void ConstructProcess()