70 outFile <<
"G4LFission is one of the Low Energy Parameterized\n"
71 <<
"(LEP) models used to implement neutron-induced fission of\n"
72 <<
"nuclei. It is a re-engineered version of the GHEISHA code\n"
73 <<
"of H. Fesefeldt which emits neutrons and gammas but no\n"
74 <<
"nuclear fragments. The model is applicable to all incident\n"
75 <<
"neutron energies.\n";
78 void G4LFission::init()
84 for (i = 2; i <= 10; i++) {
86 xxx = std::sqrt(2.29*xx);
87 spneut[i-1] = spneut[i-2] +
G4Exp(-xx/0.965)*(
G4Exp(xxx) -
G4Exp(-xxx))/2.;
89 for (i = 1; i <= 10; i++) {
90 spneut[i-1] = spneut[i-1]/spneut[9];
92 " spneut=" << spneut[i-1] <<
G4endl;
115 G4cout <<
"G4LFission:ApplyYourself: incident particle:" <<
G4endl;
126 G4cout <<
"G4LFission:ApplyYourself: material:" <<
G4endl;
129 G4cout <<
"atomic mass " <<
134 E0 = std::sqrt(std::abs(E02));
135 if (E02 < 0) E0 = -E0;
148 if (e1 < 1.) e1 = 1.;
154 if (!photofission) avern = 2.569 + 0.900*
G4Log(e1);
164 G4int ng =
static_cast<G4int>(averg + ran*3. + 0.5);
173 for (i = 1; i <=
nn; i++) {
176 for (j = 1; j <= 10; j++) {
177 if (ran < spneut[j-1])
goto label12;
192 for (i = 1; i <= ng; i++) {
206 for (i = 1; i <= nn + ng; i++) {
210 G4double sint = std::sqrt(std::abs(1. - cost*cost));
216 G4double px = pp*sint*std::sin(phi);
217 G4double py = pp*sint*std::cos(phi);
225 a = (a/(E + E0) - e)/E0;
230 G4double p2 = px*px + py*py + pz*pz;
232 e = std::sqrt(e0*e0 + p2);
255 if (ia < 1)
return 0;
257 if (iz < 0)
return 0;
258 if (iz > ia)
return 0;
261 if (iz == 0)
return rmn;
262 if (iz == 1)
return rmp + rmel;
264 else if (ia == 2 && iz == 1) {
267 else if (ia == 4 && iz == 2) {
272 G4double mass = (A -
Z)*rmn + Z*rmp + Z*rmel - 15.67*A
274 + 93.15*(A/2. -
Z)*(A/2. - Z)/A
275 + 0.6984523*Z*Z/Pow->
A13(A);
276 G4int ipp = (ia - iz)%2;
278 if (ipp == izz) mass = mass + (ipp + izz -1)*12.*Pow->
powA(A, -0.5);
286 return std::pair<G4double, G4double>(5*
perCent,250*
GeV);
static G4Pow * GetInstance()
static G4Electron * ElectronDefinition()
G4double powA(G4double A, G4double y) const
ThreeVector shoot(const G4int Ap, const G4int Af)
G4HadSecondary * GetSecondary(size_t i)
virtual const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const
G4double GetTotalEnergy() const
virtual void ModelDescription(std::ostream &outFile) const
static constexpr double perCent
static G4Proton * ProtonDefinition()
void SetMomentumDirection(const G4ThreeVector &aDirection)
G4ParticleDefinition * GetDefinition() const
static G4double Atomas(const G4double A, const G4double Z)
static constexpr double twopi
G4double GetTotalMomentum() const
void SetStatusChange(G4HadFinalStateStatus aS)
void SetMinEnergy(G4double anEnergy)
G4double A23(G4double A) const
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
const G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4LFission(const G4String &name="G4LFission")
const G4LorentzVector & Get4Momentum() const
void SetKineticEnergy(G4double aEnergy)
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
G4double GetPDGMass() const
G4double A13(G4double A) const
G4DynamicParticle * GetParticle()
static constexpr double GeV
void SetMaxEnergy(const G4double anEnergy)
G4HadFinalState theParticleChange
static constexpr double MeV
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
G4double GetPDGCharge() const
G4ThreeVector G4ParticleMomentum
static G4Deuteron * DeuteronDefinition()
static G4Alpha * AlphaDefinition()
static G4Neutron * NeutronDefinition()
G4double GetTotalMomentum() const
G4double GetTotalEnergy() const
static G4Gamma * GammaDefinition()