Skip to content

Commit e8d552b

Browse files
authored
Use base state from core (#78)
1 parent 8a7769d commit e8d552b

File tree

14 files changed

+66
-122
lines changed

14 files changed

+66
-122
lines changed

add_QEDcore_dev.jl

+1
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33

44
using Pkg: Pkg
55
Pkg.add(; url="https://github.com/QEDjl-project/QEDcore.jl", rev="dev")
6+
#Pkg.add(; url="https://github.com/QEDjl-project/QEDbase.jl.git", rev="process_interfaces")

docs/Project.toml

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
[deps]
22
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
33
QEDbase = "10e22c08-3ccb-4172-bfcf-7d7aa3d04d93"
4+
QEDcore = "35dc0263-cb5f-4c33-a114-1d7f54ab753e"
45
QEDprocesses = "46de9c38-1bb3-4547-a1ec-da24d767fdad"

src/QEDprocesses.jl

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
2+
# TODO: remove after refac
3+
__precompile__(false)
4+
15
module QEDprocesses
26

37
# constants
@@ -49,8 +53,6 @@ using QEDcore
4953
using StaticArrays
5054
using QuadGK
5155

52-
include("restruct_patch.jl")
53-
5456
include("constants.jl")
5557
include("utils.jl")
5658

src/patch_QEDbase.jl

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
#############
66

77
# fix: https://github.com/QEDjl-project/QEDbase.jl/pull/61
8-
Base.show(io::IO, ::QEDbase.Electron) = print(io, "electron")
9-
Base.show(io::IO, ::QEDbase.Positron) = print(io, "positron")
10-
Base.show(io::IO, ::QEDbase.Photon) = print(io, "photon")
8+
Base.show(io::IO, ::Electron) = print(io, "electron")
9+
Base.show(io::IO, ::Positron) = print(io, "positron")
10+
Base.show(io::IO, ::Photon) = print(io, "photon")
1111
Base.show(io::IO, ::QEDbase.Incoming) = print(io, "incoming")
1212
Base.show(io::IO, ::QEDbase.Outgoing) = print(io, "outgoing")
1313
Base.show(io::IO, ::QEDbase.PolX) = print(io, "x-polarized")

src/phase_spaces/types.jl

+7-7
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ Representation of a particle with a state. It has four fields:
3737
Overloads for `QEDbase.is_fermion`, `QEDbase.is_boson`, `QEDbase.is_particle`, `QEDbase.is_anti_particle`, `QEDbase.is_incoming`, `QEDbase.is_outgoing`, `QEDbase.mass`, and `QEDbase.charge` are provided, delegating the call to the correct field and thus implementing the `QEDbase.AbstractParticle` interface.
3838
3939
```jldoctest
40-
julia> using QEDbase; using QEDprocesses
40+
julia> import QEDbase; using QEDcore; using QEDprocesses
4141
42-
julia> ParticleStateful(Incoming(), Electron(), SFourMomentum(1, 0, 0, 0))
42+
julia> ParticleStateful(QEDbase.Incoming(), Electron(), SFourMomentum(1, 0, 0, 0))
4343
ParticleStateful: incoming electron
4444
momentum: [1.0, 0.0, 0.0, 0.0]
4545
46-
julia> ParticleStateful(Outgoing(), Photon(), SFourMomentum(1, 0, 0, 0))
46+
julia> ParticleStateful(QEDbase.Outgoing(), Photon(), SFourMomentum(1, 0, 0, 0))
4747
ParticleStateful: outgoing photon
4848
momentum: [1.0, 0.0, 0.0, 0.0]
4949
```
@@ -83,12 +83,12 @@ julia> PhaseSpacePoint(
8383
PerturbativeQED(),
8484
PhasespaceDefinition(SphericalCoordinateSystem(), ElectronRestFrame()),
8585
(
86-
ParticleStateful(QEDbase.Incoming(), QEDbase.Electron(), SFourMomentum(1, 0, 0, 0)),
87-
ParticleStateful(QEDbase.Incoming(), QEDbase.Photon(), SFourMomentum(1, 0, 0, 0))
86+
ParticleStateful(QEDbase.Incoming(), Electron(), SFourMomentum(1, 0, 0, 0)),
87+
ParticleStateful(QEDbase.Incoming(), Photon(), SFourMomentum(1, 0, 0, 0))
8888
),
8989
(
90-
ParticleStateful(QEDbase.Outgoing(), QEDbase.Electron(), SFourMomentum(1, 0, 0, 0)),
91-
ParticleStateful(QEDbase.Outgoing(), QEDbase.Photon(), SFourMomentum(1, 0, 0, 0))
90+
ParticleStateful(QEDbase.Outgoing(), Electron(), SFourMomentum(1, 0, 0, 0)),
91+
ParticleStateful(QEDbase.Outgoing(), Photon(), SFourMomentum(1, 0, 0, 0))
9292
)
9393
)
9494
PhaseSpacePoint:

src/processes/one_photon_compton/perturbative/cross_section.jl

+7-9
Original file line numberDiff line numberDiff line change
@@ -75,18 +75,16 @@ end
7575
out_photon_mom = out_ps[2]
7676

7777
in_electron_state = base_state(
78-
QEDbase.Electron(), QEDbase.Incoming(), in_electron_mom, proc.in_spin
79-
)
80-
in_photon_state = base_state(
81-
QEDbase.Photon(), QEDbase.Incoming(), in_photon_mom, proc.in_pol
78+
Electron(), QEDbase.Incoming(), in_electron_mom, proc.in_spin
8279
)
80+
in_photon_state = base_state(Photon(), QEDbase.Incoming(), in_photon_mom, proc.in_pol)
8381

8482
out_electron_state = base_state(
85-
QEDbase.Electron(), QEDbase.Outgoing(), out_electron_mom, proc.out_spin
83+
Electron(), QEDbase.Outgoing(), out_electron_mom, proc.out_spin
8684
)
8785

8886
out_photon_state = base_state(
89-
QEDbase.Photon(), QEDbase.Outgoing(), out_photon_mom, proc.out_pol
87+
Photon(), QEDbase.Outgoing(), out_photon_mom, proc.out_pol
9088
)
9189
return _pert_compton_matrix_element(
9290
in_electron_mom,
@@ -151,8 +149,8 @@ function _pert_compton_matrix_element_single(
151149
in_ph_slashed = slashed(in_photon_state)
152150
out_ph_slashed = slashed(out_photon_state)
153151

154-
prop1 = _fermion_propagator(in_photon_mom + in_electron_mom, mass(QEDbase.Electron()))
155-
prop2 = _fermion_propagator(in_electron_mom - out_photon_mom, mass(QEDbase.Electron()))
152+
prop1 = _fermion_propagator(in_photon_mom + in_electron_mom, mass(Electron()))
153+
prop2 = _fermion_propagator(in_electron_mom - out_photon_mom, mass(Electron()))
156154

157155
# TODO: fermion propagator is not yet in QEDbase
158156
diagram_1 =
@@ -179,5 +177,5 @@ function _pert_compton_ps_fac(
179177
# TODO
180178
omega = QEDbase.getE(in_photon_mom)
181179
omega_prime = QEDbase.getE(out_photon_mom)
182-
return omega_prime^2 / (16 * pi^2 * omega * mass(QEDbase.Electron()))
180+
return omega_prime^2 / (16 * pi^2 * omega * mass(Electron()))
183181
end

src/processes/one_photon_compton/process.jl

+6-6
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,26 @@ _in_spin_and_pol(proc::Compton) = (proc.in_spin, proc.in_pol)
3939
_out_spin_and_pol(proc::Compton) = (proc.out_spin, proc.out_pol)
4040

4141
function QEDprocesses.incoming_particles(::Compton)
42-
return (QEDbase.Electron(), QEDbase.Photon())
42+
return (Electron(), Photon())
4343
end
4444

4545
function QEDprocesses.outgoing_particles(::Compton)
46-
return (QEDbase.Electron(), QEDbase.Photon())
46+
return (Electron(), Photon())
4747
end
4848

49-
function _spin_or_pol(process::Compton, ::QEDbase.Electron, ::QEDbase.Incoming)
49+
function _spin_or_pol(process::Compton, ::Electron, ::QEDbase.Incoming)
5050
return process.in_spin
5151
end
5252

53-
function _spin_or_pol(process::Compton, ::QEDbase.Electron, ::QEDbase.Outgoing)
53+
function _spin_or_pol(process::Compton, ::Electron, ::QEDbase.Outgoing)
5454
return process.out_spin
5555
end
5656

57-
function _spin_or_pol(process::Compton, ::QEDbase.Photon, ::QEDbase.Incoming)
57+
function _spin_or_pol(process::Compton, ::Photon, ::QEDbase.Incoming)
5858
return process.in_pol
5959
end
6060

61-
function _spin_or_pol(process::Compton, ::QEDbase.Photon, ::QEDbase.Outgoing)
61+
function _spin_or_pol(process::Compton, ::Photon, ::QEDbase.Outgoing)
6262
return process.out_pol
6363
end
6464

src/propagators.jl

+3-3
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,14 @@ function _fermion_propagator(P::QEDbase.AbstractFourMomentum)
4949
return (slashed(P)) * _scalar_propagator(P)
5050
end
5151

52-
function propagator(particle_type::QEDbase.BosonLike, K::QEDbase.AbstractFourMomentum)
52+
function propagator(particle_type::BosonLike, K::QEDbase.AbstractFourMomentum)
5353
return _scalar_propagator(K, mass(particle_type))
5454
end
5555

56-
function propagator(particle_type::QEDbase.Photon, K::QEDbase.AbstractFourMomentum)
56+
function propagator(particle_type::Photon, K::QEDbase.AbstractFourMomentum)
5757
return _scalar_propagator(K)
5858
end
5959

60-
function propagator(particle_type::QEDbase.FermionLike, P::QEDbase.AbstractFourMomentum)
60+
function propagator(particle_type::FermionLike, P::QEDbase.AbstractFourMomentum)
6161
return _fermion_propagator(P, mass(particle_type))
6262
end

src/restruct_patch.jl

-52
This file was deleted.

test/phase_spaces.jl

+6-8
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ end
2121

2222
@testset "Stateful Particle" begin
2323
DIRECTIONS = [QEDbase.Incoming(), QEDbase.Outgoing()]
24-
SPECIES = [QEDbase.Electron(), QEDbase.Positron()] #=, Muon(), AntiMuon(), Tauon(), AntiTauon()=#
24+
SPECIES = [Electron(), Positron()] #=, Muon(), AntiMuon(), Tauon(), AntiTauon()=#
2525

2626
for (species, dir) in Iterators.product(SPECIES, DIRECTIONS)
2727
mom = rand(RNG, SFourMomentum)
@@ -63,10 +63,10 @@ end
6363
out_el_mom = rand(RNG, SFourMomentum)
6464
out_ph_mom = rand(RNG, SFourMomentum)
6565

66-
in_el = ParticleStateful(QEDbase.Incoming(), QEDbase.Electron(), in_el_mom)
67-
in_ph = ParticleStateful(QEDbase.Incoming(), QEDbase.Photon(), in_ph_mom)
68-
out_el = ParticleStateful(QEDbase.Outgoing(), QEDbase.Electron(), out_el_mom)
69-
out_ph = ParticleStateful(QEDbase.Outgoing(), QEDbase.Photon(), out_ph_mom)
66+
in_el = ParticleStateful(QEDbase.Incoming(), Electron(), in_el_mom)
67+
in_ph = ParticleStateful(QEDbase.Incoming(), Photon(), in_ph_mom)
68+
out_el = ParticleStateful(QEDbase.Outgoing(), Electron(), out_el_mom)
69+
out_ph = ParticleStateful(QEDbase.Outgoing(), Photon(), out_ph_mom)
7070

7171
in_particles_valid = (in_el, in_ph)
7272
in_particles_invalid = (in_el, out_ph)
@@ -75,9 +75,7 @@ end
7575
out_particles_invalid = (out_el, in_ph)
7676

7777
model = TESTMODEL
78-
process = TestImplementation.TestProcess(
79-
(QEDbase.Electron(), QEDbase.Photon()), (QEDbase.Electron(), QEDbase.Photon())
80-
)
78+
process = TestImplementation.TestProcess((Electron(), Photon()), (Electron(), Photon()))
8179
phasespace_def = TESTPSDEF
8280

8381
psp = PhaseSpacePoint(

test/processes/one_photon_compton/process.jl

+18-24
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ BUF = IOBuffer()
1212
@testset "constructor" begin
1313
@testset "default" begin
1414
proc = Compton()
15-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Photon(), QEDbase.Incoming()) ==
15+
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Incoming()) ==
1616
QEDbase.AllPol()
17-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Electron(), QEDbase.Incoming()) ==
17+
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Incoming()) ==
1818
QEDbase.AllSpin()
19-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Photon(), QEDbase.Outgoing()) ==
19+
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Outgoing()) ==
2020
QEDbase.AllPol()
21-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Electron(), QEDbase.Outgoing()) ==
21+
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Outgoing()) ==
2222
QEDbase.AllSpin()
2323

