Geant4-11
Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Attributes
G4StoppingPhysics Class Reference

#include <G4StoppingPhysics.hh>

Inheritance diagram for G4StoppingPhysics:
G4VPhysicsConstructor

Public Member Functions

virtual void ConstructParticle () override
 
virtual void ConstructProcess () override
 
 G4StoppingPhysics (const G4String &name, G4int ver=1, G4bool UseMuonMinusCapture=true)
 
 G4StoppingPhysics (G4int ver=1)
 
G4int GetInstanceID () const
 
const G4StringGetPhysicsName () const
 
G4int GetPhysicsType () const
 
G4int GetVerboseLevel () const
 
void SetMuonMinusCapture (G4bool val)
 
void SetPhysicsName (const G4String &="")
 
void SetPhysicsType (G4int)
 
void SetVerboseLevel (G4int value)
 
virtual void TerminateWorker ()
 
 ~G4StoppingPhysics () override
 

Static Public Member Functions

static const G4VPCManagerGetSubInstanceManager ()
 

Protected Types

using PhysicsBuilder_V = G4VPCData::PhysicsBuilders_V
 

Protected Member Functions

void AddBuilder (G4PhysicsBuilderInterface *bld)
 
PhysicsBuilder_V GetBuilders () const
 
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
 
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 

Protected Attributes

G4int g4vpcInstanceID = 0
 
G4String namePhysics = ""
 
G4ParticleTabletheParticleTable = nullptr
 
G4int typePhysics = 0
 
G4int verboseLevel = 0
 

Static Protected Attributes

static G4RUN_DLL G4VPCManager subInstanceManager
 

Private Attributes

G4bool useMuonMinusCapture
 
G4int verbose
 

Detailed Description

Definition at line 58 of file G4StoppingPhysics.hh.

Member Typedef Documentation

◆ PhysicsBuilder_V

Definition at line 149 of file G4VPhysicsConstructor.hh.

Constructor & Destructor Documentation

◆ G4StoppingPhysics() [1/2]

G4StoppingPhysics::G4StoppingPhysics ( G4int  ver = 1)

Definition at line 67 of file G4StoppingPhysics.cc.

67 :
68 G4StoppingPhysics("stopping", ver)
69{}
G4StoppingPhysics(G4int ver=1)

◆ G4StoppingPhysics() [2/2]

G4StoppingPhysics::G4StoppingPhysics ( const G4String name,
G4int  ver = 1,
G4bool  UseMuonMinusCapture = true 
)

Definition at line 71 of file G4StoppingPhysics.cc.

72 :
74 verbose( ver ),
75 useMuonMinusCapture( useMuCapture )
76{
78 if ( verbose > 1 ) G4cout << "### G4StoppingPhysics" << G4endl;
79}
@ bStopping
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4VPhysicsConstructor(const G4String &="")
const char * name(G4int ptype)

References bStopping, G4cout, G4endl, G4VPhysicsConstructor::SetPhysicsType(), and verbose.

◆ ~G4StoppingPhysics()

G4StoppingPhysics::~G4StoppingPhysics ( )
override

Definition at line 81 of file G4StoppingPhysics.cc.

81{}

Member Function Documentation

◆ AddBuilder()

void G4VPhysicsConstructor::AddBuilder ( G4PhysicsBuilderInterface bld)
protectedinherited

Definition at line 99 of file G4VPhysicsConstructor.cc.

100{
101 (subInstanceManager.offset[g4vpcInstanceID])._builders->push_back(bld);
102}
static G4RUN_DLL G4VPCManager subInstanceManager
G4RUN_DLL G4ThreadLocalStatic T * offset

References G4VPhysicsConstructor::g4vpcInstanceID, G4VUPLSplitter< T >::offset, and G4VPhysicsConstructor::subInstanceManager.

