G4StrawTubeXTRadiator Class Reference

#include <G4StrawTubeXTRadiator.hh>

Inheritance diagram for G4StrawTubeXTRadiator:

G4VXTRenergyLoss G4VDiscreteProcess G4VProcess

Public Member Functions

 G4StrawTubeXTRadiator (G4LogicalVolume *anEnvelope, G4Material *, G4Material *, G4double, G4double, G4Material *, G4bool unishut=false, const G4String &processName="StrawTubeXTRadiator")
virtual ~G4StrawTubeXTRadiator ()
G4double GetMediumFormationZone (G4double, G4double, G4double)
void ComputeMediumPhotoAbsCof ()
G4double GetMediumLinearPhotoAbs (G4double)
G4complex GetMediumComplexFZ (G4double, G4double, G4double)
G4double GetStackFactor (G4double energy, G4double gamma, G4double varAngle)

Protected Attributes

G4int fMatIndex3
G4double fSigma3
G4SandiaTablefMediumPhotoAbsCof

Detailed Description

Definition at line 53 of file G4StrawTubeXTRadiator.hh.


Constructor & Destructor Documentation

G4StrawTubeXTRadiator::G4StrawTubeXTRadiator ( G4LogicalVolume anEnvelope,
G4Material ,
G4Material ,
G4double  ,
G4double  ,
G4Material ,
G4bool  unishut = false,
const G4String processName = "StrawTubeXTRadiator" 
)

Definition at line 40 of file G4StrawTubeXTRadiator.cc.

References ComputeMediumPhotoAbsCof(), G4VXTRenergyLoss::fAlphaGas, G4VXTRenergyLoss::fAlphaPlate, fMatIndex3, G4VXTRenergyLoss::fPlasmaCof, fSigma3, G4cout, G4endl, G4Material::GetElectronDensity(), G4Material::GetIndex(), G4Material::GetName(), and G4VProcess::verboseLevel.

00044                                                                       :
00045   G4VXTRenergyLoss(anEnvelope,foilMat,gasMat,a,b,1,processName)
00046 {
00047   if(verboseLevel > 0)
00048     G4cout<<"Straw tube X-ray TR  radiator EM process is called"<<G4endl;
00049 
00050   if( unishut )
00051   {
00052     fAlphaPlate = 1./3.;
00053     fAlphaGas   = 12.4;
00054     if(verboseLevel > 0)
00055       G4cout<<"straw uniform shooting: "<<"fAlphaPlate = "
00056             <<fAlphaPlate<<" ; fAlphaGas = "<<fAlphaGas<<G4endl;
00057 
00058   }
00059   else
00060   {
00061     fAlphaPlate = 0.5;
00062     fAlphaGas   = 5.;
00063     if(verboseLevel > 0)
00064       G4cout<<"straw isotropical shooting: "<<"fAlphaPlate = "
00065             <<fAlphaPlate<<" ; fAlphaGas = "<<fAlphaGas<<G4endl;
00066 
00067 
00068   }
00069   // index of medium material
00070 
00071   fMatIndex3 = mediumMat->GetIndex();
00072   if(verboseLevel > 0)
00073     G4cout<<"medium material = "<<mediumMat->GetName()<<G4endl;
00074 
00075   // plasma energy squared for plate material
00076 
00077   fSigma3 = fPlasmaCof*mediumMat->GetElectronDensity();
00078   if(verboseLevel > 0)
00079     G4cout<<"medium plasma energy = "<<std::sqrt(fSigma3)/eV<<" eV"<<G4endl;
00080 
00081   // Compute cofs for preparation of linear photo absorption in external medium
00082 
00083   ComputeMediumPhotoAbsCof();
00084 
00085   // Build energy and angular integral spectra of X-ray TR photons from
00086   // a radiator
00087 
00088   // BuildTable();
00089 }

G4StrawTubeXTRadiator::~G4StrawTubeXTRadiator (  )  [virtual]

Definition at line 93 of file G4StrawTubeXTRadiator.cc.

00094 {
00095 }


Member Function Documentation

void G4StrawTubeXTRadiator::ComputeMediumPhotoAbsCof (  ) 

Definition at line 184 of file G4StrawTubeXTRadiator.cc.

References fMatIndex3, fMediumPhotoAbsCof, G4Material::GetMaterialTable(), and G4Material::GetSandiaTable().

Referenced by G4StrawTubeXTRadiator().

00185 {
00186   const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
00187   const G4Material* mat = (*theMaterialTable)[fMatIndex3];
00188   fMediumPhotoAbsCof = mat->GetSandiaTable();
00189 }

G4complex G4StrawTubeXTRadiator::GetMediumComplexFZ ( G4double  ,
G4double  ,
G4double   
)

Definition at line 162 of file G4StrawTubeXTRadiator.cc.

References GetMediumFormationZone(), and GetMediumLinearPhotoAbs().

Referenced by GetStackFactor().

