83 if(t0 >= tm)
return 0.0;
92 for (
size_t i=0; i<=length; i++) {
93 p.push_back(theBRparam->
Parameter(i, Z, e));
97 G4double y = IntSpectrum(z0, 1.0, p);
102 <<
"; tMax(MeV)= " << tmax/
MeV
105 <<
"; xp[0]= " << xp[0]
130 if(t0 >= tm)
return 0.0;
140 for (
size_t i=0; i<=length; i++) {
141 p.push_back(theBRparam->
Parameter(i, Z, e));
145 G4double y = IntSpectrum(z0, 1.0, p);
151 x += p[0]*(t0 - zmin - c*(std::atan(t0/c) - std::atan(zmin/c)));
157 <<
"; tMax(MeV)= " << tmax/
MeV
158 <<
"; e(MeV)= " << e/
MeV
184 if(t0 >= tm)
return 0.0;
191 for (
size_t i=0; i<=length; i++) {
192 p.push_back(theBRparam->
Parameter(i, Z, e));
194 G4double amaj =
std::max(p[length], 1. - (p[1] - p[0])*xp[0]/(xp[1] - xp[0]) );
203 fun = Function(tgam, p);
206 G4cout <<
"WARNING in G4RDeBremsstrahlungSpectrum::SampleEnergy:"
207 <<
" Majoranta " << amaj
231 G4double k = (p[1] - p[0])/(xp[1] - xp[0]);
232 sum += (1. - k*xp[0])*std::log(x2/x1) + k*(x2 - x1);
235 for (
size_t i=0; i<length-1; i++) {
241 sum += z2 - z1 + std::log(x2/x1)*(z1*x2 - z2*x1)/(x2 - x1);
244 if(sum < 0.0) sum = 0.0;
259 G4double k = (p[1] - p[0])/(xp[1] - xp[0]);
260 sum += (z2 - z1)*(1. - k*xp[0]);
263 sum += 0.5*k*(z2 - z1);
266 for (
size_t i=0; i<length-1; i++) {
272 sum += 0.5*(z2 - z1)*(x2 + x1) + z1*x2 - z2*x1;
275 if(sum < 0.0) sum = 0.0;
285 f = p[0] + (p[1] - p[0])*(x - xp[0])/(xp[1] - xp[0]);
289 for (
size_t i=0; i<length-1; i++) {
292 f = p[i] + (p[i+1] - p[i])*(x - xp[i])/(xp[i+1] - xp[i]);
312 return kineticEnergy;
~G4RDeBremsstrahlungSpectrum()
G4double Probability(G4int Z, G4double tMin, G4double tMax, G4double kineticEnergy, G4int shell=0, const G4ParticleDefinition *pd=0) const
G4GLOB_DLL std::ostream G4cout
static constexpr double eV
G4double ParameterC(G4int index) const
G4double Parameter(G4int parameterIndex, G4int Z, G4double energy) const
G4double Excitation(G4int Z, G4double kineticEnergy) const
G4double SampleEnergy(G4int Z, G4double tMin, G4double tMax, G4double kineticEnergy, G4int shell=0, const G4ParticleDefinition *pd=0) const
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double AverageEnergy(G4int Z, G4double tMin, G4double tMax, G4double kineticEnergy, G4int shell=0, const G4ParticleDefinition *pd=0) const
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4double MaxEnergyOfSecondaries(G4double kineticEnergy, G4int Z=0, const G4ParticleDefinition *pd=0) const
static constexpr double MeV
G4RDeBremsstrahlungSpectrum(const G4DataVector &bins, const G4String &name)