99{
103
104
106 const G4double eminBert = 1.0*CLHEP::GeV;
107 const G4double emaxBic = 1.5*CLHEP::GeV;
109 const G4double emaxBertPions = 12.*CLHEP::GeV;
111
113 G4cout <<
"### HadronInelasticQBBC Construct Process:\n"
114 << " Emin(FTFP)= " << eminFtf/CLHEP::GeV
115 << " GeV; Emax(FTFP)= " << emax/CLHEP::GeV << " GeV\n"
116 << " Emin(BERT)= " << eminBert/CLHEP::GeV
117 << " GeV; Emax(BERT)= " << emaxBert/CLHEP::GeV
118 << " GeV; Emax(BERTpions)= " << emaxBertPions/CLHEP::GeV
119 << " GeV;\n" << " Emin(BIC) = 0 GeV; Emax(BIC)= "
120 << emaxBic/CLHEP::GeV <<
" GeV." <<
G4endl;
121 }
122
123
124 G4PreCompoundModel* thePreCompound = nullptr;
125 G4HadronicInteraction* p =
127 thePreCompound = static_cast<G4PreCompoundModel*>(p);
128 if(!thePreCompound) { thePreCompound = new G4PreCompoundModel(); }
129
130 auto theFTFP = new G4TheoFSGenerator("FTFP");
131 auto theStringModel = new G4FTFModel();
132 theStringModel->SetFragmentationModel(new G4ExcitedStringDecay());
133 theFTFP->SetHighEnergyGenerator( theStringModel );
134 theFTFP->SetTransport( new G4GeneratorPrecompoundInterface() );
135 theFTFP->SetMinEnergy( eminFtf );
136 theFTFP->SetMaxEnergy( emax );
137
138 auto theBERT = new G4CascadeInterface();
139 theBERT->SetMinEnergy( eminBert );
140 theBERT->SetMaxEnergy( emaxBert );
141 theBERT->usePreCompoundDeexcitation();
142
143 auto theBERT1 = new G4CascadeInterface();
144 theBERT1->SetMinEnergy( eminBert );
145 theBERT1->SetMaxEnergy( emaxBertPions );
146 theBERT1->usePreCompoundDeexcitation();
147
148 auto theBIC = new G4BinaryCascade(thePreCompound);
149 theBIC->SetMaxEnergy( emaxBic );
150
151
153 G4HadronicProcess* hp =
154 new G4HadronInelasticProcess( particle->
GetParticleName()+
"Inelastic", particle );
155 hp->
AddDataSet(
new G4BGGNucleonInelasticXS(particle) );
161
162
164 G4HadronicProcess* ni =
165 new G4HadronInelasticProcess( "neutronInelastic", particle );
170
171
173 hp =
new G4HadronInelasticProcess( particle->
GetParticleName()+
"Inelastic", particle );
174 hp->
AddDataSet(
new G4BGGPionInelasticXS(particle));
180
181
183 hp =
new G4HadronInelasticProcess( particle->
GetParticleName()+
"Inelastic", particle );
184 hp->
AddDataSet(
new G4BGGPionInelasticXS(particle));
190
191
193
194
196
197
199
200
202
203
206 }
207 }
208}
G4GLOB_DLL std::ostream G4cout
static void BuildNeutronInelasticAndCapture(G4HadronicProcess *)
static void BuildBCHadronsFTFP_BERT()
static void BuildHyperonsFTFP_BERT()
static void BuildKaonsFTFP_BERT()
static void BuildAntiLightIonsFTFP()
G4HadronicInteraction * FindModel(const G4String &name)
static G4HadronicInteractionRegistry * Instance()
G4bool ApplyFactorXS() const
G4int GetVerboseLevel() const
G4double GetMinEnergyTransitionFTF_Cascade() const
G4double GetMaxEnergyTransitionFTF_Cascade() const
G4bool EnableBCParticles() const
G4double EnergyThresholdForHeavyHadrons() const
G4double XSFactorPionInelastic() const
G4double GetMaxEnergy() const
G4double XSFactorNucleonInelastic() const
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void MultiplyCrossSectionBy(G4double factor)
void RegisterMe(G4HadronicInteraction *a)
static G4Neutron * Neutron()
const G4String & GetParticleName() const
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
static G4Proton * Proton()