65{
68
69 if (!isGamma) {
70 if(0 <= shell) {
75 }
76 }
77 }
79 - bond_energy;
81 G4cout <<
"G4GammaTransition::GenerateGamma - Etrans(MeV)= "
82 << etrans << " Eexnew= " << newExcEnergy
83 <<
" Ebond= " << bond_energy <<
G4endl;
84 }
85 if(etrans <= 0.0) {
86 etrans += bond_energy;
87 bond_energy = 0.0;
88 }
89
90
93
94
96
98 else {
102 }
103
104 if(polarFlag && isDiscrete && JP1 <=
fTwoJMAX) {
106 } else {
108 }
109
111
112
115 if(!isGamma) { ecm += (CLHEP::electron_mass_c2 - bond_energy); }
116
117
118
119 ecm = std::max(ecm, mass + emass);
120 G4double energy = 0.5*((ecm - mass)*(ecm + mass) + emass*emass)/ecm;
121 G4double mom = (emass > 0.0) ? std::sqrt((energy - emass)*(
energy + emass))
123
124
128
129 energy = std::max(ecm - energy, mass);
131
132
134
135
137
138
139 res4mom.boost(bst);
141
142
143
145 G4cout <<
"G4GammaTransition::SampleTransition : " << *result <<
G4endl;
147 }
148 return result;
149}
G4ThreeVector G4RandomDirection()
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
void set(double x, double y, double z, double t)
static G4double GetBindingEnergy(G4int Z, G4int SubshellNb)
static G4int GetNumberOfShells(G4int Z)
static G4Electron * Electron()
G4double GetGroundStateMass() const
G4double GetExcitationEnergy() const
const G4LorentzVector & GetMomentum() const
void SetNumberOfElectrons(G4int value)
void SetExcEnergyAndMomentum(G4double eexc, const G4LorentzVector &)
G4int GetNumberOfElectrons() const
virtual void SampleDirection(G4Fragment *nuc, G4double ratio, G4int twoJ1, G4int twoJ2, G4int mp)
G4double GetPDGMass() const
G4double energy(const ThreeVector &p, const G4double m)