-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathinternal.jl
131 lines (123 loc) · 5.06 KB
/
internal.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# convenience function for internal use only
# differential probability without energy momentum conservation check
# single in phase space points/ single out phase space point
# based on four-momenta
function _unsafe_differential_probability(
proc::AbstractProcessDefinition,
model::AbstractModelDefinition,
phase_space_def::AbstractPhasespaceDefinition,
in_phase_space::AbstractVector{T},
out_phase_space::AbstractVector{T},
) where {T<:QEDbase.AbstractFourMomentum}
psp = PhaseSpacePoint(proc, model, phase_space_def, in_phase_space, out_phase_space)
return unsafe_differential_probability(psp)
end
# convenience function for internal use only
# differential probability without energy momentum conservation check
# based on coordinates
function _unsafe_differential_probability(
proc::AbstractProcessDefinition,
model::AbstractModelDefinition,
phase_space_def::AbstractPhasespaceDefinition,
in_phase_space::AbstractVector{T},
out_phase_space::AbstractVector{T},
) where {T<:Real}
in_momenta, out_momenta = _generate_momenta(
proc, model, phase_space_def, in_phase_space, out_phase_space
)
return _unsafe_differential_probability(
proc, model, phase_space_def, in_momenta, out_momenta
)
end
# convenience function for internal use only
# differential probability with energy momentum conservation check
# one in phase space point/ one out phase space point
# based on four-momenta
function _differential_probability(
proc::AbstractProcessDefinition,
model::AbstractModelDefinition,
phase_space_def::AbstractPhasespaceDefinition,
in_phase_space::AbstractVector{T},
out_phase_space::AbstractVector{T},
) where {T<:QEDbase.AbstractFourMomentum}
psp = PhaseSpacePoint(proc, model, phase_space_def, in_phase_space, out_phase_space)
return differential_probability(psp)
end
# convenience function for internal use only
# differential probability with energy momentum conservation check
# one in phase space point/ one out phase space point
# based on coordinates
function _differential_probability(
proc::AbstractProcessDefinition,
model::AbstractModelDefinition,
phase_space_def::AbstractPhasespaceDefinition,
in_phase_space::AbstractVector{T},
out_phase_space::AbstractVector{T},
) where {T<:Real}
in_momenta, out_momenta = _generate_momenta(
proc, model, phase_space_def, in_phase_space, out_phase_space
)
return _differential_probability(proc, model, phase_space_def, in_momenta, out_momenta)
end
# convenience function for internal use only
# differential cross sections without energy momentum conservation check
# single in phase space point/ single out phase space point
# based on four-momenta
function _unsafe_differential_cross_section(
proc::AbstractProcessDefinition,
model::AbstractModelDefinition,
phase_space_def::AbstractPhasespaceDefinition,
in_phase_space::AbstractVector{T},
out_phase_space::AbstractVector{T},
) where {T<:QEDbase.AbstractFourMomentum}
psp = PhaseSpacePoint(proc, model, phase_space_def, in_phase_space, out_phase_space)
return unsafe_differential_cross_section(psp)
end
# convenience function for internal use only
# differential cross sections without energy momentum conservation check
# single in phase space point/ single out phase space point
# based on coordinates
function _unsafe_differential_cross_section(
proc::AbstractProcessDefinition,
model::AbstractModelDefinition,
phase_space_def::AbstractPhasespaceDefinition,
in_phase_space::AbstractVector{T},
out_phase_space::AbstractVector{T},
) where {T<:Real}
in_momenta, out_momenta = _generate_momenta(
proc, model, phase_space_def, in_phase_space, out_phase_space
)
return _unsafe_differential_cross_section(
proc, model, phase_space_def, in_momenta, out_momenta
)
end
# convenience function for internal use only
# differential cross sections with energy momentum conservation check
# single in phase space point/ single out phase space point
function _differential_cross_section(
proc::AbstractProcessDefinition,
model::AbstractModelDefinition,
phase_space_def::AbstractPhasespaceDefinition,
in_phase_space::AbstractVector{T},
out_phase_space::AbstractVector{T},
) where {T<:QEDbase.AbstractFourMomentum}
psp = PhaseSpacePoint(proc, model, phase_space_def, in_phase_space, out_phase_space)
return differential_cross_section(psp)
end
# convenience function for internal use only
# differential cross sections with energy momentum conservation check
# single in phase space point/ several out phase space points
function _differential_cross_section(
proc::AbstractProcessDefinition,
model::AbstractModelDefinition,
phase_space_def::AbstractPhasespaceDefinition,
in_phase_space::AbstractVector{T},
out_phase_space::AbstractVector{T},
)::Float64 where {T<:Real}
in_momenta, out_momenta = _generate_momenta(
proc, model, phase_space_def, in_phase_space, out_phase_space
)
return _differential_cross_section(
proc, model, phase_space_def, in_momenta, out_momenta
)
end