Geant4 11.4.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=default
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() [2/3]

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

Definition at line 90 of file G4HadronPhysicsFTFP_BERT.cc.

92{
94 G4HadronicParameters* param = G4HadronicParameters::Instance();
104 param->SetEnableBCParticles(true);
105}
@ bHadronInelastic
G4double GetMinEnergyTransitionFTF_Cascade() const
G4double GetMaxEnergyTransitionFTF_Cascade() const
void SetEnableBCParticles(G4bool val)
G4VPhysicsConstructor(const G4String &="")

◆ ~G4HadronPhysicsFTFP_BERT()

G4HadronPhysicsFTFP_BERT::~G4HadronPhysicsFTFP_BERT ( )
overridedefault

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

108{
109 G4MesonConstructor pMesonConstructor;
110 pMesonConstructor.ConstructParticle();
111
112 G4BaryonConstructor pBaryonConstructor;
113 pBaryonConstructor.ConstructParticle();
114
115 G4ShortLivedConstructor pShortLivedConstructor;
116 pShortLivedConstructor.ConstructParticle();
117
118 G4IonConstructor pIonConstructor;
119 pIonConstructor.ConstructParticle();
120}
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()

◆ ConstructProcess()

void G4HadronPhysicsFTFP_BERT::ConstructProcess ( )
overridevirtual

◆ CreateModels()

◆ DumpBanner()

void G4HadronPhysicsFTFP_BERT::DumpBanner ( )
protectedvirtual

Reimplemented in G4HadronPhysicsFTFQGSP_BERT.

Definition at line 122 of file G4HadronPhysicsFTFP_BERT.cc.

123{
124 G4cout << G4endl
125 << " " << GetPhysicsName() << " : threshold between BERT and FTFP is over the interval " << G4endl
126 << " for pions : " << minFTFP_pion/GeV << " to " << maxBERT_pion/GeV << " GeV" << G4endl
127 << " for kaons : " << minFTFP_kaon/GeV << " to " << maxBERT_kaon/GeV << " GeV" << G4endl
128 << " for proton : " << minFTFP_proton/GeV << " to " << maxBERT_proton/GeV << " GeV" << G4endl
129 << " for neutron : " << minFTFP_neutron/GeV << " to " << maxBERT_neutron/GeV << " GeV" << G4endl
130 << G4endl;
131}
#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(), and G4HadronPhysicsFTFQGSP_BERT::DumpBanner().

◆ Kaon()

void G4HadronPhysicsFTFP_BERT::Kaon ( )
protectedvirtual

Reimplemented in G4HadronPhysicsFTF_BIC, and G4HadronPhysicsINCLXX.

Definition at line 233 of file G4HadronPhysicsFTFP_BERT.cc.

234{
235 G4HadronicParameters* param = G4HadronicParameters::Instance();
236 G4bool useFactorXS = param->ApplyFactorXS();
237
238 auto k = new G4KaonBuilder;
239 AddBuilder(k);
240 auto ftfpk = new G4FTFPKaonBuilder(QuasiElastic);
241 AddBuilder(ftfpk);
242 k->RegisterMe(ftfpk);
243 ftfpk->SetMinEnergy(minFTFP_kaon);
244 auto bertk = new G4BertiniKaonBuilder;
245 AddBuilder(bertk);
246 k->RegisterMe(bertk);
247 bertk->SetMaxEnergy(maxBERT_kaon);
248 k->Build();
249
250 // add cross section factor
251 if( useFactorXS ) {
252 G4ParticleTable* table = G4ParticleTable::GetParticleTable();
253 for( auto & pdg : G4HadParticles::GetKaons() ) {
254 auto part = table->FindParticle( pdg );
255 if ( part == nullptr ) { continue; }
256 G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(part);
257 if(nullptr != inel) {
259 }
260 }
261 }
262}
bool G4bool
Definition G4Types.hh:86
static const std::vector< G4int > & GetKaons()
G4double XSFactorHadronInelastic() const
void MultiplyCrossSectionBy(G4double factor)
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 142 of file G4HadronPhysicsFTFP_BERT.cc.

