38G4double G4PolarizedBremsstrahlungXS::SCRN[2][19] = {
39 { 0.5, 1.0, 2.0, 4.0, 8.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0,
40 60.0, 70.0, 80.0, 90.0, 100.0, 120.0 },
41 { 0.0145, 0.0490, 0.1400, 0.3312, 0.6758, 1.126, 1.367, 1.564, 1.731, 1.875,
42 2.001, 2.114, 2.216, 2.393, 2.545, 2.676, 2.793, 2.897, 3.078 }
59 G4double aLept1E = aLept0E - aGammaE;
65 G4double Lept0E = aLept0E / electron_mass_c2 + 1.;
67 G4double GammaE = aGammaE / electron_mass_c2;
69 G4double Lept1E = aLept1E / electron_mass_c2 + 1.;
73 G4double TMom = std::sqrt(Lept0E2 - 1.) * sintheta;
80 12. * std::pow(
fZ, 1. / 3.) * Lept0E * Lept1E * Xsi / (121. * GammaE);
85 GG = std::log(2. * Lept0E * Lept1E / GammaE) - 2. -
fCoul;
89 for(
G4int j = 1; j < 19; ++j)
91 if(SCRN[0][j] >= delta)
93 GG = std::log(2 * Lept0E * Lept1E / GammaE) - 2 -
fCoul -
94 (SCRN[1][j - 1] + (delta - SCRN[0][j - 1]) *
95 (SCRN[1][j] - SCRN[1][j - 1]) /
96 (SCRN[0][j] - SCRN[0][j - 1]));
103 G4double alpha_sc = (111. * std::pow(
fZ, -1. / 3.)) / Xsi;
104 GG = std::log(alpha_sc) - 2. -
fCoul;
110 G4double I_Lept = (Lept0E2 + Lept1E2) * (3. + 2. * GG) -
111 2 * Lept0E * Lept1E * (1. + 4. * u2 * Xsi2 * GG);
113 Lept1E * 4. * GammaE * u * Xsi * (1. - 2 * Xsi) * GG / I_Lept;
115 Lept0E * 4. * GammaE * u * Xsi * (2. * Xsi - 1.) * GG / I_Lept;
117 4. * Lept0E * Lept1E * (1. + GG - 2. * Xsi2 * u2 * GG) / I_Lept;
119 GammaE2 * (1. + 8. * GG * (Xsi - 0.5) * (Xsi - 0.5)) / I_Lept;
121 G4double Stokes_SS1 = M_Lept * Stokes_S1 + E_Lept * Stokes_S3;
122 G4double Stokes_SS2 = M_Lept * Stokes_S2;
123 G4double Stokes_SS3 = (M_Lept + P_Lept) * Stokes_S3 + F_Lept * Stokes_S1;
125 fFinalLeptonPolarization.
setX(Stokes_SS1);
126 fFinalLeptonPolarization.
setY(Stokes_SS2);
127 fFinalLeptonPolarization.
setZ(Stokes_SS3);
129 if(fFinalLeptonPolarization.
mag2() > 1.)
132 ed <<
" WARNING in pol-brem fFinalLeptonPolarization \n";
133 ed <<
"\t" << fFinalLeptonPolarization <<
"\t GG\t" << GG <<
"\t delta\t"
135 G4Exception(
"G4PolarizedBremsstrahlungXS::Initialize",
"pol014",
137 fFinalLeptonPolarization.
setX(0);
138 fFinalLeptonPolarization.
setY(0);
139 fFinalLeptonPolarization.
setZ(Stokes_SS3);
141 fFinalLeptonPolarization.
setZ(1);
144 G4double I_Gamma = (Lept0E2 + Lept1E2) * (3. + 2. * GG) -
145 2. * Lept0E * Lept1E * (1. + 4. * u2 * Xsi2 * GG);
146 G4double D_Gamma = 8. * Lept0E * Lept1E * u2 * Xsi2 * GG / I_Gamma;
148 ((Lept0E + Lept1E) * (3. + 2. * GG) -
149 2. * Lept1E * (1. + 4. * u2 * Xsi2 * GG)) /
152 4. * GammaE * Lept1E * Xsi * u * (2. * Xsi - 1.) * GG / I_Gamma;
156 G4double Stokes_P3 = (Stokes_S3 * L_Gamma + Stokes_S1 * T_Gamma);
160 fFinalGammaPolarization.
setX(Stokes_P1);
161 fFinalGammaPolarization.
setY(Stokes_P2);
162 fFinalGammaPolarization.
setZ(Stokes_P3);
164 if(fFinalGammaPolarization.
mag2() > 1.)
167 ed <<
" WARNING in pol-brem fFinalGammaPolarization \n";
168 ed <<
"\t" << fFinalGammaPolarization <<
"\t GG\t" << GG <<
"\t delta\t"
170 G4Exception(
"G4PolarizedBremsstrahlungXS::Initialize",
"pol015",
179 ed <<
"ERROR dummy routine G4PolarizedBremsstrahlungXS::XSection "
191 return fFinalLeptonPolarization;
197 return fFinalGammaPolarization;
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
G4PolarizedBremsstrahlungXS()
G4double XSection(const G4StokesVector &pol2, const G4StokesVector &pol3) override
void Initialize(G4double eps, G4double X, G4double phi, const G4StokesVector &p0, const G4StokesVector &p1, G4int flag=0) override
~G4PolarizedBremsstrahlungXS() override
G4StokesVector GetPol2() override
G4StokesVector GetPol3() override
static const G4StokesVector ZERO