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

#include <G4HadronPhysicsFTFP_BERT.hh>

+ Inheritance diagram for G4HadronPhysicsFTFP_BERT:

Public Member Functions

 G4HadronPhysicsFTFP_BERT (G4int verbose=1)
 
 G4HadronPhysicsFTFP_BERT (const G4String &name, G4bool quasiElastic=false)
 
virtual ~G4HadronPhysicsFTFP_BERT ()
 
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 ()
 
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 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)
 

Protected Attributes

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
 

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 48 of file G4HadronPhysicsFTFP_BERT.hh.

Constructor & Destructor Documentation

◆ G4HadronPhysicsFTFP_BERT() [1/3]

G4HadronPhysicsFTFP_BERT::G4HadronPhysicsFTFP_BERT ( G4int verbose = 1)

Definition at line 89 of file G4HadronPhysicsFTFP_BERT.cc.

89 :
90 G4HadronPhysicsFTFP_BERT("hInelastic FTFP_BERT",false)
91{
93}
static G4HadronicParameters * Instance()
void SetVerboseLevel(const G4int val)

◆ G4HadronPhysicsFTFP_BERT() [2/3]

G4HadronPhysicsFTFP_BERT::G4HadronPhysicsFTFP_BERT ( const G4String & name,
G4bool quasiElastic = false )

Definition at line 95 of file G4HadronPhysicsFTFP_BERT.cc.

97{
109 param->SetEnableBCParticles(true);
110}
@ bHadronInelastic
G4double GetMinEnergyTransitionFTF_Cascade() const
G4double GetMaxEnergyTransitionFTF_Cascade() const
void SetEnableBCParticles(G4bool val)
G4VPhysicsConstructor(const G4String &="")

◆ ~G4HadronPhysicsFTFP_BERT()

G4HadronPhysicsFTFP_BERT::~G4HadronPhysicsFTFP_BERT ( )
virtual

Definition at line 112 of file G4HadronPhysicsFTFP_BERT.cc.

113{}

◆ G4HadronPhysicsFTFP_BERT() [3/3]

G4HadronPhysicsFTFP_BERT::G4HadronPhysicsFTFP_BERT ( G4HadronPhysicsFTFP_BERT & )
delete

Member Function Documentation

◆ ConstructParticle()

void G4HadronPhysicsFTFP_BERT::ConstructParticle ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 115 of file G4HadronPhysicsFTFP_BERT.cc.

116{
117 G4MesonConstructor pMesonConstructor;
118 pMesonConstructor.ConstructParticle();
119
120 G4BaryonConstructor pBaryonConstructor;
121 pBaryonConstructor.ConstructParticle();
122
123 G4ShortLivedConstructor pShortLivedConstructor;
124 pShortLivedConstructor.ConstructParticle();
125
126 G4IonConstructor pIonConstructor;
127 pIonConstructor.ConstructParticle();
128}
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()

◆ ConstructProcess()

◆ CreateModels()

◆ DumpBanner()

void G4HadronPhysicsFTFP_BERT::DumpBanner ( )
protectedvirtual

Reimplemented in G4HadronPhysicsFTFQGSP_BERT.

Definition at line 130 of file G4HadronPhysicsFTFP_BERT.cc.

131{
132 G4cout << G4endl
133 << " " << GetPhysicsName() << " : threshold between BERT and FTFP is over the interval " << G4endl
134 << " for pions : " << minFTFP_pion/GeV << " to " << maxBERT_pion/GeV << " GeV" << G4endl
135 << " for kaons : " << minFTFP_kaon/GeV << " to " << maxBERT_kaon/GeV << " GeV" << G4endl
136 << " for proton : " << minFTFP_proton/GeV << " to " << maxBERT_proton/GeV << " GeV" << G4endl
137 << " for neutron : " << minFTFP_neutron/GeV << " to " << maxBERT_neutron/GeV << " GeV" << G4endl
138 << G4endl;
139}
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
const G4String & GetPhysicsName() const

