Geant4  10.02.p03
G4StoppingPhysics Class Reference

#include <G4StoppingPhysics.hh>

Inheritance diagram for G4StoppingPhysics:
Collaboration diagram for G4StoppingPhysics:

Public Member Functions

 G4StoppingPhysics (G4int ver=1)
 
 G4StoppingPhysics (const G4String &name, G4int ver=1, G4bool UseMuonMinusCapture=true)
 
virtual ~G4StoppingPhysics ()
 
virtual void ConstructParticle ()
 
virtual void ConstructProcess ()
 
- 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
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
G4int GetInstanceID () const
 

Private Attributes

G4int verbose
 
G4bool useMuonMinusCapture
 

Static Private Attributes

static G4ThreadLocal G4bool wasActivated = false
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VPhysicsConstructor
static const G4VPCManagerGetSubInstanceManager ()
 
- Protected Member Functions inherited from G4VPhysicsConstructor
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
 
- Protected Attributes inherited from G4VPhysicsConstructor
G4int verboseLevel
 
G4String namePhysics
 
G4int typePhysics
 
G4ParticleTabletheParticleTable
 
G4int g4vpcInstanceID
 
- Static Protected Attributes inherited from G4VPhysicsConstructor
static G4RUN_DLL G4VPCManager subInstanceManager
 

Detailed Description

Definition at line 63 of file G4StoppingPhysics.hh.

Constructor & Destructor Documentation

◆ G4StoppingPhysics() [1/2]

G4StoppingPhysics::G4StoppingPhysics ( G4int  ver = 1)

Definition at line 67 of file G4StoppingPhysics.cc.

67  :
68  G4VPhysicsConstructor( "stopping" ),
69 //muProcess( 0 ), hBertiniProcess( 0 ), hFritiofProcess( 0 ),
70  verbose( ver ),
71  useMuonMinusCapture( true )
72 {
73  if ( verbose > 1 ) G4cout << "### G4StoppingPhysics" << G4endl;
74 }
G4GLOB_DLL std::ostream G4cout
G4VPhysicsConstructor(const G4String &="")
#define G4endl
Definition: G4ios.hh:61

◆ G4StoppingPhysics() [2/2]

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

Definition at line 78 of file G4StoppingPhysics.cc.

79  :
80  G4VPhysicsConstructor( name ),
81  // muProcess( 0 ), hBertiniProcess( 0 ), hFritiofProcess( 0 ),
82  verbose( ver ),
83  useMuonMinusCapture( UseMuonMinusCapture )
84 {
85  if ( verbose > 1 ) G4cout << "### G4StoppingPhysics" << G4endl;
86 }
G4GLOB_DLL std::ostream G4cout
G4VPhysicsConstructor(const G4String &="")
#define G4endl
Definition: G4ios.hh:61

◆ ~G4StoppingPhysics()

G4StoppingPhysics::~G4StoppingPhysics ( )
virtual

Definition at line 89 of file G4StoppingPhysics.cc.

89 {}

Member Function Documentation

◆ ConstructParticle()

void G4StoppingPhysics::ConstructParticle ( void  )
virtual

Implements G4VPhysicsConstructor.

Definition at line 92 of file G4StoppingPhysics.cc.

92  {
93  // G4cout << "G4StoppingPhysics::ConstructParticle" << G4endl;
94  G4LeptonConstructor pLeptonConstructor;
95  pLeptonConstructor.ConstructParticle();
96 
97  G4MesonConstructor pMesonConstructor;
98  pMesonConstructor.ConstructParticle();
99 
100  G4BaryonConstructor pBaryonConstructor;
101  pBaryonConstructor.ConstructParticle();
102 }
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()
Here is the call graph for this function:

◆ ConstructProcess()

void G4StoppingPhysics::ConstructProcess ( void  )
virtual

Implements G4VPhysicsConstructor.

Definition at line 105 of file G4StoppingPhysics.cc.

