65 else if(cosT < -1. - 1.e-8)
70 if(sinT2 > 1. + 1.e-8)
93 G4double phi21 = -sinT2 + 0.5 * (cos2T + 3.) * pol0.
x() -
98 ((1. -
eps) /
eps) * (
eps * cosT2 + 1.) * pol1.
z();
99 phi23 += 0.5 * (1. -
eps) * sin2T * pol1.
x();
107 0.5 * (cos2T + 3.) * pol1.
y();
115 if((1. -
eps) > 1.e-12)
117 G4double helpVar = std::sqrt(eps2 - 2. * cosT *
eps + 1.);
119 phi31 = (1. -
eps) * (1. + cosT) * sinT * pol0.
z();
121 (-
eps * cosT3 +
eps * cosT2 + (
eps - 2.) * cosT +
eps) * pol1.
x();
122 phi31 += -(
eps * cosT2 -
eps * cosT + cosT + 1.) * sinT * pol1.
z();
123 phi31 /= 2. * helpVar;
125 phi31add = -
eps *
sqr(1. - cosT) * (1. + cosT) *
polxx;
126 phi31add += (1. -
eps) * sinT2 *
polyy;
127 phi31add += -(-eps2 + cosT * (cosT *
eps -
eps + 1.) *
eps +
eps - 1.) *
129 phi31add /= 2. * helpVar;
131 phi33 = ((1. -
eps) /
eps) *
132 (-
eps * cosT2 +
eps * (
eps + 1.) * cosT - 1.) * pol0.
z();
133 phi33 += -(
eps * cosT2 + (1. -
eps) *
eps * cosT + 1.) * sinT * pol1.
x();
135 -(-eps2 * cosT3 +
eps * (eps2 -
eps + 1.) * cosT2 - cosT + eps2) *
137 phi33 /= -2. * helpVar;
139 phi33add = (
eps * (
eps - cosT - 1.) * cosT + 1.) * sinT *
polxx;
140 phi33add += -(-eps2 + cosT *
eps +
eps - 1.) * sinT2 *
polxz;
141 phi33add += (
eps - 1.) * (cosT -
eps) * sinT *
polyy;
142 phi33add /= -2. * helpVar;
147 (X - 1.) * std::sqrt(1. -
eps) * pol1.
x() / std::sqrt(2. * X);
148 phi31add = -(-X * X * pol1.
z() - 2. * X * (2. * pol0.
z() - pol1.
z()) -
149 (4. * pol0.
x() + 5.) * pol1.
z()) *
150 (1. -
eps) / (4. * X);
153 (X - 1.) * std::sqrt(1. -
eps) * pol1.
z() / std::sqrt(2. * X);
154 phi33add = -(X * X - 2. * X + 4. * pol0.
x() + 5.) * (1. -
eps) *
161 fPhi0 *= diffXSFactor;
162 fPhi2 *= diffXSFactor;
163 fPhi3 *= diffXSFactor;
206 2. *
k0 * (
k0 * (
k0 + 1.) * (
k0 + 8.) + 2.);
210 return pre * (xs_0 /
k0 + pol0.
p3() * pol1.
z() * xs_pol);
static const G4double eps
CLHEP::Hep3Vector G4ThreeVector
static constexpr G4double re2
void Initialize(G4double eps, G4double X, G4double phi, const G4StokesVector &p0, const G4StokesVector &p1, G4int flag=0) override
G4StokesVector GetPol2() override
~G4PolarizedComptonXS() override
G4double TotalXSection(G4double xmin, G4double xmax, G4double y, const G4StokesVector &pol0, const G4StokesVector &pol1) override
G4StokesVector GetPol3() override
G4double XSection(const G4StokesVector &pol2, const G4StokesVector &pol3) override
void DefineCoefficients(const G4StokesVector &pol0, const G4StokesVector &pol1)
static const G4StokesVector ZERO
void SetYmin(G4double ymin)
static constexpr double classic_electr_radius
static constexpr double pi