71 outFile <<
"G4LFission is one of the Low Energy Parameterized\n"
72 <<
"(LEP) models used to implement neutron-induced fission of\n"
73 <<
"nuclei. It is a re-engineered version of the GHEISHA code\n"
74 <<
"of H. Fesefeldt which emits neutrons and gammas but no\n"
75 <<
"nuclear fragments. The model is applicable to all incident\n"
76 <<
"neutron energies.\n";
79void G4LFission::init()
85 for (i = 2; i <= 10; i++) {
87 xxx = std::sqrt(2.29*xx);
88 spneut[i-1] = spneut[i-2] +
G4Exp(-xx/0.965)*(
G4Exp(xxx) -
G4Exp(-xxx))/2.;
90 for (i = 1; i <= 10; i++) {
91 spneut[i-1] = spneut[i-1]/spneut[9];
93 " spneut=" << spneut[i-1] <<
G4endl;
116 G4cout <<
"G4LFission:ApplyYourself: incident particle:" <<
G4endl;
127 G4cout <<
"G4LFission:ApplyYourself: material:" <<
G4endl;
130 G4cout <<
"atomic mass " <<
135 E0 = std::sqrt(std::abs(E02));
136 if (E02 < 0) E0 = -E0;
149 if (e1 < 1.) e1 = 1.;
155 if (!photofission) avern = 2.569 + 0.900*
G4Log(e1);
160 G4double ran = G4RandGauss::shoot();
162 G4int nn =
static_cast<G4int>(avern + ran*1.23 + 0.5);
163 ran = G4RandGauss::shoot();
165 G4int ng =
static_cast<G4int>(averg + ran*3. + 0.5);
174 for (i = 1; i <= nn; i++) {
177 for (j = 1; j <= 10; j++) {
178 if (ran < spneut[j-1])
goto label12;
193 for (i = 1; i <= ng; i++) {
207 for (i = 1; i <= nn + ng; i++) {
211 G4double sint = std::sqrt(std::abs(1. - cost*cost));
217 G4double px = pp*sint*std::sin(phi);
218 G4double py = pp*sint*std::cos(phi);
226 a = (a/(E + E0) - e)/E0;
231 G4double p2 = px*px + py*py + pz*pz;
233 e = std::sqrt(e0*e0 + p2);
256 if (ia < 1)
return 0;
258 if (iz < 0)
return 0;
259 if (iz > ia)
return 0;
262 if (iz == 0)
return rmn;
263 if (iz == 1)
return rmp + rmel;
265 else if (ia == 2 && iz == 1) {
268 else if (ia == 4 && iz == 2) {
273 G4double mass = (
A - Z)*rmn + Z*rmp + Z*rmel - 15.67*
A
275 + 93.15*(
A/2. - Z)*(
A/2. - Z)/
A
276 + 0.6984523*Z*Z/Pow->
A13(
A);
277 G4int ipp = (ia - iz)%2;
279 if (ipp == izz) mass = mass + (ipp + izz -1)*12.*Pow->
powA(
A, -0.5);
287 return std::pair<G4double, G4double>(10.0*perCent, 350.0*CLHEP::GeV);
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
G4ThreeVector G4ParticleMomentum
G4GLOB_DLL std::ostream G4cout
static G4Alpha * AlphaDefinition()
static G4Deuteron * DeuteronDefinition()
void SetMomentumDirection(const G4ThreeVector &aDirection)
G4ParticleDefinition * GetDefinition() const
G4double GetTotalEnergy() const
G4double GetTotalMomentum() const
void SetKineticEnergy(G4double aEnergy)
static G4Electron * ElectronDefinition()
static G4Gamma * GammaDefinition()
void SetStatusChange(G4HadFinalStateStatus aS)
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
G4HadSecondary * GetSecondary(size_t i)
G4double GetTotalMomentum() const
const G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4double GetTotalEnergy() const
G4DynamicParticle * GetParticle()
G4HadFinalState theParticleChange
void SetMinEnergy(G4double anEnergy)
const G4String & GetModelName() const
void SetMaxEnergy(const G4double anEnergy)
G4LFission(const G4String &name="G4LFission")
virtual const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const
virtual void ModelDescription(std::ostream &outFile) const
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
static G4double Atomas(const G4double A, const G4double Z)
static G4Neutron * NeutronDefinition()
G4double GetPDGMass() const
G4double GetPDGCharge() const
static G4int GetModelID(const G4int modelIndex)
static G4Pow * GetInstance()
G4double A13(G4double A) const
G4double powA(G4double A, G4double y) const
G4double A23(G4double A) const
static G4Proton * ProtonDefinition()