11 #include <simulation/physicslist/GammaLeptoNuclearPhysics.h>
13 #include "G4ProcessManager.hh"
14 #include "G4PhotoNuclearProcess.hh"
15 #include "G4ElectronNuclearProcess.hh"
16 #include "G4PositronNuclearProcess.hh"
17 #include "G4MuonNuclearProcess.hh"
19 #include "G4CascadeInterface.hh"
20 #include "G4ElectroVDNuclearModel.hh"
21 #include "G4MuonVDNuclearModel.hh"
23 #include "G4TheoFSGenerator.hh"
24 #include "G4ExcitedStringDecay.hh"
25 #include "G4QGSMFragmentation.hh"
26 #include "G4GeneratorPrecompoundInterface.hh"
28 #include "G4SystemOfUnits.hh"
31 using namespace Simulation;
34 GammaLeptoNuclearPhysics::GammaLeptoNuclearPhysics()
35 : m_qgsp(nullptr), m_stringModel(nullptr), m_stringDecay(nullptr),
36 m_fragModel(nullptr), m_preCompoundModel(nullptr)
40 GammaLeptoNuclearPhysics::~GammaLeptoNuclearPhysics()
52 G4CascadeInterface* theGammaReaction =
new G4CascadeInterface;
53 theGammaReaction->SetMinEnergy(0.0);
54 theGammaReaction->SetMaxEnergy(3.5 * GeV);
57 m_qgsp =
new G4TheoFSGenerator(
"QGSP");
60 new G4ExcitedStringDecay(
m_fragModel =
new G4QGSMFragmentation);
66 m_qgsp->SetMinEnergy(3 * GeV);
67 m_qgsp->SetMaxEnergy(100 * TeV);
70 G4ElectroVDNuclearModel* evdn =
new G4ElectroVDNuclearModel;
71 G4MuonVDNuclearModel* mvdn =
new G4MuonVDNuclearModel;
74 G4ProcessManager* procMan = 0;
77 procMan = G4Gamma::Gamma()->GetProcessManager();
78 G4PhotoNuclearProcess* pnProc =
new G4PhotoNuclearProcess;
79 pnProc->RegisterMe(theGammaReaction);
80 pnProc->RegisterMe(
m_qgsp);
81 procMan->AddDiscreteProcess(pnProc);
84 procMan = G4Electron::Electron()->GetProcessManager();
85 G4ElectronNuclearProcess* emn =
new G4ElectronNuclearProcess;
86 emn->RegisterMe(evdn);
87 procMan->AddDiscreteProcess(emn);
90 procMan = G4Positron::Positron()->GetProcessManager();
91 G4PositronNuclearProcess* epn =
new G4PositronNuclearProcess;
92 epn->RegisterMe(evdn);
93 procMan->AddDiscreteProcess(epn);
96 procMan = G4MuonMinus::MuonMinus()->GetProcessManager();
97 G4MuonNuclearProcess* mun =
new G4MuonNuclearProcess;
98 mun->RegisterMe(mvdn);
99 procMan->AddDiscreteProcess(mun);
102 procMan = G4MuonPlus::MuonPlus()->GetProcessManager();
103 procMan->AddDiscreteProcess(mun);