Referenced by ConstructProcess(), G4HadronPhysicsFTFP_BERT_ATL::ConstructProcess(), G4HadronPhysicsINCLXX::ConstructProcess(), G4HadronPhysicsNuBeam::ConstructProcess(), G4HadronPhysicsShielding::ConstructProcess(), and G4HadronPhysicsFTFQGSP_BERT::DumpBanner().

◆ Kaon()

void G4HadronPhysicsFTFP_BERT::Kaon ( )
protectedvirtual

Reimplemented in G4HadronPhysicsFTF_BIC, and G4HadronPhysicsINCLXX.

Definition at line 241 of file G4HadronPhysicsFTFP_BERT.cc.

242{
244 G4bool useFactorXS = param->ApplyFactorXS();
245
246 auto k = new G4KaonBuilder;
247 AddBuilder(k);
248 auto ftfpk = new G4FTFPKaonBuilder(QuasiElastic);
249 AddBuilder(ftfpk);
250 k->RegisterMe(ftfpk);
251 ftfpk->SetMinEnergy(minFTFP_kaon);
252 auto bertk = new G4BertiniKaonBuilder;
253 AddBuilder(bertk);
254 k->RegisterMe(bertk);
255 bertk->SetMaxEnergy(maxBERT_kaon);
256 k->Build();
257
258 // add cross section factor
259 if( useFactorXS ) {
261 for( auto & pdg : G4HadParticles::GetKaons() ) {
262 auto part = table->FindParticle( pdg );
263 if ( part == nullptr ) { continue; }
265 if(nullptr != inel) {
267 }
268 }
269 }
270}
bool G4bool
Definition G4Types.hh:86
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)

Referenced by CreateModels().

◆ Neutron()

void G4HadronPhysicsFTFP_BERT::Neutron ( )
protectedvirtual

Reimplemented in G4HadronPhysicsFTF_BIC, G4HadronPhysicsFTFP_BERT_HP, G4HadronPhysicsINCLXX, and G4HadronPhysicsShielding.

Definition at line 150 of file G4HadronPhysicsFTFP_BERT.cc.

151{
153 G4bool useFactorXS = param->ApplyFactorXS();
154 //General schema:
155 // 1) Create a builder
156 // 2) Call AddBuilder
157 // 3) Configure the builder, possibly with sub-builders
158 // 4) Call builder->Build()
159 auto neu = new G4NeutronBuilder;
160 AddBuilder(neu);
161 auto ftfpn = new G4FTFPNeutronBuilder(QuasiElastic);
162 AddBuilder( ftfpn );
163 neu->RegisterMe(ftfpn);
164 ftfpn->SetMinEnergy(minFTFP_neutron);
165 auto bertn = new G4BertiniNeutronBuilder;
166 AddBuilder(bertn);
167 neu->RegisterMe(bertn);
168 bertn->SetMinEnergy(minBERT_neutron);
169 bertn->SetMaxEnergy(maxBERT_neutron);
170 neu->Build();
171
174 if(nullptr != inel) {
175 inel->AddDataSet(new G4NeutronInelasticXS());
176 if( useFactorXS ) inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
177 }
179 if (nullptr != capture) {
180 capture->RegisterMe(new G4NeutronRadCapture());
181 }
182}
G4double XSFactorNucleonInelastic() const
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void RegisterMe(G4HadronicInteraction *a)
static G4Neutron * Neutron()
Definition G4Neutron.cc:101
static G4HadronicProcess * FindCaptureProcess(const G4ParticleDefinition *)

Referenced by CreateModels().

◆ operator=()

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

◆ Others()

void G4HadronPhysicsFTFP_BERT::Others ( )
protectedvirtual

Reimplemented in G4HadronPhysicsINCLXX.

Definition at line 272 of file G4HadronPhysicsFTFP_BERT.cc.

