47 MyOwnFissionBarrier =
true;
50 MyOwnFissionProbability =
true;
53 MyOwnLevelDensity =
true;
55 MaximalKineticEnergy = -1000.0;
57 FissionProbability = 0.0;
58 LevelDensityParameter = 0.0;
64 if (MyOwnFissionBarrier)
delete theFissionBarrierPtr;
65 if (MyOwnFissionProbability)
delete theFissionProbabilityPtr;
66 if (MyOwnLevelDensity)
delete theLevelDensityPtr;
78 if (anA >= 65 && ExEnergy > 0.0) {
79 FissionBarrier = theFissionBarrierPtr->
FissionBarrier(anA,aZ,ExEnergy);
80 MaximalKineticEnergy = ExEnergy - FissionBarrier;
81 LevelDensityParameter =
85 MaximalKineticEnergy);
88 MaximalKineticEnergy = -1000.0;
89 LevelDensityParameter = 0.0;
90 FissionProbability = 0.0;
92 return FissionProbability;
106 if (U <= pcorr) {
return Fragment1; }
127 G4double FragmentsExcitationEnergy = 0.0;
128 G4double FragmentsKineticEnergy = 0.0;
134 A1 = FissionAtomicNumber(A);
135 Z1 = FissionCharge(A, Z, A1);
141 if (A2 < 1 || Z2 < 0 || Z2 > A2) {
142 FragmentsExcitationEnergy = -1.0;
147 G4double Tmax = M + U - M1 - M2 - pcorr;
151 FragmentsExcitationEnergy = -1.0;
155 FragmentsKineticEnergy = FissionKineticEnergy( A , Z,
166 FragmentsExcitationEnergy =
168 Tmax - FragmentsKineticEnergy + pcorr;
171 }
while (FragmentsExcitationEnergy < 0.0
174 if (FragmentsExcitationEnergy <= 0.0) {
176 "G4CompetitiveFission::BreakItUp: Excitation energy for fragments < 0.0!");
180 M1 += FragmentsExcitationEnergy * A1/
static_cast<G4double>(
A);
182 M2 += FragmentsExcitationEnergy * A2/
static_cast<G4double>(
A);
186 G4double etot1 = ((M - M2)*(M + M2) + M1*M1)/(2*M);
192 Fragment1 =
new G4Fragment( A1, Z1, FourMomentum1);
193 theNucleusMomentum -= FourMomentum1;
200 G4CompetitiveFission::FissionAtomicNumber(
G4int A)
216 if (w > 1000.0 ) { C2 = C2S; }
217 else if (w < 0.001) { C2 = C2A; }
230 G4double Mass1 = MassDistribution(As,A);
231 G4double Mass2 = MassDistribution(Am1,A);
233 G4double Mass4 = MassDistribution(Am2,A);
237 if (Mass2 > MassMax) { MassMax = Mass2; }
238 if (Mass3 > MassMax) { MassMax = Mass3; }
239 if (Mass4 > MassMax) { MassMax = Mass4; }
240 if (Mass5 > MassMax) { MassMax = Mass5; }
247 Pm = MassDistribution(xm,A);
268 + 0.5*(
G4Exp(-0.5*z1*z1) +
G4Exp(-0.5*z2*z2));
272 if (w > 1000) { res = Xsym; }
273 else if (w < 0.001) { res = Xasym; }
274 else { res = w*Xsym+Xasym; }
283 if (Af >= 134.0) { DeltaZ = -0.45; }
284 else if (Af <= (A-134.0)) { DeltaZ = 0.45; }
285 else { DeltaZ = -0.45*(Af-A*0.5)/(134.0-A*0.5); }
293 }
while (theZ < 1.0 || theZ > (Z-1.0) || theZ > Af);
299 G4CompetitiveFission::FissionKineticEnergy(
G4int A,
G4int Z,
310 if (theParam.
GetW() <= 1000) {
313 Pas = 0.5*
G4Exp(-0.5*x1*x1) +
G4Exp(-0.5*x2*x2);
317 if (theParam.
GetW() >= 0.001) {
343 (AsymmetricRatio(A,A11)+AsymmetricRatio(A,A12))+
344 theParam.
GetSigma2()*(AsymmetricRatio(A,A21)+AsymmetricRatio(A,A22));
346 TaverageAfMax = (Eaverage + 12.5 * Xsy) * (PPas/ScaleFactor) *
352 TaverageAfMax = (Eaverage - 12.5*
CLHEP::MeV*Xas)
353 *SymmetricRatio(A,
G4double(AfMax))/SymmetricRatio(A, As0);
363 if (++i > 100)
return Eaverage;
365 }
while (KineticEnergy < Eaverage-3.72*ESigma ||
366 KineticEnergy > Eaverage+3.72*ESigma ||
367 KineticEnergy > Tmax);
369 return KineticEnergy;
static G4Pow * GetInstance()
ThreeVector shoot(const G4int Ap, const G4int Af)
Hep3Vector boostVector() const
virtual G4double FissionBarrier(G4int A, G4int Z, G4double U) const =0
G4double GetSigma2(void) const
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4double GetSigma1(void) const
virtual G4double GetEmissionProbability(G4Fragment *theNucleus)
virtual ~G4CompetitiveFission()
G4double Z13(G4int Z) const
double A(double temperature)
G4double GetSigmaS(void) const
const G4LorentzVector & GetMomentum() const
HepLorentzVector & boost(double, double, double)
void SetMomentum(const G4LorentzVector &value)
virtual G4Fragment * EmittedFragment(G4Fragment *theNucleus)
static constexpr double MeV
G4double GetGroundStateMass() const
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
static G4PairingCorrection * GetInstance()
G4double GetFissionPairingCorrection(G4int A, G4int Z) const
G4double GetAs(void) const
T max(const T t1, const T t2)
brief Return the largest of the two arguments
void SetZandA_asInt(G4int Znew, G4int Anew)
virtual G4double LevelDensityParameter(G4int A, G4int Z, G4double U) const =0
G4double GetW(void) const
virtual G4double EmissionProbability(const G4Fragment &fragment, const G4double anEnergy)=0
G4double GetExcitationEnergy() const
void DefineParameters(G4int A, G4int Z, G4double ExEnergy, G4double FissionBarrier)