Improve particle_pair generation

This commit is contained in:
2024-07-12 15:21:40 +02:00
parent 0af7a31e19
commit f1fb2293ef
2 changed files with 75 additions and 47 deletions

View File

@@ -20,7 +20,7 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": 6,
"metadata": {},
"outputs": [
{
@@ -65,50 +65,72 @@
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": 7,
"metadata": {},
"outputs": [],
"outputs": [
{
"data": {
"text/plain": [
"Dict{VirtualParticle, Vector{Tuple{VirtualParticle, VirtualParticle}}} with 254 entries:\n",
" positron: \t01000010 | 11 => [(photon: \t00000000 | 10, positron: \t01000010 | 01),…\n",
" positron: \t11010000 | 11 => [(photon: \t00000000 | 10, positron: \t11010000 | 01),…\n",
" electron: \t10100011 | 00 => [(photon: \t00000010 | 00, electron: \t10100001 | 00),…\n",
" positron: \t11000000 | 11 => [(photon: \t00000000 | 10, positron: \t11000000 | 01),…\n",
" positron: \t00010100 | 01 => [(photon: \t00000100 | 00, positron: \t00010000 | 01),…\n",
" positron: \t01001000 | 11 => [(photon: \t00000000 | 10, positron: \t01001000 | 01),…\n",
" positron: \t11000110 | 01 => [(photon: \t00000010 | 00, positron: \t11000100 | 01),…\n",
" electron: \t10001011 | 10 => [(photon: \t00000000 | 10, electron: \t10001011 | 00),…\n",
" positron: \t00100000 | 11 => [(photon: \t00000000 | 10, positron: \t00100000 | 01),…\n",
" positron: \t01010000 | 11 => [(photon: \t00000000 | 10, positron: \t01010000 | 01),…\n",
" electron: \t11101001 | 00 => [(photon: \t00001000 | 00, electron: \t11100001 | 00),…\n",
" electron: \t00100101 | 10 => [(photon: \t00000000 | 10, electron: \t00100101 | 00),…\n",
" electron: \t11000101 | 00 => [(photon: \t00000100 | 00, electron: \t11000001 | 00),…\n",
" electron: \t01101001 | 00 => [(photon: \t00001000 | 00, electron: \t01100001 | 00),…\n",
" positron: \t00101000 | 01 => [(photon: \t00001000 | 00, positron: \t00100000 | 01),…\n",
" positron: \t00011000 | 11 => [(photon: \t00000000 | 10, positron: \t00011000 | 01),…\n",
" positron: \t00011010 | 01 => [(photon: \t00000010 | 00, positron: \t00011000 | 01),…\n",
" electron: \t10000101 | 10 => [(photon: \t00000000 | 10, electron: \t10000101 | 00),…\n",
" electron: \t10000111 | 00 => [(photon: \t00000010 | 00, electron: \t10000101 | 00),…\n",
" ⋮ => ⋮"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"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"
"pairs = FeynmanDiagramGenerator.particle_pairs(all_particles)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": 8,
"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",
" (photon: \t00000000 | 10, electron: \t00010111 | 00, positron: \t11101000 | 01)\n",
" (photon: \t00000000 | 10, electron: \t00110011 | 00, positron: \t11001100 | 01)\n",
" (photon: \t00000000 | 10, electron: \t10111001 | 00, positron: \t01000110 | 01)\n",
" (photon: \t00000000 | 10, electron: \t10110101 | 00, positron: \t01001010 | 01)\n",
" (photon: \t00000000 | 10, electron: \t11110001 | 00, positron: \t00001110 | 01)\n",
" (photon: \t00000000 | 10, electron: \t11010011 | 00, positron: \t00101100 | 01)\n",
" (photon: \t00000000 | 10, electron: \t01001101 | 00, positron: \t10110010 | 01)\n",
" (photon: \t00000000 | 10, electron: \t11101001 | 00, positron: \t00010110 | 01)\n",
" (photon: \t00000000 | 10, electron: \t10011011 | 00, positron: \t01100100 | 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)"
" (photon: \t01000000 | 00, electron: \t00111001 | 00, positron: \t10000110 | 11)\n",
" (photon: \t01000000 | 00, electron: \t00000111 | 10, positron: \t10111000 | 01)\n",
" (photon: \t01000000 | 00, electron: \t00011011 | 00, positron: \t10100100 | 11)\n",
" (photon: \t01000000 | 00, electron: \t10101011 | 00, positron: \t00010100 | 11)\n",
" (photon: \t01000000 | 00, electron: \t10000111 | 10, positron: \t00111000 | 01)\n",
" (photon: \t01000000 | 00, electron: \t10100101 | 10, positron: \t00011010 | 01)\n",
" (photon: \t01000000 | 00, electron: \t00100111 | 00, positron: \t10011000 | 11)\n",
" (photon: \t01000000 | 00, electron: \t10001101 | 10, positron: \t00110010 | 01)\n",
" (photon: \t01000000 | 00, electron: \t10011101 | 00, positron: \t00100010 | 11)"
]
},
"metadata": {},
@@ -121,7 +143,7 @@
},
{
"cell_type": "code",
"execution_count": 10,
"execution_count": 9,
"metadata": {},
"outputs": [
{
@@ -174,7 +196,6 @@
" 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",