G4PolarizedPairProductionCrossSection Class Reference

#include <G4PolarizedPairProductionCrossSection.hh>

Inheritance diagram for G4PolarizedPairProductionCrossSection:

G4VPolarizedCrossSection

Public Member Functions

 G4PolarizedPairProductionCrossSection ()
virtual void Initialize (G4double eps, G4double X, G4double phi, const G4StokesVector &p0, const G4StokesVector &p1, G4int flag=0)
virtual G4double XSection (const G4StokesVector &pol2, const G4StokesVector &pol3)
G4StokesVector GetPol2 ()
G4StokesVector GetPol3 ()

Detailed Description

Definition at line 53 of file G4PolarizedPairProductionCrossSection.hh.


Constructor & Destructor Documentation

G4PolarizedPairProductionCrossSection::G4PolarizedPairProductionCrossSection (  ) 

Definition at line 74 of file G4PolarizedPairProductionCrossSection.cc.

00075 {
00076   InitializeMe();
00077 }


Member Function Documentation

G4StokesVector G4PolarizedPairProductionCrossSection::GetPol2 (  )  [virtual]

Reimplemented from G4VPolarizedCrossSection.

Definition at line 195 of file G4PolarizedPairProductionCrossSection.cc.

00196 {
00197   // electron/positron
00198   return theFinalElectronPolarization;
00199 }

G4StokesVector G4PolarizedPairProductionCrossSection::GetPol3 (  )  [virtual]

Reimplemented from G4VPolarizedCrossSection.

Definition at line 200 of file G4PolarizedPairProductionCrossSection.cc.

00201 {
00202   // photon
00203   return theFinalPositronPolarization;;
00204 }

void G4PolarizedPairProductionCrossSection::Initialize ( G4double  eps,
G4double  X,
G4double  phi,
const G4StokesVector p0,
const G4StokesVector p1,
G4int  flag = 0 
) [virtual]

Reimplemented from G4VPolarizedCrossSection.

Definition at line 80 of file G4PolarizedPairProductionCrossSection.cc.

References G4VPolarizedCrossSection::fCoul, G4cout, G4endl, G4StokesVector::SetPhoton(), and G4VPolarizedCrossSection::theZ.

