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

#include <G4StoppingPhysicsFritiofWithBinaryCascade.hh>

Inheritance diagram for G4StoppingPhysicsFritiofWithBinaryCascade:
G4VPhysicsConstructor

Public Member Functions

void ConstructParticle () override
 
void ConstructProcess () override
 
 G4StoppingPhysicsFritiofWithBinaryCascade (const G4String &name, G4int ver=1, G4bool useMuCapture=true)
 
 G4StoppingPhysicsFritiofWithBinaryCascade (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 ()
 
 ~G4StoppingPhysicsFritiofWithBinaryCascade () 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 53 of file G4StoppingPhysicsFritiofWithBinaryCascade.hh.

Member Typedef Documentation

◆ PhysicsBuilder_V

Definition at line 149 of file G4VPhysicsConstructor.hh.

Constructor & Destructor Documentation

◆ G4StoppingPhysicsFritiofWithBinaryCascade() [1/2]

G4StoppingPhysicsFritiofWithBinaryCascade::G4StoppingPhysicsFritiofWithBinaryCascade ( G4int  ver = 1)

◆ G4StoppingPhysicsFritiofWithBinaryCascade() [2/2]

G4StoppingPhysicsFritiofWithBinaryCascade::G4StoppingPhysicsFritiofWithBinaryCascade ( const G4String name,
G4int  ver = 1,
G4bool  useMuCapture = true 
)

Definition at line 63 of file G4StoppingPhysicsFritiofWithBinaryCascade.cc.

65 :
67 useMuonMinusCapture( UseMuonMinusCapture )
68{
70 if(verbose > 1) G4cout << "### G4StoppingPhysicsFritiofWithBinaryCascade"
71 << G4endl;
72}
@ 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.

◆ ~G4StoppingPhysicsFritiofWithBinaryCascade()

G4StoppingPhysicsFritiofWithBinaryCascade::~G4StoppingPhysicsFritiofWithBinaryCascade ( )
override

Definition at line 74 of file G4StoppingPhysicsFritiofWithBinaryCascade.cc.

74{}

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 G4StoppingPhysicsFritiofWithBinaryCascade::ConstructParticle ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 77 of file G4StoppingPhysicsFritiofWithBinaryCascade.cc.

77 {
78 // G4cout << "G4StoppingPhysicsFritiofWithBinaryCascade::ConstructParticle" << G4endl;
79 G4LeptonConstructor pLeptonConstructor;
80 pLeptonConstructor.ConstructParticle();
81
82 G4MesonConstructor pMesonConstructor;
83 pMesonConstructor.ConstructParticle();
84
85 G4BaryonConstructor pBaryonConstructor;
86 pBaryonConstructor.ConstructParticle();
87}
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()

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

◆ ConstructProcess()

void G4StoppingPhysicsFritiofWithBinaryCascade::ConstructProcess ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 89 of file G4StoppingPhysicsFritiofWithBinaryCascade.cc.

89 {
90 if ( verbose > 1 ) G4cout << "### G4StoppingPhysicsFritiofWithBinaryCascade::ConstructProcess " << G4endl;
91
92 G4MuonMinusCapture* muProcess = nullptr;
93 if ( useMuonMinusCapture ) {
94 muProcess = new G4MuonMinusCapture();
95 }
96
99 G4HadronicAbsorptionFritiofWithBinaryCascade* hFritiofWithBinaryCascadeProcess =
101
102 G4double mThreshold = 130.0*MeV;
103
104 // Add Stopping Process
105 G4ParticleDefinition* particle = 0;
106 G4ProcessManager* pmanager = 0;
107
108 auto myParticleIterator=GetParticleIterator();
109 myParticleIterator->reset();
110
111 while ( (*myParticleIterator)() ) {
112
113 particle = myParticleIterator->value();
114 pmanager = particle->GetProcessManager();
115
116 if (useMuonMinusCapture && particle == G4MuonMinus::MuonMinus() ) {
117 pmanager->AddRestProcess( muProcess );
118 if ( verbose > 1 ) {
119 G4cout << "### G4MuonMinusCapture added for "
120 << particle->GetParticleName() << G4endl;
121 }
122 }
123
124 if ( particle->GetPDGCharge() <= 0.0 &&
125 particle->GetPDGMass() > mThreshold &&
126 ( ! particle->IsShortLived() ) ) {
127
128 // Use Fritiof/BinaryCascade for: anti-proton and anti-neutron
129 if ( particle == G4AntiProton::Definition() ||
130 particle == G4AntiNeutron::Definition() ) {
131 if ( hFritiofWithBinaryCascadeProcess->IsApplicable( *particle ) ) {
132 pmanager->AddRestProcess( hFritiofWithBinaryCascadeProcess );
133 if ( verbose > 1 ) {
134 G4cout << "### G4HadronicAbsorptionFritiofWithBinaryCascade added for "
135 << particle->GetParticleName() << G4endl;
136 }
137 }
138
139 // Use Fritiof/Precompound for:
140 // anti-lambda, anti-sigma0, anti-sigma+, anti-xi0 and anti-nuclei
141 } else if ( particle == G4AntiLambda::Definition() ||
142 particle == G4AntiSigmaZero::Definition() ||
143 particle == G4AntiSigmaPlus::Definition() ||
144 particle == G4AntiXiZero::Definition() ||
145 particle->GetBaryonNumber() < -1 ) { // Anti-nuclei
146 if ( hFritiofProcess->IsApplicable( *particle ) ) {
147 pmanager->AddRestProcess( hFritiofProcess );
148 if ( verbose > 1 ) {
149 G4cout << "### G4HadronicAbsorptionFritiof added for "
150 << particle->GetParticleName() << G4endl;
151 }
152 }
153
154 // Use Bertini for pi-, K-, Sigma-, Xi-, and Omega-
155 } else if ( particle == G4PionMinus::Definition() ||
156 particle == G4KaonMinus::Definition() ||
157 particle == G4SigmaMinus::Definition() ||
158 particle == G4XiMinus::Definition() ||
159 particle == G4OmegaMinus::Definition() ) {
160 if ( hBertiniProcess->IsApplicable( *particle ) ) {
161 pmanager->AddRestProcess( hBertiniProcess );
162 if ( verbose > 1 ) {
163 G4cout << "### G4HadronicAbsorptionBertini added for "
164 << particle->GetParticleName() << G4endl;
165 }
166 }
167
168 } else {
169 if ( verbose > 1 ) {
170 G4cout << "WARNING in G4StoppingPhysicsFritiofWithBinaryCascade::ConstructProcess: \
171 not able to deal with nuclear stopping of "
172 << particle->GetParticleName() << G4endl;
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(), G4HadronicAbsorptionFritiofWithBinaryCascade::IsApplicable(), G4ParticleDefinition::IsShortLived(), MeV, G4MuonMinus::MuonMinus(), useMuonMinusCapture, and verbose.

◆ 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 G4StoppingPhysicsFritiofWithBinaryCascade::SetMuonMinusCapture ( G4bool  val)
inline

Definition at line 69 of file G4StoppingPhysicsFritiofWithBinaryCascade.hh.

70 { 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::G4StoppingPhysics(), and 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 G4StoppingPhysicsFritiofWithBinaryCascade::useMuonMinusCapture
private

◆ verbose

G4int G4StoppingPhysicsFritiofWithBinaryCascade::verbose
private

◆ verboseLevel

G4int G4VPhysicsConstructor::verboseLevel = 0
protectedinherited

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