11 #include <simulation/physicslist/ProtonPhysics.h>
13 #include "G4ProcessManager.hh"
14 #include "G4ProtonInelasticProcess.hh"
15 #include "G4HadronElasticProcess.hh"
17 #include "G4CascadeInterface.hh"
18 #include "G4TheoFSGenerator.hh"
19 #include "G4FTFModel.hh"
20 #include "G4ExcitedStringDecay.hh"
21 #include "G4LundStringFragmentation.hh"
22 #include "G4GeneratorPrecompoundInterface.hh"
23 #include "G4ChipsElasticModel.hh"
25 #include "G4BGGNucleonInelasticXS.hh"
26 #include "G4ChipsProtonElasticXS.hh"
28 #include "G4SystemOfUnits.hh"
31 using namespace Simulation;
34 ProtonPhysics::ProtonPhysics()
35 : m_ftfp(nullptr), m_stringModel(nullptr), m_stringDecay(nullptr),
36 m_fragModel(nullptr), m_preCompoundModel(nullptr)
40 ProtonPhysics::~ProtonPhysics()
52 G4ChipsElasticModel* elMod =
new G4ChipsElasticModel();
55 G4CascadeInterface* loInelModel =
new G4CascadeInterface;
56 loInelModel->SetMinEnergy(0.0);
57 loInelModel->SetMaxEnergy(12.0 * GeV);
60 m_ftfp =
new G4TheoFSGenerator(
"FTFP");
63 new G4ExcitedStringDecay(
m_fragModel =
new G4LundStringFragmentation);
69 m_ftfp->SetMinEnergy(5 * GeV);
70 m_ftfp->SetMaxEnergy(100 * TeV);
73 G4BGGNucleonInelasticXS* inelCS =
new G4BGGNucleonInelasticXS(G4Proton::Proton());
74 G4ChipsProtonElasticXS* elCS =
new G4ChipsProtonElasticXS;
76 G4ProcessManager* procMan = G4Proton::Proton()->GetProcessManager();
79 G4HadronElasticProcess* pProcEl =
new G4HadronElasticProcess;
80 pProcEl->RegisterMe(elMod);
81 pProcEl->AddDataSet(elCS);
82 procMan->AddDiscreteProcess(pProcEl);
85 G4ProtonInelasticProcess* pProcInel =
new G4ProtonInelasticProcess;
86 pProcInel->RegisterMe(loInelModel);
87 pProcInel->RegisterMe(
m_ftfp);
88 pProcInel->AddDataSet(inelCS);
89 procMan->AddDiscreteProcess(pProcInel);