Referenced by G4HadronPhysicsFTFP_BERT::Kaon(), G4HadronPhysicsFTF_BIC::Kaon(), G4HadronPhysicsINCLXX::Kaon(), G4HadronPhysicsFTFP_BERT::Neutron(), G4HadronPhysicsQGSP_BERT::Neutron(), G4HadronPhysicsQGSP_BIC::Neutron(), G4HadronPhysicsFTF_BIC::Neutron(), G4HadronPhysicsFTFP_BERT_HP::Neutron(), G4HadronPhysicsINCLXX::Neutron(), G4HadronPhysicsQGS_BIC::Neutron(), G4HadronPhysicsQGSP_BERT_HP::Neutron(), G4HadronPhysicsQGSP_BIC_HP::Neutron(), G4HadronPhysicsShielding::Neutron(), G4HadronPhysicsFTFP_BERT::Pion(), G4HadronPhysicsQGSP_BERT::Pion(), G4HadronPhysicsQGSP_BIC::Pion(), G4HadronPhysicsFTF_BIC::Pion(), G4HadronPhysicsINCLXX::Pion(), G4HadronPhysicsQGS_BIC::Pion(), G4HadronPhysicsFTFP_BERT::Proton(), G4HadronPhysicsQGSP_BERT::Proton(), G4HadronPhysicsQGSP_BIC::Proton(), G4HadronPhysicsFTF_BIC::Proton(), G4HadronPhysicsINCLXX::Proton(), G4HadronPhysicsNuBeam::Proton(), G4HadronPhysicsQGS_BIC::Proton(), and G4HadronPhysicsQGSP_BIC_AllHP::Proton().

◆ ConstructParticle()

void G4StoppingPhysics::ConstructParticle ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 83 of file G4StoppingPhysics.cc.

83 {
84 // G4cout << "G4StoppingPhysics::ConstructParticle" << G4endl;
85 G4LeptonConstructor pLeptonConstructor;
86 pLeptonConstructor.ConstructParticle();
87
88 G4MesonConstructor pMesonConstructor;
89 pMesonConstructor.ConstructParticle();
90
91 G4BaryonConstructor pBaryonConstructor;
92 pBaryonConstructor.ConstructParticle();
93}
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()

References G4BaryonConstructor::ConstructParticle(), G4MesonConstructor::ConstructParticle(), and G4LeptonConstructor::ConstructParticle().

Referenced by LBE::ConstructParticle().

◆ ConstructProcess()

void G4StoppingPhysics::ConstructProcess ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 95 of file G4StoppingPhysics.cc.

95 {
96 if ( verbose > 1 ) G4cout << "### G4StoppingPhysics::ConstructProcess "
97 << G4endl;
98
99 G4MuonMinusCapture* muProcess = nullptr;
100 G4HadronicAbsorptionBertini* hBertiniProcess = nullptr;
101 G4HadronicAbsorptionFritiof* hFritiofProcess = nullptr;
102
103 if ( useMuonMinusCapture ) {
104 muProcess = new G4MuonMinusCapture();
105 }
106
107 hBertiniProcess = new G4HadronicAbsorptionBertini();
108 hFritiofProcess = new G4HadronicAbsorptionFritiof();
109
110 G4double mThreshold = 130.0*MeV;
111
112 // Add Stopping Process
113 G4ParticleDefinition* particle = 0;
114 G4ProcessManager* pmanager = 0;
115
116 auto myParticleIterator=GetParticleIterator();
117 myParticleIterator->reset();
118
119 while ( (*myParticleIterator)() ) {
120
121 particle = myParticleIterator->value();
122 pmanager = particle->GetProcessManager();
123
124 if (useMuonMinusCapture && particle == G4MuonMinus::MuonMinus()) {
125 pmanager->AddRestProcess( muProcess );
126 if ( verbose > 1 ) {
127 G4cout << "### G4StoppingPhysics added G4MuonMinusCapture for "
128 << particle->GetParticleName() << G4endl;
129 }
130 }
131
132 if ( particle->GetPDGCharge() <= 0.0 &&
133 particle->GetPDGMass() > mThreshold &&
134 ! particle->IsShortLived() ) {
135
136 // Use Fritiof/Precompound for: anti-proton, anti-neutron, anti-lambda,
137 // anti-sigma0, anti-sigma+, anti-xi0 and anti-nuclei.
138 if ( particle == G4AntiProton::Definition() ||
139 particle == G4AntiNeutron::Definition() ||
140 particle == G4AntiLambda::Definition() ||
141 particle == G4AntiSigmaZero::Definition() ||
142 particle == G4AntiSigmaPlus::Definition() ||
143 particle == G4AntiXiZero::Definition() ||
144 particle->GetBaryonNumber() < -1 ) { // Anti-nuclei
145 if ( hFritiofProcess->IsApplicable( *particle ) ) {
146 pmanager->AddRestProcess( hFritiofProcess );
147 if ( verbose > 1 ) {
148 G4cout << "### G4HadronicAbsorptionFritiof added for "
149 << particle->GetParticleName() << G4endl;
150 }
151 }
152
153 // Use Bertini/Precompound for pi-, K-, Sigma-, Xi-, and Omega-
154 } else if ( particle == G4PionMinus::Definition() ||
155 particle == G4KaonMinus::Definition() ||
156 particle == G4SigmaMinus::Definition() ||
157 particle == G4XiMinus::Definition() ||
158 particle == G4OmegaMinus::Definition() ) {
159 if ( hBertiniProcess->IsApplicable( *particle ) ) {
160 pmanager->AddRestProcess( hBertiniProcess );
161 if ( verbose > 1 ) {
162 G4cout << "### G4HadronicAbsorptionBertini added for "
163 << particle->GetParticleName() << G4endl;
164 }
165 }
166
167 } else {
168 if ( verbose > 1 ) {
169 G4cout << "WARNING in G4StoppingPhysics::ConstructProcess: \
170 not able to deal with nuclear stopping of "
171 << particle->GetParticleName() << G4endl;
172 }
173 }
174 }
175
176 } // end of while loop
177}
static constexpr double MeV
Definition: G4SIunits.hh:200
double G4double
Definition: G4Types.hh:83
static G4AntiLambda * Definition()
Definition: G4AntiLambda.cc:52
static G4AntiNeutron * Definition()
static G4AntiProton * Definition()
Definition: G4AntiProton.cc:50
static G4AntiSigmaPlus * Definition()
static G4AntiSigmaZero * Definition()
static G4AntiXiZero * Definition()
Definition: G4AntiXiZero.cc:52
G4bool IsApplicable(const G4ParticleDefinition &)
G4bool IsApplicable(const G4ParticleDefinition &)
static G4KaonMinus * Definition()
Definition: G4KaonMinus.cc:53
static G4MuonMinus * MuonMinus()
Definition: G4MuonMinus.cc:99
static G4OmegaMinus * Definition()
Definition: G4OmegaMinus.cc:52
G4ProcessManager * GetProcessManager() const
G4double GetPDGCharge() const
const G4String & GetParticleName() const
static G4PionMinus * Definition()
Definition: G4PionMinus.cc:51
G4int AddRestProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4SigmaMinus * Definition()
Definition: G4SigmaMinus.cc:52
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
static G4XiMinus * Definition()
Definition: G4XiMinus.cc:52

