Geant4 10.7.0
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)
 
 ~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 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
 
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 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{}

◆ G4HadronPhysicsFTFP_BERT() [2/3]

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

Definition at line 93 of file G4HadronPhysicsFTFP_BERT.cc.

95{
106 param->SetEnableBCParticles(true);
107}
static G4HadronicParameters * Instance()
G4double GetMinEnergyTransitionFTF_Cascade() const
G4double GetMaxEnergyTransitionFTF_Cascade() const
void SetEnableBCParticles(G4bool val)

◆ ~G4HadronPhysicsFTFP_BERT()

G4HadronPhysicsFTFP_BERT::~G4HadronPhysicsFTFP_BERT ( )
override

Definition at line 109 of file G4HadronPhysicsFTFP_BERT.cc.

110{}

◆ 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 112 of file G4HadronPhysicsFTFP_BERT.cc.

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

◆ ConstructProcess()

◆ CreateModels()

◆ DumpBanner()

void G4HadronPhysicsFTFP_BERT::DumpBanner ( )
protectedvirtual

Reimplemented in G4HadronPhysicsFTFQGSP_BERT.

Definition at line 127 of file G4HadronPhysicsFTFP_BERT.cc.

128{
129 G4cout << G4endl
130 << " " << GetPhysicsName() << " : threshold between BERT and FTFP is over the interval " << G4endl
131 << " for pions : " << minFTFP_pion/GeV << " to " << maxBERT_pion/GeV << " GeV" << G4endl
132 << " for kaons : " << minFTFP_kaon/GeV << " to " << maxBERT_kaon/GeV << " GeV" << G4endl
133 << " for proton : " << minFTFP_proton/GeV << " to " << maxBERT_proton/GeV << " GeV" << G4endl
134 << " for neutron : " << minFTFP_neutron/GeV << " to " << maxBERT_neutron/GeV << " GeV" << G4endl
135 << G4endl;
136}
#define G4endl
Definition: G4ios.hh:57
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 238 of file G4HadronPhysicsFTFP_BERT.cc.

239{
241 G4bool useFactorXS = param->ApplyFactorXS();
242
243 auto k = new G4KaonBuilder;
244 AddBuilder(k);
245 auto ftfpk = new G4FTFPKaonBuilder(QuasiElastic);
246 AddBuilder(ftfpk);
247 k->RegisterMe(ftfpk);
248 ftfpk->SetMinEnergy(minFTFP_kaon);
249 auto bertk = new G4BertiniKaonBuilder;
250 AddBuilder(bertk);
251 k->RegisterMe(bertk);
252 bertk->SetMaxEnergy(maxBERT_kaon);
253 k->Build();
254
255 // add cross section factor
256 if( useFactorXS ) {
258 for( auto & pdg : G4HadParticles::GetKaons() ) {
259 auto part = table->FindParticle( pdg );
260 if ( part == nullptr ) { continue; }
262 if(inel) {
264 }
265 }
266 }
267}
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 147 of file G4HadronPhysicsFTFP_BERT.cc.

148{
150 G4bool useFactorXS = param->ApplyFactorXS();
151 //General schema:
152 // 1) Create a builder
153 // 2) Call AddBuilder
154 // 3) Configure the builder, possibly with sub-builders
155 // 4) Call builder->Build()
156 auto neu = new G4NeutronBuilder;
157 AddBuilder(neu);
158 auto ftfpn = new G4FTFPNeutronBuilder(QuasiElastic);
159 AddBuilder( ftfpn );
160 neu->RegisterMe(ftfpn);
161 ftfpn->SetMinEnergy(minFTFP_neutron);
162 auto bertn = new G4BertiniNeutronBuilder;
163 AddBuilder(bertn);
164 neu->RegisterMe(bertn);
165 bertn->SetMinEnergy(minBERT_neutron);
166 bertn->SetMaxEnergy(maxBERT_neutron);
167 neu->Build();
168
171 if(inel) {
172 inel->AddDataSet(new G4NeutronInelasticXS());
173 if( useFactorXS ) inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
174 }
176 if (capture) {
177 capture->RegisterMe(new G4NeutronRadCapture());
178 }
179}
G4double XSFactorNucleonInelastic() const
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void RegisterMe(G4HadronicInteraction *a)
static G4Neutron * Neutron()
Definition: G4Neutron.cc:103
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 269 of file G4HadronPhysicsFTFP_BERT.cc.

270{
272
273 // high energy particles
274 if( param->GetMaxEnergy() > param->EnergyThresholdForHeavyHadrons() ) {
275
276 // anti light ions
278
279 // hyperons
281
282 // b-, c- baryons and mesons
283 if( param->EnableBCParticles() ) {
285 }
286 }
287}
static void BuildBCHadronsFTFP_BERT()
static void BuildHyperonsFTFP_BERT()
static void BuildAntiLightIonsFTFP()
G4bool EnableBCParticles() const
G4double EnergyThresholdForHeavyHadrons() const
G4double GetMaxEnergy() const

Referenced by CreateModels().

◆ Pion()

void G4HadronPhysicsFTFP_BERT::Pion ( )
protectedvirtual

Reimplemented in G4HadronPhysicsFTF_BIC, and G4HadronPhysicsINCLXX.

Definition at line 206 of file G4HadronPhysicsFTFP_BERT.cc.

207{
209 G4bool useFactorXS = param->ApplyFactorXS();
210
211 auto pi = new G4PionBuilder;
212 AddBuilder(pi);
213 auto ftfppi = new G4FTFPPionBuilder(QuasiElastic);
214 AddBuilder(ftfppi);
215 pi->RegisterMe(ftfppi);
216 ftfppi->SetMinEnergy(minFTFP_pion);
217 auto bertpi = new G4BertiniPionBuilder;
218 AddBuilder(bertpi);
219 pi->RegisterMe(bertpi);
220 bertpi->SetMaxEnergy(maxBERT_pion);
221 pi->Build();
222
223 // add cross section factor
224 if( useFactorXS ) {
227 if(inel) {
229 }
232 if(inel) {
234 }
235 }
236}
G4double XSFactorPionInelastic() const
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:97
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:97
const G4double pi
G4bool pion(G4int ityp)

Referenced by CreateModels().

◆ Proton()

void G4HadronPhysicsFTFP_BERT::Proton ( )
protectedvirtual

Reimplemented in G4HadronPhysicsFTF_BIC, G4HadronPhysicsINCLXX, and G4HadronPhysicsNuBeam.

Definition at line 181 of file G4HadronPhysicsFTFP_BERT.cc.

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

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

G4double G4HadronPhysicsFTFP_BERT::minFTFP_kaon
protected

◆ minFTFP_neutron

◆ minFTFP_pion

◆ minFTFP_proton

◆ QuasiElastic


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