Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4HadronPhysicsINCLXX Class Reference

#include <G4HadronPhysicsINCLXX.hh>

+ Inheritance diagram for G4HadronPhysicsINCLXX:

Public Member Functions

 G4HadronPhysicsINCLXX (G4int verbose=1)
 
 G4HadronPhysicsINCLXX (const G4String &name, const G4bool quasiElastic=true, const G4bool neutronHP=false, const G4bool ftfp=false)
 
virtual ~G4HadronPhysicsINCLXX ()
 
void ConstructProcess () override
 
void SetQuasiElastic (G4bool value)
 
 G4HadronPhysicsINCLXX (G4HadronPhysicsINCLXX &)=delete
 
G4HadronPhysicsINCLXXoperator= (const G4HadronPhysicsINCLXX &right)=delete
 
- Public Member Functions inherited from G4HadronPhysicsFTFP_BERT
 G4HadronPhysicsFTFP_BERT (G4int verbose=1)
 
 G4HadronPhysicsFTFP_BERT (const G4String &name, G4bool quasiElastic=false)
 
virtual ~G4HadronPhysicsFTFP_BERT ()
 
void ConstructParticle () override
 
 G4HadronPhysicsFTFP_BERT (G4HadronPhysicsFTFP_BERT &)=delete
 
G4HadronPhysicsFTFP_BERToperator= (const G4HadronPhysicsFTFP_BERT &right)=delete
 
- Public Member Functions inherited from G4VPhysicsConstructor
 G4VPhysicsConstructor (const G4String &="")
 
 G4VPhysicsConstructor (const G4String &name, G4int physics_type)
 
virtual ~G4VPhysicsConstructor ()
 
void SetPhysicsName (const G4String &="")
 
const G4StringGetPhysicsName () const
 
void SetPhysicsType (G4int)
 
G4int GetPhysicsType () const
 
G4int GetInstanceID () const
 
virtual void TerminateWorker ()
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 

Protected Member Functions

void Neutron () override
 
void Proton () override
 
void Pion () override
 
void Kaon () override
 
void Others () override
 
- Protected Member Functions inherited from G4HadronPhysicsFTFP_BERT
void CreateModels ()
 
virtual void DumpBanner ()
 
- Protected Member Functions inherited from G4VPhysicsConstructor
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
 
PhysicsBuilder_V GetBuilders () const
 
void AddBuilder (G4PhysicsBuilderInterface *bld)
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VPhysicsConstructor
static const G4VPCManagerGetSubInstanceManager ()
 
- Protected Types inherited from G4VPhysicsConstructor
using PhysicsBuilder_V = G4VPCData::PhysicsBuilders_V
 
- Protected Attributes inherited from G4HadronPhysicsFTFP_BERT
G4double minFTFP_pion
 
G4double maxBERT_pion
 
G4double minFTFP_kaon
 
G4double maxBERT_kaon
 
G4double minFTFP_proton
 
G4double maxBERT_proton
 
G4double minFTFP_neutron
 
G4double maxBERT_neutron
 
G4double minBERT_proton
 
G4double minBERT_neutron
 
G4bool QuasiElastic
 
- Protected Attributes inherited from G4VPhysicsConstructor
G4int verboseLevel = 0
 
G4String namePhysics = ""
 
G4int typePhysics = 0
 
G4ParticleTabletheParticleTable = nullptr
 
G4int g4vpcInstanceID = 0
 
- Static Protected Attributes inherited from G4VPhysicsConstructor
static G4RUN_DLL G4VPCManager subInstanceManager
 

Detailed Description

Build hadronic physics using INCL++, high-energy models (QGSP or FTFP) and possibly NeutronHP.

See also
G4INCLXXProtonBuilder
G4INCLXXNeutronBuilder
G4INCLXXPionBuilder
G4IonINCLXXBuilder

Definition at line 62 of file G4HadronPhysicsINCLXX.hh.

Constructor & Destructor Documentation

◆ G4HadronPhysicsINCLXX() [1/3]

G4HadronPhysicsINCLXX::G4HadronPhysicsINCLXX ( G4int verbose = 1)

Definition at line 95 of file G4HadronPhysicsINCLXX.cc.

96 : G4HadronPhysicsINCLXX("hInelastic INCLXX")
97{
99}
G4HadronPhysicsINCLXX(G4int verbose=1)
static G4HadronicParameters * Instance()
void SetVerboseLevel(const G4int val)

◆ G4HadronPhysicsINCLXX() [2/3]

G4HadronPhysicsINCLXX::G4HadronPhysicsINCLXX ( const G4String & name,
const G4bool quasiElastic = true,
const G4bool neutronHP = false,
const G4bool ftfp = false )

Definition at line 101 of file G4HadronPhysicsINCLXX.cc.

102 : G4HadronPhysicsFTFP_BERT(name, quasiElastic),
103 withNeutronHP(neutronHP),
104 withFTFP(ftfp)
105{
106 QuasiElastic = withFTFP ? false : true;
107 minBERT_neutron = withNeutronHP ? 19.9*MeV : 0.0;
108}

