G4ErrorPhysicsList Class Reference

#include <G4ErrorPhysicsList.hh>

Inheritance diagram for G4ErrorPhysicsList:

G4VUserPhysicsList

Public Member Functions

 G4ErrorPhysicsList ()
virtual ~G4ErrorPhysicsList ()

Protected Member Functions

virtual void ConstructParticle ()
virtual void ConstructProcess ()
virtual void SetCuts ()
virtual void ConstructEM ()

Detailed Description

Definition at line 49 of file G4ErrorPhysicsList.hh.


Constructor & Destructor Documentation

G4ErrorPhysicsList::G4ErrorPhysicsList (  ) 

Definition at line 72 of file G4ErrorPhysicsList.cc.

References G4VUserPhysicsList::defaultCutValue.

00072                                       :  G4VUserPhysicsList()
00073 {
00074   defaultCutValue = 1.0E+9*cm; // set big step so that AlongStep computes all the energy
00075 }

G4ErrorPhysicsList::~G4ErrorPhysicsList (  )  [virtual]

Definition at line 79 of file G4ErrorPhysicsList.cc.

00080 {
00081 }


Member Function Documentation

void G4ErrorPhysicsList::ConstructEM (  )  [protected, virtual]

Definition at line 167 of file G4ErrorPhysicsList.cc.

