Import Geant4 11.2.2 source tree
This commit is contained in:
@@ -6,6 +6,18 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2024-04-08 Vladimir Ivanchenko, Alvaro Tolosa Delgado (radioactive_decay-V11-01-11)
|
||||
- G4BetaPlusDecay, G4BetaMinusDecay - minor fix of radioactive_decay-V11-02-02
|
||||
In case Q-value is bigger than mass diference, betas in the tail of the spectrum
|
||||
may have more energy than residual free energy. To minimize the non-conservation
|
||||
of 4-momentum, in such cases neutrino and daughter nucleus are given 1 eV, leading
|
||||
to non conservation of linear momentum because momentum of beta is not counterbalanced.
|
||||
|
||||
## 2024-02-20 Vladimir Ivanchenko
|
||||
- G4BetaPlusDecay, G4BetaMinusDecay - added extra numerical protection on
|
||||
level of 1 eV to avoid precision lost and production of neutrino with
|
||||
negative kinetic energy
|
||||
|
||||
## 2024-02-13 Vladimir Ivanchenko (radioactive_decay-V11-01-10)
|
||||
- G4BetaPlusDecay, G4BetaMinusDecay - fixed sampling algorithm (problem #2588)
|
||||
|
||||
|
||||
@@ -65,6 +65,7 @@ G4double G4BetaDecayCorrections::FermiFunction(const G4double& W)
|
||||
{
|
||||
// Calculate the relativistic Fermi function. Argument W is the
|
||||
// total electron energy in units of electron mass.
|
||||
// Ref: E. Feenberg, G. Trigg, Reviews of Modern Physics, 22(1950)
|
||||
|
||||
G4double Wprime;
|
||||
if (Z < 0) {
|
||||
|
||||
@@ -116,13 +116,12 @@ G4DecayProducts* G4BetaMinusDecay::DecayIt(G4double)
|
||||
G4LorentzVector lv(-eMomentum*dir.x(), -eMomentum*dir.y(), -eMomentum*dir.z(),
|
||||
parentMass - eKE - eMass);
|
||||
|
||||
G4double edel = std::max(lv.e() - resMass, 0.0);
|
||||
// Free energy should be above zero
|
||||
if (edel > 0.0) {
|
||||
|
||||
// centrum of mass system
|
||||
G4double M = lv.mag();
|
||||
|
||||
// centrum of mass system
|
||||
G4double M = lv.mag();
|
||||
const G4double elim = CLHEP::eV;
|
||||
G4double edel = M - resMass;
|
||||
// Free energy should be above limit
|
||||
if (edel >= elim) {
|
||||
// neutrino
|
||||
G4double eNu = 0.5*(M - resMass*resMass/M);
|
||||
G4LorentzVector lvnu(eNu*G4RandomDirection(), eNu);
|
||||
@@ -139,8 +138,8 @@ G4DecayProducts* G4BetaMinusDecay::DecayIt(G4double)
|
||||
products->PushProducts(dp);
|
||||
|
||||
} else {
|
||||
// neglecting relativistic kinematic and giving all energy to neutrino
|
||||
dp = new G4DynamicParticle(fNeutrino, G4RandomDirection(), edel);
|
||||
// neglecting relativistic kinematic and giving some energy to neutrino
|
||||
dp = new G4DynamicParticle(fNeutrino, G4RandomDirection(), elim);
|
||||
products->PushProducts(dp);
|
||||
dp = new G4DynamicParticle(fResIon, G4ThreeVector(0.0,0.0,1.0), 0.0);
|
||||
products->PushProducts(dp);
|
||||
|
||||
@@ -117,13 +117,12 @@ G4DecayProducts* G4BetaPlusDecay::DecayIt(G4double)
|
||||
G4LorentzVector lv(-eMomentum*dir.x(), -eMomentum*dir.y(), -eMomentum*dir.z(),
|
||||
parentMass - eKE - eMass);
|
||||
|
||||
G4double edel = std::max(lv.e() - resMass, 0.0);
|
||||
// Free energy should be above zero
|
||||
if (edel > 0.0) {
|
||||
|
||||
// centrum of mass system
|
||||
G4double M = lv.mag();
|
||||
|
||||
const G4double elim = CLHEP::eV;
|
||||
// centrum of mass system
|
||||
G4double M = lv.mag();
|
||||
G4double edel = M - resMass;
|
||||
// Free energy should be above limit
|
||||
if (edel >= elim) {
|
||||
// neutrino
|
||||
G4double eNu = 0.5*(M - resMass*resMass/M);
|
||||
G4LorentzVector lvnu(eNu*G4RandomDirection(), eNu);
|
||||
@@ -141,7 +140,7 @@ G4DecayProducts* G4BetaPlusDecay::DecayIt(G4double)
|
||||
|
||||
} else {
|
||||
// neglecting relativistic kinematic and giving all energy to neutrino
|
||||
dp = new G4DynamicParticle(fNeutrino, G4RandomDirection(), edel);
|
||||
dp = new G4DynamicParticle(fNeutrino, G4RandomDirection(), elim);
|
||||
products->PushProducts(dp);
|
||||
dp = new G4DynamicParticle(fResIon, G4ThreeVector(0.0,0.0,1.0), 0.0);
|
||||
products->PushProducts(dp);
|
||||
|
||||
Reference in New Issue
Block a user