References G4ProcessManager::AddRestProcess(), G4AntiLambda::Definition(), G4AntiNeutron::Definition(), G4AntiProton::Definition(), G4AntiSigmaPlus::Definition(), G4AntiSigmaZero::Definition(), G4AntiXiZero::Definition(), G4OmegaMinus::Definition(), G4SigmaMinus::Definition(), G4XiMinus::Definition(), G4KaonMinus::Definition(), G4PionMinus::Definition(), G4cout, G4endl, G4ParticleDefinition::GetBaryonNumber(), G4VPhysicsConstructor::GetParticleIterator(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), G4ParticleDefinition::GetProcessManager(), G4HadronicAbsorptionBertini::IsApplicable(), G4HadronicAbsorptionFritiof::IsApplicable(), G4ParticleDefinition::IsShortLived(), MeV, G4MuonMinus::MuonMinus(), useMuonMinusCapture, and verbose.

Referenced by LBE::ConstructHad().

◆ GetBuilders()

G4VPhysicsConstructor::PhysicsBuilder_V G4VPhysicsConstructor::GetBuilders ( ) const
protectedinherited

Definition at line 86 of file G4VPhysicsConstructor.cc.

87{
88 const auto& tls = *((subInstanceManager.offset[g4vpcInstanceID])._builders);
89 PhysicsBuilder_V copy(tls.size());
90 G4int i = 0;
91 for(const auto& el : tls)
92 {
93 copy[i++] = el;
94 }
95 return copy;
96}
int G4int
Definition: G4Types.hh:85
G4VPCData::PhysicsBuilders_V PhysicsBuilder_V
void copy(G4double dst[], const G4double src[], size_t size=G4FieldTrack::ncompSVEC)
Definition: G4FieldUtils.cc:98

References field_utils::copy(), G4VPhysicsConstructor::g4vpcInstanceID, G4VUPLSplitter< T >::offset, and G4VPhysicsConstructor::subInstanceManager.

◆ GetInstanceID()

G4int G4VPhysicsConstructor::GetInstanceID ( ) const
inlineinherited

◆ GetParticleIterator()

G4ParticleTable::G4PTblDicIterator * G4VPhysicsConstructor::GetParticleIterator ( ) const
protectedinherited

◆ GetPhysicsName()

const G4String & G4VPhysicsConstructor::GetPhysicsName ( ) const
inlineinherited

