282 G4cout <<
"Calling SampleSecondaries() of G4LivermorePolarizedGammaConversionModel" <<
G4endl;
301 if(!(gammaPolarization0.
isOrthogonal(gammaDirection0, 1
e-6))||(gammaPolarization0.
mag()==0))
323 epsilon = epsilon0Local + (0.5 - epsilon0Local) *
G4UniformRand();
336 G4cout <<
"G4LivermorePolarizedGammaConversionModel::SampleSecondaries - element = 0" <<
G4endl;
345 G4cout <<
"G4LivermorePolarizedGammaConversionModel::SampleSecondaries - ionisation = 0" <<
G4endl;
352 if (photonEnergy > 50. *
MeV) fZ += 8. * (element->
GetfCoulomb());
360 G4double epsilon1 = 0.5 - 0.5 * sqrt(1. - screenMin / screenMax) ;
362 G4double epsilonRange = 0.5 - epsilonMin ;
376 epsilon = 0.5 - epsilonRange * pow(
G4UniformRand(), 0.3333) ;
377 screen = screenFactor / (epsilon * (1. -
epsilon));
383 screen = screenFactor / (epsilon * (1 -
epsilon));
401 electronTotEnergy = (1. -
epsilon) * photonEnergy;
402 positronTotEnergy = epsilon * photonEnergy;
406 positronTotEnergy = (1. -
epsilon) * photonEnergy;
407 electronTotEnergy = epsilon * photonEnergy;
445 phi =
SetPhi(photonEnergy);
446 psi =
SetPsi(photonEnergy,phi);
521 dirX = sinTheta*cos(phip);
522 dirY = sinTheta*sin(phip);
532 positronDirection, positronKineEnergy);
535 fvect->push_back(particle1);
536 fvect->push_back(particle2);
G4double GetlogZ3() const
double howOrthogonal(const Hep3Vector &v) const
void SetTheta(G4double *, G4double *, G4double)
G4double SetPsi(G4double, G4double)
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
G4IonisParamElm * GetIonisation() const
G4double GetfCoulomb() const
bool isOrthogonal(const Hep3Vector &v, double epsilon=tolerance) const
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
void SystemOfRefChange(G4ThreeVector &direction0, G4ThreeVector &direction1, G4ThreeVector &polarization0)
static G4Positron * Positron()
G4double ScreenFunction2(G4double screenVariable)
const G4ThreeVector & GetMomentumDirection() const
const G4ThreeVector & GetPolarization() const
G4double ScreenFunction1(G4double screenVariable)
G4double SetPhi(G4double)
static G4Electron * Electron()
G4ParticleDefinition * GetDefinition() const
G4ThreeVector GetPerpendicularPolarization(const G4ThreeVector &direction0, const G4ThreeVector &polarization0) const
G4ParticleChangeForGamma * fParticleChange
G4ThreeVector GetRandomPolarization(G4ThreeVector &direction0)
double epsilon(double density, double temperature)
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)