100 G4double helpVar2 = 0., helpVar1 = 0.;
104 helpVar2 = -1. /
sqr(
gam + 1.);
106 fUnpXS = 0.125 * calcVector * sumEpsVector;
109 helpVar2 = 1. /
sqr(
gam + 1.);
112 ISPxx = 0.25 * (calcVector * sumEpsVector) / (
gam - 1.);
114 helpVar1 = 1. /
sqr(
gam + 1.);
116 ISPyy = 0.125 * calcVector * sumEpsVector;
118 helpVar1 = 1. / (
gam - 1.);
119 helpVar2 = 1. /
sqr(
gam + 1.);
121 -(
gam *
gam + 1.) * helpVar2,
123 ISPzz = 0.125 * helpVar1 * (calcVector * sumEpsVector);
125 helpVar1 = std::sqrt(std::fabs(
eps * (1. -
eps) * 2. * (
gam + 1.) - 1.));
127 ISPnd = 0.125 * (calcVector * difEpsVector) * helpVar1;
144 G4double circ1 = 0., circ2 = 0., circ3 = 0.;
146 std::sqrt(
gam *
gam - 1.);
149 circ1 = helpVar2 +
gam;
151 circ2 = helpVar2 + 1.;
153 helpVar1 = std::sqrt(std::fabs(
eps * (1. -
eps) * 2. * (
gam + 1.) - 1.));
154 helpVar1 /= std::sqrt(
gam *
gam - 1.);
156 circ3 = 0.125 * (calcVector * sumEpsVector) / (
gam + 1.);
160 circ3 * (pol1.
x() + pol0.
x()));
162 circ3 * (pol1.
x() + pol0.
x()));
166 G4double linearZero = 0.125 * (calcVector * sumEpsVector) /
sqr(
gam + 1.);
169 helpVar1 = std::sqrt(std::fabs(2. * (
gam + 1.) * (1. -
eps) *
eps - 1.)) /
171 helpVar2 = helpVar1 * helpVar1;
178 fPhi2.
setX(linearZero + diagContrib + nonDiagContrib);
183 fPhi3.
setX(linearZero + diagContrib + nonDiagContrib);
189 helpVar2 = std::sqrt((
gam *
gam - 1.) *
190 std::fabs(2. * (
gam + 1.) *
eps * (1. -
eps) - 1.));
197 contrib32 *= helpVar2;
202 contrib32 *= helpVar2;
205 fPhi0 *= diffXSFactor;
206 fPhi2 *= diffXSFactor;
207 fPhi3 *= diffXSFactor;
231 G4double sqrtgam1 = std::sqrt(gam2 - 1.);
234 unpME += -(
gam + 3.) * sqrtgam1;
235 unpME /= 4. * (gam2 - 1.);
237 longPart += -(5. +
gam * (3 *
gam + 4.)) * sqrtgam1;
238 longPart /= 4. *
sqr(
gam - 1.) * (
gam + 1.);
240 tranPart += (
gam + 5.) * sqrtgam1;
241 tranPart /= 4. *
sqr(
gam - 1.) * (
gam + 1.);
244 xs +=
polzz * longPart;
247 return xs * totalXSFactor;
284 return 0.5 * (1. - std::sqrt((y - 1.) / (y + 1.)));
290 return 0.5 * (1. + std::sqrt((y - 1.) / (y + 1.)));
static const G4double eps
static constexpr double pi
CLHEP::Hep3Vector G4ThreeVector
virtual G4double GetXmax(G4double y) override
void DefineCoefficients(const G4StokesVector &pol0, const G4StokesVector &pol1)
virtual G4double TotalXSection(G4double xmin, G4double xmax, G4double y, const G4StokesVector &pol0, const G4StokesVector &pol1) override
G4PolarizedAnnihilationXS()
virtual void Initialize(G4double eps, G4double gamma, G4double phi, const G4StokesVector &p0, const G4StokesVector &p1, G4int flag=0) override
virtual G4StokesVector GetPol3() override
static constexpr G4double re2
virtual ~G4PolarizedAnnihilationXS() override
virtual G4StokesVector GetPol2() override
virtual G4double XSection(const G4StokesVector &pol2, const G4StokesVector &pol3) override
virtual G4double GetXmin(G4double y) override