33ScatterSimulation::dif_Compton_cross_section(
const float cos_theta,
float energy)
35 const double Re = 2.818E-13;
36 const double sin_theta_2 = 1 - cos_theta * cos_theta;
37 const double P = 1.0 / (1.0 + (energy / 511.0) * (1.0 - cos_theta));
38 return static_cast<float>((Re * Re / 2) * P * (1 - P * sin_theta_2 + P * P));
42ScatterSimulation::photon_energy_after_Compton_scatter(
const float cos_theta,
const float energy)
44 return static_cast<float>(energy / (1 + (energy / 511.0f) * (1 - cos_theta)));
48ScatterSimulation::photon_energy_after_Compton_scatter_511keV(
const float cos_theta)
50 return 511.f / (2.f - cos_theta);
54ScatterSimulation::total_Compton_cross_section(
const float energy)
56 const double a = energy / 511.0;
57 const double l = log(1.0 + 2.0 * a);
58 const double sigma0 = 6.65E-25;
59 return static_cast<float>(
61 * ((1.0 + a) / (a * a) * (2.0 * (1.0 + a) / (1.0 + 2.0 * a) - l / a) + l / (2.0 * a)
62 - (1.0 + 3.0 * a) / (1.0 + 2.0 * a) / (1.0 + 2.0 * a)));
66ScatterSimulation::total_Compton_cross_section_relative_to_511keV(
const float energy)
68 const double a = energy / 511.0;
69 static const double prefactor
70 = 9.0 / (-40 + 27 * log(3.));
75 * (((-4 - a * (16 + a * (18 + 2 * a))) /
square(1 + 2 * a) + ((2 + (2 - a) * a) * log(1 + 2 * a)) / a) /
square(a)));
Declaration of class stir::ProjDataInMemory.
Declaration of class stir::ProjDataInterfile.
Declaration of stir::error()
NUMBER square(const NUMBER &x)
returns the square of a number, templated.
Definition common.h:154
Declaration of stir::info()
Definition of stir::is_null_ptr functions.
Declaration of stir::read_from_file functions (providing easy access to class stir::InputFileFormatRe...