125 if (dtransition && !dtransition->
IsAGamma()) {
128 etrans += bond_energy;
131 if(etrans <= 0.0) {
return thePhoton; }
135 if(excitation <=
_tolerance) { excitation = 0.0; }
139 G4cout <<
"G4VGammaDeexcitation::GenerateGamma - Edeexc(MeV)= " 140 << etrans <<
"; Time(ns)= " << gammaTime/
CLHEP::ns 141 <<
"; left Eexc(MeV)= " << excitation <<
G4endl;
146 G4double Mass = aNucleus->GetGroundStateMass() + excitation;
151 if (dtransition && !dtransition->
IsAGamma() ) {
162 G4double sinTheta = std::sqrt(1. - cosTheta * cosTheta);
175 G4double GammaEnergy = 0.5*((Ecm - Mass)*(Ecm + Mass) + eMass*eMass)/Ecm;
176 if(GammaEnergy < eMass) { GammaEnergy = eMass; }
178 G4double mom = std::sqrt((GammaEnergy - eMass)*(GammaEnergy + eMass));
179 Gamma4P.
set(mom * sinTheta * std::cos(phi),
180 mom * sinTheta * std::sin(phi),
181 mom * cosTheta, GammaEnergy);
196 if(P2 > 0.0) { p = std::sqrt(P2); }
198 lv.
set(v.
x()*p, v.
y()*p, v.
z()*p,
E);
202 gammaTime += aNucleus->GetCreationTime();
203 aNucleus->SetMomentum(lv);
204 aNucleus->SetCreationTime(gammaTime);
G4double GetExcitationEnergy() const
virtual G4double GetGammaEnergy()=0
G4ElectronOccupancy _electronO
G4GLOB_DLL std::ostream G4cout
virtual void SelectGamma()=0
HepLorentzVector & boost(double, double, double)
static const double twopi
void SetCreationTime(G4double time)
void set(double x, double y, double z, double t)
G4double GetPDGMass() const
Hep3Vector boostVector() const
G4VGammaTransition * _transition
static const G4double * P2[nN]
static G4Electron * Electron()
static const double electron_mass_c2
G4int RemoveElectron(G4int orbit, G4int number=1)
CLHEP::HepLorentzVector G4LorentzVector
virtual G4double GetGammaCreationTime()=0