143{
144 G4HadronicParameters* param = G4HadronicParameters::Instance();
145 G4bool useFactorXS = param->ApplyFactorXS();
146 //General schema:
147 // 1) Create a builder
148 // 2) Call AddBuilder
149 // 3) Configure the builder, possibly with sub-builders
150 // 4) Call builder->Build()
151 auto neu = new G4NeutronBuilder;
152 AddBuilder(neu);
153 auto ftfpn = new G4FTFPNeutronBuilder(QuasiElastic);
154 AddBuilder( ftfpn );
155 neu->RegisterMe(ftfpn);
156 ftfpn->SetMinEnergy(minFTFP_neutron);
157 auto bertn = new G4BertiniNeutronBuilder;
158 AddBuilder(bertn);
159 neu->RegisterMe(bertn);
160 bertn->SetMinEnergy(minBERT_neutron);
161 bertn->SetMaxEnergy(maxBERT_neutron);
162 neu->Build();
163
164 const G4ParticleDefinition* neutron = G4Neutron::Neutron();
165 G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(neutron);
166 if(nullptr != inel) {
167 inel->AddDataSet(new G4NeutronInelasticXS());
168 if( useFactorXS ) inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
169 }
170 G4HadronicProcess* capture = G4PhysListUtil::FindCaptureProcess(neutron);
171 if (nullptr != capture) {
172 capture->RegisterMe(new G4NeutronRadCapture());
173 }
174}
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 264 of file G4HadronPhysicsFTFP_BERT.cc.

265{
266 G4HadronicParameters* param = G4HadronicParameters::Instance();
267
268 // high energy particles
269 if( param->GetMaxEnergy() > param->EnergyThresholdForHeavyHadrons() ) {
270
271 // anti light ions
273
274 // hyperons
276
277 // b-, c- baryons and mesons
278 if( param->EnableBCParticles() ) {
280 }
281
282 // light hypernuclei and anti-hypernuclei
283 if ( param->EnableHyperNuclei() ) {
286 }
287 }
288}
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 201 of file G4HadronPhysicsFTFP_BERT.cc.

202{
203 G4HadronicParameters* param = G4HadronicParameters::Instance();
204 G4bool useFactorXS = param->ApplyFactorXS();
205
206 auto pi = new G4PionBuilder;
207 AddBuilder(pi);
208 auto ftfppi = new G4FTFPPionBuilder(QuasiElastic);
209 AddBuilder(ftfppi);
210 pi->RegisterMe(ftfppi);
211 ftfppi->SetMinEnergy(minFTFP_pion);
212 auto bertpi = new G4BertiniPionBuilder;
213 AddBuilder(bertpi);
214 pi->RegisterMe(bertpi);
215 bertpi->SetMaxEnergy(maxBERT_pion);
216 pi->Build();
217
218 // add cross section factor
219 if( useFactorXS ) {
220 const G4ParticleDefinition* pion = G4PionPlus::PionPlus();
221 G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(pion);
222 if(nullptr != inel) {
224 }
227 if(nullptr != inel) {
229 }
230 }
231}
G4double XSFactorPionInelastic() const
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
Definition G4PionPlus.cc:93
const G4double pi

Referenced by CreateModels().

◆ Proton()

void G4HadronPhysicsFTFP_BERT::Proton ( )
protectedvirtual

Reimplemented in G4HadronPhysicsFTF_BIC, G4HadronPhysicsINCLXX, and G4HadronPhysicsNuBeam.

Definition at line 176 of file G4HadronPhysicsFTFP_BERT.cc.

177{
178 G4HadronicParameters* param = G4HadronicParameters::Instance();
179 G4bool useFactorXS = param->ApplyFactorXS();
180
181 auto pro = new G4ProtonBuilder;
182 AddBuilder(pro);
183 auto ftfpp = new G4FTFPProtonBuilder(QuasiElastic);
184 AddBuilder(ftfpp);
185 pro->RegisterMe(ftfpp);
186 ftfpp->SetMinEnergy(minFTFP_proton);
187 auto bertp = new G4BertiniProtonBuilder;
188 AddBuilder(bertp);
189 pro->RegisterMe(bertp);
190 bertp->SetMinEnergy(minBERT_proton);
191 bertp->SetMaxEnergy(maxBERT_proton);
192 pro->Build();
193
194 const G4ParticleDefinition* proton = G4Proton::Proton();
195 G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(proton);
196 if(nullptr != inel) {
197 if( useFactorXS ) inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
198 }
199}
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

G4double G4HadronPhysicsFTFP_BERT::minFTFP_kaon
protected

◆ minFTFP_neutron

◆ minFTFP_pion

G4double G4HadronPhysicsFTFP_BERT::minFTFP_pion
protected

◆ minFTFP_proton

◆ QuasiElastic


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