Definition at line 191 of file G4VPhysicsConstructor.hh.

192{
193 return namePhysics;
194}

References G4VPhysicsConstructor::namePhysics.

Referenced by G4EmDNAPhysics_option1::ConstructProcess(), G4EmDNAPhysics_option2::ConstructProcess(), G4EmDNAPhysics_option3::ConstructProcess(), G4EmDNAPhysics_option4::ConstructProcess(), G4EmDNAPhysics_option5::ConstructProcess(), G4EmDNAPhysics_option6::ConstructProcess(), G4EmDNAPhysics_option7::ConstructProcess(), G4EmDNAPhysics_option8::ConstructProcess(), G4EmDNAPhysics_stationary_option2::ConstructProcess(), G4EmDNAPhysics_stationary_option4::ConstructProcess(), G4EmDNAPhysics_stationary_option6::ConstructProcess(), G4EmDNAPhysics::ConstructProcess(), G4EmDNAPhysics_stationary::ConstructProcess(), G4EmLivermorePhysics::ConstructProcess(), G4EmLowEPPhysics::ConstructProcess(), G4EmPenelopePhysics::ConstructProcess(), G4EmStandardPhysics::ConstructProcess(), G4EmStandardPhysics_option1::ConstructProcess(), G4EmStandardPhysics_option2::ConstructProcess(), G4EmStandardPhysics_option3::ConstructProcess(), G4EmStandardPhysics_option4::ConstructProcess(), G4EmStandardPhysicsGS::ConstructProcess(), G4EmStandardPhysicsSS::ConstructProcess(), G4EmStandardPhysicsWVI::ConstructProcess(), G4ThermalNeutrons::ConstructProcess(), G4HadronPhysicsFTFP_BERT::DumpBanner(), G4HadronPhysicsQGSP_BERT::DumpBanner(), export_G4VPhysicsConstructor(), G4HadronDElasticPhysics::G4HadronDElasticPhysics(), G4HadronElasticPhysics::G4HadronElasticPhysics(), G4HadronElasticPhysicsHP::G4HadronElasticPhysicsHP(), G4HadronElasticPhysicsLEND::G4HadronElasticPhysicsLEND(), G4HadronElasticPhysicsPHP::G4HadronElasticPhysicsPHP(), G4HadronElasticPhysicsXS::G4HadronElasticPhysicsXS(), G4HadronHElasticPhysics::G4HadronHElasticPhysics(), G4IonElasticPhysics::G4IonElasticPhysics(), G4VModularPhysicsList::RegisterPhysics(), and G4VModularPhysicsList::ReplacePhysics().

◆ GetPhysicsType()

G4int G4VPhysicsConstructor::GetPhysicsType ( ) const
inlineinherited

◆ GetSubInstanceManager()

const G4VPCManager & G4VPhysicsConstructor::GetSubInstanceManager ( )
inlinestaticinherited

◆ GetVerboseLevel()

G4int G4VPhysicsConstructor::GetVerboseLevel ( ) const
inlineinherited

◆ RegisterProcess()

G4bool G4VPhysicsConstructor::RegisterProcess ( G4VProcess process,
G4ParticleDefinition particle 
)
inlineprotectedinherited

◆ SetMuonMinusCapture()

void G4StoppingPhysics::SetMuonMinusCapture ( G4bool  val)
inline

Definition at line 79 of file G4StoppingPhysics.hh.

80 { useMuonMinusCapture = val; };

References useMuonMinusCapture.

◆ SetPhysicsName()

void G4VPhysicsConstructor::SetPhysicsName ( const G4String name = "")
inlineinherited

◆ SetPhysicsType()

void G4VPhysicsConstructor::SetPhysicsType ( G4int  val)
inlineinherited

Definition at line 196 of file G4VPhysicsConstructor.hh.

197{
198 if(val > 0) { typePhysics = val; }
199}

References G4VPhysicsConstructor::typePhysics.

