Ez a program Monte-Carlo szimulációt valósít meg, amely modellezi a részecskék (pl. protonok) gyorsítását, majd azok szembekapcsolását és ütközését a hadron ütköztetőben.
--------
import random
import math
import matplotlib.pyplot as plt
class HadronUtkozteto:
def __init__(self, nev: str, kor_sugar_m: float, max_energia_tev: float):
self.nev = nev
self.sugar = kor_sugar_m # Gyorsító gyűrű sugara (méterben)
self.max_energia = max_energia_tev # Maximális elérhető energia TeV-ben
self.nyalabok = []
def nyalab_feltoltes(self, reszecske_szam: int, energia_tev: float):
"""Feltölti a gyorsítót proton nyalábokkal."""
energia = min(energia_tev, self.max_energia)
self.nyalabok.append({
"resztvevok": reszecske_szam,
"energia": energia,
"vektor": 1 # 1 = óramutató járása szerint, -1 = ellenkezőleg
})
print(f"{self.nev} feltöltve: {reszecske_szam} részecske, egyenként {energia} TeV energiával.")
def utkozes(self):
"""Modellezi a két nyaláb frontális ütközését."""
if len(self.nyalabok) < 2:
print("Hiba: Az ütközéshez két ellentétes irányú nyaláb szükséges!")
return
nyalab1 = self.nyalabok[0]
nyalab2 = self.nyalabok[1]
# Összenergia a tömegközépponti rendszerben sqrt(s)
sqrt_s = 2 * nyalab1["energia"]
print(f"Ütközés történt! Összenergia: {sqrt_s:.2f} TeV")
# Egyszerűsített Monte-Carlo részecske generálás az ütközéshez
utkozesi_termekek = []
# Tömegközépponti energia konvertálása GeV-re (1 TeV = 1000 GeV)
hatar_energiak = [random.uniform(0.1, sqrt_s * 1000 / 2) for _ in range(500)]
for e in hatar_energiak:
# Statisztikai eloszlás az új részecskékre
if e < 500: utkozesi_termekek.append("Pion")
elif e < 800: utkozesi_termekek.append("Kaon")
elif e < 950: utkozesi_termekek.append("Proton")
else: utkozesi_termekek.append("Higgs / Z / W bozon")
return utkozesi_termekek
# --- Szimuláció futtatása ---
# 1. Ütköztető létrehozása (pl. LHC paramétereihez hasonlóan)
lhc = HadronUtkozteto(nev="Nagy Hadronütközztető (LHC)", kor_sugar_m=4267, max_energia_tev=7.0)
# 2. Nyalábok indítása
lhc.nyalab_feltoltes(reszecske_szam=10000, energia_tev=6.5)
lhc.nyalab_feltoltes(reszecske_szam=10000, energia_tev=6.5)
# 3. Ütközés modellezése és az eredmények statisztikája
termekek = lhc.utkozes()
# 4. Vizualizáció (Eredmények összesítése tortadiagrammon)
if termekek:
kategoriak = {}
for t in termekek:
kategoriak[t] = kategoriak.get(t, 0) + 1
plt.figure(figsize=(8, 6))
plt.pie(kategoriak.values(), labels=kategoriak.keys(), autopct='%1.1f%%', startangle=140)
plt.title("Ütközés során keletkezett részecskék eloszlása")
plt.axis('equal')
plt.show()
----------------
Nagy Hadronütközztető (LHC) feltöltve: 10000 részecske, egyenként 6.5 TeV energiával.
Ütközés történt! Összenergia: 13.00 TeV
Nincsenek megjegyzések:
Megjegyzés küldése