Geant4 11.4.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=default
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 PiK ()
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 {0.0}
G4double minBERT_neutron {0.0}
G4double minBERT_pik {0.0}
G4double maxBERT_proton
G4double maxBERT_neutron
G4double maxBERT_pik
G4double maxBIC_proton {0.0}
G4double maxBIC_neutron {0.0}
G4double minBIC_neutron {0.0}
G4bool QuasiElasticFTF {false}
G4bool QuasiElasticQGS {true}
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 52 of file G4HadronPhysicsQGSP_BERT.hh.

Constructor & Destructor Documentation

◆ G4HadronPhysicsQGSP_BERT() [1/3]

◆ G4HadronPhysicsQGSP_BERT() [2/3]

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

Definition at line 98 of file G4HadronPhysicsQGSP_BERT.cc.

100{
102 G4HadronicParameters* param = G4HadronicParameters::Instance();
111 param->SetEnableBCParticles(true);
112}
@ 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 ( )
overridedefault

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

271{
272 G4MesonConstructor pMesonConstructor;
273 pMesonConstructor.ConstructParticle();
274
275 G4BaryonConstructor pBaryonConstructor;
276 pBaryonConstructor.ConstructParticle();
277
278 G4ShortLivedConstructor pShortLivedConstructor;
279 pShortLivedConstructor.ConstructParticle();
280
281 G4IonConstructor pIonConstructor;
282 pIonConstructor.ConstructParticle();
283}
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()

◆ ConstructProcess()

void G4HadronPhysicsQGSP_BERT::ConstructProcess ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 285 of file G4HadronPhysicsQGSP_BERT.cc.

286{
287 // allow changing of parameters at PreInit
288 G4HadronicParameters* param = G4HadronicParameters::Instance();
297
298 if ( G4Threading::IsMasterThread() && param->GetVerboseLevel() > 0 )
299 DumpBanner();
300
301 // build models and x-sections
302 CreateModels();
303}
G4bool IsMasterThread()

◆ CreateModels()

void G4HadronPhysicsQGSP_BERT::CreateModels ( )
protected

Definition at line 114 of file G4HadronPhysicsQGSP_BERT.cc.

Referenced by ConstructProcess().

◆ DumpBanner()

void G4HadronPhysicsQGSP_BERT::DumpBanner ( )
protectedvirtual

Definition at line 305 of file G4HadronPhysicsQGSP_BERT.cc.

306{
307 G4cout << G4endl;
308 G4cout << " " << GetPhysicsName() << " Thresholds: " << G4endl;
309 if ( maxBIC_proton > 0.0 || maxBIC_neutron > 0.0) {
310 G4cout << " 0) between BIC and BERT for p, n over the interval "
311 << minBERT_proton/CLHEP::GeV << " to "
312 << maxBIC_proton/CLHEP::GeV << " GeV. " << G4endl;
313 }
314 G4cout << " 1) between BERT and FTF/P over the interval "
315 << minFTFP_proton/CLHEP::GeV << " to "
316 << maxBERT_proton/CLHEP::GeV << " GeV. " << G4endl;
317 G4cout << " 2) between FTF/P and QGS/P over the interval "
318 << minQGSP_proton/CLHEP::GeV << " to "
319 << maxFTFP_proton/CLHEP::GeV << " GeV. " << G4endl;
320 G4cout << " -- quasiElastic: " << QuasiElasticQGS << " for QGS "
321 << " and " << QuasiElasticFTF << " for FTF" << G4endl;
322}
#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, G4HadronPhysicsQGSP_BERT_HP, and G4HadronPhysicsQGSP_BIC_HP.

Definition at line 122 of file G4HadronPhysicsQGSP_BERT.cc.

