54 EmissionProbability(0.0),
55 MaximalKineticEnergy(-
CLHEP::GeV),
56 theEvaporationProbabilityPtr(aEmissionStrategy),
62 MyOwnLevelDensity =
true;
64 ResidualMass = CoulombBarrier = 0.0;
66 ResidualZ = ResidualA = 0;
73 if (MyOwnLevelDensity) {
delete theLevelDensityPtr; }
74 delete theCoulombBarrierPtr;
90 EmissionProbability = 0.0;
93 if (ResidualA >= ResidualZ && ResidualZ >= 0 && ResidualA >=
A) {
101 G4double Etot = FragmentMass + ExEnergy;
109 if(Etot > ResidualMass + EvaporatedMass + CoulombBarrier) {
112 MaximalKineticEnergy = ((Etot-ResidualMass)*(Etot+ResidualMass)
113 + EvaporatedMass*EvaporatedMass)/(2.0*Etot)
114 - EvaporatedMass - CoulombBarrier;
118 if (MaximalKineticEnergy > 0.0) {
120 EmissionProbability = theEvaporationProbabilityPtr->
121 EmissionProbability(*fragment, MaximalKineticEnergy);
127 return EmissionProbability;
133 G4double evEnergy = SampleKineticEnergy(*theNucleus) + EvaporatedMass;
136 std::sqrt((evEnergy - EvaporatedMass)*(evEnergy + EvaporatedMass));
142 evFragment =
new G4Fragment(A, Z, EvaporatedMomentum);
144 ResidualMomentum -= EvaporatedMomentum;
163 G4double Ux = (2.5 + 150.0/ResidualA)*MeV;
178 G4double TCN = 1.0/(std::sqrt(aCN/UxCN) - 1.5/UxCN);
185 - 1.25*
G4Log(UxCN/MeV) + 2.0*std::sqrt(aCN*UxCN));
186 InitialLevelDensity = (pi/12.0)*
G4Exp((U-E0CN)/TCN)/TCN;
192 InitialLevelDensity = (
pi/12.0)*
G4Exp(2*x1)/(x*std::sqrt(x1));
198 G4double gg = (2.0*
Spin+1.0)*EvaporatedMass/(pi2* hbarc*hbarc);
207 Rb = (1.12*(Aj + Ad) - 0.86*((Aj+Ad)/(Aj*Ad))+2.85)*fermi;
213 Rb=1.5*(Aj+Ad)*fermi;
222 G4double ConstantFactor = gg*GeometricalXS*
Alpha*
pi/(InitialLevelDensity*12);
226 G4double theEnergy = MaximalKineticEnergy + CoulombBarrier;
230 for(
G4int i=0; i<100; ++i) {
236 G4double T = 1.0/(std::sqrt(a/Ux) - 1.5/Ux);
239 if (theEnergy - KineticEnergy < Ex) {
241 - 1.25*
G4Log(Ux) + 2.0*std::sqrt(a*Ux));
242 Probability *=
G4Exp((theEnergy-KineticEnergy-E0)/T)/T;
246 G4Exp(2*std::sqrt(a*edelta) - 0.25*
G4Log(a*edelta*e2*e2));
248 if(EmissionProbability*
G4UniformRand() <= Probability) {
break; }
256 theEvaporationProbabilityPtr->
Dump();
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
G4ThreeVector G4RandomDirection()
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
G4double GetGroundStateMass() const
void SetZandA_asInt(G4int Znew, G4int Anew, G4int Lnew=0)
G4double GetExcitationEnergy() const
const G4LorentzVector & GetMomentum() const
void SetCreatorModelID(G4int value)
void SetMomentum(const G4LorentzVector &value)
virtual void Dump() const
virtual G4Fragment * EmittedFragment(G4Fragment *theNucleus)
G4GEMChannel(G4int theA, G4int theZ, const G4String &aName, G4GEMProbability *aEmissionStrategy)
virtual G4double GetEmissionProbability(G4Fragment *theNucleus)
G4double CalcAlphaParam(const G4Fragment &) const
G4double CalcBetaParam(const G4Fragment &) const
G4double GetSpin(void) const
void SetCoulomBarrier(const G4VCoulombBarrier *aCoulombBarrierStrategy)
G4PairingCorrection * GetPairingCorrection()
static G4NuclearLevelData * GetInstance()
static G4double GetNuclearMass(const G4double A, const G4double Z)
static G4int GetModelID(const G4int modelIndex)
static G4Pow * GetInstance()
G4double Z13(G4int Z) const
virtual G4double GetCoulombBarrier(G4int ARes, G4int ZRes, G4double U=0.0) const =0
virtual G4double LevelDensityParameter(G4int A, G4int Z, G4double U) const =0