◆ ~G4HadronPhysicsINCLXX()

G4HadronPhysicsINCLXX::~G4HadronPhysicsINCLXX ( )
virtual

Definition at line 320 of file G4HadronPhysicsINCLXX.cc.

321{}

◆ G4HadronPhysicsINCLXX() [3/3]

G4HadronPhysicsINCLXX::G4HadronPhysicsINCLXX ( G4HadronPhysicsINCLXX & )
delete

Member Function Documentation

◆ ConstructProcess()

void G4HadronPhysicsINCLXX::ConstructProcess ( )
overridevirtual

◆ Kaon()

void G4HadronPhysicsINCLXX::Kaon ( )
overrideprotectedvirtual

Reimplemented from G4HadronPhysicsFTFP_BERT.

Definition at line 241 of file G4HadronPhysicsINCLXX.cc.

242{
244 G4bool useFactorXS = param->ApplyFactorXS();
245
246 auto k = new G4KaonBuilder;
247 AddBuilder(k);
248 G4PhysicsBuilderInterface* string = nullptr;
249 if(withFTFP) {
250 string = new G4FTFPKaonBuilder(QuasiElastic);
251 } else {
252 string = new G4QGSPKaonBuilder(QuasiElastic);
253 }
254 string->SetMinEnergy(14.*GeV);
255 AddBuilder(string);
256 k->RegisterMe(string);
257
258 auto bert = new G4BertiniKaonBuilder;
259 bert->SetMinEnergy(0.0*GeV);
260 bert->SetMaxEnergy(15.0*GeV);
261 AddBuilder(bert);
262 k->RegisterMe(bert);
263
264 k->Build();
265
266 if( useFactorXS ) {
268 for( auto & pdg : G4HadParticles::GetKaons() ) {
269 auto part = table->FindParticle( pdg );
270 if ( part == nullptr ) { continue; }
272 if(nullptr != inel) {
274 }
275 }
276 }
277}
bool G4bool
Definition G4Types.hh:86
virtual void SetMinEnergy(G4double aM) final override
static const std::vector< G4int > & GetKaons()
G4double XSFactorHadronInelastic() const
void MultiplyCrossSectionBy(G4double factor)
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
static G4HadronicProcess * FindInelasticProcess(const G4ParticleDefinition *)
void AddBuilder(G4PhysicsBuilderInterface *bld)

◆ Neutron()

void G4HadronPhysicsINCLXX::Neutron ( )
overrideprotectedvirtual

Reimplemented from G4HadronPhysicsFTFP_BERT.

Definition at line 110 of file G4HadronPhysicsINCLXX.cc.

111{
113 G4bool useFactorXS = param->ApplyFactorXS();
114 //General schema:
115 // 1) Create a builder
116 // 2) Call AddBuilder
117 // 3) Configure the builder, possibly with sub-builders
118 // 4) Call builder->Build()
119 auto neu = new G4NeutronBuilder( withNeutronHP );
120 AddBuilder(neu);
121 G4PhysicsBuilderInterface* string = nullptr;
122 if(withFTFP) {
124 } else {
126 }
127 string->SetMinEnergy(15.*GeV);
128 AddBuilder(string);
129 neu->RegisterMe(string);
130
131 auto inclxxn = new G4INCLXXNeutronBuilder;
132 inclxxn->SetMaxEnergy(20.*GeV);
133 AddBuilder(inclxxn);
134 neu->RegisterMe(inclxxn);
135
136 if(withNeutronHP) {
137 inclxxn->UsePreCompound(false);
138 inclxxn->SetMinEnergy(minBERT_neutron);
139 auto hpn = new G4NeutronPHPBuilder;
140 AddBuilder(hpn);
141 neu->RegisterMe(hpn);
142 } else {
143 inclxxn->UsePreCompound(true);
144 inclxxn->SetMinPreCompoundEnergy(0.0*MeV);
145 inclxxn->SetMaxPreCompoundEnergy(2.0*MeV);
146 inclxxn->SetMinEnergy(1.0*MeV);
147 }
148
149 neu->Build();
150
153 if(nullptr != inel) {
154 if( useFactorXS ) inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
155 }
157 if (nullptr != capture) {
158 G4NeutronRadCapture* theNeutronRadCapture = new G4NeutronRadCapture();
159 theNeutronRadCapture->SetMinEnergy( minBERT_neutron );
160 capture->RegisterMe( theNeutronRadCapture );
161 }
163 if (nullptr != fission) {
164 G4LFission* theNeutronLEPFission = new G4LFission();
165 theNeutronLEPFission->SetMinEnergy( minBERT_neutron );
166 theNeutronLEPFission->SetMaxEnergy( G4HadronicParameters::Instance()->GetMaxEnergy() );
167 fission->RegisterMe( theNeutronLEPFission );
168 }
169}
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)
G4double XSFactorNucleonInelastic() const
void RegisterMe(G4HadronicInteraction *a)
virtual void SetMaxEnergy(G4double aM) final override
static G4Neutron * Neutron()
Definition G4Neutron.cc:101
static G4HadronicProcess * FindCaptureProcess(const G4ParticleDefinition *)
static G4HadronicProcess * FindFissionProcess(const G4ParticleDefinition *)

