88 G4cout <<
"Calling G4PenelopeAnnihilationModel::Initialise()" <<
G4endl;
95 G4cout <<
"Penelope Annihilation model is initialized " << G4endl
113 G4cout <<
"Calling G4PenelopeAnnihilationModel::InitialiseLocal()" <<
G4endl;
139 G4cout <<
"Calling ComputeCrossSectionPerAtom() of G4PenelopeAnnihilationModel" <<
145 G4cout <<
"Annihilation cross Section at " << energy/
keV <<
" keV for Z=" << Z <<
174 G4cout <<
"Calling SamplingSecondaries() of G4PenelopeAnnihilationModel" <<
G4endl;
182 if (kineticEnergy == 0.0)
186 G4double sinTheta = std::sqrt(1.0-cosTheta*cosTheta);
188 G4ThreeVector direction (sinTheta*std::cos(phi),sinTheta*std::sin(phi),cosTheta);
194 fvect->push_back(firstGamma);
195 fvect->push_back(secondGamma);
203 G4double gamma21 = std::sqrt(gamma*gamma-1);
205 G4double chimin = 1.0/(ani+gamma21);
206 G4double rchi = (1.0-chimin)/chimin;
217 G4double photon1Energy = epsilon*totalAvailableEnergy;
224 G4double sinTheta1 = std::sqrt(1.-cosTheta1*cosTheta1);
226 G4double dirx1 = sinTheta1 * std::cos(phi1);
227 G4double diry1 = sinTheta1 * std::sin(phi1);
230 G4double sinTheta2 = std::sqrt(1.-cosTheta2*cosTheta2);
232 G4double dirx2 = sinTheta2 * std::cos(phi2);
233 G4double diry2 = sinTheta2 * std::sin(phi2);
237 photon1Direction.
rotateUz(positronDirection);
242 fvect->push_back(aParticle1);
245 photon2Direction.
rotateUz(positronDirection);
250 fvect->push_back(aParticle2);
254 G4cout <<
"-----------------------------------------------------------" <<
G4endl;
255 G4cout <<
"Energy balance from G4PenelopeAnnihilation" <<
G4endl;
256 G4cout <<
"Kinetic positron energy: " << kineticEnergy/
keV <<
" keV" <<
G4endl;
257 G4cout <<
"Total available energy: " << totalAvailableEnergy/
keV <<
" keV " <<
G4endl;
258 G4cout <<
"-----------------------------------------------------------" <<
G4endl;
259 G4cout <<
"Photon energy 1: " << photon1Energy/
keV <<
" keV" <<
G4endl;
260 G4cout <<
"Photon energy 2: " << photon2Energy/
keV <<
" keV" <<
G4endl;
261 G4cout <<
"Total final state: " << (photon1Energy+photon2Energy)/
keV <<
263 G4cout <<
"-----------------------------------------------------------" <<
G4endl;
267 G4double energyDiff = std::fabs(totalAvailableEnergy-photon1Energy-photon2Energy);
268 if (energyDiff > 0.05*
keV)
269 G4cout <<
"Warning from G4PenelopeAnnihilation: problem with energy conservation: " <<
270 (photon1Energy+photon2Energy)/
keV <<
271 " keV (final) vs. " <<
272 totalAvailableEnergy/
keV <<
" keV (initial)" << G4endl;
292 G4double crossSection =
fPielr2*((gamma2+4.0*gamma+1.0)*std::log(gamma+f1)/f2
293 - (gamma+3.0)/
f1)/(gamma+1.0);