273{
275
276 // high energy particles
277 if( param->GetMaxEnergy() > param->EnergyThresholdForHeavyHadrons() ) {
278
279 // anti light ions
281
282 // hyperons
284
285 // b-, c- baryons and mesons
286 if( param->EnableBCParticles() ) {
288 }
289
290 // light hypernuclei and anti-hypernuclei
291 if ( param->EnableHyperNuclei() ) {
294 }
295 }
296}
static void BuildBCHadronsFTFP_BERT()
static void BuildHyperonsFTFP_BERT()
static void BuildAntiLightIonsFTFP()
static void BuildHyperAntiNucleiFTFP_BERT()
static void BuildHyperNucleiFTFP_BERT()
G4double EnergyThresholdForHeavyHadrons() const

Referenced by CreateModels().

◆ Pion()

void G4HadronPhysicsFTFP_BERT::Pion ( )
protectedvirtual

Reimplemented in G4HadronPhysicsFTF_BIC, and G4HadronPhysicsINCLXX.

Definition at line 209 of file G4HadronPhysicsFTFP_BERT.cc.

210{
212 G4bool useFactorXS = param->ApplyFactorXS();
213
214 auto pi = new G4PionBuilder;
215 AddBuilder(pi);
216 auto ftfppi = new G4FTFPPionBuilder(QuasiElastic);
217 AddBuilder(ftfppi);
218 pi->RegisterMe(ftfppi);
219 ftfppi->SetMinEnergy(minFTFP_pion);
220 auto bertpi = new G4BertiniPionBuilder;
221 AddBuilder(bertpi);
222 pi->RegisterMe(bertpi);
223 bertpi->SetMaxEnergy(maxBERT_pion);
224 pi->Build();
225
226 // add cross section factor
227 if( useFactorXS ) {
230 if(nullptr != inel) {
232 }
235 if(nullptr != inel) {
237 }
238 }
239}
G4double XSFactorPionInelastic() const
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
Definition G4PionPlus.cc:93

Referenced by CreateModels().

◆ Proton()

void G4HadronPhysicsFTFP_BERT::Proton ( )
protectedvirtual

Reimplemented in G4HadronPhysicsFTF_BIC, G4HadronPhysicsINCLXX, and G4HadronPhysicsNuBeam.

Definition at line 184 of file G4HadronPhysicsFTFP_BERT.cc.

185{
187 G4bool useFactorXS = param->ApplyFactorXS();
188
189 auto pro = new G4ProtonBuilder;
190 AddBuilder(pro);
191 auto ftfpp = new G4FTFPProtonBuilder(QuasiElastic);
192 AddBuilder(ftfpp);
193 pro->RegisterMe(ftfpp);
194 ftfpp->SetMinEnergy(minFTFP_proton);
195 auto bertp = new G4BertiniProtonBuilder;
196 AddBuilder(bertp);
197 pro->RegisterMe(bertp);
198 bertp->SetMinEnergy(minBERT_proton);
199 bertp->SetMaxEnergy(maxBERT_proton);
200 pro->Build();
201
204 if(nullptr != inel) {
205 if( useFactorXS ) inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
206 }
207}
static G4Proton * Proton()
Definition G4Proton.cc:90

Referenced by CreateModels().

Member Data Documentation

◆ maxBERT_kaon

◆ maxBERT_neutron

◆ maxBERT_pion

◆ maxBERT_proton

◆ minBERT_neutron

◆ minBERT_proton

G4double G4HadronPhysicsFTFP_BERT::minBERT_proton
protected

Definition at line 80 of file G4HadronPhysicsFTFP_BERT.hh.

Referenced by G4HadronPhysicsFTFP_BERT(), and Proton().

◆ minFTFP_kaon

◆ minFTFP_neutron

◆ minFTFP_pion

◆ minFTFP_proton

◆ QuasiElastic


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