import ROOT
variables = ["Muon_pt_1", "Muon_pt_2", "Electron_pt_1", "Electron_pt_2"]
"""Reduce initial dataset to only events which shall be used for training"""
return df.Filter(
"nElectron>=2 && nMuon>=2",
"At least two electrons and two muons")
"""Define the variables which shall be used for training"""
return (
df
.Define("Muon_pt_1", "Muon_pt[0]")
.Define("Muon_pt_2", "Muon_pt[1]")
.Define("Electron_pt_1", "Electron_pt[0]")
.Define("Electron_pt_2", "Electron_pt[1]")
)
"""Load, filter, define variables, and add label column"""
filepath = "root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/" + filename
return df
"""Load signal and background data"""
num_all = num_sig + num_bkg
[rdf_sig, rdf_bkg],
columns=variables + ["label", "weight"],
target="label",
weights="weight",
batch_size=num_all,
drop_remainder=False,
set_seed=42,
)
if __name__ == "__main__":
from xgboost import XGBClassifier
X_train, y_train, w_train, X_test, y_test, w_test =
load_data()
print(f"Training events: {X_train.shape[0]}")
print(f"Testing events: {X_test.shape[0]}")
bdt.fit(X_train, y_train, sample_weight=w_train)
print(f"Training done. ROC AUC: {auc:.4f}")
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...