Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // ------------------------------------------- 27 // 28 // Geant4 class file 29 // 30 // File name: G4PolarizedBremsstrahlungXS 31 // 32 // Author: Andreas Schaelicke on the ba 33 34 #include "G4PolarizedBremsstrahlungXS.hh" 35 36 #include "G4PhysicalConstants.hh" 37 38 G4double G4PolarizedBremsstrahlungXS::SCRN[2][ 39 { 0.5, 1.0, 2.0, 4.0, 8.0, 15.0, 20.0, 25.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. 42 2.001, 2.114, 2.216, 2.393, 2.545, 2.676, 43 }; 44 45 G4PolarizedBremsstrahlungXS::G4PolarizedBremss 46 { 47 fFinalLeptonPolarization = G4StokesVector::Z 48 fFinalGammaPolarization = G4StokesVector::Z 49 } 50 51 G4PolarizedBremsstrahlungXS::~G4PolarizedBrems 52 53 void G4PolarizedBremsstrahlungXS::Initialize(G 54 G 55 c 56 c 57 G 58 { 59 G4double aLept1E = aLept0E - aGammaE; 60 61 G4double Stokes_S1 = beamPol.x(); 62 G4double Stokes_S2 = beamPol.y(); 63 G4double Stokes_S3 = beamPol.z(); 64 65 G4double Lept0E = aLept0E / electron_mass_c 66 G4double Lept0E2 = Lept0E * Lept0E; 67 G4double GammaE = aGammaE / electron_mass_c 68 G4double GammaE2 = GammaE * GammaE; 69 G4double Lept1E = aLept1E / electron_mass_c 70 G4double Lept1E2 = Lept1E * Lept1E; 71 72 // ******* Gamma Transverse Momentum 73 G4double TMom = std::sqrt(Lept0E2 - 1.) * si 74 G4double u = TMom; 75 G4double u2 = u * u; 76 G4double Xsi = 1. / (1. + u2); 77 G4double Xsi2 = Xsi * Xsi; 78 79 G4double delta = 80 12. * std::pow(fZ, 1. / 3.) * Lept0E * Lep 81 82 G4double GG = 0.; 83 if(delta < 0.5) 84 { 85 GG = std::log(2. * Lept0E * Lept1E / Gamma 86 } 87 else if(delta < 120) 88 { 89 for(G4int j = 1; j < 19; ++j) 90 { 91 if(SCRN[0][j] >= delta) 92 { 93 GG = std::log(2 * Lept0E * Lept1E / Ga 94 (SCRN[1][j - 1] + (delta - SCRN[0 95 (SCRN[1][j] - 96 (SCRN[0][j] - 97 break; 98 } 99 } 100 } 101 else 102 { 103 G4double alpha_sc = (111. * std::pow(fZ, - 104 GG = std::log(alpha_sc) - 2 105 } 106 107 if(GG < -1.) 108 GG = -1.; 109 110 G4double I_Lept = (Lept0E2 + Lept1E2) * (3. 111 2 * Lept0E * Lept1E * (1. 112 G4double F_Lept = 113 Lept1E * 4. * GammaE * u * Xsi * (1. - 2 * 114 G4double E_Lept = 115 Lept0E * 4. * GammaE * u * Xsi * (2. * Xsi 116 G4double M_Lept = 117 4. * Lept0E * Lept1E * (1. + GG - 2. * Xsi 118 G4double P_Lept = 119 GammaE2 * (1. + 8. * GG * (Xsi - 0.5) * (X 120 121 G4double Stokes_SS1 = M_Lept * Stokes_S1 + E 122 G4double Stokes_SS2 = M_Lept * Stokes_S2; 123 G4double Stokes_SS3 = (M_Lept + P_Lept) * St 124 125 fFinalLeptonPolarization.setX(Stokes_SS1); 126 fFinalLeptonPolarization.setY(Stokes_SS2); 127 fFinalLeptonPolarization.setZ(Stokes_SS3); 128 129 if(fFinalLeptonPolarization.mag2() > 1.) 130 { 131 G4ExceptionDescription ed; 132 ed << " WARNING in pol-brem fFinalLeptonPo 133 ed << "\t" << fFinalLeptonPolarization << 134 << delta; 135 G4Exception("G4PolarizedBremsstrahlungXS:: 136 JustWarning, ed); 137 fFinalLeptonPolarization.setX(0); 138 fFinalLeptonPolarization.setY(0); 139 fFinalLeptonPolarization.setZ(Stokes_SS3); 140 if(Stokes_SS3 > 1) 141 fFinalLeptonPolarization.setZ(1); 142 } 143 144 G4double I_Gamma = (Lept0E2 + Lept1E2) * (3. 145 2. * Lept0E * Lept1E * (1 146 G4double D_Gamma = 8. * Lept0E * Lept1E * u2 147 G4double L_Gamma = GammaE * 148 ((Lept0E + Lept1E) * (3. 149 2. * Lept1E * (1. + 4. * 150 I_Gamma; 151 G4double T_Gamma = 152 4. * GammaE * Lept1E * Xsi * u * (2. * Xsi 153 154 G4double Stokes_P1 = D_Gamma; 155 G4double Stokes_P2 = 0.; 156 G4double Stokes_P3 = (Stokes_S3 * L_Gamma + 157 158 fFinalGammaPolarization.SetPhoton(); 159 160 fFinalGammaPolarization.setX(Stokes_P1); 161 fFinalGammaPolarization.setY(Stokes_P2); 162 fFinalGammaPolarization.setZ(Stokes_P3); 163 164 if(fFinalGammaPolarization.mag2() > 1.) 165 { 166 G4ExceptionDescription ed; 167 ed << " WARNING in pol-brem fFinalGammaPol 168 ed << "\t" << fFinalGammaPolarization << " 169 << delta; 170 G4Exception("G4PolarizedBremsstrahlungXS:: 171 JustWarning, ed); 172 } 173 } 174 175 G4double G4PolarizedBremsstrahlungXS::XSection 176 177 { 178 G4ExceptionDescription ed; 179 ed << "ERROR dummy routine G4PolarizedBremss 180 "called.\n"; 181 G4Exception("G4PolarizedBremsstrahlungXS::XS 182 ed); 183 184 return 0.; 185 } 186 187 // return expected mean polarisation 188 G4StokesVector G4PolarizedBremsstrahlungXS::Ge 189 { 190 // electron/positron 191 return fFinalLeptonPolarization; 192 } 193 194 G4StokesVector G4PolarizedBremsstrahlungXS::Ge 195 { 196 // photon 197 return fFinalGammaPolarization; 198 } 199