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

#include <G4HadronPhysicsQGSP_BERT.hh>

+ Inheritance diagram for G4HadronPhysicsQGSP_BERT:

Public Member Functions

 G4HadronPhysicsQGSP_BERT (G4int verbose=1)
 
 G4HadronPhysicsQGSP_BERT (const G4String &name, G4bool quasiElastic=true)
 
virtual ~G4HadronPhysicsQGSP_BERT ()
 
void ConstructParticle () override
 
void ConstructProcess () override
 
 G4HadronPhysicsQGSP_BERT (G4HadronPhysicsQGSP_BERT &)=delete
 
G4HadronPhysicsQGSP_BERToperator= (const G4HadronPhysicsQGSP_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 CreateModels ()
 
virtual void Neutron ()
 
virtual void Proton ()
 
virtual void Pion ()
 
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)
 

Protected Attributes

G4double minQGSP_proton
 
G4double minQGSP_neutron
 
G4double minQGSP_pik
 
G4double minFTFP_proton
 
G4double minFTFP_neutron
 
G4double minFTFP_pik
 
G4double maxFTFP_proton
 
G4double maxFTFP_neutron
 
G4double maxFTFP_pik
 
G4double minBERT_proton
 
G4double minBERT_neutron
 
G4double minBERT_pik
 
G4double maxBERT_proton
 
G4double maxBERT_neutron
 
G4double maxBERT_pik
 
G4bool QuasiElasticFTF
 
G4bool QuasiElasticQGS
 
- Protected Attributes inherited from G4VPhysicsConstructor
G4int verboseLevel = 0
 
G4String namePhysics = ""
 
G4int typePhysics = 0
 
G4ParticleTabletheParticleTable = nullptr
 
G4int g4vpcInstanceID = 0
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VPhysicsConstructor
static const G4VPCManagerGetSubInstanceManager ()
 
- Protected Types inherited from G4VPhysicsConstructor
using PhysicsBuilder_V = G4VPCData::PhysicsBuilders_V
 
- Static Protected Attributes inherited from G4VPhysicsConstructor
static G4RUN_DLL G4VPCManager subInstanceManager
 

Detailed Description

Definition at line 51 of file G4HadronPhysicsQGSP_BERT.hh.

Constructor & Destructor Documentation

◆ G4HadronPhysicsQGSP_BERT() [1/3]

G4HadronPhysicsQGSP_BERT::G4HadronPhysicsQGSP_BERT ( G4int verbose = 1)

Definition at line 90 of file G4HadronPhysicsQGSP_BERT.cc.

91 : G4HadronPhysicsQGSP_BERT("hInelastic QGSP_BERT",true)
92{
94}
static G4HadronicParameters * Instance()
void SetVerboseLevel(const G4int val)

◆ G4HadronPhysicsQGSP_BERT() [2/3]

G4HadronPhysicsQGSP_BERT::G4HadronPhysicsQGSP_BERT ( const G4String & name,
G4bool quasiElastic = true )

Definition at line 96 of file G4HadronPhysicsQGSP_BERT.cc.

98{
100 QuasiElasticFTF= false; // Use built-in quasi-elastic (not add-on)
101 QuasiElasticQGS= true; // For QGS, it must use it.
112 param->SetEnableBCParticles(true);
113}
@ bHadronInelastic
G4double GetMinEnergyTransitionFTF_Cascade() const
G4double GetMinEnergyTransitionQGS_FTF() const
G4double GetMaxEnergyTransitionFTF_Cascade() const
void SetEnableBCParticles(G4bool val)
G4double GetMaxEnergyTransitionQGS_FTF() const
G4VPhysicsConstructor(const G4String &="")

◆ ~G4HadronPhysicsQGSP_BERT()

G4HadronPhysicsQGSP_BERT::~G4HadronPhysicsQGSP_BERT ( )
virtual

Definition at line 259 of file G4HadronPhysicsQGSP_BERT.cc.

260{}

◆ G4HadronPhysicsQGSP_BERT() [3/3]

G4HadronPhysicsQGSP_BERT::G4HadronPhysicsQGSP_BERT ( G4HadronPhysicsQGSP_BERT & )
delete

Member Function Documentation

◆ ConstructParticle()

void G4HadronPhysicsQGSP_BERT::ConstructParticle ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 262 of file G4HadronPhysicsQGSP_BERT.cc.

263{
264 G4MesonConstructor pMesonConstructor;
265 pMesonConstructor.ConstructParticle();
266
267 G4BaryonConstructor pBaryonConstructor;
268 pBaryonConstructor.ConstructParticle();
269
270 G4ShortLivedConstructor pShortLivedConstructor;
271 pShortLivedConstructor.ConstructParticle();
272
273 G4IonConstructor pIonConstructor;
274 pIonConstructor.ConstructParticle();
275}
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()

◆ ConstructProcess()

void G4HadronPhysicsQGSP_BERT::ConstructProcess ( )
overridevirtual

◆ CreateModels()

void G4HadronPhysicsQGSP_BERT::CreateModels ( )
protected

Definition at line 115 of file G4HadronPhysicsQGSP_BERT.cc.

Referenced by ConstructProcess().

◆ DumpBanner()

void G4HadronPhysicsQGSP_BERT::DumpBanner ( )
protectedvirtual

Definition at line 295 of file G4HadronPhysicsQGSP_BERT.cc.

296{
297 G4cout << G4endl;
298 G4cout << " " << GetPhysicsName() << " Thresholds: " << G4endl;
299 G4cout << " 1) between BERT and FTF/P over the interval "
300 << minFTFP_proton/GeV << " to " << maxBERT_proton/GeV << " GeV. " << G4endl;
301 G4cout << " 2) between FTF/P and QGS/P over the interval "
302 << minQGSP_proton/GeV << " to " << maxFTFP_proton/GeV << " GeV. " << G4endl;
303 G4cout << " -- quasiElastic: " << QuasiElasticQGS << " for QGS "
304 << " and " << QuasiElasticFTF << " for FTF" << G4endl;
305}
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
const G4String & GetPhysicsName() const

Referenced by ConstructProcess().

◆ Neutron()

void G4HadronPhysicsQGSP_BERT::Neutron ( )
protectedvirtual

Reimplemented in G4HadronPhysicsQGS_BIC, and G4HadronPhysicsQGSP_BERT_HP.

Definition at line 123 of file G4HadronPhysicsQGSP_BERT.cc.

124{
126 G4bool useFactorXS = param->ApplyFactorXS();
127 //General schema:
128 // 1) Create a builder
129 // 2) Call AddBuilder
130 // 3) Configure the builder, possibly with sub-builders
131 // 4) Call builder->Build()
132 auto neu = new G4NeutronBuilder;
133 AddBuilder(neu);
135 AddBuilder(qgs);
136 qgs->SetMinEnergy(minQGSP_neutron);
137 neu->RegisterMe(qgs);
139 AddBuilder(ftf);
140 ftf->SetMinEnergy(minFTFP_neutron);
141 ftf->SetMaxEnergy(maxFTFP_neutron);
142 neu->RegisterMe(ftf);
143 auto bert = new G4BertiniNeutronBuilder;
144 AddBuilder(bert);
145 bert->SetMinEnergy(minBERT_neutron);
146 bert->SetMaxEnergy(maxBERT_neutron);
147 neu->RegisterMe(bert);
148 neu->Build();
149
152 if(nullptr != inel) {
153 inel->AddDataSet(new G4NeutronInelasticXS());
154 if( useFactorXS ) inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
155 }
157 if (nullptr != capture) {
158 capture->RegisterMe(new G4NeutronRadCapture());
159 }
160}
bool G4bool
Definition G4Types.hh:86
G4double XSFactorNucleonInelastic() const
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void MultiplyCrossSectionBy(G4double factor)
void RegisterMe(G4HadronicInteraction *a)
static G4Neutron * Neutron()
Definition G4Neutron.cc:101
static G4HadronicProcess * FindInelasticProcess(const G4ParticleDefinition *)
static G4HadronicProcess * FindCaptureProcess(const G4ParticleDefinition *)
void AddBuilder(G4PhysicsBuilderInterface *bld)

Referenced by CreateModels().

◆ operator=()

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

◆ Others()

void G4HadronPhysicsQGSP_BERT::Others ( )
protectedvirtual

Definition at line 239 of file G4HadronPhysicsQGSP_BERT.cc.

240{
242
243 // high energy particles
244 if( param->GetMaxEnergy() > param->EnergyThresholdForHeavyHadrons() ) {
245
246 // anti light ions
248
249 // hyperons
251
252 // b-, c- baryons and mesons
253 if( param->EnableBCParticles() ) {
255 }
256 }
257}
static void BuildHyperonsQGSP_FTFP_BERT(G4bool quasiElastic)
static void BuildAntiLightIonsFTFP()
static void BuildBCHadronsQGSP_FTFP_BERT(G4bool quasiElastic)
G4double EnergyThresholdForHeavyHadrons() const

Referenced by CreateModels().

◆ Pion()

void G4HadronPhysicsQGSP_BERT::Pion ( )
protectedvirtual

Reimplemented in G4HadronPhysicsQGS_BIC.

Definition at line 192 of file G4HadronPhysicsQGSP_BERT.cc.

193{
195 G4bool useFactorXS = param->ApplyFactorXS();
196
197 auto pik = new G4PiKBuilder;
198 AddBuilder(pik);
199 auto qgs = new G4QGSPPiKBuilder(QuasiElasticQGS);
200 AddBuilder(qgs);
201 qgs->SetMinEnergy(minQGSP_pik);
202 pik->RegisterMe(qgs);
203 auto ftf = new G4FTFPPiKBuilder(QuasiElasticFTF);
204 AddBuilder(ftf);
205 ftf->SetMinEnergy(minFTFP_pik);
206 ftf->SetMaxEnergy(maxFTFP_pik);
207 pik->RegisterMe(ftf);
208 auto bert = new G4BertiniPiKBuilder;
209 AddBuilder(bert);
210 bert->SetMinEnergy(minBERT_pik);
211 bert->SetMaxEnergy(maxBERT_pik);
212 pik->RegisterMe(bert);
213 pik->Build();
214
215 // add cross section factor
216 if( useFactorXS ) {
219 if(nullptr != inel) {
221 }
224 if(inel) {
226 }
228 for( auto & pdg : G4HadParticles::GetKaons() ) {
229 auto part = table->FindParticle( pdg );
230 if ( part == nullptr ) { continue; }
232 if(nullptr != inel) {
234 }
235 }
236 }
237}
static const std::vector< G4int > & GetKaons()
G4double XSFactorHadronInelastic() const
G4double XSFactorPionInelastic() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
Definition G4PionPlus.cc:93

Referenced by CreateModels().

◆ Proton()

void G4HadronPhysicsQGSP_BERT::Proton ( )
protectedvirtual

Reimplemented in G4HadronPhysicsQGS_BIC.

Definition at line 162 of file G4HadronPhysicsQGSP_BERT.cc.

163{
165 G4bool useFactorXS = param->ApplyFactorXS();
166
167 auto pro = new G4ProtonBuilder;
168 AddBuilder(pro);
169 auto qgs = new G4QGSPProtonBuilder(QuasiElasticQGS);
170 AddBuilder(qgs);
171 qgs->SetMinEnergy(minQGSP_proton);
172 pro->RegisterMe(qgs);
173 auto ftf = new G4FTFPProtonBuilder(QuasiElasticFTF);
174 AddBuilder(ftf);
175 ftf->SetMinEnergy(minFTFP_proton);
176 ftf->SetMaxEnergy(maxFTFP_proton);
177 pro->RegisterMe(ftf);
178 auto bert = new G4BertiniProtonBuilder;
179 AddBuilder(bert);
180 bert->SetMinEnergy(minBERT_proton);
181 bert->SetMaxEnergy(maxBERT_proton);
182 pro->RegisterMe(bert);
183 pro->Build();
184
187 if(nullptr != inel) {
188 if( useFactorXS ) inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
189 }
190}
static G4Proton * Proton()
Definition G4Proton.cc:90

Referenced by CreateModels().

Member Data Documentation

◆ maxBERT_neutron

G4double G4HadronPhysicsQGSP_BERT::maxBERT_neutron
protected

◆ maxBERT_pik

G4double G4HadronPhysicsQGSP_BERT::maxBERT_pik
protected

◆ maxBERT_proton

G4double G4HadronPhysicsQGSP_BERT::maxBERT_proton
protected

◆ maxFTFP_neutron

G4double G4HadronPhysicsQGSP_BERT::maxFTFP_neutron
protected

◆ maxFTFP_pik

G4double G4HadronPhysicsQGSP_BERT::maxFTFP_pik
protected

◆ maxFTFP_proton

G4double G4HadronPhysicsQGSP_BERT::maxFTFP_proton
protected

◆ minBERT_neutron

◆ minBERT_pik

G4double G4HadronPhysicsQGSP_BERT::minBERT_pik
protected

Definition at line 85 of file G4HadronPhysicsQGSP_BERT.hh.

Referenced by G4HadronPhysicsQGSP_BERT(), and Pion().

◆ minBERT_proton

G4double G4HadronPhysicsQGSP_BERT::minBERT_proton
protected

Definition at line 83 of file G4HadronPhysicsQGSP_BERT.hh.

Referenced by G4HadronPhysicsQGSP_BERT(), and Proton().

◆ minFTFP_neutron

G4double G4HadronPhysicsQGSP_BERT::minFTFP_neutron
protected

◆ minFTFP_pik

G4double G4HadronPhysicsQGSP_BERT::minFTFP_pik
protected

◆ minFTFP_proton

G4double G4HadronPhysicsQGSP_BERT::minFTFP_proton
protected

◆ minQGSP_neutron

G4double G4HadronPhysicsQGSP_BERT::minQGSP_neutron
protected

◆ minQGSP_pik

G4double G4HadronPhysicsQGSP_BERT::minQGSP_pik
protected

◆ minQGSP_proton

G4double G4HadronPhysicsQGSP_BERT::minQGSP_proton
protected

◆ QuasiElasticFTF

◆ QuasiElasticQGS


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