63 SetUpBetaSpectrumSampler(daughterZ, daughterA, betaType);
69 delete spectrumSampler;
90 if (spectrumSampler) {
92 G4double eKE = endpointEnergy*spectrumSampler->shoot(G4Random::getTheEngine() );
93 G4double eMomentum = std::sqrt(eKE*(eKE + 2.*eMass) );
97 G4double nuEnergy = ((endpointEnergy - eKE)*(parentMass + nucleusMass - eTE)
98 - eMomentum*eMomentum)/(parentMass - eTE + eMomentum*cosThetaENu)/2.;
102 G4double sinTheta = std::sqrt(1.0 - cosTheta*cosTheta);
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);
163G4BetaMinusDecay::SetUpBetaSpectrumSampler(
const G4int& daughterZ,
164 const G4int& daughterA,
167 G4double e0 = endpointEnergy/CLHEP::electron_mass_c2;
179 for (
G4int ptn = 0; ptn < npti; ptn++) {
182 p = std::sqrt(e*e - 1.);
183 f = p*e*(e0 - e + 1.)*(e0 - e + 1.);
186 f *= corrections.FermiFunction(e);
189 f *= corrections.ShapeFactor(betaType, p, e0-e+1.);
203 <<
"% and endpoint energy " << endpointEnergy/keV <<
" keV " <<
G4endl;
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cout
virtual G4DecayProducts * DecayIt(G4double)
G4BetaMinusDecay(const G4ParticleDefinition *theParentNucleus, const G4double &theBR, const G4double &endpointE, const G4double &ex, const G4Ions::G4FloatLevelBase &flb, const G4BetaDecayType &type)
virtual ~G4BetaMinusDecay()
virtual void DumpNuclearInfo()
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)