10 #include "G4hMultipleScattering.hh"
11 #include "G4hIonisation.hh"
12 #include "G4ProcessManager.hh"
14 #include "G4LeptonConstructor.hh"
15 #include "G4MesonConstructor.hh"
16 #include "G4BaryonConstructor.hh"
17 #include "G4ShortLivedConstructor.hh"
18 #include "G4IonConstructor.hh"
20 #include "SimG4Core/CustomPhysics/interface/FullModelHadronicProcess.hh"
21 #include "SimG4Core/CustomPhysics/interface/ToyModelHadronicProcess.hh"
23 using namespace CLHEP;
49 LogDebug(
"CustomPhysics") <<
" CustomPhysics: adding CustomPhysics processes";
50 theParticleIterator->reset();
52 while((*theParticleIterator)()) {
54 G4ParticleDefinition* particle = theParticleIterator->value();
57 LogDebug(
"CustomPhysics") << particle->GetParticleName()<<
", "<<particle->GetPDGEncoding()
58 <<
" is Custom. Mass is "
59 <<particle->GetPDGMass()/GeV <<
" GeV.";
61 LogDebug(
"CustomPhysics")<<
"Cloud mass is "
63 <<
" GeV. Spectator mass is "
64 <<
static_cast<CustomParticle*
>(particle)->GetSpectator()->GetPDGMass()/GeV
67 G4ProcessManager* pmanager = particle->GetProcessManager();
70 if(particle->GetParticleType()==
"rhadron" || particle->GetParticleType()==
"mesonino" || particle->GetParticleType() ==
"sbaryon"){
72 pmanager->AddDiscreteProcess(
new FullModelHadronicProcess(
myHelper));
75 if(particle->GetPDGCharge()/eplus != 0) {
76 pmanager->AddProcess(
new G4hMultipleScattering,-1, 1,i+1);
77 pmanager->AddProcess(
new G4hIonisation, -1, 2,i+2);
80 else LogDebug(
"CustomPhysics") <<
" No pmanager";
93 LogDebug(
"CustomPhysics")<<
"Cloud mass is "
95 <<
" GeV. Spectator mass is "
96 <<
static_cast<CustomParticle*
>(particle)->GetSpectator()->GetPDGMass()/GeV
99 G4ProcessManager* pmanager = particle->GetProcessManager();
102 pmanager->AddDiscreteProcess(
new FullModelHadronicProcess(
myHelper));
103 if(particle->GetPDGCharge()/eplus != 0){
104 pmanager->AddProcess(
new G4hMultipleScattering,-1, 1,1);
105 pmanager->AddProcess(
new G4hIonisation, -1, 2,2);
108 else LogDebug(
"CustomPhysics") <<
" No pmanager";
115 G4ProcessManager* pmanager = particle->GetProcessManager();
117 pmanager->AddProcess(
new G4Decay,1, 1,1);
118 if(particle->GetPDGCharge()/eplus != 0){
119 pmanager->AddProcess(
new G4hMultipleScattering,-1, 2,2);
120 pmanager->AddProcess(
new G4hIonisation, -1, 3,3);
123 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)
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()