00165 {
00166   G4double cof, length,delta, real_v, image_v;
00167 
00168   length = 0.5*GetMediumFormationZone(omega,gamma,varAngle);
00169   delta  = length*GetMediumLinearPhotoAbs(omega);
00170   cof    = 1.0/(1.0 + delta*delta);
00171 
00172   real_v   = length*cof;
00173   image_v  = real_v*delta;
00174 
00175   G4complex zone(real_v,image_v); 
00176   return zone;
00177 }

G4double G4StrawTubeXTRadiator::GetMediumFormationZone ( G4double  ,
G4double  ,
G4double   
)

Definition at line 148 of file G4StrawTubeXTRadiator.cc.

References fSigma3, and G4InuclParticleNames::lambda.

Referenced by GetMediumComplexFZ().

00151 {
00152   G4double cof, lambda;
00153   lambda = 1.0/gamma/gamma + varAngle + fSigma3/omega/omega;
00154   cof = 2.0*hbarc/omega/lambda ;
00155   return cof ;
00156 }

G4double G4StrawTubeXTRadiator::GetMediumLinearPhotoAbs ( G4double   ) 

Definition at line 196 of file G4StrawTubeXTRadiator.cc.

References fMediumPhotoAbsCof, and G4SandiaTable::GetSandiaCofForMaterial().

Referenced by GetMediumComplexFZ().

00197 {
00198   G4double omega2, omega3, omega4; 
00199 
00200   omega2 = omega*omega;
00201   omega3 = omega2*omega;
00202   omega4 = omega2*omega2;
00203 
00204   G4double* SandiaCof = fMediumPhotoAbsCof->GetSandiaCofForMaterial(omega);
00205 
00206   G4double cross = SandiaCof[0]/omega  + SandiaCof[1]/omega2 +
00207                    SandiaCof[2]/omega3 + SandiaCof[3]/omega4;
00208   return cross;
00209 }

G4double G4StrawTubeXTRadiator::GetStackFactor ( G4double  energy,
G4double  gamma,
G4double  varAngle 
) [virtual]

Reimplemented from G4VXTRenergyLoss.

Definition at line 106 of file G4StrawTubeXTRadiator.cc.

References C3, G4VXTRenergyLoss::fAlphaGas, G4VXTRenergyLoss::fAlphaPlate, G4VXTRenergyLoss::fGasThick, G4VXTRenergyLoss::fPlateThick, G4VXTRenergyLoss::GetGasComplexFZ(), G4VXTRenergyLoss::GetGasFormationZone(), G4VXTRenergyLoss::GetGasLinearPhotoAbs(), GetMediumComplexFZ(), G4VXTRenergyLoss::GetPlateComplexFZ(), G4VXTRenergyLoss::GetPlateFormationZone(), and G4VXTRenergyLoss::GetPlateLinearPhotoAbs().

00108 {
00109 
00110 
00111   G4double result, L2, L3, M2, M3;
00112   
00113   L2 = GetPlateFormationZone(energy,gamma,varAngle);
00114   L3 = GetGasFormationZone(energy,gamma,varAngle);
00115 
00116   M2 = GetPlateLinearPhotoAbs(energy);
00117   M3 = GetGasLinearPhotoAbs(energy);
00118 
00119   G4complex C2(1.0 + 0.5*fPlateThick*M2/fAlphaPlate, fPlateThick/L2/fAlphaPlate); 
00120   G4complex C3(1.0 + 0.5*fGasThick*M3/fAlphaGas, fGasThick/L3/fAlphaGas); 
00121 
00122   G4complex H2 = std::pow(C2,-fAlphaPlate);  
00123   G4complex H3 = std::pow(C3,-fAlphaGas);
00124   G4complex H  = H2*H3;
00125 
00126   G4complex Z1 = GetMediumComplexFZ(energy,gamma,varAngle);
00127   G4complex Z2 = GetPlateComplexFZ(energy,gamma,varAngle);
00128   G4complex Z3 = GetGasComplexFZ(energy,gamma,varAngle);
00129 
00130 
00131   G4complex R  =    ( Z1 - Z2 )*( Z1 - Z2 )*( 1. - H2*H ) +
00132                     ( Z2 - Z3 )*( Z2 - Z3 )*( 1. - H3 )   + 
00133                  2.*( Z1 - Z2 )*( Z2 - Z3 )*H2*( 1. - H3 ) ;
00134 
00135   result       = 2.0*std::real(R)*(varAngle*energy/hbarc/hbarc);
00136   
00137   return      result;
00138 
00139 }


Field Documentation

G4int G4StrawTubeXTRadiator::fMatIndex3 [protected]

Definition at line 74 of file G4StrawTubeXTRadiator.hh.

Referenced by ComputeMediumPhotoAbsCof(), and G4StrawTubeXTRadiator().

G4SandiaTable* G4StrawTubeXTRadiator::fMediumPhotoAbsCof [protected]

Definition at line 77 of file G4StrawTubeXTRadiator.hh.

Referenced by ComputeMediumPhotoAbsCof(), and GetMediumLinearPhotoAbs().

G4double G4StrawTubeXTRadiator::fSigma3 [protected]

Definition at line 75 of file G4StrawTubeXTRadiator.hh.

Referenced by G4StrawTubeXTRadiator(), and GetMediumFormationZone().


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