Geant4 10.7.0
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)
 
 ~G4HadronPhysicsINCLXX () override
 
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)
 
 ~G4HadronPhysicsFTFP_BERT () override
 
void ConstructParticle () override
 
void ConstructProcess () 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 ()
 
virtual void ConstructParticle ()=0
 
virtual void ConstructProcess ()=0
 
void SetPhysicsName (const G4String &="")
 
const G4StringGetPhysicsName () const
 
void SetPhysicsType (G4int)
 
G4int GetPhysicsType () const
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
G4int GetInstanceID () const
 
virtual void TerminateWorker ()
 

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 Neutron ()
 
virtual void Proton ()
 
virtual void Pion ()
 
virtual void Kaon ()
 
virtual void Others ()
 
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
 
G4String namePhysics
 
G4int typePhysics
 
G4ParticleTabletheParticleTable
 
G4int g4vpcInstanceID
 
- 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{
98}

◆ G4HadronPhysicsINCLXX() [2/3]

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

Definition at line 100 of file G4HadronPhysicsINCLXX.cc.

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

◆ ~G4HadronPhysicsINCLXX()

G4HadronPhysicsINCLXX::~G4HadronPhysicsINCLXX ( )
override

Definition at line 308 of file G4HadronPhysicsINCLXX.cc.

309{}

◆ G4HadronPhysicsINCLXX() [3/3]

G4HadronPhysicsINCLXX::G4HadronPhysicsINCLXX ( G4HadronPhysicsINCLXX )
delete

Member Function Documentation

◆ ConstructProcess()

void G4HadronPhysicsINCLXX::ConstructProcess ( )
overridevirtual

Reimplemented from G4HadronPhysicsFTFP_BERT.

Definition at line 311 of file G4HadronPhysicsINCLXX.cc.

◆ Kaon()

void G4HadronPhysicsINCLXX::Kaon ( )
overrideprotectedvirtual

Reimplemented from G4HadronPhysicsFTFP_BERT.

Definition at line 240 of file G4HadronPhysicsINCLXX.cc.

241{
243 G4bool useFactorXS = param->ApplyFactorXS();
244
245 auto k = new G4KaonBuilder;
246 AddBuilder(k);
247 G4PhysicsBuilderInterface* string = nullptr;
248 if(withFTFP) {
249 string = new G4FTFPKaonBuilder(QuasiElastic);
250 } else {
251 string = new G4QGSPKaonBuilder(QuasiElastic);
252 }
253 string->SetMinEnergy(14.*GeV);
254 AddBuilder(string);
255 k->RegisterMe(string);
256
257 auto bert = new G4BertiniKaonBuilder;
258 bert->SetMinEnergy(0.0*GeV);
259 bert->SetMaxEnergy(15.0*GeV);
260 AddBuilder(bert);
261 k->RegisterMe(bert);
262
263 k->Build();
264
265 if( useFactorXS ) {
267 for( auto & pdg : G4HadParticles::GetKaons() ) {
268 auto part = table->FindParticle( pdg );
269 if ( part == nullptr ) { continue; }
271 if(inel) {
273 }
274 }
275 }
276}
bool G4bool
Definition: G4Types.hh:86
virtual void SetMinEnergy(G4double aM) final override
static const std::vector< G4int > & GetKaons()
static G4HadronicParameters * Instance()
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 109 of file G4HadronPhysicsINCLXX.cc.

110{
112 G4bool useFactorXS = param->ApplyFactorXS();
113 //General schema:
114 // 1) Create a builder
115 // 2) Call AddBuilder
116 // 3) Configure the builder, possibly with sub-builders
117 // 4) Call builder->Build()
118 auto neu = new G4NeutronBuilder( withNeutronHP );
119 AddBuilder(neu);
120 G4PhysicsBuilderInterface* string = nullptr;
121 if(withFTFP) {
123 } else {
125 }
126 string->SetMinEnergy(15.*GeV);
127 AddBuilder(string);
128 neu->RegisterMe(string);
129
130 auto inclxxn = new G4INCLXXNeutronBuilder;
131 inclxxn->SetMaxEnergy(20.*GeV);
132 AddBuilder(inclxxn);
133 neu->RegisterMe(inclxxn);
134
135 if(withNeutronHP) {
136 inclxxn->UsePreCompound(false);
137 inclxxn->SetMinEnergy(minBERT_neutron);
138 auto hpn = new G4NeutronPHPBuilder;
139 AddBuilder(hpn);
140 neu->RegisterMe(hpn);
141 } else {
142 inclxxn->UsePreCompound(true);
143 inclxxn->SetMinPreCompoundEnergy(0.0*MeV);
144 inclxxn->SetMaxPreCompoundEnergy(2.0*MeV);
145 inclxxn->SetMinEnergy(1.0*MeV);
146 }
147
148 neu->Build();
149
152 if(inel) {
153 if( useFactorXS ) inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
154 }
156 if (capture) {
157 G4NeutronRadCapture* theNeutronRadCapture = new G4NeutronRadCapture();
158 theNeutronRadCapture->SetMinEnergy( minBERT_neutron );
159 capture->RegisterMe( theNeutronRadCapture );
160 }
162 if (fission) {
163 G4LFission* theNeutronLEPFission = new G4LFission();
164 theNeutronLEPFission->SetMinEnergy( minBERT_neutron );
165 theNeutronLEPFission->SetMaxEnergy( G4HadronicParameters::Instance()->GetMaxEnergy() );
166 fission->RegisterMe( theNeutronLEPFission );
167 }
168}
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:103
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 278 of file G4HadronPhysicsINCLXX.cc.

279{
281
282 // high energy particles
283 if( param->GetMaxEnergy() > param->EnergyThresholdForHeavyHadrons() ) {
284
285 // anti light ions
287
288 if(withFTFP) {
289 // hyperons
291
292 // b-, c- baryons and mesons
293 if( param->EnableBCParticles() ) {
295 }
296 } else {
297 // hyperons
299
300 // b-, c- baryons and mesons
301 if( param->EnableBCParticles() ) {
303 }
304 }
305 }
306}
static void BuildBCHadronsFTFP_BERT()
static void BuildHyperonsFTFP_BERT()
static void BuildHyperonsQGSP_FTFP_BERT(G4bool quasiElastic)
static void BuildAntiLightIonsFTFP()
static void BuildBCHadronsQGSP_FTFP_BERT(G4bool quasiElastic)
G4bool EnableBCParticles() const
G4double EnergyThresholdForHeavyHadrons() const
G4double GetMaxEnergy() const

◆ Pion()

void G4HadronPhysicsINCLXX::Pion ( )
overrideprotectedvirtual

Reimplemented from G4HadronPhysicsFTFP_BERT.

Definition at line 201 of file G4HadronPhysicsINCLXX.cc.

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

◆ Proton()

void G4HadronPhysicsINCLXX::Proton ( )
overrideprotectedvirtual

Reimplemented from G4HadronPhysicsFTFP_BERT.

Definition at line 170 of file G4HadronPhysicsINCLXX.cc.

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

◆ 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: