51 endpointEnergy(e0 - 2.*
CLHEP::electron_mass_c2)
62 SetUpBetaSpectrumSampler(daughterZ, daughterA, betaType);
70 delete spectrumSampler;
91 if (spectrumSampler) {
93 G4double eKE = endpointEnergy*spectrumSampler->shoot(G4Random::getTheEngine() );
94 G4double eMomentum = std::sqrt(eKE*(eKE + 2.*eMass) );
97 G4double sinTheta = std::sqrt(1.0 - cosTheta*cosTheta);
111 G4double nuEnergy = ((endpointEnergy - eKE)*(parentMass + nucleusMass - eTE)
112 - eMomentum*eMomentum)/(parentMass - eTE + eMomentum*cosThetaENu)/2.;
114 G4double sinThetaENu = std::sqrt(1.0 - cosThetaENu*cosThetaENu);
120 nuDirection.
setX(sinThetaENu*cosPhiNu*cosTheta*cosPhi -
121 sinThetaENu*sinPhiNu*sinPhi + cosThetaENu*sinTheta*cosPhi);
122 nuDirection.
setY(sinThetaENu*cosPhiNu*cosTheta*sinPhi +
123 sinThetaENu*sinPhiNu*cosPhi + cosThetaENu*sinTheta*sinPhi);
124 nuDirection.
setZ(-sinThetaENu*cosPhiNu*sinTheta + cosThetaENu*cosTheta);
134 -eDirection*eMomentum - nuDirection*nuEnergy);
161G4BetaPlusDecay::SetUpBetaSpectrumSampler(
const G4int& daughterZ,
162 const G4int& daughterA,
165 G4double e0 = endpointEnergy/CLHEP::electron_mass_c2;
178 for (
G4int ptn = 0; ptn < npti; ptn++) {
180 e = 1. + e0*(ptn + 0.5)/
G4double(npti);
181 p = std::sqrt(e*e - 1.);
182 f = p*e*(e0 - e + 1.)*(e0 - e + 1.);
185 f *= corrections.FermiFunction(e);
188 f *= corrections.ShapeFactor(betaType, p, e0-e+1.);
202 <<
"% and endpoint energy " << endpointEnergy/keV <<
" keV " <<
G4endl;
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cout
virtual G4DecayProducts * DecayIt(G4double)
G4BetaPlusDecay(const G4ParticleDefinition *theParentNucleus, const G4double &theBR, const G4double &endpointE, const G4double &ex, const G4Ions::G4FloatLevelBase &flb, const G4BetaDecayType &type)
virtual void DumpNuclearInfo()
virtual ~G4BetaPlusDecay()
G4int PushProducts(G4DynamicParticle *aParticle)
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
G4int GetAtomicNumber() const
G4double GetPDGMass() const
G4int GetAtomicMass() const
G4IonTable * GetIonTable() const
static G4ParticleTable * GetParticleTable()
G4ParticleDefinition ** G4MT_daughters
void CheckAndFillParent()
const G4String & GetParentName() const
void SetBR(G4double value)
void SetNumberOfDaughters(G4int value)
G4ParticleDefinition * G4MT_parent
void CheckAndFillDaughters()
void SetDaughter(G4int anIndex, const G4ParticleDefinition *particle_type)
const G4String & GetDaughterName(G4int anIndex) const
void SetParent(const G4ParticleDefinition *particle_type)