forked from QEDjl-project/QEDprocesses.jl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprocess.jl
96 lines (84 loc) · 4.34 KB
/
process.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
using QEDprocesses
using Random
using QEDbase: QEDbase
using QEDcore
POLS = [QEDbase.PolX(), QEDbase.PolY(), QEDbase.AllPol()]
SPINS = [QEDbase.SpinUp(), QEDbase.SpinDown(), QEDbase.AllSpin()]
POL_AND_SPIN_COMBINATIONS = Iterators.product(SPINS, POLS, SPINS, POLS)
POL_COMBINATIONS = Iterators.product(POLS, POLS)
BUF = IOBuffer()
@testset "constructor" begin
@testset "default" begin
proc = Compton()
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Incoming()) ==
QEDbase.AllPol()
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Incoming()) ==
QEDbase.AllSpin()
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Outgoing()) ==
QEDbase.AllPol()
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Outgoing()) ==
QEDbase.AllSpin()
print(BUF, proc)
@test String(take!(BUF)) == "one-photon Compton scattering"
show(BUF, MIME"text/plain"(), proc)
@test String(take!(BUF)) ==
"one-photon Compton scattering\n incoming: electron ($(QEDbase.AllSpin())), photon ($(QEDbase.AllPol()))\n outgoing: electron ($(QEDbase.AllSpin())), photon ($(QEDbase.AllPol()))\n"
end
@testset "in_pol" begin
@testset "$pol" for pol in POLS
proc = Compton(pol)
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Incoming()) ==
QEDbase.AllSpin()
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Incoming()) == pol
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Outgoing()) ==
QEDbase.AllSpin()
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Outgoing()) ==
QEDbase.AllPol()
print(BUF, proc)
@test String(take!(BUF)) == "one-photon Compton scattering"
show(BUF, MIME"text/plain"(), proc)
@test String(take!(BUF)) ==
"one-photon Compton scattering\n incoming: electron ($(QEDbase.AllSpin())), photon ($(pol))\n outgoing: electron ($(QEDbase.AllSpin())), photon ($(QEDbase.AllPol()))\n"
end
end
@testset "in_pol+out_pol" begin
@testset "$in_pol, $out_pol" for (in_pol, out_pol) in POL_COMBINATIONS
proc = Compton(in_pol, out_pol)
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Incoming()) ==
QEDbase.AllSpin()
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Incoming()) == in_pol
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Outgoing()) ==
QEDbase.AllSpin()
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Outgoing()) == out_pol
print(BUF, proc)
@test String(take!(BUF)) == "one-photon Compton scattering"
show(BUF, MIME"text/plain"(), proc)
@test String(take!(BUF)) ==
"one-photon Compton scattering\n incoming: electron ($(QEDbase.AllSpin())), photon ($(in_pol))\n outgoing: electron ($(QEDbase.AllSpin())), photon ($(out_pol))\n"
end
end
@testset "all spins+pols" begin
@testset "$in_spin, $in_pol, $out_spin, $out_pol" for (
in_spin, in_pol, out_spin, out_pol
) in POL_AND_SPIN_COMBINATIONS
proc = Compton(in_spin, in_pol, out_spin, out_pol)
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Incoming()) == in_spin
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Incoming()) == in_pol
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Outgoing()) ==
out_spin
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Outgoing()) == out_pol
print(BUF, proc)
@test String(take!(BUF)) == "one-photon Compton scattering"
show(BUF, MIME"text/plain"(), proc)
@test String(take!(BUF)) ==
"one-photon Compton scattering\n incoming: electron ($(in_spin)), photon ($(in_pol))\n outgoing: electron ($(out_spin)), photon ($(out_pol))\n"
end
end
end
@testset "particle content" begin
proc = Compton()
@test incoming_particles(proc) == (Electron(), Photon())
@test outgoing_particles(proc) == (Electron(), Photon())
@test number_incoming_particles(proc) == 2
@test number_outgoing_particles(proc) == 2
end