2424
print(BUF, proc)
@@ -32,13 +32,12 @@ BUF = IOBuffer()
3232
@testset "in_pol" begin
3333
@testset "$pol" for pol in POLS
3434
proc = Compton(pol)
35-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Electron(), QEDbase.Incoming()) ==
35+
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Incoming()) ==
3636
QEDbase.AllSpin()
37-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Photon(), QEDbase.Incoming()) ==
38-
pol
39-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Electron(), QEDbase.Outgoing()) ==
37+
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Incoming()) == pol
38+
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Outgoing()) ==
4039
QEDbase.AllSpin()
41-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Photon(), QEDbase.Outgoing()) ==
40+
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Outgoing()) ==
4241
QEDbase.AllPol()
4342

4443
print(BUF, proc)
@@ -53,14 +52,12 @@ BUF = IOBuffer()
5352
@testset "in_pol+out_pol" begin
5453
@testset "$in_pol, $out_pol" for (in_pol, out_pol) in POL_COMBINATIONS
5554
proc = Compton(in_pol, out_pol)
56-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Electron(), QEDbase.Incoming()) ==
55+
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Incoming()) ==
5756
QEDbase.AllSpin()
58-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Photon(), QEDbase.Incoming()) ==
59-
in_pol
60-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Electron(), QEDbase.Outgoing()) ==
57+
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Incoming()) == in_pol
58+
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Outgoing()) ==
6159
QEDbase.AllSpin()
62-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Photon(), QEDbase.Outgoing()) ==
63-
out_pol
60+
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Outgoing()) == out_pol
6461

