Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4PolarizedPhotoElectricXS Class Reference

#include <G4PolarizedPhotoElectricXS.hh>

Inheritance diagram for G4PolarizedPhotoElectricXS:

Public Member Functions

 G4PolarizedPhotoElectricXS ()
 ~G4PolarizedPhotoElectricXS () override
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
G4StokesVector GetPol2 () override
G4StokesVector GetPol3 () override
G4PolarizedPhotoElectricXSoperator= (const G4PolarizedPhotoElectricXS &right)=delete
 G4PolarizedPhotoElectricXS (const G4PolarizedPhotoElectricXS &)=delete
Public Member Functions inherited from G4VPolarizedXS
 G4VPolarizedXS ()
virtual ~G4VPolarizedXS ()
virtual G4double TotalXSection (G4double xmin, G4double xmax, G4double y, const G4StokesVector &pol0, const G4StokesVector &pol1)
G4double GetYmin ()
virtual G4double GetXmin (G4double y)
virtual G4double GetXmax (G4double y)
void SetMaterial (G4double A, G4double Z, G4double coul)
G4VPolarizedXSoperator= (const G4VPolarizedXS &right)=delete
 G4VPolarizedXS (const G4VPolarizedXS &)=delete

Additional Inherited Members

Protected Member Functions inherited from G4VPolarizedXS
void SetXmin (G4double xmin)
void SetXmax (G4double xmax)
void SetYmin (G4double ymin)
Protected Attributes inherited from G4VPolarizedXS
G4double fXmin
G4double fXmax
G4double fYmin
G4double fA
G4double fZ
G4double fCoul

Detailed Description

Definition at line 39 of file G4PolarizedPhotoElectricXS.hh.

Constructor & Destructor Documentation

◆ G4PolarizedPhotoElectricXS() [1/2]

G4PolarizedPhotoElectricXS::G4PolarizedPhotoElectricXS ( )

Definition at line 35 of file G4PolarizedPhotoElectricXS.cc.

36{
37 fFinalElectronPolarization = G4StokesVector::ZERO;
38}
static const G4StokesVector ZERO

Referenced by G4PolarizedPhotoElectricXS(), and operator=().

◆ ~G4PolarizedPhotoElectricXS()

G4PolarizedPhotoElectricXS::~G4PolarizedPhotoElectricXS ( )
override

Definition at line 41 of file G4PolarizedPhotoElectricXS.cc.

41{}

◆ G4PolarizedPhotoElectricXS() [2/2]

G4PolarizedPhotoElectricXS::G4PolarizedPhotoElectricXS ( const G4PolarizedPhotoElectricXS & )
delete

Member Function Documentation

◆ GetPol2()

G4StokesVector G4PolarizedPhotoElectricXS::GetPol2 ( )
overridevirtual

Reimplemented from G4VPolarizedXS.

Definition at line 111 of file G4PolarizedPhotoElectricXS.cc.

112{
113 return fFinalElectronPolarization;
114}

◆ GetPol3()

G4StokesVector G4PolarizedPhotoElectricXS::GetPol3 ( )
overridevirtual

Reimplemented from G4VPolarizedXS.

Definition at line 117 of file G4PolarizedPhotoElectricXS.cc.

118{
119 return G4StokesVector();
120}

◆ Initialize()

void G4PolarizedPhotoElectricXS::Initialize ( G4double aGammaE,
G4double aLept0E,
G4double sintheta,
const G4StokesVector & beamPol,
const G4StokesVector & ,
G4int flag = 0 )
overridevirtual

Implements G4VPolarizedXS.

Definition at line 44 of file G4PolarizedPhotoElectricXS.cc.

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}
@ JustWarning
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
double G4double
Definition G4Types.hh:83
double z() const

◆ operator=()

G4PolarizedPhotoElectricXS & G4PolarizedPhotoElectricXS::operator= ( const G4PolarizedPhotoElectricXS & right)
delete

◆ XSection()

G4double G4PolarizedPhotoElectricXS::XSection ( const G4StokesVector & pol2,
const G4StokesVector & pol3 )
overridevirtual

Implements G4VPolarizedXS.

Definition at line 99 of file G4PolarizedPhotoElectricXS.cc.

101{
103 ed << "ERROR dummy routine G4PolarizedPhotoElectricXS::XSection() "
104 "called\n";
105 G4Exception("G4PolarizedPhotoElectricXS::XSection", "pol024", FatalException,
106 ed);
107 return 0.;
108}
@ FatalException

The documentation for this class was generated from the following files: