12 #include "G4hMultipleScattering.hh" 13 #include "G4hIonisation.hh" 14 #include "G4ProcessManager.hh" 15 #include "G4HadronicProcess.hh" 26 using namespace CLHEP;
31 : G4VPhysicsConstructor(name) {
46 edm::LogVerbatim(
"SimG4CoreCustomPhysics") <<
"CustomPhysicsList: Path for custom particle definition file: \n" 47 << particleDefFilePath <<
"\n" 54 edm::LogVerbatim(
"SimG4CoreCustomPhysics") <<
"===== CustomPhysicsList::ConstructParticle ";
59 edm::LogVerbatim(
"SimG4CoreCustomPhysics") <<
"CustomPhysicsList: adding CustomPhysics processes " 60 <<
"for the list of particles";
62 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
67 G4ProcessManager* pmanager = particle->GetProcessManager();
69 <<
"CustomPhysicsList: " << particle->GetParticleName() <<
" PDGcode= " << particle->GetPDGEncoding()
70 <<
" Mass= " << particle->GetPDGMass() /
GeV <<
" GeV.";
72 if (particle->GetPDGCharge() != 0.0) {
73 ph->RegisterProcess(
new G4hMultipleScattering, particle);
74 ph->RegisterProcess(
new G4hIonisation, particle);
81 <<
"CustomPhysicsList: " << particle->GetParticleName()
82 <<
" CloudMass= " << cp->
GetCloud()->GetPDGMass() /
GeV 83 <<
" GeV; SpectatorMass= " << cp->
GetSpectator()->GetPDGMass() /
GeV <<
" GeV.";
90 if (particle->GetParticleType() ==
"darkpho") {
92 pmanager->AddDiscreteProcess(darkGamma);
94 if (particle->GetParticleName() ==
"anti_sexaq") {
96 G4HadronicProcess* sqInelPr =
new G4HadronicProcess();
98 sqInelPr->RegisterMe(sqModel);
100 sqInelPr->AddDataSet(sqInelXS);
101 pmanager->AddDiscreteProcess(sqInelPr);
104 pmanager->AddContinuousProcess(sqLoopPr);
106 pmanager->AddDiscreteProcess(sqLoopPrDiscr);
107 }
else if (particle->GetParticleName() ==
"sexaq") {
108 edm::LogVerbatim(
"CustomPhysics") <<
" No pmanager implemented for sexaq, only for anti_sexaq";
T getParameter(std::string const &) const
CustomPhysicsList(const std::string &name, const edm::ParameterSet &p, bool useuni=false)
void ConstructProcess() override
static bool s_isgluinoHadron(int pdg)
edm::ParameterSet myConfig
std::string particleDefFilePath
G4ParticleDefinition * GetCloud()
static G4ThreadLocal std::unique_ptr< G4ProcessHelper > myHelper
void ConstructParticle() override
bool fHadronicInteraction
G4ParticleDefinition * GetSpectator()
std::unique_ptr< CustomParticleFactory > fParticleFactory
static bool s_issbottomHadron(int pdg)
static bool s_isstopHadron(int pdg)
~CustomPhysicsList() override