6562
print(BUF, proc)
6663
@test String(take!(BUF)) == "one-photon Compton scattering"
@@ -75,14 +72,11 @@ BUF = IOBuffer()
7572
in_spin, in_pol, out_spin, out_pol
7673
) in POL_AND_SPIN_COMBINATIONS
7774
proc = Compton(in_spin, in_pol, out_spin, out_pol)
78-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Electron(), QEDbase.Incoming()) ==
79-
in_spin
80-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Photon(), QEDbase.Incoming()) ==
81-
in_pol
82-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Electron(), QEDbase.Outgoing()) ==
75+
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Incoming()) == in_spin
76+
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Incoming()) == in_pol
77+
@test QEDprocesses._spin_or_pol(proc, Electron(), QEDbase.Outgoing()) ==
8378
out_spin
84-
@test QEDprocesses._spin_or_pol(proc, QEDbase.Photon(), QEDbase.Outgoing()) ==
85-
out_pol
79+
@test QEDprocesses._spin_or_pol(proc, Photon(), QEDbase.Outgoing()) == out_pol
8680

8781
print(BUF, proc)
8882
@test String(take!(BUF)) == "one-photon Compton scattering"
@@ -95,8 +89,8 @@ BUF = IOBuffer()
9589
end
9690
@testset "particle content" begin
9791
proc = Compton()
98-
@test incoming_particles(proc) == (QEDbase.Electron(), QEDbase.Photon())
99-
@test outgoing_particles(proc) == (QEDbase.Electron(), QEDbase.Photon())
92+
@test incoming_particles(proc) == (Electron(), Photon())
93+
@test outgoing_particles(proc) == (Electron(), Photon())
10094
@test number_incoming_particles(proc) == 2
10195
@test number_outgoing_particles(proc) == 2
10296
end

