آماده سازی داده ها

Contents

آماده سازی داده ها#

در ادامه کلاس بحث را به صورت تخصصی تر در مورد فیزیک ذرات پیش می‌بریم. برای بررسی مسئله‌ای در دنیای فیزیک ذرات نیاز داریم داده های از این دنیا داشته باشیم. مجموعه داده مورد بررسی ما که جزئیات آن در مقاله ‌با عنوان RODEM Jet Datasets آمده است با نگاه به دنیا ذرات و جت ها آماده شده است


جت#

تعریف ساده:

جت‌ها خوشه‌هایی از ذرات باردار یا خنثی هستند که با زاویه‌ی کمی نسبت به جهت حرکت اولیه‌ی یک کوارک یا گلئون تولید می‌شوند.

کوارک‌ها و گلئون‌ها نمی‌توانند به‌صورت تنها (آزاد) وجود داشته باشند چون تحت تأثیر نیروی قوی (QCD) قرار دارند که آن‌ها را درون هادرون‌ها (مثل پروتون، نوترون، پیون) نگه می‌دارد. وقتی در یک برخورد پرانرژی (مثلاً برخورد پروتون‌ها در LHC) یک کوارک یا گلئون با انرژی بالا تولید می‌شود، نمی‌تواند آزاد باقی بماند. در عوض، از طریق فرایندی به نام “همبستگی رنگی و هادرون‌سازی” (hadronization)، انرژی‌اش را به صورت مجموعه‌ای از ذرات هادرونی پخش می‌کند—که به آن جت می‌گوییم.


بوستد جت (Boosted Jet)#

در فیزیک انرژی بالا، به‌ویژه در آزمایش‌هایی مانند LHC، اصطلاح بوستد جت (Boosted Jet) به جتی اشاره دارد که از واپاشی یک ذره‌ی سنگین و پرانرژی (مانند بوزون W، Z، هیگز یا توپ کوارک) تولید شده و محصولات واپاشی آن به دلیل حرکت نسبیتی با انرژی زیاد، در زاویه‌ای بسیار باریک ظاهر می‌شوند. در نتیجه، به جای دو یا چند جت مجزا، فقط یک جت بزرگ دیده می‌شود.


تعریف ساده#

وقتی یک ذره سنگین با انرژی بالا تولید می‌شود و به چند کوارک واپاشی می‌کند، این کوارک‌ها معمولاً جت‌هایی مجزا تشکیل می‌دهند. اما اگر انرژی ذره بسیار زیاد باشد، محصولات واپاشی تقریباً در همان جهت حرکت می‌کنند و همه‌ی آن‌ها در یک جت بزرگ و فشرده دیده می‌شوند. به این نوع جت‌ها، بوستد جت می‌گویند.


ویژگی‌های کلیدی بوستد جت‌ها#

ویژگی

توضیح

زاویه‌ی واپاشی باریک

محصولات واپاشی در زاویه‌ای بسیار کوچک از هم جدا می‌شوند.

استفاده از R بزرگ‌تر

برای بازسازی جت، پارامتر مخروط جت (R) باید بزرگ‌تر از حالت عادی باشد (مثلاً R = 0.8 به جای R = 0.4).

ساختار داخلی پیچیده

جت ممکن است دارای زیرجت‌هایی باشد که نشان‌دهنده واپاشی چند ذره درون یک جت هستند.

نیاز به تحلیل Jet Substructure

برای شناسایی نوع ذره والد باید ساختار داخلی جت تحلیل شود.


اهمیت بوستد جت‌ها#

  • در انرژی‌های بالا مانند در LHC، بسیاری از ذرات سنگین به صورت بوست‌شده تولید می‌شوند.

  • تحلیل بوستد جت‌ها به شناسایی ذرات بنیادی مانند توپ کوارک یا بوزون W کمک می‌کند.

  • در جستجو برای فیزیک نوین (مانند SUSY یا مدل‌های اکسترا دایمنشن)، بسیاری از سیگنال‌ها شامل بوستد جت هستند.

  • شناسایی دقیق آن‌ها می‌تواند زمینه‌ساز کشف ذرات جدید یا تأیید مدل‌های نظری باشد.


