Geant4 11.2.2
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

◆ ~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}

Referenced by G4PolarizedPhotoElectricModel::SampleSecondaries().

◆ 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
double x() const
void setY(double)
double y() const
void setZ(double)
void setX(double)

Referenced by G4PolarizedPhotoElectricModel::SampleSecondaries().

◆ 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: