Geant4 10.7.0
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)
 
 ~G4HadronPhysicsQGSP_BERT () override
 
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 ()
 
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 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
 
G4String namePhysics
 
G4int typePhysics
 
G4ParticleTabletheParticleTable
 
G4int g4vpcInstanceID
 

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) {}

◆ G4HadronPhysicsQGSP_BERT() [2/3]

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

Definition at line 93 of file G4HadronPhysicsQGSP_BERT.cc.

95{
96 QuasiElasticFTF= false; // Use built-in quasi-elastic (not add-on)
97 QuasiElasticQGS= true; // For QGS, it must use it.
108 param->SetEnableBCParticles(true);
109}
static G4HadronicParameters * Instance()
G4double GetMinEnergyTransitionFTF_Cascade() const
G4double GetMinEnergyTransitionQGS_FTF() const
G4double GetMaxEnergyTransitionFTF_Cascade() const
void SetEnableBCParticles(G4bool val)
G4double GetMaxEnergyTransitionQGS_FTF() const

◆ ~G4HadronPhysicsQGSP_BERT()

G4HadronPhysicsQGSP_BERT::~G4HadronPhysicsQGSP_BERT ( )
override

Definition at line 255 of file G4HadronPhysicsQGSP_BERT.cc.

256{}

◆ 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 258 of file G4HadronPhysicsQGSP_BERT.cc.

259{
260 G4MesonConstructor pMesonConstructor;
261 pMesonConstructor.ConstructParticle();
262
263 G4BaryonConstructor pBaryonConstructor;
264 pBaryonConstructor.ConstructParticle();
265
266 G4ShortLivedConstructor pShortLivedConstructor;
267 pShortLivedConstructor.ConstructParticle();
268
269 G4IonConstructor pIonConstructor;
270 pIonConstructor.ConstructParticle();
271}
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()

◆ ConstructProcess()

void G4HadronPhysicsQGSP_BERT::ConstructProcess ( )
overridevirtual

◆ CreateModels()

void G4HadronPhysicsQGSP_BERT::CreateModels ( )
protected

Definition at line 111 of file G4HadronPhysicsQGSP_BERT.cc.

Referenced by ConstructProcess().

◆ DumpBanner()

void G4HadronPhysicsQGSP_BERT::DumpBanner ( )
protectedvirtual

Definition at line 291 of file G4HadronPhysicsQGSP_BERT.cc.

292{
293 G4cout << G4endl;
294 G4cout << " " << GetPhysicsName() << " Thresholds: " << G4endl;
295 G4cout << " 1) between BERT and FTF/P over the interval "
296 << minFTFP_proton/GeV << " to " << maxBERT_proton/GeV << " GeV. " << G4endl;
297 G4cout << " 2) between FTF/P and QGS/P over the interval "
298 << minQGSP_proton/GeV << " to " << maxFTFP_proton/GeV << " GeV. " << G4endl;
299 G4cout << " -- quasiElastic: " << QuasiElasticQGS << " for QGS "
300 << " and " << QuasiElasticFTF << " for FTF" << G4endl;
301}
#define G4endl
Definition: G4ios.hh:57
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 119 of file G4HadronPhysicsQGSP_BERT.cc.

120{
122 G4bool useFactorXS = param->ApplyFactorXS();
123 //General schema:
124 // 1) Create a builder
125 // 2) Call AddBuilder
126 // 3) Configure the builder, possibly with sub-builders
127 // 4) Call builder->Build()
128 auto neu = new G4NeutronBuilder;
129 AddBuilder(neu);
131 AddBuilder(qgs);
132 qgs->SetMinEnergy(minQGSP_neutron);
133 neu->RegisterMe(qgs);
135 AddBuilder(ftf);
136 ftf->SetMinEnergy(minFTFP_neutron);
137 ftf->SetMaxEnergy(maxFTFP_neutron);
138 neu->RegisterMe(ftf);
139 auto bert = new G4BertiniNeutronBuilder;
140 AddBuilder(bert);
141 bert->SetMinEnergy(minBERT_neutron);
142 bert->SetMaxEnergy(maxBERT_neutron);
143 neu->RegisterMe(bert);
144 neu->Build();
145
148 if(inel) {
149 inel->AddDataSet(new G4NeutronInelasticXS());
150 if( useFactorXS ) inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
151 }
153 if (capture) {
154 capture->RegisterMe(new G4NeutronRadCapture());
155 }
156}
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:103
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 235 of file G4HadronPhysicsQGSP_BERT.cc.

236{
238
239 // high energy particles
240 if( param->GetMaxEnergy() > param->EnergyThresholdForHeavyHadrons() ) {
241
242 // anti light ions
244
245 // hyperons
247
248 // b-, c- baryons and mesons
249 if( param->EnableBCParticles() ) {
251 }
252 }
253}
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

Referenced by CreateModels().

◆ Pion()

void G4HadronPhysicsQGSP_BERT::Pion ( )
protectedvirtual

Reimplemented in G4HadronPhysicsQGS_BIC.

Definition at line 188 of file G4HadronPhysicsQGSP_BERT.cc.

189{
191 G4bool useFactorXS = param->ApplyFactorXS();
192
193 auto pik = new G4PiKBuilder;
194 AddBuilder(pik);
195 auto qgs = new G4QGSPPiKBuilder(QuasiElasticQGS);
196 AddBuilder(qgs);
197 qgs->SetMinEnergy(minQGSP_pik);
198 pik->RegisterMe(qgs);
199 auto ftf = new G4FTFPPiKBuilder(QuasiElasticFTF);
200 AddBuilder(ftf);
201 ftf->SetMinEnergy(minFTFP_pik);
202 ftf->SetMaxEnergy(maxFTFP_pik);
203 pik->RegisterMe(ftf);
204 auto bert = new G4BertiniPiKBuilder;
205 AddBuilder(bert);
206 bert->SetMinEnergy(minBERT_pik);
207 bert->SetMaxEnergy(maxBERT_pik);
208 pik->RegisterMe(bert);
209 pik->Build();
210
211 // add cross section factor
212 if( useFactorXS ) {
215 if(inel) {
217 }
220 if(inel) {
222 }
224 for( auto & pdg : G4HadParticles::GetKaons() ) {
225 auto part = table->FindParticle( pdg );
226 if ( part == nullptr ) { continue; }
228 if(inel) {
230 }
231 }
232 }
233}
static const std::vector< G4int > & GetKaons()
G4double XSFactorHadronInelastic() const
G4double XSFactorPionInelastic() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:97
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:97
G4bool pion(G4int ityp)

Referenced by CreateModels().

◆ Proton()

void G4HadronPhysicsQGSP_BERT::Proton ( )
protectedvirtual

Reimplemented in G4HadronPhysicsQGS_BIC.

Definition at line 158 of file G4HadronPhysicsQGSP_BERT.cc.

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

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: