206 lines
7.9 KiB
Plaintext
206 lines
7.9 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"WARNING: Method definition number_particles(QEDbase.AbstractProcessDefinition, DIR, PT) where {DIR<:QEDbase.ParticleDirection, PT<:QEDbase.AbstractParticleType} in module QEDbase at /home/antonr/.julia/packages/QEDbase/gWHxL/src/interfaces/process.jl:208 overwritten in module FeynmanDiagramGenerator at /home/antonr/repos/FeynmanDiagramGenerator/src/QEDprocesses_patch.jl:23.\n",
|
|
"ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"using FeynmanDiagramGenerator"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"254-element Vector{VirtualParticle{GenericQEDProcess{Tuple{Photon, Photon, Photon, Photon, Photon, Photon, Photon, Electron}, Tuple{Photon, Electron}}, PT, 8, 2} where PT<:AbstractParticleType}:\n",
|
|
" positron: \t00000000 | 11\n",
|
|
" electron: \t00000001 | 10\n",
|
|
" positron: \t00000010 | 01\n",
|
|
" electron: \t00000011 | 00\n",
|
|
" positron: \t00000100 | 01\n",
|
|
" electron: \t00000101 | 00\n",
|
|
" positron: \t00001000 | 01\n",
|
|
" electron: \t00001001 | 00\n",
|
|
" positron: \t00010000 | 01\n",
|
|
" electron: \t00010001 | 00\n",
|
|
" ⋮\n",
|
|
" electron: \t11100001 | 10\n",
|
|
" positron: \t11100010 | 01\n",
|
|
" electron: \t11100011 | 00\n",
|
|
" positron: \t11100100 | 01\n",
|
|
" electron: \t11100101 | 00\n",
|
|
" positron: \t11101000 | 01\n",
|
|
" electron: \t11101001 | 00\n",
|
|
" positron: \t11110000 | 01\n",
|
|
" electron: \t11110001 | 00"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"proc = GenericQEDProcess(7, 1, 1, 1, 0, 0)\n",
|
|
"all_particles = Set()\n",
|
|
"for fd in feynman_diagrams(proc) \n",
|
|
" push!(all_particles, virtual_particles(proc, fd)...)\n",
|
|
"end\n",
|
|
"all_particles = sort([all_particles...])\n",
|
|
"display(all_particles)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"pseudo_particles = FeynmanDiagramGenerator._pseudo_virtual_particles(proc)\n",
|
|
"\n",
|
|
"pairs = Dict{VirtualParticle, Vector{Tuple{VirtualParticle, VirtualParticle}}}()\n",
|
|
"for p in all_particles\n",
|
|
" pairs[p] = particle_pairs(p, [all_particles..., pseudo_particles...])\n",
|
|
" #println(\"$p has $(length(pairs[p])) children: $(pairs[p])\")\n",
|
|
"end\n",
|
|
"\n",
|
|
"#pairs"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"280-element Vector{Tuple{VirtualParticle, VirtualParticle, VirtualParticle}}:\n",
|
|
" (photon: \t00000000 | 10, electron: \t11001101 | 00, positron: \t00110010 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t01101001 | 00, positron: \t10010110 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t01010101 | 00, positron: \t10101010 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t11000111 | 00, positron: \t00111000 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t11101001 | 00, positron: \t00010110 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t00101101 | 00, positron: \t11010010 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t11100101 | 00, positron: \t00011010 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t01010011 | 00, positron: \t10101100 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t00001111 | 00, positron: \t11110000 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t01001011 | 00, positron: \t10110100 | 01)\n",
|
|
" ⋮\n",
|
|
" (photon: \t01000000 | 00, electron: \t10011011 | 00, positron: \t00100100 | 11)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10110011 | 00, positron: \t00001100 | 11)\n",
|
|
" (photon: \t01000000 | 00, electron: \t00110101 | 00, positron: \t10001010 | 11)\n",
|
|
" (photon: \t01000000 | 00, electron: \t00011101 | 00, positron: \t10100010 | 11)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10101101 | 00, positron: \t00010010 | 11)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10001011 | 10, positron: \t00110100 | 01)\n",
|
|
" (photon: \t01000000 | 00, electron: \t00001011 | 10, positron: \t10110100 | 01)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10001111 | 00, positron: \t00110000 | 11)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10100011 | 10, positron: \t00011100 | 01)"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"triples = FeynmanDiagramGenerator.total_particle_triples(all_particles)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"s: 40320, should be: 40320\n",
|
|
"number of triples: 280\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"280-element Vector{Tuple{VirtualParticle, VirtualParticle, VirtualParticle}}:\n",
|
|
" (photon: \t00000000 | 10, electron: \t00001111 | 00, positron: \t11110000 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t00010111 | 00, positron: \t11101000 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t00011011 | 00, positron: \t11100100 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t00011101 | 00, positron: \t11100010 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t00100111 | 00, positron: \t11011000 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t00101011 | 00, positron: \t11010100 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t00101101 | 00, positron: \t11010010 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t00110011 | 00, positron: \t11001100 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t00110101 | 00, positron: \t11001010 | 01)\n",
|
|
" (photon: \t00000000 | 10, electron: \t00111001 | 00, positron: \t11000110 | 01)\n",
|
|
" ⋮\n",
|
|
" (photon: \t01000000 | 00, electron: \t10100101 | 10, positron: \t00011010 | 01)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10100111 | 00, positron: \t00011000 | 11)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10101001 | 10, positron: \t00010110 | 01)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10101011 | 00, positron: \t00010100 | 11)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10101101 | 00, positron: \t00010010 | 11)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10110001 | 10, positron: \t00001110 | 01)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10110011 | 00, positron: \t00001100 | 11)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10110101 | 00, positron: \t00001010 | 11)\n",
|
|
" (photon: \t01000000 | 00, electron: \t10111001 | 00, positron: \t00000110 | 11)"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"function n(vp::VirtualParticle)\n",
|
|
" if !haskey(pairs, vp)\n",
|
|
" return 1\n",
|
|
" end\n",
|
|
" s = 0\n",
|
|
" for (l, r) in pairs[vp]\n",
|
|
" s += n(l) * n(r)\n",
|
|
" end\n",
|
|
" return s\n",
|
|
"end\n",
|
|
"\n",
|
|
"n(last(all_particles))\n",
|
|
"s = 0\n",
|
|
"for (ph, e, p) in triples\n",
|
|
" s += n(ph) * n(e) * n(p)\n",
|
|
"end\n",
|
|
"\n",
|
|
"println(\"s: $s, should be: $(length(feynman_diagrams(proc)))\")\n",
|
|
"println(\"number of triples: $(length(triples))\")\n",
|
|
"\n",
|
|
"sort(triples)"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Julia 1.10.4",
|
|
"language": "julia",
|
|
"name": "julia-1.10"
|
|
},
|
|
"language_info": {
|
|
"file_extension": ".jl",
|
|
"mimetype": "application/julia",
|
|
"name": "julia",
|
|
"version": "1.10.4"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|