75  asymmetry /= ((
k0 - 2.) * 
k0 - 2.) * 
sqr(k1) * 
G4Log(k1) +
 
   76               2. * 
k0 * (
k0 * (
k0 + 1.) * (
k0 + 8.) + 2.);
 
   81    ed << 
"ERROR in G4PolarizedComptonModel::ComputeAsymmetryPerAtom.\n" 
   82       << 
" asymmetry = " << asymmetry << 
"\n";
 
   83    G4Exception(
"G4PolarizedComptonModel::ComputeAsymmetryPerAtom", 
"pol035",
 
   96    pd, kinEnergy, 
Z, 
A, cut, 
emax);
 
  101    xs *= (1. + polzz * asym);
 
  123    G4cout << 
"G4PolarizedComptonModel::SampleSecondaries in " 
  144  if(targetIsPolarized)
 
  165  G4double eps0       = 1. / (1. + 2. * E0_m);
 
  186        PrintWarning(aDynamicGamma, nloop, greject, onecost, Phi,
 
  187                     "too many iterations");
 
  194      if(alpha1 > 
alpha2 * rndm[0])
 
  200        epsilon = std::sqrt(epsilon0sq + (1. - epsilon0sq) * rndm[1]);
 
  204      sint2   = onecost * (2. - onecost);
 
  210      greject = gdist / gdiced;
 
  214        PrintWarning(aDynamicGamma, nloop, greject, onecost, Phi,
 
  215                     "theta majoranta wrong");
 
  218    } 
while(greject < rndm[2]);
 
  224    cosTeta = 1. - onecost;
 
  225    sinTeta = std::sqrt(sint2);
 
  234      Phi = 
twopi * rndm[0];
 
  237        PrintWarning(aDynamicGamma, nloop, greject, onecost, Phi,
 
  238                     "too many iterations");
 
  261      greject = gdist / gdiced;
 
  265        PrintWarning(aDynamicGamma, nloop, greject, onecost, Phi,
 
  266                     "phi majoranta wrong");
 
  271        PrintWarning(aDynamicGamma, nloop, greject, onecost, Phi,
 
  272                     "phi loop ineffective");
 
  279    } 
while(greject < rndm[1]);
 
  281  G4double dirx = sinTeta * std::cos(Phi);
 
  282  G4double diry = sinTeta * std::sin(Phi);
 
  287  gamDirection1.
rotateUz(gamDirection0);
 
  311    G4cout << 
"========================================" << 
G4endl;
 
  312    G4cout << 
" nInteractionFrame = " << nInteractionFrame << 
G4endl;
 
  313    G4cout << 
" GammaDirection0 = " << gamDirection0 << 
G4endl;
 
  323    G4cout << 
"----------------------------------------" << 
G4endl;
 
  326    G4cout << 
"----------------------------------------" << 
G4endl;
 
  349      ed << 
"ERROR in Polarizaed Compton Scattering !\n";
 
  350      ed << 
"Polarization of final photon more than 100%.\n";
 
  353      G4Exception(
"G4PolarizedComptonModel::SampleSecondaries", 
"pol033",
 
  361      G4cout << 
" GammaDirection1 = " << gamDirection1 << 
G4endl;
 
  366  G4double eKinEnergy = gamEnergy0 - gamEnergy1;
 
  371      gamEnergy0 * gamDirection0 - gamEnergy1 * gamDirection1;
 
  372    eDirection = eDirection.
unit();
 
  385             << 
G4endl << 
" ElecDirection = " << eDirection << 
G4endl;
 
  395      ed << 
"ERROR in Polarized Compton Scattering !\n";
 
  396      ed << 
"Polarization of final electron more than 100%.\n";
 
  399      G4Exception(
"G4PolarizedComptonModel::SampleSecondaries", 
"pol034",
 
  405    fvect->push_back(aElectron);
 
  425  ed << 
"Problem of scattering sampling: " << 
sss << 
"\n" 
  426     << 
"Niter= " << nloop << 
" grej= " << grej
 
  427     << 
" cos(theta)= " << 1.0 - onecos << 
" phi= " << phi << 
"\n" 
  431  G4Exception(
"G4PolarizedComptonModel::SampleSecondaries", 
"em0044",
 
static const char sss[MAX_N_PAR+2]
static const G4double emax
G4double epsilon(G4double density, G4double temperature)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
static constexpr double twopi
static constexpr double MeV
G4GLOB_DLL std::ostream G4cout
Hep3Vector & rotateUz(const Hep3Vector &)
virtual void flatArray(const int size, double *vect)=0
void SetPolarization(const G4ThreeVector &)
const G4ThreeVector & GetMomentumDirection() const
G4double GetKineticEnergy() const
const G4ThreeVector & GetPolarization() const
G4double lowestSecondaryEnergy
G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A, G4double cut, G4double emax) override
G4ParticleChangeForGamma * fParticleChange
G4ParticleDefinition * theElectron
const G4String & GetName() const
const G4Track * GetCurrentTrack() const
void SetProposedKineticEnergy(G4double proposedKinEnergy)
void ProposePolarization(const G4ThreeVector &dir)
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
static G4ThreeVector GetFrame(const G4ThreeVector &, const G4ThreeVector &)
bool IsPolarized(G4LogicalVolume *lVol) const
const G4StokesVector GetVolumePolarization(G4LogicalVolume *lVol) const
static G4PolarizationManager * GetInstance()
void PrintWarning(const G4DynamicParticle *, G4int, G4double grej, G4double onecos, G4double phi, const G4String) const
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy) override
G4double ComputeAsymmetryPerAtom(G4double gammaEnergy, G4double Z)
G4StokesVector fBeamPolarization
G4StokesVector finalElectronPolarization
G4PolarizedComptonModel(const G4ParticleDefinition *p=nullptr, const G4String &nam="Polarized-Compton")
virtual ~G4PolarizedComptonModel() override
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A, G4double cut, G4double emax) override
G4StokesVector fTargetPolarization
static constexpr G4int fLoopLim
G4StokesVector fFinalGammaPolarization
G4VPolarizedXS * fCrossSectionCalculator
static const G4StokesVector ZERO
void InvRotateAz(G4ThreeVector nInteractionFrame, G4ThreeVector particleDirection)
void RotateAz(G4ThreeVector nInteractionFrame, G4ThreeVector particleDirection)
G4VPhysicalVolume * GetVolume() const
G4double LowEnergyLimit() const
void ProposeTrackStatus(G4TrackStatus status)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4LogicalVolume * GetLogicalVolume() const
virtual void Initialize(G4double, G4double, G4double, const G4StokesVector &p0, const G4StokesVector &p1, G4int flag=0)=0
virtual G4StokesVector GetPol2()
virtual G4StokesVector GetPol3()