83 if(t0 >= tm)
return 0.0;
92 for (
size_t i=0; i<=
length; i++) {
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++) {
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++) {
206 G4cout <<
"WARNING in G4RDeBremsstrahlungSpectrum::SampleEnergy:"
207 <<
" Majoranta " << amaj
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;
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;
G4double Function(G4double x, const G4DataVector &p) const
const char * name(G4int ptype)
G4double AverageValue(G4double xMin, G4double xMax, const G4DataVector &p) const
~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
G4double IntSpectrum(G4double xMin, G4double xMax, const G4DataVector &p) const
static constexpr double MeV
G4RDBremsstrahlungParameters * theBRparam
G4RDeBremsstrahlungSpectrum(const G4DataVector &bins, const G4String &name)