123{
124 G4HadronicParameters* param = G4HadronicParameters::Instance();
125 G4bool useFactorXS = param->ApplyFactorXS();
126
127 const G4ParticleDefinition* neutron = G4Neutron::Neutron();
128 auto inel = new G4HadronInelasticProcess( "neutronInelastic", neutron );
129 neutron->GetProcessManager()->AddDiscreteProcess( inel );
130
131 G4QGSPNeutronBuilder qgs( QuasiElasticQGS );
132 qgs.SetMinEnergy( minQGSP_neutron );
133 qgs.Build( inel );
134
135 G4FTFPNeutronBuilder ftf( QuasiElasticFTF );
136 ftf.SetMinEnergy( minFTFP_neutron );
137 ftf.SetMaxEnergy( maxFTFP_neutron );
138 ftf.Build( inel );
139
141 G4BertiniNeutronBuilder bert;
144 bert.Build( inel );
145 }
146
147 if ( maxBIC_neutron > 0.0 ) {
148 G4BinaryNeutronBuilder bic;
151 bic.Build( inel );
152 }
153
154 inel->AddDataSet( new G4NeutronInelasticXS() );
155 if ( useFactorXS ) {
156 inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
157 }
158
159 auto capture = new G4NeutronCaptureProcess( "nCaptureXS" );
160 neutron->GetProcessManager()->AddDiscreteProcess(capture);
161 capture->RegisterMe( new G4NeutronRadCapture() );
162}
bool G4bool
Definition G4Types.hh:86
virtual void SetMaxEnergy(G4double aM) final override
virtual void SetMinEnergy(G4double aM) final override
virtual void Build(G4HadronElasticProcess *) final override
virtual void Build(G4HadronElasticProcess *) final override
virtual void SetMaxEnergy(G4double aM) final override
virtual void SetMinEnergy(G4double aM) final override
G4double XSFactorNucleonInelastic() const
static G4Neutron * Neutron()
Definition G4Neutron.cc:101

Referenced by CreateModels().

◆ operator=()

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

◆ Others()

void G4HadronPhysicsQGSP_BERT::Others ( )
protectedvirtual

Definition at line 250 of file G4HadronPhysicsQGSP_BERT.cc.

251{
252 G4HadronicParameters* param = G4HadronicParameters::Instance();
253
254 // high energy particles
255 if( param->GetMaxEnergy() > param->EnergyThresholdForHeavyHadrons() ) {
256
257 // anti light ions
259
260 // hyperons
262
263 // b-, c- baryons and mesons
264 if( param->EnableBCParticles() ) {
266 }
267 }
268}
static void BuildHyperonsQGSP_FTFP_BERT(G4bool quasiElastic)
static void BuildAntiLightIonsFTFP()
static void BuildBCHadronsQGSP_FTFP_BERT(G4bool quasiElastic)
G4double EnergyThresholdForHeavyHadrons() const

Referenced by CreateModels().

◆ PiK()

void G4HadronPhysicsQGSP_BERT::PiK ( )
protectedvirtual

Definition at line 203 of file G4HadronPhysicsQGSP_BERT.cc.

204{
205 G4HadronicParameters* param = G4HadronicParameters::Instance();
206 G4bool useFactorXS = param->ApplyFactorXS();
207
208 G4PiKBuilder pik;
209
210 G4QGSPPiKBuilder qgs( QuasiElasticQGS );
211 qgs.SetMinEnergy( minQGSP_pik );
212 pik.RegisterMe( &qgs );
213
214 G4FTFPPiKBuilder ftf( QuasiElasticFTF );
215 ftf.SetMaxEnergy( maxFTFP_pik );
216 ftf.SetMinEnergy( minFTFP_pik );
217 pik.RegisterMe( &ftf );
218
219 G4BertiniPiKBuilder bert;
221 pik.RegisterMe( &bert );
222
223 // build all models
224 pik.Build();
225
226 // add cross section factor
227 if ( useFactorXS ) {
228 const G4ParticleDefinition* pion = G4PionPlus::PionPlus();
229 G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess( pion );
230 if ( nullptr != inel ) {
232 }
235 if ( nullptr != inel ) {
237 }
238 G4ParticleTable* table = G4ParticleTable::GetParticleTable();
239 for ( auto const & pdg : G4HadParticles::GetKaons() ) {
240 auto part = table->FindParticle( pdg );
241 if ( part == nullptr ) { continue; }
243 if ( nullptr != inel ) {
245 }
246 }
247 }
248}
virtual void SetMaxEnergy(G4double aM) final override
static const std::vector< G4int > & GetKaons()
G4double XSFactorHadronInelastic() const
G4double XSFactorPionInelastic() const
void MultiplyCrossSectionBy(G4double factor)
static G4ParticleTable * GetParticleTable()
static G4HadronicProcess * FindInelasticProcess(const G4ParticleDefinition *)
virtual void Build() final override
virtual void RegisterMe(G4PhysicsBuilderInterface *aB) final override
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
Definition G4PionPlus.cc:93