00086 {
00087   G4double aLept1E = aGammaE - aLept0E;
00088 
00089   G4double Stokes_P3  = beamPol.z()   ;   
00090   // **************************************************************************  
00091     
00092   G4double m0_c2  = electron_mass_c2; 
00093   G4double Lept0E = aLept0E/m0_c2+1.,   Lept0E2 = Lept0E * Lept0E ;
00094   G4double GammaE = aGammaE/m0_c2;
00095   G4double Lept1E = aLept1E/m0_c2-1.,   Lept1E2 = Lept1E * Lept1E ;
00096     
00097 
00098   //  const G4Element* theSelectedElement = theModel->SelectedAtom();
00099 
00100   // *******  Gamma Transvers Momentum
00101     
00102   G4double TMom = std::sqrt(Lept0E2 -1.)* sintheta, u    = TMom       , u2 =u * u ;
00103   G4double Xsi  = 1./(1.+u2)                      , Xsi2 = Xsi * Xsi  ; 
00104 
00105   //  G4double theZ  = theSelectedElement->GetZ();
00106     
00107   //  G4double fCoul = theSelectedElement->GetfCoulomb();
00108   G4double delta = 12. * std::pow(theZ, 1./3.) * Lept0E * Lept1E * Xsi / (121. * GammaE); 
00109   G4double GG=0.;
00110 
00111   if(delta < 0.5) {
00112     GG = std::log(2.* Lept0E * Lept1E / GammaE) - 2. - fCoul; 
00113   }
00114   else if ( delta < 120) {
00115     for (G4int j=2; j<=19; j++)  {
00116       if(SCRN[1][j] >= delta)    {
00117         GG =std::log(2 * Lept0E * Lept1E / GammaE) - 2 - fCoul
00118           -(SCRN[2][j-1]+(delta-SCRN[1][j-1])*(SCRN[2][j]-SCRN[2][j-1])/(SCRN[1][j]-SCRN[1][j-1]));
00119         break;
00120       }
00121     }
00122   }
00123   else  {
00124     G4double alpha_sc  = (111 * std::pow(theZ, -1./3.)) / Xsi;
00125     GG = std::log(alpha_sc)- 2 - fCoul;
00126   }
00127 
00128   if(GG<-1) GG=-1;     // *KL* do we need this ?!
00129 
00130 
00131   G4double I_Lepton = (Lept0E2 + Lept1E2)*(3+2*GG) + 2 * Lept0E * Lept1E * (1 + 4 * u2 * Xsi2 * GG);
00132  
00133     //    G4double D_Lepton1 = -8 * Lept0E * Lept1E * u2 * Xsi2 * GG / I_Lepton;
00134 
00135   G4double L_Lepton1 = GammaE * ((Lept0E - Lept1E) * (3. + 2. * GG)+2 * Lept1E * (1 + 4 * u2 * Xsi2 * GG))/I_Lepton;   
00136 
00137   G4double T_Lepton1 = 4 * GammaE * Lept1E * Xsi * u * (1. - 2. * Xsi) * GG / I_Lepton ;
00138 
00139 
00140   G4double Stokes_S1 = (Stokes_P3 * T_Lepton1) ;
00141   G4double Stokes_S2 = 0;
00142   G4double Stokes_S3 = (Stokes_P3 * L_Lepton1) ; 
00143     
00144 
00145   theFinalElectronPolarization.setX(Stokes_S1);
00146   theFinalElectronPolarization.setY(Stokes_S2);
00147   theFinalElectronPolarization.setZ(Stokes_S3);
00148 
00149   if(theFinalElectronPolarization.mag2()>1) { 
00150     G4cout<<" WARNING in pol-conv theFinalElectronPolarization \n";
00151     G4cout
00152       <<"\t"<<theFinalElectronPolarization
00153       <<"\t GG\t"<<GG
00154       <<"\t delta\t"<<delta
00155       <<G4endl;
00156     theFinalElectronPolarization.setX(0);
00157     theFinalElectronPolarization.setY(0);
00158     theFinalElectronPolarization.setZ(Stokes_S3);
00159     if(Stokes_S3>1) theFinalElectronPolarization.setZ(1);
00160   }
00161 
00162 
00163   G4double L_Lepton2 = GammaE * ((Lept1E - Lept0E) * (3. + 2. * GG)+2 * Lept0E * (1 + 4 * u2 * Xsi2 * GG))/I_Lepton;   
00164 
00165   G4double T_Lepton2 = 4 * GammaE * Lept0E * Xsi * u * (1. - 2. * Xsi) * GG / I_Lepton ;
00166 
00167   G4double Stokes_SS1 = (Stokes_P3 * T_Lepton2) ;
00168   G4double Stokes_SS2 = 0;
00169   G4double Stokes_SS3 = (Stokes_P3 * L_Lepton2) ; 
00170 
00171   theFinalPositronPolarization.SetPhoton();
00172 
00173   theFinalPositronPolarization.setX(Stokes_SS1);
00174   theFinalPositronPolarization.setY(Stokes_SS2);
00175   theFinalPositronPolarization.setZ(Stokes_SS3);
00176     
00177   if(theFinalPositronPolarization.mag2()>1) {
00178     G4cout<<" WARNING in pol-conv theFinalPositronPolarization \n";
00179     G4cout
00180       <<"\t"<<theFinalPositronPolarization
00181       <<"\t GG\t"<<GG
00182       <<"\t delta\t"<<delta
00183       <<G4endl;
00184   }
00185 }

G4double G4PolarizedPairProductionCrossSection::XSection ( const G4StokesVector pol2,
const G4StokesVector pol3 
) [virtual]

Implements G4VPolarizedCrossSection.

Definition at line 187 of file G4PolarizedPairProductionCrossSection.cc.

References G4cout.

00189 {
00190   G4cout<<"ERROR dummy routine G4PolarizedPairProductionCrossSection::XSection called \n";
00191   return 0;
00192 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:57 2013 for Geant4 by  doxygen 1.4.7