97                       const G4double theDaughterExcitation)
 
   99   Qtransition(theQtransition), RandomEnergy(0)
 
  103     G4cout << 
"G4NuclearDecayChannel constructor for " << 
G4int(theMode)
 
  128                       const G4double theDaughterExcitation,
 
  131   Qtransition(theQtransition), RandomEnergy(0)
 
  135     G4cout << 
"G4NuclearDecayChannel constructor for " << 
G4int(theMode)
 
  164                       const G4double theDaughterExcitation,
 
  168   Qtransition(theQtransition)
 
  172     G4cout << 
"G4NuclearDecayChannel constructor for " << 
G4int(theMode)
 
  196                                                 const G4double theDaughterExcitation)
 
  200   if (A < 1 || Z < 0 || theDaughterExcitation < 0.0) {
 
  202     ed << 
"Inappropriate values of daughter A, Z or excitation: " 
  203        << A << 
" , " << Z << 
" , " << theDaughterExcitation*
MeV << 
" MeV " 
  205     G4Exception(
"G4NuclearDecayChannel::FillDaughterNucleus()", 
"HAD_RDM_006",
 
  213   if (Z == 1 && A == 1) {
 
  215   } 
else if (Z == 0 && A == 1) {
 
  232     deltaM = CLHEP::electron_mass_c2;
 
  234     deltaM = 2.*CLHEP::electron_mass_c2;
 
  235   } 
else if (decayMode < 6 && decayMode > 2) {  
 
  236     deltaM = -CLHEP::electron_mass_c2;
 
  256       ed << 
" No daughters defined " << 
G4endl;
 
  257       G4Exception(
"G4NuclearDecayChannel::DecayIt()", 
"HAD_RDM_005",
 
  275       G4Exception(
"G4NuclearDecayChannel::DecayIt()", 
"HAD_RDM_007",
 
  283     G4Exception(
"G4NuclearDecayChannel::DecayIt()", 
"HAD_RDM_008",
 
  291     G4int shellIndex = -1;
 
  301         daughterMomentum.setE(daughterMomentum.e() + exe);
 
  348           ed << nFrags << 
" No fragments produced by photon evaporation. " << 
G4endl;
 
  349           G4Exception(
"G4NuclearDecayChannel::DecayIt()",
"HAD_RDM_012",
 
  351         } 
else if (nFrags > 1) {
 
  356           for (
G4int i = 0; i < nFrags - 1; i++) {
 
  357             eOrGamma = gammas->operator[](i);
 
  367                             gammas->operator[](nFrags-1)->GetExcitationEnergy();
 
  368         if (finalDaughterExcitation <= 1.0*
keV) finalDaughterExcitation = 0;
 
  373         daughterMomentum.setE(daughterMomentum.e() - eOrGammaEnergy);
 
  376         while (!gammas->empty() ) {  
 
  377           delete *(gammas->end()-1);
 
  383       G4ThreeVector const daughterMomentum1(static_cast<const G4LorentzVector> (daughterMomentum));
 
  417         G4Exception(
"G4NuclearDecayChannel::DecayIt()", 
"HAD_RDM_009",
 
  442           std::vector<G4DynamicParticle*> armProducts;
 
  452           size_t narm = armProducts.size();
 
  458             for (
size_t i = 0; i<narm; ++i) {
 
  531   for (
G4int index = 0; index < 3; index++) {
 
  549   daughtermomentum[0] = std::sqrt(daughterenergy[0]*(daughterenergy[0] + 2.*daughtermass[0]) );
 
  555   G4double K = 0.5 - daughtermass[1]*daughtermass[1]/(2*Mme*Mme-4*pmass*daughterenergy[0]);
 
  557   daughterenergy[2] = K * (Mme - daughterenergy[0] + rd*daughtermomentum[0]);
 
  558   daughtermomentum[2] = daughterenergy[2];
 
  561   daughterenergy[1] = Qtransition - daughterenergy[0] - daughterenergy[2];
 
  563                daughterenergy[1]*(daughterenergy[1] + 2.0*daughtermass[1]);
 
  564   if (recoilmomentumsquared < 0.0) recoilmomentumsquared = 0.0;
 
  565   daughtermomentum[1] = std::sqrt(recoilmomentumsquared);
 
  569     G4cout << 
" G4NuclearDecayChannel::BetaDecayIt() " << 
G4endl;
 
  570     G4cout <<
"     e- momentum: " <<daughtermomentum[0]/
GeV <<
" [GeV/c]" <<
G4endl;
 
  571     G4cout <<
"     daughter momentum: " <<daughtermomentum[1]/
GeV <<
" [GeV/c]" <<
G4endl;
 
  572     G4cout <<
"     nu momentum: " <<daughtermomentum[2]/
GeV <<
" [GeV/c]" <<
G4endl;
 
  573     G4cout <<
"     e- energy: " << daughtermass[0] + daughterenergy[0] << 
G4endl;
 
  574     G4cout <<
"     daughter energy: " << daughtermass[1] + daughterenergy[1] << 
G4endl;
 
  575     G4cout <<
"     nu energy: " << daughtermass[2] + daughterenergy[2] << 
G4endl;
 
  576     G4cout <<
"     total of daughter energies: " << daughtermass[0] + daughtermass[1] +
 
  577                daughtermass[2] + daughterenergy[0] + daughterenergy[1] + daughterenergy[2] 
 
  581   G4double costheta, sintheta, phi, sinphi, cosphi;
 
  582   G4double costhetan, sinthetan, phin, sinphin, cosphin;
 
  584   sintheta = std::sqrt((1.0-costheta)*(1.0+costheta));
 
  586   sinphi = std::sin(phi);
 
  587   cosphi = std::cos(phi);
 
  594   costhetan = (daughtermomentum[1]*daughtermomentum[1]-
 
  595                daughtermomentum[2]*daughtermomentum[2]-
 
  596                daughtermomentum[0]*daughtermomentum[0])/
 
  597         (2.0*daughtermomentum[2]*daughtermomentum[0]);
 
  599   if (costhetan > 1.) costhetan = 1.;
 
  600   if (costhetan < -1.) costhetan = -1.;
 
  601   sinthetan = std::sqrt((1.0-costhetan)*(1.0+costhetan));
 
  603   sinphin = std::sin(phin);
 
  604   cosphin = std::cos(phin);
 
  606   direction2.setX(sinthetan*cosphin*costheta*cosphi - 
 
  607                   sinthetan*sinphin*sinphi + costhetan*sintheta*cosphi);
 
  608   direction2.setY(sinthetan*cosphin*costheta*sinphi +
 
  609                   sinthetan*sinphin*cosphi + costhetan*sintheta*sinphi);
 
  610   direction2.setZ(-sinthetan*cosphin*sintheta + costhetan*costheta);
 
  612                           direction2*(daughtermomentum[2]/direction2.mag()));
 
  617                          (direction0*daughtermomentum[0] +
 
  618                           direction2*(daughtermomentum[2]/direction2.mag()))*(-1.0));
 
  622     G4cout << 
"G4NuclearDecayChannel::BetaDecayIt ";
 
  623     G4cout << 
"  create decay products in rest frame " <<
G4endl;
 
virtual void SetICM(G4bool)
 
void SetBR(G4double value)
 
static G4LossTableManager * Instance()
 
G4bool IsFluoActive() const 
 
std::ostringstream G4ExceptionDescription
 
CLHEP::Hep3Vector G4ThreeVector
 
virtual void RDMForced(G4bool)
 
G4int PushProducts(G4DynamicParticle *aParticle)
 
G4ParticleDefinition * G4MT_parent
 
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
 
G4double GetParentMass() const 
 
G4ParticleDefinition ** G4MT_daughters
 
const G4ParticleDefinition * GetParticleDefinition() const 
 
G4RandGeneral * RandomEnergy
 
G4double G4MT_parent_mass
 
virtual ~G4NuclearDecayChannel()
 
const G4RadioactiveDecayMode decayMode
 
const G4double Qtransition
 
virtual G4FragmentVector * BreakUp(const G4Fragment &theNucleus)
 
static G4Proton * Definition()
 
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)=0
 
G4IonTable * GetIonTable() const 
 
G4GLOB_DLL std::ostream G4cout
 
double A(double temperature)
 
G4double GetCreationTime() const 
 
void SetNumberOfDaughters(G4int value)
 
const G4LorentzVector & GetMomentum() const 
 
static const double twopi
 
std::vector< G4Fragment * > G4FragmentVector
 
G4DecayProducts * TwoBodyDecayIt()
 
G4LorentzVector Get4Momentum() const 
 
G4int GetVacantShellNumber() const 
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
void Set4Momentum(const G4LorentzVector &momentum)
 
G4double halflifethreshold
 
static const double nanosecond
 
G4int GetVerboseLevel() const 
 
G4double GetPDGMass() const 
 
static G4ParticleTable * GetParticleTable()
 
G4NuclearDecayChannel(const G4RadioactiveDecayMode &theMode, G4int Verbose)
 
G4DecayProducts * OneBodyDecayIt()
 
void SetParent(const G4ParticleDefinition *particle_type)
 
static G4EmParameters * Instance()
 
G4DynamicParticle * PopProducts()
 
void SetDaughter(G4int anIndex, const G4ParticleDefinition *particle_type)
 
G4DecayProducts * BetaDecayIt()
 
static G4Neutron * Definition()
 
G4ParticleDefinition * daughterNucleus
 
static G4ThreadLocal G4DynamicParticle * dynamicDaughter
 
G4VAtomDeexcitation * AtomDeexcitation()
 
static const G4double levelTolerance
 
void GenerateParticles(std::vector< G4DynamicParticle * > *secVect, const G4AtomicShell *, G4int Z, G4int coupleIndex)
 
G4double daughterExcitation
 
G4ThreeVector G4ParticleMomentum
 
void SetProperTime(G4double)
 
void SetParentMass(const G4double aParentMass)
 
G4DecayProducts * DecayIt(G4double)
 
void SetVerboseLevel(G4int verbose)
 
static const G4double pTolerance
 
CLHEP::HepLorentzVector G4LorentzVector
 
void FillDaughterNucleus(G4int index, G4int A, G4int Z, const G4double theDaughterExcitation)
 
static G4int GetNumberOfShells(G4int Z)