روش‌ها و ابزارهای تحلیل بوستد جت‌ها#

ابزار / تکنیک

کاربرد

FastJet

خوشه‌بندی ذرات برای ساختن جت

N-subjettiness

تعیین تعداد زیرجت‌ها در یک جت بوست‌شده

Mass Drop Tagger, Soft Drop, Trimming

تکنیک‌های حذف انرژی‌های نرم برای یافتن ساختار اصلی جت

Deep Learning (CNN / GNN)

تشخیص الگوهای پیچیده در ساختار جت به کمک تصویر یا گراف

ROOT

تحلیل داده‌ها و ترسیم توزیع‌های آماری جت‌ها


مقایسه جت‌های معمولی با بوستد جت‌ها#

ویژگی

جت معمولی

بوستد جت

تعداد جت‌ها در واپاشی

چند جت مجزا

یک جت بزرگ

فاصله بین محصولات واپاشی

زیاد

کم

ساختار داخلی

ساده

پیچیده (زیرجت دارد)

نیاز به تحلیل Substructure

معمولاً نه

بله



نقش بوستد جت‌ها در تشخیص W و Z در داده‌های تجربی#

در فرآیندهایی مانند تولید همزمان بوزون‌های W و Z (فرآیند WZ)، شناسایی دقیق جت‌هایی که از واپاشی این ذرات به دست می‌آیند، اهمیت بالایی دارد. زمانی که این بوزون‌ها با انرژی بالا تولید می‌شوند (مثلاً در برخورددهنده‌ی LHC)، محصولات واپاشی آن‌ها بسیار فشرده ظاهر می‌شوند و به صورت بوستد جت دیده می‌شوند.


چرا بوستد جت‌ها در تشخیص W/Z مهم هستند؟#

  • واپاشی‌های hadronic بوزون‌ها: هم W و هم Z می‌توانند به جفت‌های کوارک واپاشی کنند (مثلاً ( W \to q\bar{q}’ )، ( Z \to q\bar{q} )) که این کوارک‌ها تبدیل به جت می‌شوند.

  • در انرژی‌های بالا، دو جت → یک جت بوست‌شده: به دلیل لورنتز بوست، این دو جت در زاویه‌ی کوچکی از هم ظاهر می‌شوند و در نتیجه فقط یک جت بزرگ دیده می‌شود.

  • ساختار داخلی جت (Jet Substructure): برای تشخیص اینکه این جت متعلق به بوزون W یا Z است (یا حتی توپ کوارک)، باید ساختار داخلی آن بررسی شود (تعداد زیرجت‌ها، نسبت جرم، تقسیم‌بندی انرژی و …).

  • تشخیص کلاس W در برابر Z: از آنجایی که جرم بوزون W (حدود 80 GeV) با Z (حدود 91 GeV) متفاوت است، تحلیل دقیق بوستد جت‌ها می‌تواند برای کلاسه‌بندی دقیق بین W و Z به کار رود.

شکل بوست شدن جت ها

هر چقدر جت ها تکانه اولیه بیشتری داشته باشند بیشتر بوستد میشنود و به صورت یک جت دیده خواهند شد


جمع‌بندی در زمینه‌ی WZ#

در پروژه‌هایی مانند جداسازی WZ از پس‌زمینه QCD یا سایر فرآیندها، تحلیل دقیق بوستد جت‌ها ابزار اصلی برای:

  • افزایش دقت مدل‌های طبقه‌بندی (کلاسه‌بندی W/Z)

  • کاهش نویز و پس‌زمینه‌ها (background rejection)

  • استفاده از تکنیک‌های یادگیری ماشین مانند CNN و GNN

است. بدون تحلیل ساختار بوستد جت، تشخیص دقیق W از Z تقریباً غیرممکن است.

