4 #include "SimG4Core/CustomPhysics/interface/G4ProcessHelper.hh"
11 #include "G4hMultipleScattering.hh"
12 #include "G4hIonisation.hh"
13 #include "G4CoulombScattering.hh"
14 #include "G4ProcessManager.hh"
16 #include "G4LeptonConstructor.hh"
17 #include "G4MesonConstructor.hh"
18 #include "G4BaryonConstructor.hh"
19 #include "G4ShortLivedConstructor.hh"
20 #include "G4IonConstructor.hh"
22 #include "SimG4Core/CustomPhysics/interface/FullModelHadronicProcess.hh"
23 #include "SimG4Core/CustomPhysics/interface/ToyModelHadronicProcess.hh"
25 using namespace CLHEP;
28 : G4VPhysicsConstructor(name)
33 edm::LogInfo(
"CustomPhysics")<<
"Path for custom particle definition file: "
51 LogDebug(
"CustomPhysics") <<
" CustomPhysicsListSS: adding CustomPhysics processes";
52 aParticleIterator->reset();
54 while((*aParticleIterator)()) {
55 G4ParticleDefinition* particle = aParticleIterator->value();
58 LogDebug(
"CustomPhysics") << particle->GetParticleName()
59 <<
", "<<particle->GetPDGEncoding()
60 <<
" is Custom. Mass is "
61 <<particle->GetPDGMass()/GeV <<
" GeV.";
66 <<
" GeV. Spectator mass is "
67 <<
static_cast<CustomParticle*
>(particle)->GetSpectator()->GetPDGMass()/GeV
70 G4ProcessManager* pmanager = particle->GetProcessManager();
72 if(particle->GetPDGCharge()/eplus != 0) {
73 pmanager->AddProcess(
new G4CoulombScattering, -1,-1, 1);
74 pmanager->AddProcess(
new G4hIonisation, -1, 2, 2);
77 if(particle->GetParticleType()==
"rhadron" ||
78 particle->GetParticleType()==
"mesonino" ||
79 particle->GetParticleType() ==
"sbaryon"){
81 pmanager->AddDiscreteProcess(
new FullModelHadronicProcess(
myHelper));
85 else LogDebug(
"CustomPhysics") <<
" No pmanager";
100 <<
" GeV. Spectator mass is "
101 <<
static_cast<CustomParticle*
>(particle)->GetSpectator()->GetPDGMass()/GeV
104 G4ProcessManager* pmanager = particle->GetProcessManager();
107 if(particle->GetPDGCharge()/eplus != 0){
108 pmanager->AddProcess(
new G4CoulombScattering, -1,-1, 1);
109 pmanager->AddProcess(
new G4hIonisation, -1, 2, 2);
111 pmanager->AddDiscreteProcess(
new FullModelHadronicProcess(
myHelper));
113 else LogDebug(
"CustomPhysics") <<
" No pmanager";
118 G4ProcessManager* pmanager = particle->GetProcessManager();
120 if(particle->GetPDGCharge()/eplus != 0){
121 pmanager->AddProcess(
new G4CoulombScattering, -1,-1, 1);
122 pmanager->AddProcess(
new G4hIonisation, -1, 2, 2);
124 pmanager->AddProcess(
new G4Decay, 1, -1, 3);
126 else LogDebug(
"CustomPhysics") <<
" No pmanager";
std::string particleDefFilePath
T getParameter(std::string const &) const
void setupRHadronPhycis(G4ParticleDefinition *particle)
G4ParticleDefinition * GetCloud()
virtual void ConstructParticle()
CustomPhysicsListSS(std::string name, const edm::ParameterSet &p)
void setupSUSYPhycis(G4ParticleDefinition *particle)
static void loadCustomParticles(const std::string &filePath)
edm::ParameterSet myConfig
virtual ~CustomPhysicsListSS()
static bool isCustomParticle(G4ParticleDefinition *particle)
std::string fullPath() const
virtual void ConstructProcess()
G4ProcessHelper * myHelper