80 if (
A >= 65 &&
Z > 16) {
106 if (U <= pcorr) {
return Fragment1; }
127 G4double FragmentsExcitationEnergy = 0.0;
128 G4double FragmentsKineticEnergy = 0.0;
141 if (A2 < 1 || Z2 < 0 || Z2 > A2) {
142 FragmentsExcitationEnergy = -1.0;
151 FragmentsExcitationEnergy = -1.0;
166 FragmentsExcitationEnergy =
167 Tmax - FragmentsKineticEnergy + pcorr;
170 }
while (FragmentsExcitationEnergy < 0.0 && ++Trials < 100);
172 if (FragmentsExcitationEnergy <= 0.0) {
174 "G4CompetitiveFission::BreakItUp: Excitation energy for fragments < 0.0!");
178 M1 += FragmentsExcitationEnergy * A1/
static_cast<G4double>(
A);
180 M2 += FragmentsExcitationEnergy * A2/
static_cast<G4double>(
A);
184 G4double etot1 = ((
M - M2)*(
M + M2) + M1*M1)/(2*
M);
193 theNucleusMomentum -= FourMomentum1;
217 if (w > 1000.0 ) {
C2 = C2S; }
218 else if (w < 0.001) {
C2 = C2A; }
238 if (Mass2 > MassMax) { MassMax = Mass2; }
239 if (Mass3 > MassMax) { MassMax = Mass3; }
240 if (Mass4 > MassMax) { MassMax = Mass4; }
241 if (Mass5 > MassMax) { MassMax = Mass5; }
273 if (w > 1000) { res = Xsym; }
274 else if (w < 0.001) { res = Xasym; }
275 else { res = w*Xsym+Xasym; }
284 if (Af >= 134.0) { DeltaZ = -0.45; }
285 else if (Af <= (
A-134.0)) { DeltaZ = 0.45; }
286 else { DeltaZ = -0.45*(Af-
A*0.5)/(134.0-
A*0.5); }
294 }
while (theZ < 1.0 || theZ > (
Z-1.0) || theZ > Af);
322 G4double Psy = (Pas + Ps > 0.0) ? Ps/(Pas+Ps) : 0.5;
327 G4double Xas = (PPas + PPsy > 0.0) ? PPas/(PPas+PPsy) : 0.5;
347 TaverageAfMax = (Eaverage + 12.5 * Xsy) * (PPas/ScaleFactor) *
353 TaverageAfMax = (Eaverage - 12.5*
CLHEP::MeV*Xas)
364 if (++i > 100)
return Eaverage;
366 }
while (KineticEnergy < Eaverage-3.72*ESigma ||
367 KineticEnergy > Eaverage+3.72*ESigma ||
368 KineticEnergy > Tmax);
370 return KineticEnergy;
G4ThreeVector G4RandomDirection()
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
void SetEmissionStrategy(G4VEmissionProbability *aFissionProb)
void SetLevelDensityParameter(G4VLevelDensityParameter *aLevelDensity)
G4FissionParameters theParam
G4bool myOwnFissionProbability
G4double GetEmissionProbability(G4Fragment *theNucleus) override
G4double SymmetricRatio(G4int A, G4double A11) const
G4double LocalExp(G4double x) const
G4VFissionBarrier * theFissionBarrierPtr
void SetFissionBarrier(G4VFissionBarrier *aBarrier)
G4double fissionProbability
G4VEmissionProbability * theFissionProbabilityPtr
G4double AsymmetricRatio(G4int A, G4double A11) const
G4Fragment * EmittedFragment(G4Fragment *theNucleus) override
G4PairingCorrection * pairingCorrection
~G4CompetitiveFission() override
G4double FissionKineticEnergy(G4int A, G4int Z, G4int Af1, G4int Zf1, G4int Af2, G4int Zf2, G4double U, G4double Tmax)
G4int FissionCharge(G4int A, G4int Z, G4double Af)
G4double maxKineticEnergy
G4bool myOwnFissionBarrier
G4double MassDistribution(G4double x, G4int A)
G4int FissionAtomicNumber(G4int A)
G4VLevelDensityParameter * theLevelDensityPtr
G4double GetAs(void) const
G4double GetSigma1(void) const
G4double GetW(void) const
G4double GetSigmaS(void) const
void DefineParameters(G4int A, G4int Z, G4double ExEnergy, G4double FissionBarrier)
G4double GetSigma2(void) const
G4double GetGroundStateMass() const
G4double GetExcitationEnergy() const
const G4LorentzVector & GetMomentum() const
void SetCreatorModelID(G4int value)
void SetMomentum(const G4LorentzVector &value)
void SetZandA_asInt(G4int Znew, G4int Anew)
G4PairingCorrection * GetPairingCorrection()
static G4NuclearLevelData * GetInstance()
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4double GetFissionPairingCorrection(G4int A, G4int Z) const
static G4int GetModelID(const G4int modelIndex)
static G4Pow * GetInstance()
G4double Z13(G4int Z) const
virtual G4double EmissionProbability(const G4Fragment &fragment, G4double anEnergy)
virtual G4double FissionBarrier(G4int A, G4int Z, G4double U) const =0
static constexpr double MeV
ThreeVector shoot(const G4int Ap, const G4int Af)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
static const G4double Z1[5]