50 new G4HadronInelasticProcess(
"protonInelastic", G4Proton::Definition());
52 new G4HadronInelasticProcess(
"neutronInelastic", G4Neutron::Definition());
54 new G4HadronInelasticProcess(
"pi+Inelastic", G4PionPlus::Definition());
56 new G4HadronInelasticProcess(
"pi-Inelastic", G4PionMinus::Definition());
59 const G4double maxBERT = 41.0 * CLHEP::MeV;
60 const G4double minINCLXX = 40.0 * CLHEP::MeV;
61 const G4double maxINCLXX = 12.0 * CLHEP::GeV;
62 const G4double minFTFP = 3.0 * CLHEP::GeV;
63 const G4double maxFTFP = G4HadronicParameters::Instance()->GetMaxEnergy();
71 G4FTFModel* theStringModel =
new G4FTFModel;
72 G4LundStringFragmentation* theLund =
new G4LundStringFragmentation;
73 G4ExcitedStringDecay* theStringDecay =
new G4ExcitedStringDecay(theLund);
74 theStringModel->SetFragmentationModel(theStringDecay);
75 G4GeneratorPrecompoundInterface* thePrecoInterface =
76 new G4GeneratorPrecompoundInterface;
77 G4TheoFSGenerator* theHighEnergyModel =
new G4TheoFSGenerator(
"FTFP");
78 theHighEnergyModel->SetHighEnergyGenerator(theStringModel);
79 theHighEnergyModel->SetTransport(thePrecoInterface);
80 theHighEnergyModel->SetMinEnergy(minFTFP);
81 theHighEnergyModel->SetMaxEnergy(maxFTFP);
83 G4CascadeInterface* theBertiniModel =
new G4CascadeInterface();
84 theBertiniModel->SetMinEnergy(0.0);
85 theBertiniModel->SetMaxEnergy(maxBERT);
87 G4INCLXXInterface* theInclxxModel =
new G4INCLXXInterface();
88 theInclxxModel->SetMinEnergy(minINCLXX);
89 theInclxxModel->SetMaxEnergy(maxINCLXX);
109 G4VCrossSectionDataSet* theProtonXSdata =
110 new G4BGGNucleonInelasticXS(G4Proton::Definition());
111 theProtonXSdata->BuildPhysicsTable(*(G4Proton::Definition()));
113 G4VCrossSectionDataSet* theNeutronXSdata =
new G4NeutronInelasticXS;
114 theNeutronXSdata->BuildPhysicsTable(*(G4Neutron::Definition()));
116 G4VCrossSectionDataSet* thePionPlusXSdata =
117 new G4BGGPionInelasticXS(G4PionPlus::Definition());
118 thePionPlusXSdata->BuildPhysicsTable(*(G4PionPlus::Definition()));
120 G4VCrossSectionDataSet* thePionMinusXSdata =
121 new G4BGGPionInelasticXS(G4PionMinus::Definition());
122 thePionMinusXSdata->BuildPhysicsTable(*(G4PionMinus::Definition()));
129 const G4BiasingProcessInterface*,
const G4Track* track,
const G4Step* step,
132 if (track->GetParticleDefinition() == G4Proton::Definition()) {
133 auto particle = track->GetDynamicParticle();
134 auto material = track->GetMaterial();
136 ->ComputeCrossSection(particle, material);
139 else if (track->GetParticleDefinition() == G4Neutron::Definition()) {
140 auto particle = track->GetDynamicParticle();
141 auto material = track->GetMaterial();
143 ->ComputeCrossSection(particle, material);
146 else if (track->GetParticleDefinition() == G4PionPlus::Definition()) {
147 auto particle = track->GetDynamicParticle();
148 auto material = track->GetMaterial();
150 ->ComputeCrossSection(particle, material);
153 else if (track->GetParticleDefinition() == G4PionMinus::Definition()) {
154 auto particle = track->GetDynamicParticle();
155 auto material = track->GetMaterial();
157 ->ComputeCrossSection(particle, material);
161 G4cerr <<
"ERROR in TG4BiasingOperation::ApplyFinalStateBiasing : "
162 "unexpected particle = "
163 << track->GetParticleDefinition()->GetParticleName() << G4endl;