61 G4CascadeInterface* theGammaReaction =
new G4CascadeInterface;
62 theGammaReaction->SetMinEnergy(0.0);
63 theGammaReaction->SetMaxEnergy(3.5 * GeV);
66 m_qgsp =
new G4TheoFSGenerator(
"QGSP");
69 new G4ExcitedStringDecay(
m_fragModel =
new G4QGSMFragmentation);
75 m_qgsp->SetMinEnergy(3 * GeV);
76 m_qgsp->SetMaxEnergy(100 * TeV);
79 G4ElectroVDNuclearModel* evdn =
new G4ElectroVDNuclearModel;
80 G4MuonVDNuclearModel* mvdn =
new G4MuonVDNuclearModel;
83 G4ProcessManager* procMan = 0;
86 procMan = G4Gamma::Gamma()->GetProcessManager();
87 G4HadronInelasticProcess* pnProc =
new G4HadronInelasticProcess(
"photonNuclear", G4Gamma::Definition());
88 auto xsreg = G4CrossSectionDataSetRegistry::Instance();
89 G4VCrossSectionDataSet* xs =
nullptr;
91 xs = xsreg->GetCrossSectionDataSet(
"GammaNuclearXS");
92 if (
nullptr == xs) xs =
new G4GammaNuclearXS();
94 xs = xsreg->GetCrossSectionDataSet(
"PhotoNuclearXS");
95 if (
nullptr == xs) xs =
new G4PhotoNuclearCrossSection();
97 pnProc->AddDataSet(xs);
98 pnProc->RegisterMe(theGammaReaction);
99 pnProc->RegisterMe(
m_qgsp);
100 procMan->AddDiscreteProcess(pnProc);
103 procMan = G4Electron::Electron()->GetProcessManager();
104 G4ElectronNuclearProcess* emn =
new G4ElectronNuclearProcess;
105 emn->RegisterMe(evdn);
106 procMan->AddDiscreteProcess(emn);
109 procMan = G4Positron::Positron()->GetProcessManager();
110 G4PositronNuclearProcess* epn =
new G4PositronNuclearProcess;
111 epn->RegisterMe(evdn);
112 procMan->AddDiscreteProcess(epn);
115 procMan = G4MuonMinus::MuonMinus()->GetProcessManager();
116 G4MuonNuclearProcess* mun =
new G4MuonNuclearProcess;
117 mun->RegisterMe(mvdn);
118 procMan->AddDiscreteProcess(mun);
121 procMan = G4MuonPlus::MuonPlus()->GetProcessManager();
122 procMan->AddDiscreteProcess(mun);