بنابراین، بوستد جت‌ها یکی از کلیدهای اصلی برای استخراج سیگنال WZ در داده‌های فیزیک انرژی بالا هستند.

داده ها#

ساختار داده‌ها در مقاله#

این مجموعه داده‌ها برای یادگیری ماشین در فیزیک ذرات طراحی شده‌اند و شامل جت‌هایی از فرایندهای SM و BSM هستند. فرمت فایل‌ها .hdf5 است و اطلاعات جت‌ها و مؤلفه‌های آن‌ها را به‌صورت ساختاریافته در اختیار قرار می‌دهد.

ساختار فایل HDF5#

هر فایل دارای گروه اصلی objects/jets است که شامل ۴ بخش زیر است:


🔹 jet1_obs — ویژگی‌های سطح جت اول (Leading Jet)#

  • ابعاد: (N, 11) برای N ایونت.

  • ویژگی‌ها:

    • pt, eta, phi, mass

    • متریک‌های ساختار زیر (Substructure):

      • τ₁، τ₂، τ₃ (N-subjettiness)

      • √d₁₂، √d₂₃ (splitting scales)

      • ECF₂، ECF₃ (energy correlation functions)


🔹 jet1_cnsts — اطلاعات مؤلفه‌های جت اول#

  • ابعاد: (N, 100, 7)

  • برای هر ایونت تا ۱۰۰ ذره با بیشترین pt ذخیره شده‌اند.

  • ویژگی‌های هر مؤلفه:

    • pt, eta, phi, mass, charge, d0, dz

    • d0 و dz فقط برای ذرات باردار پر شده‌اند.


🔹 jet2_obs و jet2_cnsts — مربوط به جت دوم (Subleading Jet)#

  • فقط در ایونت‌های SM (مثل QCD و tt̄ و WZ) وجود دارند.

  • ساختار دقیقاً مشابه jet1_obs و jet1_cnsts.


جزئیات شبیه‌سازی#

  • √s = 13 TeV (مطابق با LHC Run 2)

  • MadGraph5 → MadSpin → Pythia8 → Delphes → FastJet

  • الگوریتم خوشه‌بندی جت: anti‑kt با R=1.0


فرایندهای تولید شده#

فرآیند

توضیح کوتاه

QCD dijet

جت‌های حاصل از کوارک/گلئون

WZ

جت‌های حاصل از W → jj

tt̄

واپاشی هادرونیک تاپ کوارک

Semi‑visible jets

حاصل از واپاشی Z′ به q_dark

BSM (2HDM)

واپاشی Higgs سنگین به h± → jj, tb


بررسی داده‌ها#

فرآیند

تعداد ایونت‌ها

تقسیم Train/Val/Test

QCD dijet

≈ 9.56M

90% / 5% / 5%

tt̄

≈ 15.0M

90% / 5% / 5%

WZ

≈ 14.1M

90% / 5% / 5%

Semi-visible

≈ 0.91M

90% / 5% / 5%

2HDM (BSM)

≤ 90.4k

بدون تقسیم‌بندی


متریک‌های ساختار جت#

  • N‑subjettiness (τ₁, τ₂, τ₃): نشان می‌دهد جت چند زیردسته دارد.

  • Splitting Scales (√d₁₂, √d₂₃): مقیاس انرژی برای جدا شدن زیرجت‌ها.

  • ECF₂, ECF₃: هم‌بستگی انرژی بین ذرات جت، مناسب برای تشخیص هندسه داخلی.


کاربردها در یادگیری ماشین#

  • طبقه‌بندی جت‌ها (QCD vs top/W/Z vs BSM)

  • تشخیص ناهنجاری‌ها (Anomaly Detection)

  • آموزش مدل‌های generative و autoencoder

  • استفاده در GNN، CNN یا Transformer برای شناسایی ساختار جت




دانلود و آماده سازی فایل#

import urllib.request
import tarfile

filename = 'CPHdata.tar.gz'

# دانلود فایل
print('Downloading...')
urllib.request.urlretrieve("https://hbakhshi.web.cern.ch/hbakhshi/IUT/TMP/CPHdata.tar.gz", filename)
print('Download completed.')

# استخراج فایل tar.gz
print('Extracting...')
with tarfile.open(filename, 'r:gz') as tar:
    tar.extractall(path=".")
print('Extraction completed.')
Extracting...
Extraction completed.

ساختار داده‌ها#

بارگذاری داده‌ها و بررسی ساختار کلی فایل HDF5 (jet1_obs و jet1_cnsts)#

import h5py

# مسیر فایل نمونه (باید مسیر درست را جایگزین کنید)
input_file = "mini_QCDjj_pT_450_1200_train01.h5"

# باز کردن فایل و خواندن کلیدهای اصلی
with h5py.File(input_file, "r") as f:
    # لیست کلیدهای اصلی
    print("Keys in file:", list(f.keys()))
    # کلیدهای زیرمجموعه در 'objects/jets'
    print("Keys in 'objects/jets':", list(f['objects/jets'].keys()))

    # مشاهده شکل داده‌های jet1_obs و jet1_cnsts
    jet1_obs = f['objects/jets/jet1_obs']
    jet1_cnsts = f['objects/jets/jet1_cnsts']
    print("jet1_obs shape:", jet1_obs.shape)
    print("jet1_cnsts shape:", jet1_cnsts.shape)
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
/tmp/ipykernel_6812/3962333901.py in <module>
----> 1 import h5py
      2 
      3 # مسیر فایل نمونه (باید مسیر درست را جایگزین کنید)
      4 input_file = "h5files/QCDjj_pT_450_1200_train01.h5"
      5 

ModuleNotFoundError: No module named 'h5py'

بررسی و نمایش ویژگی‌های jet1_obs (ویژگی‌های سطح جت)#

import numpy as np

# بارگذاری تعداد کمی از جت‌ها برای نمایش ویژگی‌ها
n_events = 5

with h5py.File(input_file, "r") as f:
    jet1_obs = f['objects/jets/jet1_obs'][:n_events]

# نمایش ماتریس ویژگی‌های جت‌ها
print("jet1_obs (shape {}):\n".format(jet1_obs.shape), jet1_obs)

# ویژگی‌ها به ترتیب:
features = ['pt', 'eta', 'phi', 'mass', 'tau1', 'tau2', 'tau3', 'sqrt_d12', 'sqrt_d23', 'ECF2', 'ECF3']

for i in range(n_events):
    print(f"\nEvent {i+1}:")
    for j, feat in enumerate(features):
        print(f"  {feat}: {jet1_obs[i, j]:.4f}")

بارگذاری و بررسی مؤلفه‌های جت (jet1_cnsts)#

# تعداد ذرات مؤلفه برای بارگذاری
n_events = 1
n_constituents = 10  # فقط ۱۰ ذره اول برای نمایش

with h5py.File(input_file, "r") as f:
    jet1_cnsts = f['objects/jets/jet1_cnsts'][:n_events, :n_constituents, :]

print("jet1_cnsts shape:", jet1_cnsts.shape)
print("jet1_cnsts sample data:\n", jet1_cnsts)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_6812/3104216787.py in <module>
      3 n_constituents = 10  # فقط ۱۰ ذره اول برای نمایش
      4 
----> 5 with h5py.File(input_file, "r") as f:
      6     jet1_cnsts = f['objects/jets/jet1_cnsts'][:n_events, :n_constituents, :]
      7 

NameError: name 'h5py' is not defined

بررسی وجود جت دوم (Subleading Jet) در فایل (برای SM processes)#