test/propagators.jl

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ function _rand_momentum(rng::AbstractRNG)
1111
return SFourMomentum(rand(rng, 4))
1212
end
1313

14-
groundtruth_propagator(::QEDbase.Photon, mom) = one(eltype(mom)) / (mom * mom)
15-
function groundtruth_propagator(particle::QEDbase.FermionLike, mom)
14+
groundtruth_propagator(::Photon, mom) = one(eltype(mom)) / (mom * mom)
15+
function groundtruth_propagator(particle::FermionLike, mom)
1616
return (slashed(mom) + QEDbase.mass(particle) * one(DiracMatrix)) /
1717
(mom * mom - QEDbase.mass(particle)^2)
1818
end
1919

2020
@testset "propagators" begin
21-
@testset "$P" for P in (QEDbase.Electron(), QEDbase.Positron(), QEDbase.Photon())
21+
@testset "$P" for P in (Electron(), Positron(), Photon())
2222
mom = _rand_momentum(RNG)
2323
groundtruth = groundtruth_propagator(P, mom)
2424
test_prop = propagator(P, mom)

test/runtests.jl

+5-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ begin
1010
@time @safetestset "process interface" begin
1111
include("interfaces/process_interface.jl")
1212
end
13-
@time @safetestset "computation setup interface" begin
14-
include("interfaces/setup_interface.jl")
15-
end
13+
14+
# TODO: remove after restructuring
15+
#@time @safetestset "computation setup interface" begin
16+
# include("interfaces/setup_interface.jl")
17+
#end
1618

1719
# modules
1820
@time @safetestset "propagators" begin

test/test_implementation/test_process.jl

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# dummy particles
2-
struct TestParticleFermion <: QEDbase.FermionLike end
3-
struct TestParticleBoson <: QEDbase.BosonLike end
2+
struct TestParticleFermion <: FermionLike end
3+
struct TestParticleBoson <: BosonLike end
44

55
const PARTICLE_SET = [TestParticleFermion(), TestParticleBoson()]
66

0 commit comments

Comments
 (0)