آماده سازی داده ها#
در ادامه کلاس بحث را به صورت تخصصی تر در مورد فیزیک ذرات پیش میبریم. برای بررسی مسئلهای در دنیای فیزیک ذرات نیاز داریم داده های از این دنیا داشته باشیم. مجموعه داده مورد بررسی ما که جزئیات آن در مقاله با عنوان 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 یا مدلهای اکسترا دایمنشن)، بسیاری از سیگنالها شامل بوستد جت هستند.
شناسایی دقیق آنها میتواند زمینهساز کشف ذرات جدید یا تأیید مدلهای نظری باشد.
روشها و ابزارهای تحلیل بوستد جتها#
ابزار / تکنیک |
کاربرد |
|---|---|
|
خوشهبندی ذرات برای ساختن جت |
|
تعیین تعداد زیرجتها در یک جت بوستشده |
|
تکنیکهای حذف انرژیهای نرم برای یافتن ساختار اصلی جت |
|
تشخیص الگوهای پیچیده در ساختار جت به کمک تصویر یا گراف |
|
تحلیل دادهها و ترسیم توزیعهای آماری جتها |
مقایسه جتهای معمولی با بوستد جتها#
ویژگی |
جت معمولی |
بوستد جت |
|---|---|---|
تعداد جتها در واپاشی |
چند جت مجزا |
یک جت بزرگ |
فاصله بین محصولات واپاشی |
زیاد |
کم |
ساختار داخلی |
ساده |
پیچیده (زیرجت دارد) |
نیاز به تحلیل 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,dzd0و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#
این تابع وظیفه دارد:
دادههای جتها (
jet1_obs) و مؤلفههای آنها (jet1_cnsts) را از فایل بارگذاری کند.مؤلفههایی که مقدار (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()
📈 خروجیهای تحلیل آماری اولیه جتها#
🔹 توزیع ( 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>
qcd_jets[0,0]
603.4741262416932