105  {
106  if ( verbose > 1 ) G4cout << "### G4StoppingPhysics::ConstructProcess "
107  << wasActivated << G4endl;
108  if ( wasActivated ) return;
109  wasActivated = true;
110 
111  G4MuonMinusCapture* muProcess;
112  G4HadronicAbsorptionBertini* hBertiniProcess;
113  G4HadronicAbsorptionFritiof* hFritiofProcess;
114 
115  if ( useMuonMinusCapture ) {
116  muProcess = new G4MuonMinusCapture();
117  } else {
118  muProcess = 0;
119  }
120 
121  hBertiniProcess = new G4HadronicAbsorptionBertini();
122  hFritiofProcess = new G4HadronicAbsorptionFritiof();
123 
124  G4double mThreshold = 130.0*MeV;
125 
126  // Add Stopping Process
127  G4ParticleDefinition* particle = 0;
128  G4ProcessManager* pmanager = 0;
129 
130  auto myParticleIterator=GetParticleIterator();
131  myParticleIterator->reset();
132 
133  while ( (*myParticleIterator)() ) {
134 
135  particle = myParticleIterator->value();
136  pmanager = particle->GetProcessManager();
137 
138  if ( particle == G4MuonMinus::MuonMinus() ) {
139  if ( useMuonMinusCapture ) {
140  pmanager->AddRestProcess( muProcess );
141  if ( verbose > 1 ) {
142  G4cout << "### G4StoppingPhysics added G4MuonMinusCapture for "
143  << particle->GetParticleName() << G4endl;
144  }
145  }
146  }
147 
148  if ( particle->GetPDGCharge() < 0.0 &&
149  particle->GetPDGMass() > mThreshold &&
150  ! particle->IsShortLived() ) {
151 
152  // Use Fritiof/Precompound for: anti-protons, anti-sigma+, and
153  // anti-nuclei.
154  if ( particle == G4AntiProton::AntiProton() ||
155  particle == G4AntiSigmaPlus::AntiSigmaPlus() ||
156  particle->GetBaryonNumber() < -1 ) { // Anti-nuclei
157  if ( hFritiofProcess->IsApplicable( *particle ) ) {
158  pmanager->AddRestProcess( hFritiofProcess );
159  if ( verbose > 1 ) {
160  G4cout << "### G4HadronicAbsorptionFritiof added for "
161  << particle->GetParticleName() << G4endl;
162  }
163  }
164 
165  // Use Bertini/Precompound for pi-, K-, Sigma-, Xi-, and Omega-
166  } else if ( particle == G4PionMinus::PionMinus() ||
167  particle == G4KaonMinus::KaonMinus() ||
168  particle == G4SigmaMinus::SigmaMinus() ||
169  particle == G4XiMinus::XiMinus() ||
170  particle == G4OmegaMinus::OmegaMinus() ) {
171  if ( hBertiniProcess->IsApplicable( *particle ) ) {
172  pmanager->AddRestProcess( hBertiniProcess );
173  if ( verbose > 1 ) {
174  G4cout << "### G4HadronicAbsorptionBertini added for "
175  << particle->GetParticleName() << G4endl;
176  }
177  }
178 
179  } else {
180  if ( verbose > 1 ) {
181  G4cout << "WARNING in G4StoppingPhysics::ConstructProcess: \
182  not able to deal with nuclear stopping of "
183  << particle->GetParticleName() << G4endl;
184  }
185  }
186  }
187 
188  } // end of while loop
189 }
static G4ThreadLocal G4bool wasActivated
static const double MeV
Definition: G4SIunits.hh:211
G4bool IsApplicable(const G4ParticleDefinition &)
static G4OmegaMinus * OmegaMinus()
G4ProcessManager * GetProcessManager() const
static G4AntiSigmaPlus * AntiSigmaPlus()
static G4KaonMinus * KaonMinus()
Definition: G4KaonMinus.cc:113
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
static G4AntiProton * AntiProton()
Definition: G4AntiProton.cc:93
static G4XiMinus * XiMinus()
Definition: G4XiMinus.cc:106
static G4SigmaMinus * SigmaMinus()
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:98
static G4MuonMinus * MuonMinus()
Definition: G4MuonMinus.cc:100
#define G4endl
Definition: G4ios.hh:61
G4int AddRestProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4bool IsApplicable(const G4ParticleDefinition &)
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
double G4double
Definition: G4Types.hh:76
G4double GetPDGCharge() const
Here is the call graph for this function:

Member Data Documentation

◆ useMuonMinusCapture

G4bool G4StoppingPhysics::useMuonMinusCapture
private

Definition at line 94 of file G4StoppingPhysics.hh.

◆ verbose

G4int G4StoppingPhysics::verbose
private

Definition at line 92 of file G4StoppingPhysics.hh.

◆ wasActivated

G4ThreadLocal G4bool G4StoppingPhysics::wasActivated = false
staticprivate

Definition at line 93 of file G4StoppingPhysics.hh.


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