#include "ModularPhysics.hh" #include "G4RegionStore.hh" #include "G4ProcessManager.hh" #include "G4UserLimits.hh" #include "G4BosonConstructor.hh" #include "G4LeptonConstructor.hh" #include "G4MesonConstructor.hh" #include "G4BosonConstructor.hh" #include "G4BaryonConstructor.hh" #include "G4IonConstructor.hh" #include "G4PhysicsListHelper.hh" #include "G4ComptonScattering.hh" #include "G4GammaConversion.hh" #include "G4PhotoElectricEffect.hh" #include "G4eMultipleScattering.hh" #include "G4eIonisation.hh" #include "G4eBremsstrahlung.hh" #include "G4eplusAnnihilation.hh" #include "G4MuMultipleScattering.hh" #include "G4MuIonisation.hh" #include "G4MuBremsstrahlung.hh" #include "G4MuPairProduction.hh" #include "G4hMultipleScattering.hh" #include "G4hIonisation.hh" #include "G4hBremsstrahlung.hh" #include "G4hPairProduction.hh" #include "G4ionIonisation.hh" //#include "G4EmProcessOptions.hh" // G4 4.10 #include "G4VAtomDeexcitation.hh" // G4 4.11 Replaces G4EmProcessOptions #include "G4EmLivermorePhysics.hh" #include "G4DecayPhysics.hh" #include "G4LivermorePhotoElectricModel.hh" #include "G4LivermoreComptonModel.hh" #include "G4LivermoreGammaConversionModel.hh" #include "G4RayleighScattering.hh" #include "G4LivermoreRayleighModel.hh" #include "G4LivermoreIonisationModel.hh" #include "G4LivermoreBremsstrahlungModel.hh" #include "G4UniversalFluctuation.hh" #include "G4Decay.hh" #include "G4RadioactiveDecay.hh" #include "G4RadioactiveDecayPhysics.hh" #include "G4SystemOfUnits.hh" #include "G4HadronElasticPhysicsHP.hh" #include "G4HadronPhysicsQGSP_BIC_HP.hh" ModularPhysics::ModularPhysics() : G4VModularPhysicsList() { defaultCutValue = 10*micrometer; SetVerboseLevel(1); emPhysicsList = new G4EmLivermorePhysics(); // RegisterPhysics(emPhysicsList); // new hadronList = new G4HadronElasticPhysicsHP(); // RegisterPhysics(hadronList); // inelastichadronList = new G4HadronPhysicsQGSP_BIC_HP(); // RegisterPhysics(inelastichadronList); // new particleList = new G4DecayPhysics(); // RegisterPhysics(particleList); // new decPhysicsList = new G4RadioactiveDecayPhysics(); // RegisterPhysics(decPhysicsList); // new } ModularPhysics::~ModularPhysics() { } void ModularPhysics::ConstructParticle() { particleList->ConstructParticle(); } void ModularPhysics::ConstructProcess() { // transportation AddTransportation(); // electromagnetic physics list emPhysicsList->ConstructProcess(); // particle physics list // particleList->ConstructProcess(); // decay physics list decPhysicsList->ConstructProcess(); // HP models hadronList->ConstructProcess(); inelastichadronList->ConstructProcess(); } void ModularPhysics::SetCuts() { if (verboseLevel >0) { G4cout << "PhysicsList::SetCuts:"; G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; } // 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(defaultCutValue, "gamma"); SetCutValue(defaultCutValue, "e-"); SetCutValue(defaultCutValue, "e+"); SetCutValue(defaultCutValue, "proton"); G4ProductionCuts *opt_cut = new G4ProductionCuts(); opt_cut->SetProductionCut(defaultCutValue/1000.,"gamma"); opt_cut->SetProductionCut(1*meter,"e-"); opt_cut->SetProductionCut(1*meter,"e+"); opt_cut->SetProductionCut(1*meter, "proton"); G4Region* scoreLogReg = (G4RegionStore::GetInstance())->GetRegion("scoreLogReg"); scoreLogReg->SetProductionCuts(opt_cut); G4EmParameters* emOptions = G4EmParameters::Instance(); emOptions->SetDeexActiveRegion("scoreLogReg", true, true, true); // deexc., auger, pixe if (verboseLevel>0) DumpCutValuesTable(); }