with h5py.File(input_file, "r") as f:
    # بررسی وجود کلید jet2_obs و jet2_cnsts
    keys = list(f['objects/jets'].keys())
    print("Keys in 'objects/jets':", keys)
    if 'jet2_obs' in keys and 'jet2_cnsts' in keys:
        jet2_obs = f['objects/jets/jet2_obs'][:5]
        jet2_cnsts = f['objects/jets/jet2_cnsts'][:5]
        print("jet2_obs shape:", jet2_obs.shape)
        print("jet2_cnsts shape:", jet2_cnsts.shape)
    else:
        print("No subleading jets in this dataset.")

مشاهده متریک‌های ساختار جت (N-subjettiness و Energy Correlation Functions)#

# بارگذاری تنها متریک‌ها از jet1_obs برای چند ایونت
n_events = 3
with h5py.File(input_file, "r") as f:
    jet1_obs = f['objects/jets/jet1_obs'][:n_events]

# اندیس متریک‌ها در ساختار داده
metric_indices = {
    'tau1': 4,
    'tau2': 5,
    'tau3': 6,
    'sqrt_d12': 7,
    'sqrt_d23': 8,
    'ECF2': 9,
    'ECF3': 10
}

for i in range(n_events):
    print(f"\nEvent {i+1}:")
    for metric, idx in metric_indices.items():
        print(f"  {metric}: {jet1_obs[i, idx]:.4f}")
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_6812/1923001919.py in <module>
      1 # بارگذاری تنها متریک‌ها از jet1_obs برای چند ایونت
      2 n_events = 3
----> 3 with h5py.File(input_file, "r") as f:
      4     jet1_obs = f['objects/jets/jet1_obs'][:n_events]
      5 

NameError: name 'h5py' is not defined

بارگذاری و تحلیل ابتدایی داده‌های جت از فایل HDF5#

در این بخش، داده‌های مربوط به جت‌های حاصل از برخورد WZ → jjνν̄ از فایل HDF5 خوانده می‌شوند و برخی ویژگی‌های آماری آن‌ها رسم می‌گردد.

فایل‌های ورودی#

  • input_wz: مسیر فایل HDF5 شامل جت‌های WZ با محدوده‌ی (p_T) بین 450 تا 1200 GeV.

  • تعداد جت‌های قابل بارگذاری (n_jets) برابر با 100,000 در نظر گرفته شده است.

تابع load_jets#

این تابع وظیفه دارد:

  1. داده‌های جت‌ها (jet1_obs) و مؤلفه‌های آن‌ها (jet1_cnsts) را از فایل بارگذاری کند.

  2. مؤلفه‌هایی که مقدار (p_T = 0) دارند را به عنوان مقدار ماسک‌شده در نظر بگیرد تا در محاسبات آماری لحاظ نشوند.

خروجی تابع:#

  • jets: آرایه‌ای با شکل [N, 11] شامل ویژگی‌های سطح جت (مانند (p_T)، η، φ، جرم و متریک‌های ساختار زیرجت).

  • cnsts: آرایه‌ای با شکل [N, 100, 7] شامل ویژگی‌های ۱۰۰ مؤلفه (ذره) تشکیل‌دهنده‌ی هر جت، به‌صورت ماسک‌شده.

رسم توزیع ویژگی‌ها#

1. هیستوگرام (p_T) جت‌ها#

  • محور x: اندازه حرکت عرضی (Transverse momentum) جت‌ها بر حسب GeV.

  • محور y: تعداد جت‌ها در هر بازه‌ی (p_T).

2. هیستوگرام تعداد مؤلفه‌ها (constituents)#

  • محور x: تعداد ذرات داخل هر جت که مقدار (p_T > 0) دارند.

  • محور y: تعداد جت‌هایی که آن تعداد مؤلفه دارند.

  • استفاده از cnsts.count(axis=1)[:, 0] برای شمارش مؤلفه‌های غیر صفر.


import h5py
import numpy as np
import matplotlib.pyplot as plt

# The input HDF5 file containing the QCD jets.
input_qcd = "mini_QCDjj_pT_450_1200_train01.h5"
input_wz = "mini_WZ_jjnunu_pT_450_1200_test.h5"
# The number of jets to load.
n_jets = 100_000


