60 theEvaporationProbabilityPtr(aEmissionStrategy),
61 theCoulombBarrierPtr(aCoulombBarrier),
62 EmissionProbability(0.0),
63 MaximalKineticEnergy(-1000.0)
67 ResidualMass = CoulombBarrier=0.0;
76 theEvaporationProbabilityPtr(0),
77 theCoulombBarrierPtr(0),
78 EmissionProbability(0.0),
79 MaximalKineticEnergy(-1000.0)
83 EvaporatedMass = ResidualMass = CoulombBarrier = 0.0;
89 delete theLevelDensityPtr;
104 ResidualA = FragmentA - theA;
105 ResidualZ = FragmentZ - theZ;
114 if (ResidualA <= 0 || ResidualZ <= 0 || ResidualA < ResidualZ ||
115 (ResidualA == ResidualZ && ResidualA > 1) || ExEnergy <= 0.0) {
116 CoulombBarrier = ResidualMass = 0.0;
117 MaximalKineticEnergy = -1000.0*
MeV;
118 EmissionProbability = 0.0;
125 MaximalKineticEnergy = CalcMaximalKineticEnergy(FragmentMass + ExEnergy);
136 limit= CoulombBarrier;
138 limit =
std::max(limit, FragmentMass - ResidualMass - EvaporatedMass);
142 if (MaximalKineticEnergy <= limit) EmissionProbability = 0.0;
145 EmissionProbability = theEvaporationProbabilityPtr->
146 EmissionProbability(*fragment, MaximalKineticEnergy);
151 return EmissionProbability;
162 G4double EvaporatedEnergy = GetKineticEnergy(theNucleus) + EvaporatedMass;
165 (std::sqrt((EvaporatedEnergy - EvaporatedMass)*
166 (EvaporatedEnergy + EvaporatedMass))));
173 ResidualMomentum -= EvaporatedMomentum;
180 G4double Efinal = ResidualMomentum.
e() + EvaporatedMomentum.
e();
183 G4cout <<
"@@@@@@@@@@@@@@@@@@@@@ G4Evaporation Chanel: ENERGY @@@@@@@@@@@@@@@@"
186 <<Efinal/
MeV <<
" MeV Delta: "
193 G4cout <<
"@@@@@@@@@@@@@@@@@@@@@ G4Evaporation Chanel: MOMENTUM @@@@@@@@@@@@@@@@"
201 theResult->push_back(EvaporatedFragment);
202 theResult->push_back(ResidualFragment);
208 G4double G4EvaporationChannel::CalcMaximalKineticEnergy(
G4double NucleusTotalE)
212 ((NucleusTotalE-ResidualMass)*(NucleusTotalE+ResidualMass)
213 + EvaporatedMass*EvaporatedMass)/(2.0*NucleusTotalE) - EvaporatedMass;
221 Tmax=Tmax- CoulombBarrier;
238 if (MaximalKineticEnergy < 0.0) {
240 "G4EvaporationChannel::CalcKineticEnergy: maximal kinetic at the Coulomb barrier is less than 0");
242 G4double Rb = 4.0*theLevelDensityPtr->
243 LevelDensityParameter(ResidualA+theA,ResidualZ+theZ,MaximalKineticEnergy)*
244 MaximalKineticEnergy;
247 if (RbSqrt < 160.0) PEX1 =
G4Exp(-RbSqrt);
252 Rk = 1.0 + (1./RbSqrt)*
G4Log(RandNumber + (1.0-RandNumber)*PEX1);
258 Q1 = 1.0 + Beta/(MaximalKineticEnergy);
259 Q2 = Q1*std::sqrt(Q1);
262 FRk = (3.0*std::sqrt(3.0)/2.0)/Q2 * Rk * (Q1 - Rk*Rk);
266 G4double result = MaximalKineticEnergy * (1.0-Rk*Rk) + CoulombBarrier;
272 if(
useSICB) { V= CoulombBarrier; }
278 G4double NormalizedProbability(1.0);
306 NormalizedProbability =
315 std::ostringstream errOs;
316 errOs <<
"Bad option for energy sampling in evaporation" <<
G4endl;
326 G4double SinTheta = std::sqrt(1.0 - CosTheta*CosTheta);
329 Magnitude*std::sin(Phi)*SinTheta,
static G4Pow * GetInstance()
Hep3Vector boostVector() const
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4double G4NeutronHPJENDLHEData::G4double result
virtual G4double GetEmissionProbability(G4Fragment *fragment)
G4double ProbabilityDistributionFunction(const G4Fragment &aFragment, G4double K)
G4GLOB_DLL std::ostream G4cout
G4double Z13(G4int Z) const
const G4LorentzVector & GetMomentum() const
HepLorentzVector & boost(double, double, double)
G4double GetPairingCorrection(G4int A, G4int Z) const
std::vector< G4Fragment * > G4FragmentVector
G4double GetGroundStateMass() const
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
static G4PairingCorrection * GetInstance()
virtual ~G4EvaporationChannel()
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4FragmentVector * BreakUp(const G4Fragment &theNucleus)
G4double Z23(G4int Z) const
virtual G4double GetCoulombBarrier(G4int ARes, G4int ZRes, G4double U) const =0
G4double GetExcitationEnergy() const