#include <G4StoppingPhysics.hh>
Inheritance 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 () |
Definition at line 63 of file G4StoppingPhysics.hh.
G4StoppingPhysics::G4StoppingPhysics | ( | G4int | ver = 1 |
) |
Definition at line 65 of file G4StoppingPhysics.cc.
References G4cout, and G4endl.
00065 : 00066 G4VPhysicsConstructor( "stopping" ), 00067 muProcess( 0 ), hBertiniProcess( 0 ), hFritiofProcess( 0 ), 00068 verbose( ver ), wasActivated( false ) , 00069 useMuonMinusCapture( true ) 00070 { 00071 if ( verbose > 1 ) G4cout << "### G4StoppingPhysics" << G4endl; 00072 }
G4StoppingPhysics::G4StoppingPhysics | ( | const G4String & | name, | |
G4int | ver = 1 , |
|||
G4bool | UseMuonMinusCapture = true | |||
) |
Definition at line 76 of file G4StoppingPhysics.cc.
References G4cout, and G4endl.
00077 : 00078 G4VPhysicsConstructor( name ), 00079 muProcess( 0 ), hBertiniProcess( 0 ), hFritiofProcess( 0 ), 00080 verbose( ver ), wasActivated( false ) , 00081 useMuonMinusCapture( UseMuonMinusCapture ) 00082 { 00083 if ( verbose > 1 ) G4cout << "### G4StoppingPhysics" << G4endl; 00084 }
G4StoppingPhysics::~G4StoppingPhysics | ( | ) | [virtual] |
void G4StoppingPhysics::ConstructParticle | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 90 of file G4StoppingPhysics.cc.
References G4BaryonConstructor::ConstructParticle(), G4MesonConstructor::ConstructParticle(), and G4LeptonConstructor::ConstructParticle().
00090 { 00091 // G4cout << "G4StoppingPhysics::ConstructParticle" << G4endl; 00092 G4LeptonConstructor pLeptonConstructor; 00093 pLeptonConstructor.ConstructParticle(); 00094 00095 G4MesonConstructor pMesonConstructor; 00096 pMesonConstructor.ConstructParticle(); 00097 00098 G4BaryonConstructor pBaryonConstructor; 00099 pBaryonConstructor.ConstructParticle(); 00100 }
void G4StoppingPhysics::ConstructProcess | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 103 of file G4StoppingPhysics.cc.
References G4ProcessManager::AddRestProcess(), G4AntiProton::AntiProton(), G4AntiSigmaPlus::AntiSigmaPlus(), G4cout, G4endl, G4ParticleDefinition::GetBaryonNumber(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), G4ParticleDefinition::GetProcessManager(), G4HadronicAbsorptionBertini::IsApplicable(), G4HadronicAbsorptionFritiof::IsApplicable(), G4ParticleDefinition::IsShortLived(), G4KaonMinus::KaonMinus(), G4MuonMinus::MuonMinus(), G4OmegaMinus::OmegaMinus(), G4PionMinus::PionMinus(), G4ParticleTableIterator< K, V >::reset(), G4SigmaMinus::SigmaMinus(), G4VPhysicsConstructor::theParticleIterator, G4ParticleTableIterator< K, V >::value(), and G4XiMinus::XiMinus().
00103 { 00104 if ( verbose > 1 ) G4cout << "### G4StoppingPhysics::ConstructProcess " 00105 << wasActivated << G4endl; 00106 if ( wasActivated ) return; 00107 wasActivated = true; 00108 00109 if ( useMuonMinusCapture ) { 00110 muProcess = new G4MuonMinusCapture(); 00111 } else { 00112 muProcess = 0; 00113 } 00114 00115 hBertiniProcess = new G4HadronicAbsorptionBertini(); 00116 hFritiofProcess = new G4HadronicAbsorptionFritiof(); 00117 00118 G4double mThreshold = 130.0*MeV; 00119 00120 // Add Stopping Process 00121 G4ParticleDefinition* particle = 0; 00122 G4ProcessManager* pmanager = 0; 00123 00124 theParticleIterator->reset(); 00125 00126 while ( (*theParticleIterator)() ) { 00127 00128 particle = theParticleIterator->value(); 00129 pmanager = particle->GetProcessManager(); 00130 00131 if ( particle == G4MuonMinus::MuonMinus() ) { 00132 if ( useMuonMinusCapture ) { 00133 pmanager->AddRestProcess( muProcess ); 00134 if ( verbose > 1 ) { 00135 G4cout << "### G4StoppingPhysics added G4MuonMinusCapture for " 00136 << particle->GetParticleName() << G4endl; 00137 } 00138 } 00139 } 00140 00141 if ( particle->GetPDGCharge() < 0.0 && 00142 particle->GetPDGMass() > mThreshold && 00143 ! particle->IsShortLived() ) { 00144 00145 // Use Fritiof/Precompound for: anti-protons, anti-sigma+, and 00146 // anti-nuclei. 00147 if ( particle == G4AntiProton::AntiProton() || 00148 particle == G4AntiSigmaPlus::AntiSigmaPlus() || 00149 particle->GetBaryonNumber() < -1 ) { // Anti-nuclei 00150 if ( hFritiofProcess->IsApplicable( *particle ) ) { 00151 pmanager->AddRestProcess( hFritiofProcess ); 00152 if ( verbose > 1 ) { 00153 G4cout << "### G4HadronicAbsorptionFritiof added for " 00154 << particle->GetParticleName() << G4endl; 00155 } 00156 } 00157 00158 // Use Bertini/Precompound for pi-, K-, Sigma-, Xi-, and Omega- 00159 } else if ( particle == G4PionMinus::PionMinus() || 00160 particle == G4KaonMinus::KaonMinus() || 00161 particle == G4SigmaMinus::SigmaMinus() || 00162 particle == G4XiMinus::XiMinus() || 00163 particle == G4OmegaMinus::OmegaMinus() ) { 00164 if ( hBertiniProcess->IsApplicable( *particle ) ) { 00165 pmanager->AddRestProcess( hBertiniProcess ); 00166 if ( verbose > 1 ) { 00167 G4cout << "### G4HadronicAbsorptionBertini added for " 00168 << particle->GetParticleName() << G4endl; 00169 } 00170 } 00171 00172 } else { 00173 if ( verbose > 1 ) { 00174 G4cout << "WARNING in G4StoppingPhysics::ConstructProcess: \ 00175 not able to deal with nuclear stopping of " 00176 << particle->GetParticleName() << G4endl; 00177 } 00178 } 00179 } 00180 00181 } // end of while loop 00182 }