Referenced by G4DecayPhysics::G4DecayPhysics(), G4EmDNAPhysics::G4EmDNAPhysics(), G4EmDNAPhysics_option1::G4EmDNAPhysics_option1(), G4EmDNAPhysics_option2::G4EmDNAPhysics_option2(), G4EmDNAPhysics_option3::G4EmDNAPhysics_option3(), G4EmDNAPhysics_option4::G4EmDNAPhysics_option4(), G4EmDNAPhysics_option5::G4EmDNAPhysics_option5(), G4EmDNAPhysics_option6::G4EmDNAPhysics_option6(), G4EmDNAPhysics_option7::G4EmDNAPhysics_option7(), G4EmDNAPhysics_option8::G4EmDNAPhysics_option8(), G4EmDNAPhysics_stationary_option2::G4EmDNAPhysics_stationary_option2(), G4EmDNAPhysics_stationary_option4::G4EmDNAPhysics_stationary_option4(), G4EmDNAPhysics_stationary_option6::G4EmDNAPhysics_stationary_option6(), G4EmExtraPhysics::G4EmExtraPhysics(), G4EmLivermorePhysics::G4EmLivermorePhysics(), G4EmLowEPPhysics::G4EmLowEPPhysics(), G4EmPenelopePhysics::G4EmPenelopePhysics(), G4EmStandardPhysics::G4EmStandardPhysics(), G4EmStandardPhysics_option1::G4EmStandardPhysics_option1(), G4EmStandardPhysics_option2::G4EmStandardPhysics_option2(), G4EmStandardPhysics_option3::G4EmStandardPhysics_option3(), G4EmStandardPhysics_option4::G4EmStandardPhysics_option4(), G4EmStandardPhysicsGS::G4EmStandardPhysicsGS(), G4EmStandardPhysicsSS::G4EmStandardPhysicsSS(), G4EmStandardPhysicsWVI::G4EmStandardPhysicsWVI(), G4HadronElasticPhysics::G4HadronElasticPhysics(), G4HadronInelasticQBBC::G4HadronInelasticQBBC(), G4HadronPhysicsFTFP_BERT::G4HadronPhysicsFTFP_BERT(), G4HadronPhysicsQGSP_BERT::G4HadronPhysicsQGSP_BERT(), G4HadronPhysicsQGSP_BIC::G4HadronPhysicsQGSP_BIC(), G4IonINCLXXPhysics::G4IonINCLXXPhysics(), G4IonPhysics::G4IonPhysics(), G4IonPhysicsPHP::G4IonPhysicsPHP(), G4IonQMDPhysics::G4IonQMDPhysics(), G4NeutronTrackingCut::G4NeutronTrackingCut(), G4StepLimiterPhysics::G4StepLimiterPhysics(), G4StoppingPhysics(), and G4StoppingPhysicsFritiofWithBinaryCascade::G4StoppingPhysicsFritiofWithBinaryCascade().

◆ SetVerboseLevel()

void G4VPhysicsConstructor::SetVerboseLevel ( G4int  value)
inlineinherited

◆ TerminateWorker()

void G4VPhysicsConstructor::TerminateWorker ( )
virtualinherited

Definition at line 105 of file G4VPhysicsConstructor.cc.

106{
107 if(subInstanceManager.offset[g4vpcInstanceID]._builders != nullptr)
108 {
109 std::for_each(subInstanceManager.offset[g4vpcInstanceID]._builders->begin(),
110 subInstanceManager.offset[g4vpcInstanceID]._builders->end(),
111 [](PhysicsBuilder_V::value_type bld) { delete bld; });
112 subInstanceManager.offset[g4vpcInstanceID]._builders->clear();
113 }
114}

References G4VPhysicsConstructor::g4vpcInstanceID, G4VUPLSplitter< T >::offset, and G4VPhysicsConstructor::subInstanceManager.

Referenced by G4VPhysicsConstructor::~G4VPhysicsConstructor().

Field Documentation

◆ g4vpcInstanceID

G4int G4VPhysicsConstructor::g4vpcInstanceID = 0
protectedinherited

◆ namePhysics

G4String G4VPhysicsConstructor::namePhysics = ""
protectedinherited

◆ subInstanceManager

G4VPCManager G4VPhysicsConstructor::subInstanceManager
staticprotectedinherited

◆ theParticleTable

G4ParticleTable* G4VPhysicsConstructor::theParticleTable = nullptr
protectedinherited

◆ typePhysics

G4int G4VPhysicsConstructor::typePhysics = 0
protectedinherited

◆ useMuonMinusCapture

G4bool G4StoppingPhysics::useMuonMinusCapture
private

Definition at line 85 of file G4StoppingPhysics.hh.

Referenced by ConstructProcess(), and SetMuonMinusCapture().

◆ verbose

G4int G4StoppingPhysics::verbose
private

Definition at line 84 of file G4StoppingPhysics.hh.

Referenced by ConstructProcess(), and G4StoppingPhysics().

◆ verboseLevel

G4int G4VPhysicsConstructor::verboseLevel = 0
protectedinherited

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