◆ operator=()

G4HadronPhysicsINCLXX & G4HadronPhysicsINCLXX::operator= ( const G4HadronPhysicsINCLXX & right)
delete

◆ Others()

void G4HadronPhysicsINCLXX::Others ( )
overrideprotectedvirtual

Reimplemented from G4HadronPhysicsFTFP_BERT.

Definition at line 279 of file G4HadronPhysicsINCLXX.cc.

280{
282
283 // high energy particles
284 if( param->GetMaxEnergy() > param->EnergyThresholdForHeavyHadrons() ) {
285
286 // anti light ions
288
289 if ( param->EnableHyperNuclei() ) {
290 // INCLXX is currently capable of handling light hypernuclei projectiles,
291 // but not light anti-hypernuclei projectiles, therefore FTFP must be used
292 // for the latter.
293 // Note that the QGSP string model cannot currently handle nuclear projectiles
294 // of any kind, so only the FTFP string model can be used together with INCLXX
295 // for the simulation of nuclear interactions light hypernuclei.
298 }
299
300 if(withFTFP) {
301 // hyperons
303
304 // b-, c- baryons and mesons
305 if( param->EnableBCParticles() ) {
307 }
308 } else {
309 // hyperons
311
312 // b-, c- baryons and mesons
313 if( param->EnableBCParticles() ) {
315 }
316 }
317 }
318}
static void BuildBCHadronsFTFP_BERT()
static void BuildHyperonsFTFP_BERT()
static void BuildHyperonsQGSP_FTFP_BERT(G4bool quasiElastic)
static void BuildHyperAntiNucleiFTFP_BERT()
static void BuildBCHadronsQGSP_FTFP_BERT(G4bool quasiElastic)
static void BuildHyperNucleiFTFP_INCLXX()
static void BuildAntiLightIonsINCLXX()
G4double EnergyThresholdForHeavyHadrons() const

◆ Pion()

void G4HadronPhysicsINCLXX::Pion ( )
overrideprotectedvirtual

Reimplemented from G4HadronPhysicsFTFP_BERT.

Definition at line 202 of file G4HadronPhysicsINCLXX.cc.

203{
205 G4bool useFactorXS = param->ApplyFactorXS();
206
207 auto pi = new G4PionBuilder;
208 AddBuilder(pi);
209 G4PhysicsBuilderInterface* string = nullptr;
210 if(withFTFP) {
211 string = new G4FTFPPionBuilder(QuasiElastic);
212 } else {
213 string = new G4QGSPPionBuilder(QuasiElastic);
214 }
215 string->SetMinEnergy(15.*GeV);
216 AddBuilder(string);
217 pi->RegisterMe(string);
218
219 auto inclxx = new G4INCLXXPionBuilder;
220 inclxx->SetMinEnergy(0.0*GeV);
221 inclxx->SetMaxEnergy(20.*GeV);
222 AddBuilder(inclxx);
223 pi->RegisterMe(inclxx);
224
225 pi->Build();
226
227 if( useFactorXS ) {
230 if(nullptr != inel) {
232 }
235 if(nullptr != inel) {
237 }
238 }
239}
G4double XSFactorPionInelastic() const
virtual void SetMinEnergy(G4double aM) final override
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
Definition G4PionPlus.cc:93

◆ Proton()

void G4HadronPhysicsINCLXX::Proton ( )
overrideprotectedvirtual

Reimplemented from G4HadronPhysicsFTFP_BERT.

Definition at line 171 of file G4HadronPhysicsINCLXX.cc.

172{
174 G4bool useFactorXS = param->ApplyFactorXS();
175
176 auto pro =new G4ProtonBuilder;
177 AddBuilder(pro);
178 G4PhysicsBuilderInterface* string = nullptr;
179 if(withFTFP) {
180 string = new G4FTFPProtonBuilder(QuasiElastic);
181 } else {
182 string = new G4QGSPProtonBuilder(QuasiElastic);
183 }
184 string->SetMinEnergy(15.*GeV);
185 AddBuilder(string);
186 pro->RegisterMe(string);
187
188 auto inclxxp = new G4INCLXXProtonBuilder;
189 AddBuilder(inclxxp);
190 inclxxp->SetMinEnergy(1.0*MeV);
191 inclxxp->SetMaxEnergy(20.0*GeV);
192 pro->RegisterMe(inclxxp);
193 pro->Build();
194
197 if(nullptr != inel) {
198 if( useFactorXS ) inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
199 }
200}
static G4Proton * Proton()
Definition G4Proton.cc:90

◆ SetQuasiElastic()

void G4HadronPhysicsINCLXX::SetQuasiElastic ( G4bool value)
inline

Definition at line 71 of file G4HadronPhysicsINCLXX.hh.

71{QuasiElastic = value;};

The documentation for this class was generated from the following files: