2026. június 26., péntek

A nagy hadron ütköztető

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