59 G4ProcessManager* procMan = 0;
62 G4NuclNuclDiffuseElastic* ionElastic =
new G4NuclNuclDiffuseElastic;
63 ionElastic->SetMinEnergy(0.0);
66 m_ftfp =
new G4TheoFSGenerator(
"FTFP");
69 new G4ExcitedStringDecay(
m_fragModel =
new G4LundStringFragmentation);
75 m_ftfp->SetMinEnergy(10.01 * GeV);
76 m_ftfp->SetMaxEnergy(1.0 * TeV);
79 G4QMDReaction* qmd =
new G4QMDReaction;
80 qmd->SetMinEnergy(100.0 * MeV);
81 qmd->SetMaxEnergy(10.0 * GeV);
84 G4HadronicInteraction* p =
85 G4HadronicInteractionRegistry::Instance()->FindModel(
"PRECO");
86 G4PreCompoundModel* thePreCompound =
static_cast<G4PreCompoundModel*
>(p);
87 if (!thePreCompound) { thePreCompound =
new G4PreCompoundModel; }
89 G4BinaryLightIonReaction* ionBC =
new G4BinaryLightIonReaction(thePreCompound);
90 ionBC->SetMinEnergy(0.0 * MeV);
91 ionBC->SetMaxEnergy(110.0 * MeV);
95 G4VCrossSectionDataSet* ionElasticXS =
new G4CrossSectionElastic(
m_ionGGXS);
96 ionElasticXS->SetMinKinEnergy(0.0);
100 G4VCrossSectionDataSet* nuclNuclXS =
107 procMan = G4Deuteron::Deuteron()->GetProcessManager();
113 G4HadronInelasticProcess* deutProcInel =
114 new G4HadronInelasticProcess(
"DeuteronInelProcess", G4Deuteron::Deuteron());
115 deutProcInel->RegisterMe(ionBC);
116 deutProcInel->RegisterMe(qmd);
117 deutProcInel->RegisterMe(
m_ftfp);
118 deutProcInel->AddDataSet(nuclNuclXS);
119 procMan->AddDiscreteProcess(deutProcInel);
125 procMan = G4Triton::Triton()->GetProcessManager();
131 G4HadronInelasticProcess* tritProcInel =
132 new G4HadronInelasticProcess(
"TritonInelProcess", G4Triton::Triton());
133 tritProcInel->RegisterMe(ionBC);
134 tritProcInel->RegisterMe(qmd);
135 tritProcInel->RegisterMe(
m_ftfp);
136 tritProcInel->AddDataSet(nuclNuclXS);
137 procMan->AddDiscreteProcess(tritProcInel);
143 procMan = G4He3::He3()->GetProcessManager();
149 G4HadronInelasticProcess* he3ProcInel =
150 new G4HadronInelasticProcess(
"He3InelProcess", G4He3::He3());
151 he3ProcInel->RegisterMe(ionBC);
152 he3ProcInel->RegisterMe(qmd);
153 he3ProcInel->RegisterMe(
m_ftfp);
154 he3ProcInel->AddDataSet(nuclNuclXS);
155 procMan->AddDiscreteProcess(he3ProcInel);
161 procMan = G4Alpha::Alpha()->GetProcessManager();
167 G4HadronInelasticProcess* alphProcInel =
168 new G4HadronInelasticProcess(
"AlphaInelProcess", G4Alpha::Alpha());
169 alphProcInel->RegisterMe(ionBC);
170 alphProcInel->RegisterMe(qmd);
171 alphProcInel->RegisterMe(
m_ftfp);
172 alphProcInel->AddDataSet(nuclNuclXS);
173 procMan->AddDiscreteProcess(alphProcInel);
179 procMan = G4GenericIon::GenericIon()->GetProcessManager();
182 G4HadronElasticProcess* ionProcEl =
new G4HadronElasticProcess;
183 ionProcEl->RegisterMe(ionElastic);
184 ionProcEl->AddDataSet(ionElasticXS);
185 procMan->AddDiscreteProcess(ionProcEl);
188 G4HadronInelasticProcess* genIonProcInel =
189 new G4HadronInelasticProcess(
"IonInelProcess", G4GenericIon::GenericIon());
190 genIonProcInel->RegisterMe(ionBC);
191 genIonProcInel->RegisterMe(qmd);
192 genIonProcInel->RegisterMe(
m_ftfp);
193 genIonProcInel->AddDataSet(nuclNuclXS);
194 procMan->AddDiscreteProcess(genIonProcInel);