Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4PolarizedPhotoElectricXS.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// Geant4 Class file
27//
28// File name: G4PolarizedPhotoElectricXS
29//
30// Author: Karim Laihem
31
33
34//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
36{
37 fFinalElectronPolarization = G4StokesVector::ZERO;
38}
39
40//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
42
43//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
45 G4double sinTheta,
46 const G4StokesVector& beamPol,
47 const G4StokesVector& /*p1*/,
48 G4int /*flag*/)
49{
50 // Polarization transfer to e- in PhotoelectricEffect.
51 G4double Gfactor = aLept0E / CLHEP::electron_mass_c2 + 1.;
52 G4double Gfactor_2 = Gfactor * Gfactor;
53
54 G4double beta = std::sqrt(1. - 1. / (Gfactor_2));
55
56 G4double Stokes_P3 = beamPol.z();
57
58 G4double Lept0E = aLept0E / CLHEP::electron_mass_c2 + 1.;
59 G4double Lept0E2 = Lept0E * Lept0E;
60 G4double GammaE = aGammaE / CLHEP::electron_mass_c2;
61
62 G4double cosTheta = std::sqrt(1. - sinTheta * sinTheta);
63
64 G4double I_Lepton0 =
65 1.0 +
66 (1. / GammaE) * ((2. / (GammaE * Lept0E * (1 - beta * cosTheta))) - 1.);
67
68 G4double A_Lepton0 =
69 (Lept0E / (Lept0E + 1)) *
70 (2.0 / (GammaE * Lept0E) + beta * cosTheta +
71 (2.0 / ((GammaE * Lept0E2) * (1.0 - beta * cosTheta)))) /
72 I_Lepton0;
73
74 G4double B_Lepton0 = (Lept0E / (Lept0E + 1.0)) * beta * sinTheta *
75 (2.0 / (GammaE * Lept0E * (1 - beta * cosTheta)) - 1.0) /
76 I_Lepton0;
77
78 fFinalElectronPolarization.setX(Stokes_P3 * B_Lepton0);
79 fFinalElectronPolarization.setY(0.);
80 fFinalElectronPolarization.setZ(Stokes_P3 * A_Lepton0);
81
82 if((fFinalElectronPolarization.x() * fFinalElectronPolarization.x() +
83 fFinalElectronPolarization.y() * fFinalElectronPolarization.y() +
84 fFinalElectronPolarization.z() * fFinalElectronPolarization.z()) > 1.)
85
86 {
88 ed << "Warning: PhotoelectricEffect Problem in pol-transfer photon to "
89 "lepton:Px2 + Py2 + Pz2 > 1\n";
90 ed << "Polarization transfer forced to be total and similar as incoming "
91 "Photo\n";
92 G4Exception("G4PolarizedPhotoElectricXS::Initialize", "pol023", JustWarning,
93 ed);
94 fFinalElectronPolarization = beamPol; // to be safe
95 }
96}
97
98//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
100 const G4StokesVector& /*pol3*/)
101{
103 ed << "ERROR dummy routine G4PolarizedPhotoElectricXS::XSection() "
104 "called\n";
105 G4Exception("G4PolarizedPhotoElectricXS::XSection", "pol024", FatalException,
106 ed);
107 return 0.;
108}
109
110//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
112{
113 return fFinalElectronPolarization;
114}
115
116//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
118{
119 return G4StokesVector();
120}
@ JustWarning
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:59
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
double z() const
double x() const
void setY(double)
double y() const
void setZ(double)
void setX(double)
void Initialize(G4double aGammaE, G4double aLept0E, G4double sintheta, const G4StokesVector &beamPol, const G4StokesVector &, G4int flag=0) override
G4double XSection(const G4StokesVector &pol2, const G4StokesVector &pol3) override
static const G4StokesVector ZERO