|
3 | 3 | # Total cross sections
|
4 | 4 | ############
|
5 | 5 |
|
6 |
| -# total cross section on single phase space point |
7 |
| -# based on four-momenta |
8 |
| -function _total_cross_section( |
9 |
| - proc::AbstractProcessDefinition, |
10 |
| - model::AbstractModelDefinition, |
11 |
| - phase_space_def::AbstractPhasespaceDefinition, |
12 |
| - in_phase_space::AbstractVector{T}, |
13 |
| -) where {T<:QEDbase.AbstractFourMomentum} |
14 |
| - I = 1 / (4 * _incident_flux(proc, model, in_phase_space)) |
15 |
| - |
16 |
| - return I * _total_probability(proc, model, phase_space_def, in_phase_space) |
17 |
| -end |
18 |
| - |
19 |
| -# total cross section on single phase space point |
20 |
| -# based on coordinates |
21 |
| -function _total_cross_section( |
22 |
| - proc::AbstractProcessDefinition, |
23 |
| - model::AbstractModelDefinition, |
24 |
| - phase_space_def::AbstractPhasespaceDefinition, |
25 |
| - in_phase_space::AbstractVector{T}, |
26 |
| -) where {T<:Real} |
27 |
| - in_momenta = _generate_incoming_momenta(proc, model, phase_space_def, in_phase_space) |
28 |
| - return _total_cross_section(proc, model, phase_space_def, in_momenta) |
29 |
| -end |
30 |
| - |
31 |
| -# total cross section on several phase space points |
32 |
| -function _total_cross_section( |
33 |
| - proc::AbstractProcessDefinition, |
34 |
| - model::AbstractModelDefinition, |
35 |
| - in_phase_space_def::AbstractPhasespaceDefinition, |
36 |
| - in_phase_space::AbstractMatrix{T}, |
37 |
| -) where {T<:AbstractPhasespaceElement} |
38 |
| - res = Vector{eltype(T)}(undef, size(in_phase_space, 2)) |
39 |
| - for i in 1:size(in_phase_space, 2) |
40 |
| - res[i] = _total_cross_section( |
41 |
| - proc, model, in_phase_space_def, view(in_phase_space, :, i) |
42 |
| - ) |
43 |
| - end |
44 |
| - return res |
45 |
| -end |
46 |
| - |
47 | 6 | """
|
48 |
| - total_cross_section( |
49 |
| - proc::AbstractProcessDefinition, |
50 |
| - model::AbstractModelDefinition, |
51 |
| - in_phase_space_def::AbstractPhasespaceDefinition, |
52 |
| - in_phase_space::AbstractVecOrMat{T}, |
53 |
| - ) where {T<:QEDbase.AbstractFourMomentum} |
| 7 | + total_cross_section(in_psp::InPhaseSpacePoint) |
54 | 8 |
|
55 |
| -Return the total cross section for a given combination of scattering process and compute model, evaluated at the particle momenta. |
| 9 | +Return the total cross section for a given [`InPhaseSpacePoint`](@ref). |
56 | 10 | """
|
57 |
| -function total_cross_section( |
58 |
| - proc::AbstractProcessDefinition, |
59 |
| - model::AbstractModelDefinition, |
60 |
| - in_phase_space_def::AbstractPhasespaceDefinition, |
61 |
| - in_phase_space::AbstractVecOrMat{T}, |
62 |
| -) where {T<:QEDbase.AbstractFourMomentum} |
63 |
| - _check_in_phase_space_dimension(proc, model, in_phase_space) |
64 |
| - |
65 |
| - return _total_cross_section(proc, model, in_phase_space_def, in_phase_space) |
66 |
| -end |
67 |
| - |
68 |
| -""" |
69 |
| - total_cross_section( |
70 |
| - proc::AbstractProcessDefinition, |
71 |
| - model::AbstractModelDefinition, |
72 |
| - in_phase_space_def::AbstractPhasespaceDefinition, |
73 |
| - in_phase_space::AbstractVecOrMat{T}, |
74 |
| - ) where {T<:Real} |
75 |
| -
|
76 |
| -Return the total cross section for a given combination of scattering process and compute model, evaluated at the coordinates. |
77 |
| -""" |
78 |
| -function total_cross_section( |
79 |
| - proc::AbstractProcessDefinition, |
80 |
| - model::AbstractModelDefinition, |
81 |
| - in_phase_space_def::AbstractPhasespaceDefinition, |
82 |
| - in_phase_space::AbstractVecOrMat{T}, |
83 |
| -) where {T<:Real} |
84 |
| - _check_in_phase_space_dimension(proc, model, in_phase_space) |
85 |
| - |
86 |
| - return _total_cross_section(proc, model, in_phase_space_def, in_phase_space) |
| 11 | +function total_cross_section(in_psp::InPhaseSpacePoint) |
| 12 | + I = 1 / (4 * _incident_flux(in_psp)) |
| 13 | + return I * _total_probability(in_psp) |
87 | 14 | end
|
0 commit comments