90 {
94
95
97 const G4double eminBert = 1.0*CLHEP::GeV;
98 const G4double emaxBic = 1.5*CLHEP::GeV;
100 const G4double emaxBertPions = 12.0*CLHEP::GeV;
103 G4cout <<
"### HadronInelasticQBBC_ABLA Construct Process:\n"
104 << " Emin(FTFP)= " << eminFtf/CLHEP::GeV
105 << " GeV; Emax(FTFP)= " << emax/CLHEP::GeV << " GeV\n"
106 << " Emin(BERT)= " << eminBert/CLHEP::GeV
107 << " GeV; Emax(BERT)= " << emaxBert/CLHEP::GeV
108 << " GeV; Emax(BERTpions)= " << emaxBertPions/CLHEP::GeV
109 << " GeV;\n" << " Emin(BIC) = 0 GeV; Emax(BIC)= "
110 << emaxBic/CLHEP::GeV <<
" GeV." <<
G4endl;
111 }
112
113 G4PreCompoundModel* thePreCompound = nullptr;
115 thePreCompound = static_cast< G4PreCompoundModel* >( p );
116 if ( thePreCompound == nullptr ) thePreCompound = new G4PreCompoundModel;
117
118 G4AblaInterface* theAblaInterface = nullptr;
120 theAblaInterface = static_cast< G4AblaInterface* >( pAbla );
121 if ( theAblaInterface == nullptr ) theAblaInterface = new G4AblaInterface;
122
123 auto theFTFP = new G4TheoFSGenerator( "FTFP" );
124 auto theStringModel = new G4FTFModel;
125 theStringModel->SetFragmentationModel( new G4ExcitedStringDecay );
126 theFTFP->SetHighEnergyGenerator( theStringModel );
127
128 theFTFP->SetTransport( new G4GeneratorPrecompoundInterface( theAblaInterface ) );
129 theFTFP->SetMinEnergy( eminFtf );
130 theFTFP->SetMaxEnergy( emax );
131
132 auto theBERT = new G4CascadeInterface;
133 theBERT->SetMinEnergy( eminBert );
134 theBERT->SetMaxEnergy( emaxBert );
135
136 theBERT->useAblaDeexcitation();
137
138 auto theBERT1 = new G4CascadeInterface;
139 theBERT1->SetMinEnergy( eminBert );
140 theBERT1->SetMaxEnergy( emaxBertPions );
141
142 theBERT1->useAblaDeexcitation();
143
144
145 auto theBIC = new G4BinaryCascade( theAblaInterface );
146 theBIC->SetMaxEnergy( emaxBic );
147
148
150 G4HadronicProcess* hp =
151 new G4HadronInelasticProcess( particle->
GetParticleName() +
"Inelastic", particle );
152 hp->
AddDataSet(
new G4ParticleInelasticXS( particle ) );
158
159
161 G4HadronicProcess* ni = new G4HadronInelasticProcess( "neutronInelastic", particle );
166
167
169 hp =
new G4HadronInelasticProcess( particle->
GetParticleName() +
"Inelastic", particle );
170 hp->
AddDataSet(
new G4BGGPionInelasticXS( particle ) );
176
177
179 hp =
new G4HadronInelasticProcess( particle->
GetParticleName() +
"Inelastic", particle );
180 hp->
AddDataSet(
new G4BGGPionInelasticXS( particle ) );
186
187
189
190
192
193
195
196
198
199
201 }
202}
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()