G4XTRGammaRadModel Class Reference

#include <G4XTRGammaRadModel.hh>

Inheritance diagram for G4XTRGammaRadModel:

G4VXTRenergyLoss G4VDiscreteProcess G4VProcess

Public Member Functions

 G4XTRGammaRadModel (G4LogicalVolume *anEnvelope, G4double, G4double, G4Material *, G4Material *, G4double, G4double, G4int, const G4String &processName="XTRgammaRadiator")
virtual ~G4XTRGammaRadModel ()
G4double GetStackFactor (G4double energy, G4double gamma, G4double varAngle)

Detailed Description

Definition at line 56 of file G4XTRGammaRadModel.hh.


Constructor & Destructor Documentation

G4XTRGammaRadModel::G4XTRGammaRadModel ( G4LogicalVolume anEnvelope,
G4double  ,
G4double  ,
G4Material ,
G4Material ,
G4double  ,
G4double  ,
G4int  ,
const G4String processName = "XTRgammaRadiator" 
)

Definition at line 42 of file G4XTRGammaRadModel.cc.

References G4VXTRenergyLoss::fAlphaGas, G4VXTRenergyLoss::fAlphaPlate, G4VXTRenergyLoss::fExitFlux, G4cout, and G4endl.

00047                                                                   :
00048   G4VXTRenergyLoss(anEnvelope,foilMat,gasMat,a,b,n,processName)
00049 {
00050   G4cout<<"Gammma distributed X-ray TR radiator model is called"<<G4endl ;
00051 
00052   // Build energy and angular integral spectra of X-ray TR photons from
00053   // a radiator
00054 
00055   fAlphaPlate = alphaPlate ;
00056   fAlphaGas   = alphaGas   ;
00057   G4cout<<"fAlphaPlate = "<<fAlphaPlate<<" ; fAlphaGas = "<<fAlphaGas<<G4endl ;
00058   fExitFlux = true;
00059   //  BuildTable() ;
00060 }

G4XTRGammaRadModel::~G4XTRGammaRadModel (  )  [virtual]

Definition at line 64 of file G4XTRGammaRadModel.cc.

00065 {
00066   ;
00067 }


Member Function Documentation

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

Reimplemented from G4VXTRenergyLoss.

Definition at line 80 of file G4XTRGammaRadModel.cc.

References G4VXTRenergyLoss::fAlphaGas, G4VXTRenergyLoss::fAlphaPlate, G4VXTRenergyLoss::fGasThick, G4VXTRenergyLoss::fPlateNumber, G4VXTRenergyLoss::fPlateThick, G4VXTRenergyLoss::GetGasFormationZone(), G4VXTRenergyLoss::GetGasLinearPhotoAbs(), G4VXTRenergyLoss::GetPlateFormationZone(), G4VXTRenergyLoss::GetPlateLinearPhotoAbs(), and G4VXTRenergyLoss::OneInterfaceXTRdEdx().

00082 {
00083   G4double result, Qa, Qb, Q, Za, Zb, Ma, Mb ;
00084   
00085   Za = GetPlateFormationZone(energy,gamma,varAngle) ;
00086   Zb = GetGasFormationZone(energy,gamma,varAngle) ;
00087 
00088   Ma = GetPlateLinearPhotoAbs(energy) ;
00089   Mb = GetGasLinearPhotoAbs(energy) ;
00090 
00091   Qa = ( 1.0 + fPlateThick*Ma/fAlphaPlate ) ;
00092   Qa = std::pow(Qa,-fAlphaPlate) ;
00093   Qb = ( 1.0 + fGasThick*Mb/fAlphaGas ) ;
00094   Qb = std::pow(Qb,-fAlphaGas) ;
00095   Q  = Qa*Qb ;
00096 
00097   G4complex Ca(1.0+0.5*fPlateThick*Ma/fAlphaPlate,fPlateThick/Za/fAlphaPlate) ; 
00098   G4complex Cb(1.0+0.5*fGasThick*Mb/fAlphaGas,fGasThick/Zb/fAlphaGas) ; 
00099 
00100   G4complex Ha = std::pow(Ca,-fAlphaPlate) ;  
00101   G4complex Hb = std::pow(Cb,-fAlphaGas) ;
00102   G4complex H  = Ha*Hb ;
00103 
00104   G4complex F1 = ( 0.5*(1+Qa)*(1.0+H) - Ha - Qa*Hb )/(1.0-H) ;
00105 
00106   G4complex F2 = (1.0-Ha)*(Qa-Ha)*Hb/(1.0-H)/(Q-H) ;
00107 
00108   F2          *= std::pow(Q,G4double(fPlateNumber)) - std::pow(H,fPlateNumber) ;
00109 
00110   result      = ( 1 - std::pow(Q,G4double(fPlateNumber)) )/( 1 - Q ) ;
00111 
00112   G4complex stack  = result*F1;
00113             stack += F2;
00114             stack *= 2.0*OneInterfaceXTRdEdx(energy,gamma,varAngle);
00115 
00116             result = std::real(stack);
00117 
00118             // result     *= 2.0*std::real(F1);
00119             // result     += 2.0*std::real(F2);
00120 
00121   return      result ;
00122 }


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