#include <G4StrawTubeXTRadiator.hh>
Inheritance diagram for G4StrawTubeXTRadiator:
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 |
G4SandiaTable * | fMediumPhotoAbsCof |
Definition at line 53 of file G4StrawTubeXTRadiator.hh.
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] |
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 }
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 }
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 }
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 }
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().