40 G4cout <<
" XTR Regular discrete radiator model is called" <<
G4endl;
51 out <<
"Describes X-ray transition radiation with thickness of gaps and "
60 G4double result, sum = 0., tmp, cof1, cof2, cofMin, theta2, theta2k;
66 sigma = 0.5 * (aMa + bMb);
88 G4cout << cof1 <<
" " << cof2 <<
" " << cofMin <<
G4endl;
94 result = (k - cof1) * (k - cof1) * (k + cof2) * (k + cof2);
98 0.5 * std::sin(tmp) * std::sin(tmp) * std::abs(k - cofMin) / result;
102 sum += std::sin(tmp) * std::sin(tmp) * std::abs(k - cofMin) / result;
104 theta2k = std::sqrt(theta2 * std::abs(k - cofMin));
108 G4cout << k <<
" " << theta2k <<
" "
109 << std::sin(tmp) * std::sin(tmp) * std::abs(k - cofMin) / result
113 result = 2 * (cof1 + cof2) * (cof1 + cof2) * sum /
energy;
138 G4complex Ha(std::exp(-0.5 * aMa) * std::cos(aZa),
139 -std::exp(-0.5 * aMa) * std::sin(aZa));
141 G4complex Hb(std::exp(-0.5 * bMb) * std::cos(bZb),
142 -std::exp(-0.5 * bMb) * std::sin(bZb));
147 G4complex F2 = (1.0 - Ha) * (Qa - Ha) * Hb * (1.0 - Hs) * (
Q - Hs);
151 result *= (1. - Qa) * (1. + Qa - 2. * std::sqrt(Qa) * std::cos(aZa));
152 result /= (1. - std::sqrt(
Q)) * (1. - std::sqrt(
Q)) +
153 4. * std::sqrt(
Q) * std::sin(0.5 * (aZa + bZb)) *
154 std::sin(0.5 * (aZa + bZb));
157 I2 /= (1. - std::sqrt(
Q)) * (1. - std::sqrt(
Q)) +
158 4. * std::sqrt(
Q) * std::sin(0.5 * (aZa + bZb)) *
159 std::sin(0.5 * (aZa + bZb));
161 I2 /=
Q * ((std::sqrt(
Q) - std::cos(aZa + bZb)) *
162 (std::sqrt(
Q) - std::cos(aZa + bZb)) +
163 std::sin(aZa + bZb) * std::sin(aZa + bZb));
169 return std::real(stack);
static constexpr double pi
std::complex< G4double > G4complex
G4GLOB_DLL std::ostream G4cout
G4double GetPlateLinearPhotoAbs(G4double)
G4double GetGasFormationZone(G4double, G4double, G4double)
G4complex OneInterfaceXTRdEdx(G4double energy, G4double gamma, G4double varAngle)
G4double GetPlateFormationZone(G4double, G4double, G4double)
G4double GetGasLinearPhotoAbs(G4double)
G4double SpectralXTRdEdx(G4double energy) override
void ProcessDescription(std::ostream &) const override
G4XTRRegularRadModel(G4LogicalVolume *anEnvelope, G4Material *, G4Material *, G4double, G4double, G4int, const G4String &processName="XTRegularModel")
G4double GetStackFactor(G4double energy, G4double gamma, G4double varAngle) override
G4double energy(const ThreeVector &p, const G4double m)