#include <G4GammaXTRadiator.hh>
Inheritance diagram for G4GammaXTRadiator:
Public Member Functions | |
G4GammaXTRadiator (G4LogicalVolume *anEnvelope, G4double, G4double, G4Material *, G4Material *, G4double, G4double, G4int, const G4String &processName="XTRgammaRadiator") | |
~G4GammaXTRadiator () | |
G4double | GetStackFactor (G4double energy, G4double gamma, G4double varAngle) |
Definition at line 57 of file G4GammaXTRadiator.hh.
G4GammaXTRadiator::G4GammaXTRadiator | ( | G4LogicalVolume * | anEnvelope, | |
G4double | , | |||
G4double | , | |||
G4Material * | , | |||
G4Material * | , | |||
G4double | , | |||
G4double | , | |||
G4int | , | |||
const G4String & | processName = "XTRgammaRadiator" | |||
) |
Definition at line 41 of file G4GammaXTRadiator.cc.
References G4VXTRenergyLoss::fAlphaGas, G4VXTRenergyLoss::fAlphaPlate, G4cout, and G4endl.
00046 : 00047 G4VXTRenergyLoss(anEnvelope,foilMat,gasMat,a,b,n,processName) 00048 { 00049 G4cout<<"Gammma distributed X-ray TR radiator model is called"<<G4endl ; 00050 00051 // Build energy and angular integral spectra of X-ray TR photons from 00052 // a radiator 00053 00054 fAlphaPlate = alphaPlate ; 00055 fAlphaGas = alphaGas ; 00056 G4cout<<"fAlphaPlate = "<<fAlphaPlate<<" ; fAlphaGas = "<<fAlphaGas<<G4endl ; 00057 00058 // BuildTable() ; 00059 }
G4GammaXTRadiator::~G4GammaXTRadiator | ( | ) |
G4double G4GammaXTRadiator::GetStackFactor | ( | G4double | energy, | |
G4double | gamma, | |||
G4double | varAngle | |||
) | [virtual] |
Reimplemented from G4VXTRenergyLoss.
Definition at line 79 of file G4GammaXTRadiator.cc.
References G4VXTRenergyLoss::fAlphaGas, G4VXTRenergyLoss::fAlphaPlate, G4VXTRenergyLoss::fGasThick, G4VXTRenergyLoss::fPlateNumber, G4VXTRenergyLoss::fPlateThick, G4VXTRenergyLoss::GetGasFormationZone(), G4VXTRenergyLoss::GetGasLinearPhotoAbs(), G4VXTRenergyLoss::GetPlateFormationZone(), G4VXTRenergyLoss::GetPlateLinearPhotoAbs(), and G4VXTRenergyLoss::OneInterfaceXTRdEdx().
00081 { 00082 G4double result, Za, Zb, Ma, Mb ; 00083 00084 Za = GetPlateFormationZone(energy,gamma,varAngle) ; 00085 Zb = GetGasFormationZone(energy,gamma,varAngle) ; 00086 00087 Ma = GetPlateLinearPhotoAbs(energy) ; 00088 Mb = GetGasLinearPhotoAbs(energy) ; 00089 00090 00091 G4complex Ca(1.0+0.5*fPlateThick*Ma/fAlphaPlate,fPlateThick/Za/fAlphaPlate) ; 00092 G4complex Cb(1.0+0.5*fGasThick*Mb/fAlphaGas,fGasThick/Zb/fAlphaGas) ; 00093 00094 G4complex Ha = std::pow(Ca,-fAlphaPlate) ; 00095 G4complex Hb = std::pow(Cb,-fAlphaGas) ; 00096 G4complex H = Ha*Hb ; 00097 00098 G4complex F1 = (1.0 - Ha)*(1.0 - Hb )/(1.0 - H) 00099 * G4double(fPlateNumber) ; 00100 00101 G4complex F2 = (1.0-Ha)*(1.0-Ha)*Hb/(1.0-H)/(1.0-H) 00102 * (1.0 - std::pow(H,fPlateNumber)) ; 00103 00104 G4complex R = (F1 + F2)*OneInterfaceXTRdEdx(energy,gamma,varAngle) ; 00105 00106 result = 2.0*std::real(R) ; 00107 00108 return result ; 00109 }