References G4ProcessManager::AddContinuousProcess(), G4ProcessManager::AddDiscreteProcess(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetProcessManager(), G4ParticleDefinition::IsShortLived(), G4ParticleTableIterator< K, V >::reset(), G4VUserPhysicsList::theParticleIterator, and G4ParticleTableIterator< K, V >::value().

Referenced by ConstructProcess().

00168 {
00169 
00170   G4ErrorEnergyLoss* eLossProcess = new G4ErrorEnergyLoss;
00171   G4ErrorStepLengthLimitProcess* stepLengthLimitProcess = new G4ErrorStepLengthLimitProcess;
00172   G4ErrorMagFieldLimitProcess* magFieldLimitProcess = new G4ErrorMagFieldLimitProcess;
00173   new G4ErrorMessenger( stepLengthLimitProcess, magFieldLimitProcess, eLossProcess );
00174 
00175   theParticleIterator->reset();
00176   while( (*theParticleIterator)() ){
00177     G4ParticleDefinition* particle = theParticleIterator->value();
00178     G4ProcessManager* pmanager = particle->GetProcessManager();
00179     G4String particleName = particle->GetParticleName();
00180      
00181     if (particleName == "gamma") {
00182     // gamma
00183       pmanager->AddDiscreteProcess(new G4GammaConversion());
00184       pmanager->AddDiscreteProcess(new G4ComptonScattering());      
00185       pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
00186 
00187       //    } else if (particleName == "e-" || particleName == "e+"
00188       //               || particleName == "mu+" || particleName == "mu-" ) {
00189     }else if (!particle->IsShortLived() && particle->GetPDGCharge() != 0 ) {
00190   
00191       pmanager->AddContinuousProcess(eLossProcess,1);
00192       pmanager->AddDiscreteProcess( stepLengthLimitProcess, 2 ); 
00193       pmanager->AddDiscreteProcess( magFieldLimitProcess, 3 );     
00194       
00195       /*     } else if ((!particle->IsShortLived()) &&
00196                (particle->GetPDGCharge() != 0.0) && 
00197                (particle->GetParticleName() != "chargedgeantino")) {
00198      // all others charged particles except geantino
00199       //   G4VProcess* aMultipleScattering = new G4MultipleScattering();
00200      G4VProcess* anIonisation        = new G4hIonisation();     
00202      
00203      //
00204      // add processes
00205      pmanager->AddProcess(anIonisation);
00206      //   pmanager->AddProcess(aMultipleScattering);    
00208      
00209      //
00210      // set ordering for AlongStepDoIt
00211      //   pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1);
00212      pmanager->SetProcessOrdering(anIonisation, idxAlongStep,1);
00213      
00214      //
00215      // set ordering for PostStepDoIt
00216      //   pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1);
00217      pmanager->SetProcessOrdering(anIonisation, idxPostStep,1);
00219      */
00220     }
00221   }
00222 }

void G4ErrorPhysicsList::ConstructParticle (  )  [protected, virtual]

Implements G4VUserPhysicsList.

Definition at line 85 of file G4ErrorPhysicsList.cc.

References G4Electron::ElectronDefinition(), G4Gamma::GammaDefinition(), G4MuonMinus::MuonMinusDefinition(), G4MuonPlus::MuonPlusDefinition(), G4PionMinus::PionMinusDefinition(), G4PionPlus::PionPlusDefinition(), G4Positron::PositronDefinition(), and G4Proton::ProtonDefinition().

00086 {
00087 // In this method, static member functions should be called
00088   // for all particles which you want to use.
00089   // This ensures that objects of these particle types will be
00090   // created in the program. 
00091   //  gamma
00092   G4Gamma::GammaDefinition(); 
00093   //  e+/-
00094   G4Electron::ElectronDefinition();
00095   G4Positron::PositronDefinition();
00096   // mu+/-
00097   G4MuonPlus::MuonPlusDefinition();
00098   G4MuonMinus::MuonMinusDefinition();
00099 
00100   // pi+/-
00101   G4PionPlus::PionPlusDefinition();
00102   G4PionMinus::PionMinusDefinition();
00103 
00104   // proton
00105   G4Proton::ProtonDefinition();
00106 
00107 }

void G4ErrorPhysicsList::ConstructProcess (  )  [protected, virtual]

Implements G4VUserPhysicsList.

Definition at line 111 of file G4ErrorPhysicsList.cc.

References G4ProcessManager::AddProcess(), ConstructEM(), G4cout, G4endl, G4Exception(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetProcessManager(), idxAlongStep, idxPostStep, G4ParticleDefinition::IsShortLived(), G4ParticleTableIterator< K, V >::reset(), RunMustBeAborted, G4ProcessManager::SetProcessOrderingToFirst(), G4VUserPhysicsList::theParticleIterator, G4ParticleTableIterator< K, V >::value(), and G4VUserPhysicsList::verboseLevel.

00112 {
00113   G4Transportation* theTransportationProcess= new G4Transportation();
00114 
00115 #ifdef G4VERBOSE
00116     if (verboseLevel >= 4){
00117       G4cout << "G4VUserPhysicsList::ConstructProcess()  "<< G4endl;
00118     }
00119 #endif
00120 
00121   // loop over all particles in G4ParticleTable
00122   theParticleIterator->reset();
00123   while( (*theParticleIterator)() ){
00124     G4ParticleDefinition* particle = theParticleIterator->value();
00125     G4ProcessManager* pmanager = particle->GetProcessManager();
00126     if (!particle->IsShortLived()) {
00127       G4cout << particle << "G4ErrorPhysicsList:: particle process manager " << particle->GetParticleName() << " = " << particle->GetProcessManager() << G4endl;
00128       // Add transportation process for all particles other than  "shortlived"
00129       if ( pmanager == 0) {
00130         // Error !! no process manager
00131         G4String particleName = particle->GetParticleName();
00132         G4Exception("G4ErrorPhysicsList::ConstructProcess","No process manager",
00133                     RunMustBeAborted, particleName );
00134       } else {
00135         // add transportation with ordering = ( -1, "first", "first" )
00136         pmanager ->AddProcess(theTransportationProcess);
00137         pmanager ->SetProcessOrderingToFirst(theTransportationProcess, idxAlongStep);
00138         pmanager ->SetProcessOrderingToFirst(theTransportationProcess, idxPostStep);
00139       }
00140     } else {
00141       // shortlived particle case
00142     }
00143   }
00144 
00145   ConstructEM();
00146 }

void G4ErrorPhysicsList::SetCuts (  )  [protected, virtual]

Reimplemented from G4VUserPhysicsList.

Definition at line 226 of file G4ErrorPhysicsList.cc.

References G4VUserPhysicsList::SetCutsWithDefault().

00227 {
00228   //  " G4VUserPhysicsList::SetCutsWithDefault" method sets 
00229   //   the default cut value or all particle types 
00230   SetCutsWithDefault(); 
00231   // if (verboseLevel>0) 
00232   //  DumpCutValuesTable();
00233 }


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