#include "PhysicsList.hh" #include "G4UnitsTable.hh" #include "G4ParticleTypes.hh" #include "G4IonConstructor.hh" #include "G4PhysicsListHelper.hh" #include "G4Radioactivation.hh" #include "G4SystemOfUnits.hh" #include "G4NuclideTable.hh" #include "G4LossTableManager.hh" #include "G4UAtomicDeexcitation.hh" #include "G4NuclearLevelData.hh" #include "G4DeexPrecoParameters.hh" #include "G4NuclideTable.hh" #include "G4ProcessVector.hh" #include "G4ProcessManager.hh" #include "TritiumPhysics.hh" TritiumPhysics::TritiumPhysics() : G4VUserPhysicsList() { // mandatory for G4NuclideTable // G4NuclideTable::GetInstance()->SetThresholdOfHalfLife(0.1*picosecond); G4NuclideTable::GetInstance()->SetLevelTolerance(1.0*eV); //read new PhotonEvaporation data set // G4DeexPrecoParameters* deex = G4NuclearLevelData::GetInstance()->GetParameters(); deex->SetCorrelatedGamma(false); deex->SetStoreAllLevels(true); deex->SetIsomerProduction(true); deex->SetMaxLifeTime(G4NuclideTable::GetInstance()->GetThresholdOfHalfLife() /std::log(2.)); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... TritiumPhysics::~TritiumPhysics() { } void TritiumPhysics::ConstructParticle() { } void TritiumPhysics::ConstructProcess() { // Make tritium unstable, so it can be decayed G4ParticleDefinition* tr = G4Triton::Definition(); tr->SetPDGStable(false); // Remove G4Decay process, which requires a registered decay table G4VProcess* decay = 0; G4ProcessManager* pman = tr->GetProcessManager(); G4ProcessVector* pvec = pman->GetAtRestProcessVector(); for (G4int i=0; isize() && decay==0; i++) { if ((*pvec)[i]->GetProcessName() == "Decay") decay = (*pvec)[i]; } if (decay) pman->RemoveProcess(decay); // Attach RDM, which is a rest-discrete process #if G4VERSION_NUMBER < 1060 /* See G4RadioactiveDecayPhysics.cc */ decay = new G4RadioactiveDecay(); #else decay = new G4RadioactiveDecayBase(); #endif tr->GetProcessManager()->AddProcess(decay, 1000, -1, 1000); }