def load_jets(ifile: str, n_jets: int):
    """Load jets and constituents from an HDF5 file."""
    with h5py.File(ifile, "r") as f:
        cnsts = f["objects/jets/jet1_cnsts"][:n_jets]
        jets = f["objects/jets/jet1_obs"][:n_jets]

    zeros = np.repeat(cnsts[:, :, 0] == 0, cnsts.shape[2])
    zeros = zeros.reshape(-1, cnsts.shape[1], cnsts.shape[2])
    cnsts = np.ma.masked_where(zeros, cnsts)
    return jets, cnsts

qcd_jets, qcd_constituents = load_jets(input_wz, n_jets=n_jets)

# Plot the transverse momentum of the jets.
plt.hist(qcd_jets[:, 0], label="QCD jets", bins=30)
plt.xlabel(r"$p_{\mathrm{T}}$ [GeV]")
plt.ylabel("Number of jets")
plt.show()

# Plot the number of constituents in the jets.
plt.hist(qcd_constituents.count(axis=1)[:, 0], label="QCD jets", bins=100, range=(0.5, 100.5))
plt.xlabel("Number of constituents")
plt.ylabel("Number of jets")
plt.show()
../_images/9de53806ad1fcf3f3bcf58b3e3d9fb7d1089e5dddc5735431fe73b74183fe41b.png ../_images/004723944649e0aa6b53a482ab68542b070a9c6ee71b0aae817d768f7722dc66.png

📈 خروجی‌های تحلیل آماری اولیه جت‌ها#

🔹 توزیع ( p_T ) جت‌ها (Transverse Momentum)#

  • نمودار هیستوگرام ( p_T ) نشان می‌دهد که بیشتر جت‌های موجود در این نمونه داده، در بازه‌ی میانی محدوده‌ی انتخاب‌شده ( [450, 1200] , \text{GeV} ) قرار دارند.

  • شکل کلی توزیع به‌صورت یک منحنی تک‌قله‌ای (unimodal) است.

  • این توزیع با انتظار فیزیکی از فرایندهای WZ که منجر به تولید جت با انرژی بالا می‌شوند، سازگار است.


🔹 تعداد مؤلفه‌ها (Constituents) در هر جت#

  • نمودار دوم توزیع تعداد مؤلفه‌ها (constituents) در جت‌ها را نشان می‌دهد.

  • این توزیع معمولاً در بازه‌ی [20, 80] پیک دارد و بیشتر جت‌ها دارای حدود 40–60 مؤلفه هستند.

  • با توجه به اینکه فقط 100 مؤلفه با بیشترین ( p_T ) در داده ذخیره شده‌اند، این مقدار کمتر از 100 در اکثر جت‌ها انتظار می‌رود.

  • این اطلاعات در انتخاب ویژگی برای مدل‌های یادگیری ماشین بسیار مهم است، زیرا جت‌ها دارای ابعاد ورودی متغیر (variable-length) هستند که نیازمند padding یا masking خواهند بود.


def load_jets2(ifile: str, n_jets: int):
    """Load jets and constituents from an HDF5 file."""
    with h5py.File(ifile, "r") as f:
        cnsts = f["objects/jets/jet1_cnsts"][:n_jets]
        jets = f["objects/jets/jet1_obs"][:n_jets]

    return jets, cnsts

qcd_jets, qcd_constituents = load_jets(input_wz, n_jets=10)
print(qcd_jets.shape)
print(qcd_constituents.shape)
(10, 11)
(10, 100, 7)
zeros = qcd_constituents[:, :, 0] == 0
zeros.shape
(10, 100)
zeros
array([[False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True,  True,  True,  True,  True,  True,  True,  True,  True,
         True]])

چرا از صفحه‌ی η–φ (اتا–فی) برای نمایش و تحلیل جت‌ها استفاده می‌کنیم؟#

