G4StoppingPhysics Class Reference

#include <G4StoppingPhysics.hh>

Inheritance diagram for G4StoppingPhysics:

G4VPhysicsConstructor

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 ()

Detailed Description

Definition at line 63 of file G4StoppingPhysics.hh.


Constructor & Destructor Documentation

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]

Definition at line 87 of file G4StoppingPhysics.cc.

00087 {}


Member Function Documentation

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 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:53:27 2013 for Geant4 by  doxygen 1.4.7