Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4StoppingPhysicsWithINCLXX Class Reference

#include <G4StoppingPhysicsWithINCLXX.hh>

+ Inheritance diagram for G4StoppingPhysicsWithINCLXX:

Public Member Functions

 G4StoppingPhysicsWithINCLXX (G4int ver=1)
 
 G4StoppingPhysicsWithINCLXX (const G4String &name, G4int ver=1, G4bool UseMuonMinusCapture=true)
 
 ~G4StoppingPhysicsWithINCLXX () override
 
virtual void ConstructParticle () override
 
virtual void ConstructProcess () override
 
void SetMuonMinusCapture (G4bool val)
 
- 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
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VPhysicsConstructor
static const G4VPCManagerGetSubInstanceManager ()
 
- Protected Types inherited from G4VPhysicsConstructor
using PhysicsBuilder_V = G4VPCData::PhysicsBuilders_V
 
- 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 inherited from G4VPhysicsConstructor
G4int verboseLevel = 0
 
G4String namePhysics = ""
 
G4int typePhysics = 0
 
G4ParticleTabletheParticleTable = nullptr
 
G4int g4vpcInstanceID = 0
 
- Static Protected Attributes inherited from G4VPhysicsConstructor
static G4RUN_DLL G4VPCManager subInstanceManager
 

Detailed Description

Definition at line 54 of file G4StoppingPhysicsWithINCLXX.hh.

Constructor & Destructor Documentation

◆ G4StoppingPhysicsWithINCLXX() [1/2]

G4StoppingPhysicsWithINCLXX::G4StoppingPhysicsWithINCLXX ( G4int ver = 1)

Definition at line 60 of file G4StoppingPhysicsWithINCLXX.cc.

60 :
61 G4StoppingPhysicsWithINCLXX( "stopping", ver ) {}

◆ G4StoppingPhysicsWithINCLXX() [2/2]

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

Definition at line 64 of file G4StoppingPhysicsWithINCLXX.cc.

65 :
67 verbose( ver ),
68 useMuonMinusCapture( useMuCapture )
69{
71 if ( verbose > 1 ) G4cout << "### G4StoppingPhysicsWithINCLXX" << G4endl;
72}
@ bStopping
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
G4VPhysicsConstructor(const G4String &="")

◆ ~G4StoppingPhysicsWithINCLXX()

G4StoppingPhysicsWithINCLXX::~G4StoppingPhysicsWithINCLXX ( )
override

Definition at line 75 of file G4StoppingPhysicsWithINCLXX.cc.

75{}

Member Function Documentation

◆ ConstructParticle()

void G4StoppingPhysicsWithINCLXX::ConstructParticle ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 78 of file G4StoppingPhysicsWithINCLXX.cc.

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

◆ ConstructProcess()

void G4StoppingPhysicsWithINCLXX::ConstructProcess ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 91 of file G4StoppingPhysicsWithINCLXX.cc.

91 {
92 if ( verbose > 1 ) G4cout << "### G4StoppingPhysicsWithINCLXX::ConstructProcess " << G4endl;
93
94 G4MuonMinusCapture* muProcess = nullptr;
95 if ( useMuonMinusCapture ) muProcess = new G4MuonMinusCapture;
96
100
101 const G4double mThreshold = 130.0*MeV;
102
103 // Add Stopping Process
104 G4ParticleDefinition* particle = nullptr;
105 G4ProcessManager* pmanager = nullptr;
106
107 auto myParticleIterator = GetParticleIterator();
108 myParticleIterator->reset();
109
110 while ( (*myParticleIterator)() ) {
111
112 particle = myParticleIterator->value();
113 pmanager = particle->GetProcessManager();
114
115 if ( useMuonMinusCapture && particle == G4MuonMinus::MuonMinus() ) {
116 pmanager->AddRestProcess( muProcess );
117 if ( verbose > 1 ) {
118 G4cout << "### G4StoppingPhysicsWithINCLXX added G4MuonMinusCapture for "
119 << particle->GetParticleName() << G4endl;
120 }
121 }
122
123 if ( particle->GetPDGCharge() <= 0.0 &&
124 particle->GetPDGMass() > mThreshold &&
125 ! particle->IsShortLived() ) {
126
127 // Use Fritiof/Precompound for: anti-neutron, anti-lambda,
128 // anti-sigma0, anti-sigma+, anti-xi0 and anti-nuclei.
129 if ( particle == G4AntiNeutron::Definition() ||
130 particle == G4AntiLambda::Definition() ||
131 particle == G4AntiSigmaZero::Definition() ||
132 particle == G4AntiSigmaPlus::Definition() ||
133 particle == G4AntiXiZero::Definition() ||
134 particle->GetBaryonNumber() < -1 ) { // Anti-nuclei
135 if ( hFritiofProcess->IsApplicable( *particle ) ) {
136 pmanager->AddRestProcess( hFritiofProcess );
137 if ( verbose > 1 ) {
138 G4cout << "### G4HadronicAbsorptionFritiof added for "
139 << particle->GetParticleName() << G4endl;
140 }
141 }
142
143 // Use INCLXX/Precompound for antiproton
144 } else if ( particle == G4AntiProton::Definition() ) {
145 if ( hINCLXXProcess->IsApplicable( *particle ) ) {
146 pmanager->AddRestProcess( hINCLXXProcess );
147 if ( verbose > 1 ) {
148 G4cout << "### G4HadronicAbsorptionINCLXX added for "
149 << particle->GetParticleName() << G4endl;
150 }
151 }
152
153 // Use Bertini 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 G4StoppingPhysicsWithINCLXX::ConstructProcess: \
170 not able to deal with nuclear stopping of "
171 << particle->GetParticleName() << G4endl;
172 }
173 }
174 }
175
176 } // end of while loop
177}
double G4double
Definition G4Types.hh:83
static G4AntiLambda * Definition()
static G4AntiNeutron * Definition()
static G4AntiProton * Definition()
static G4AntiSigmaPlus * Definition()
static G4AntiSigmaZero * Definition()
static G4AntiXiZero * Definition()
G4bool IsApplicable(const G4ParticleDefinition &)
G4bool IsApplicable(const G4ParticleDefinition &)
G4bool IsApplicable(const G4ParticleDefinition &)
static G4KaonMinus * Definition()
static G4MuonMinus * MuonMinus()
static G4OmegaMinus * Definition()
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
static G4PionMinus * Definition()
G4int AddRestProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4SigmaMinus * Definition()
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
static G4XiMinus * Definition()
Definition G4XiMinus.cc:48

◆ SetMuonMinusCapture()

void G4StoppingPhysicsWithINCLXX::SetMuonMinusCapture ( G4bool val)
inline

Definition at line 70 of file G4StoppingPhysicsWithINCLXX.hh.

70{ useMuonMinusCapture = val; };

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