در فیزیک ذرات، به‌ویژه در تحلیل داده‌های برخورددهنده‌هایی مانند LHC، استفاده از صفحه‌ی η–φ (شبه‌شتاب–زاویه‌ی آزیموتال) بسیار رایج و ضروری است. در ادامه دلایل فیزیکی و عملی آن آورده شده است:


1. ناوردا بودن نسبت به boosts در راستای پرتو#

  • کمیت η (pseudo-rapidity) نسبت به تغییر چارچوب مرجع در امتداد محور z (راستای پرتو) ناوردا است.

  • این ویژگی باعث می‌شود که الگوهای جت‌ها و توزیع‌های فضایی ذرات بدون نیاز به اصلاح برای boost بین چارچوب‌های مختلف قابل مقایسه باشند.

  • این موضوع در تحلیل برخوردهای پرانرژی که برخوردها در چارچوب‌های مختلف رخ می‌دهند، حیاتی است.


2. نمایش زاویه‌ای فشرده، فیزیکی و کامل#

  • صفحه‌ی η–φ به‌صورت یک نمایش ۲بعدی از آشکارساز عمل می‌کند، مشابه تصویر روی سطح استوانه‌ای اطراف نقطه‌ی برخورد.

  • η محور عمودی (نشان‌دهنده زاویه نسبت به پرتوی برخورد) و φ زاویه‌ی آزیموتال (در صفحه عرضی) است.

  • با این نمایش، ذراتی که در فضای سه‌بعدی پراکنده‌اند به‌صورت دوبعدی نمایش داده می‌شوند، بدون از دست رفتن اطلاعات زاویه‌ای.


3. قابل استفاده در تصویرسازی، یادگیری ماشین و الگوریتم‌های تشخیص#

  • می‌توان با نمایش η–φ، ساختار فضایی جت‌ها را مشابه تصویر پیکسل‌بندی شده تحلیل کرد.

  • این نمایش پایه‌ای برای استفاده از:

    • شبکه‌های عصبی کانولوشنی (CNN)

    • autoencoderها

    • تشخیص الگوهای جت (substructure tagging)


4. استانداردسازی نمایش جت‌ها در تحلیل‌های ATLAS / CMS#

  • نمایش توزیع انرژی و مؤلفه‌های جت روی صفحه‌ی η–φ در مقالات و نرم‌افزارهای رسمی تجربه شده و به‌عنوان استاندارد استفاده می‌شود.

  • برای الگوریتم‌های بازسازی جت، تفکیک کوارک و گلئون، و مطالعات بوزون‌های سنگین مانند W، Z، Higgs این روش نمایش ضروری است.


نتیجه‌گیری: استفاده از صفحه‌ی η–φ یک روش مؤثر، فیزیکی و محاسباتی برای نمایش، تحلیل و پردازش داده‌های جت است و تقریباً در تمام تحلیل‌های فیزیک ذرات به‌کار گرفته می‌شود.

min_eta = np.min( qcd_constituents[0, : , 1] )
max_eta = np.max( qcd_constituents[0, : , 1] )

min_phi = np.min( qcd_constituents[0, : , 2] )
max_phi = np.max( qcd_constituents[0, : , 2] )

etas = np.linspace(min_eta, max_eta, 100)
phis = np.linspace(min_phi, max_phi, 100)

# zeros = np.repeat(qcd_constituents[0, :, 0] == 0, 7 )
# zeros = zeros.reshape(1, qcd_constituents.shape[1], qcd_constituents.shape[2])
# cnsts = np.ma.masked_where(zeros, qcd_constituents[0])

plt.hist2d(qcd_constituents[0, :, 1] , qcd_constituents[0, :, 2], bins=(etas, phis) , weights=qcd_constituents[0, :, 0] , norm='log')
plt.colorbar()
#plt.zlog()
<matplotlib.colorbar.Colorbar at 0x7f58f4b615e0>
../_images/921eefe016af66a13dfe21ac3049b965099a62ecf0bdf9d3c2946c290b456d51.png
qcd_jets[0,0]
603.4741262416932