Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 27 #include "G4XTRGammaRadModel.hh" 28 29 ////////////////////////////////////////////// 30 // Constructor, destructor 31 G4XTRGammaRadModel::G4XTRGammaRadModel(G4Logic 32 G4doubl 33 G4Mater 34 G4doubl 35 const G 36 : G4VXTRenergyLoss(anEnvelope, foilMat, gasM 37 { 38 G4cout << "Gamma distributed X-ray TR radiat 39 40 // Build energy and angular integral spectra 41 // a radiator 42 fAlphaPlate = alphaPlate; 43 fAlphaGas = alphaGas; 44 G4cout << "fAlphaPlate = " << fAlphaPlate << 45 << G4endl; 46 fExitFlux = true; 47 } 48 49 ////////////////////////////////////////////// 50 G4XTRGammaRadModel::~G4XTRGammaRadModel() = de 51 52 void G4XTRGammaRadModel::ProcessDescription(st 53 { 54 out << "Rough model describing X-ray transit 55 "plates\n" 56 "and gas gaps are distributed accordi 57 } 58 59 ////////////////////////////////////////////// 60 // Rough approximation for radiator interferen 61 // fully GamDistr radiator. The plate and gas 62 // according to exponent. The mean values of t 63 // are supposed to be about XTR formation zone 64 // mean absorption length of XTR photons in co 65 G4double G4XTRGammaRadModel::GetStackFactor(G4 66 G4 67 { 68 G4double result, Qa, Qb, Q, Za, Zb, Ma, Mb; 69 70 Za = GetPlateFormationZone(energy, gamma, va 71 Zb = GetGasFormationZone(energy, gamma, varA 72 73 Ma = GetPlateLinearPhotoAbs(energy); 74 Mb = GetGasLinearPhotoAbs(energy); 75 76 Qa = (1.0 + fPlateThick * Ma / fAlphaPlate); 77 Qa = std::pow(Qa, -fAlphaPlate); 78 Qb = (1.0 + fGasThick * Mb / fAlphaGas); 79 Qb = std::pow(Qb, -fAlphaGas); 80 Q = Qa * Qb; 81 82 G4complex Ca(1.0 + 0.5 * fPlateThick * Ma / 83 fPlateThick / Za / fAlphaPlate) 84 G4complex Cb(1.0 + 0.5 * fGasThick * Mb / fA 85 fGasThick / Zb / fAlphaGas); 86 87 G4complex Ha = std::pow(Ca, -fAlphaPlate); 88 G4complex Hb = std::pow(Cb, -fAlphaGas); 89 G4complex H = Ha * Hb; 90 91 G4complex F1 = (0.5 * (1 + Qa) * (1.0 + H) - 92 93 G4complex F2 = (1.0 - Ha) * (Qa - Ha) * Hb / 94 95 F2 *= std::pow(Q, G4double(fPlateNumber)) - 96 97 result = (1. - std::pow(Q, G4double(fPlateNu 98 99 G4complex stack = result * F1; 100 stack += F2; 101 stack *= 2.0 * OneInterfaceXTRdEdx(energy, g 102 103 result = std::real(stack); 104 105 return result; 106 } 107