Referenced by CreateModels().

◆ Proton()

void G4HadronPhysicsQGSP_BERT::Proton ( )
protectedvirtual

Reimplemented in G4HadronPhysicsQGS_BIC, and G4HadronPhysicsQGSP_BIC_AllHP.

Definition at line 164 of file G4HadronPhysicsQGSP_BERT.cc.

165{
166 G4HadronicParameters* param = G4HadronicParameters::Instance();
167 G4bool useFactorXS = param->ApplyFactorXS();
168
169 const G4ParticleDefinition* proton = G4Proton::Proton();
170 auto inel = new G4HadronInelasticProcess( "protonInelastic", proton );
171 proton->GetProcessManager()->AddDiscreteProcess( inel );
172
173 G4QGSPProtonBuilder qgs(QuasiElasticQGS);
174 qgs.SetMinEnergy(minQGSP_proton);
175 qgs.Build( inel );
176
177 G4FTFPProtonBuilder ftf(QuasiElasticFTF);
178 ftf.SetMinEnergy( minFTFP_proton );
179 ftf.SetMaxEnergy( maxFTFP_proton );
180 ftf.Build( inel );
181
183 G4BertiniProtonBuilder bert;
186 bert.Build( inel );
187 }
188
189 if ( maxBIC_proton > 0.0 ) {
190 G4BinaryProtonBuilder bic;
192 bic.Build( inel );
193 }
194
195 auto xsinel = new G4BGGNucleonInelasticXS( proton );
196 inel->AddDataSet( xsinel );
197
198 if ( useFactorXS ) {
199 inel->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
200 }
201}
virtual void SetMinEnergy(G4double aM) final override
virtual void SetMaxEnergy(G4double aM) final override
virtual void Build(G4HadronElasticProcess *) final override
virtual void SetMaxEnergy(G4double aM) final override
virtual void Build(G4HadronElasticProcess *) final override
static G4Proton * Proton()
Definition G4Proton.cc:90

Referenced by CreateModels().

Member Data Documentation

◆ maxBERT_neutron

◆ maxBERT_pik

G4double G4HadronPhysicsQGSP_BERT::maxBERT_pik
protected

Definition at line 89 of file G4HadronPhysicsQGSP_BERT.hh.

Referenced by ConstructProcess(), G4HadronPhysicsQGSP_BERT(), and PiK().

◆ maxBERT_proton

◆ maxBIC_neutron

◆ maxBIC_proton

◆ maxFTFP_neutron

◆ maxFTFP_pik

G4double G4HadronPhysicsQGSP_BERT::maxFTFP_pik
protected

Definition at line 83 of file G4HadronPhysicsQGSP_BERT.hh.

Referenced by ConstructProcess(), G4HadronPhysicsQGSP_BERT(), and PiK().

◆ maxFTFP_proton

◆ minBERT_neutron

◆ minBERT_pik

G4double G4HadronPhysicsQGSP_BERT::minBERT_pik {0.0}
protected

Definition at line 86 of file G4HadronPhysicsQGSP_BERT.hh.

86{0.0};

◆ minBERT_proton

◆ minBIC_neutron

G4double G4HadronPhysicsQGSP_BERT::minBIC_neutron {0.0}
protected

◆ minFTFP_neutron

◆ minFTFP_pik

G4double G4HadronPhysicsQGSP_BERT::minFTFP_pik
protected

Definition at line 80 of file G4HadronPhysicsQGSP_BERT.hh.

Referenced by ConstructProcess(), G4HadronPhysicsQGSP_BERT(), and PiK().

◆ minFTFP_proton

◆ minQGSP_neutron

◆ minQGSP_pik

G4double G4HadronPhysicsQGSP_BERT::minQGSP_pik
protected

Definition at line 77 of file G4HadronPhysicsQGSP_BERT.hh.

Referenced by ConstructProcess(), G4HadronPhysicsQGSP_BERT(), and PiK().

◆ minQGSP_proton

◆ QuasiElasticFTF

G4bool G4HadronPhysicsQGSP_BERT::QuasiElasticFTF {false}
protected

◆ QuasiElasticQGS


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