#include "physics.hh" #include "G4SystemOfUnits.hh" #include "G4Gamma.hh" #include "G4Electron.hh" #include "G4Positron.hh" #include "G4LossTableManager.hh" #include "G4UnitsTable.hh" //#include " G4ProductionCutsTable.hh" physicsList::physicsList() { G4LossTableManager::Instance(); cutForGamma = 0.00001*mm; cutForElectron = 0.00001*mm; cutForPositron = 0.00001*mm; G4double lowLimit = 250. * eV; G4double highLimit = 100. * GeV; G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(lowLimit, highLimit); // RegisterPhysics (new G4EmStandardPhysics()); // RegisterPhysics (new G4EmLowEPPhysics()); RegisterPhysics (new G4EmPenelopePhysics()); // RegisterPhysics (new G4EmStandardPhysicsGS()); // RegisterPhysics (new G4EmStandardPhysics_option4()); SetVerboseLevel(1); } physicsList::~physicsList() {} void physicsList::SetCuts() { // set cut values for gamma at first and for e- second and next for e+, // because some processes for e+/e- need cut values for gamma SetCutValue(cutForGamma, "gamma"); SetCutValue(cutForElectron, "e-"); SetCutValue(cutForPositron, "e+"); // if (verboseLevel >0){ // G4cout << "physicsList::SetCuts:"; // G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; // } if (verboseLevel>0) DumpCutValuesTable(); } void physicsList::SetCutForGamma(G4double cut) { cutForGamma = cut; SetParticleCuts(cutForGamma, G4Gamma::Gamma()); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void physicsList::SetCutForElectron(G4double cut) { cutForElectron = cut; SetParticleCuts(cutForElectron, G4Electron::Electron()); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void physicsList::SetCutForPositron(G4double cut) { cutForPositron = cut; SetParticleCuts(cutForPositron, G4Positron::Positron()); }