55 #include <CLHEP/Units/SystemOfUnits.h>
56 #include <CLHEP/Units/PhysicalConstants.h>
68 : fLevelManager(nullptr), fTransition(p), fVerbose(0), fPoints(0),
69 vShellNumber(-1), fIndex(0), fTimeLimit(
DBL_MAX), fMaxLifeTime(
DBL_MAX),
70 fICM(false), fRDM(false), fSampleTime(true)
74 char* en = getenv(
"G4UseNuclearPolarization");
79 char* env = getenv(
"G4AddTimeLimitToPhotonEvaporation");
131 products->push_back(aNucleus);
142 products->push_back(aNucleus);
150 G4cout <<
"G4PhotonEvaporation::BreakUpChain RDM= " <<
fRDM <<
" "
160 products->push_back(gamma);
162 G4cout <<
"G4PhotonEvaporation::BreakUpChain: "
183 G4cout <<
"G4PhotonEvaporation::GetEmissionProbability: Z="
225 G4double gammaR2 = gammaE2*wres*wres;
226 G4double egdp2 = gammaE2 - eres*eres;
229 *gammaR2*gammaE2/(egdp2*egdp2 + gammaR2);
235 gammaR2 = gammaE2*wres2;
236 egdp2 = gammaE2 - eres2;
240 *gammaR2*gammaE2/(egdp2*egdp2 + gammaR2);
284 G4bool isLongLived =
false;
289 G4cout <<
"GenerateGamma: Exc= " << eexc <<
" Emax= "
323 G4cout <<
"Discrete emission from level Index= " <<
fIndex
327 if(0 ==
fIndex) {
return result; }
354 G4cout <<
"Ntrans= " << ntrans <<
" idx= " << idx <<
" isX= " << isX
355 <<
" icm= " << icm <<
G4endl;
368 rndm = (rndm - prob)/(1.0 - prob);
387 G4double mom = std::sqrt((e - mass)*(e + mass));
398 isGamma, isLongLived);
404 G4cout <<
"Final level E= " << efinal <<
" time= " << time
405 <<
" idx= " <<
fIndex <<
" isX " << isX
406 <<
" isGamma: " << isGamma <<
" isLongLived: " << isLongLived
407 <<
" deltaS= " << deltaS <<
" shell= " << shell <<
G4endl;
virtual void SetICM(G4bool)
virtual G4bool BreakUpChain(G4FragmentVector *theResult, G4Fragment *theNucleus)
G4float GammaProbability(size_t idx) const
static G4Pow * GetInstance()
void SetMaxHalfLife(G4double)
virtual G4FragmentVector * BreakItUp(const G4Fragment &theNucleus)
G4GammaTransition * fTransition
static G4float GREnergy[MAXGRDATA]
virtual G4double GetUpperLevelEnergy(G4int Z, G4int A)
CLHEP::Hep3Vector G4ThreeVector
virtual void RDMForced(G4bool)
G4float LifeTime(size_t i) const
virtual G4double GetFinalLevelEnergy(G4int Z, G4int A, G4double energy)
static G4float GRWidth[MAXGRDATA]
G4double fCummProbability[MAXDEPOINT]
G4PhotonEvaporation(G4GammaTransition *ptr=0)
const G4LevelManager * fLevelManager
const G4NucLevel * GetLevel(size_t i) const
virtual G4FragmentVector * BreakUp(const G4Fragment &theNucleus)
G4float FinalExcitationEnergy(size_t idx) const
G4double logZ(G4int Z) const
G4float LevelEnergy(size_t i) const
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
G4double GetCreationTime() const
const G4LorentzVector & GetMomentum() const
void SetMomentum(const G4LorentzVector &value)
std::vector< G4Fragment * > G4FragmentVector
static const double second
virtual G4double GetEmissionProbability(G4Fragment *theNucleus)
void SetGammaTransition(G4GammaTransition *)
G4double GetGroundStateMass() const
size_t SampleGammaTransition(G4double rndm) const
G4float NearestLevelEnergy(G4double energy, size_t index=0) const
size_t NearestLevelIndex(G4double energy, size_t index=0) const
static const G4double emax
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
void SetCreationTime(G4double time)
size_t NumberOfTransitions() const
virtual G4Fragment * SampleTransition(G4Fragment *nucleus, G4double newExcEnergy, G4int deltaS, size_t shell, G4bool isGamma, G4bool isLongLived)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double energy(const ThreeVector &p, const G4double m)
G4Fragment * GenerateGamma(G4Fragment *nucleus)
const G4double MaxDeltaEnergy
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4NuclearLevelData * fNuclearLevelData
size_t SampleShell(size_t idx, G4double rndm) const
static const double millibarn
const G4double LevelDensity
virtual G4Fragment * EmittedFragment(G4Fragment *theNucleus)
size_t SampleGammaETransition(G4double rndm) const
virtual G4FragmentVector * BreakUpFragment(G4Fragment *theNucleus)
G4double powZ(G4int Z, G4double y) const
G4float LifeTimeGamma(size_t i) const
void InitialiseLevelManager(G4int Z, G4int A)
G4double ComputeGroundStateMass(G4int Z, G4int A) const
static G4NuclearLevelData * GetInstance()
G4double GetExcitationEnergy() const
virtual ~G4PhotonEvaporation()
CLHEP::HepLorentzVector G4LorentzVector