import pandas as pd
import servicex as sx
import awkward as ak
from func_adl_servicex import ServiceXSourceUpROOT
import matplotlib.pyplot as plt
plt.rcParams['figure.dpi'] = 200 # make figures bigger and more readable
dataset_name = ["root://eospublic.cern.ch//eos/root-eos/benchmark/Run2012B_SingleMu.root"]
sx_dataset = sx.ServiceXDataset(dataset_name, "uproot")
ds = ServiceXSourceUpROOT(sx_dataset, "Events")
filtered_missing_ET_5 = ds.Where(lambda event: Zip({'p4': Zip({'pt': event.Muon_pt,
'eta': event.Muon_eta,
'phi': event.Muon_phi,
'mass': event.Muon_mass}).ToFourMomenta(),
'charge': event.Muon_charge})
.Choose(2)
.Where(lambda pair: pair[0].charge * pair[1].charge < 0)
.Select(lambda pair: (pair[0].p4 + pair[1].p4).mass)
.Where(lambda mass: 60 < mass and mass < 120)
.Count() > 0
).Select(lambda event: event.MET_pt).AsAwkwardArray().value()
[root://eospublic.ce...: 0%| | 0/9000000000.0 [00:00]
[root://eospublic.ce... Downloaded: 0%| | 0/9000000000.0 [00:00]
filtered_missing_ET_5
<Array [18.7, 13.3, 4.42, ... 123, 31.6, 11.9] type='2970440 * float32'>
plt.hist([filtered_missing_ET_5], bins=100, range=(0, 100))
plt.xlabel(r'$E_\mathrm{T}^\mathrm{miss}$ [GeV]')
plt.ylabel('Events')
plt.show()