27ROOT.ROOT.EnableImplicitMT()
30df =
ROOT.RDataFrame(
"Events",
"root://eospublic.cern.ch//eos/opendata/cms/derived-data/AOD2NanoAODOutreachTool/Run2012BC_DoubleMuParked_Muons.root")
33df_2mu = df.Filter(
"nMuon == 2",
"Events with exactly two muons")
34df_os = df_2mu.Filter(
"Muon_charge[0] != Muon_charge[1]",
"Muons with opposite charge")
37df_mass = df_os.Define(
"Dimuon_mass",
"InvariantMass(Muon_pt, Muon_eta, Muon_phi, Muon_mass)")
40h = df_mass.Histo1D((
"Dimuon_mass",
"Dimuon mass;m_{#mu#mu} (GeV);N_{Events}", 30000, 0.25, 300),
"Dimuon_mass")
43report = df_mass.Report()
46ROOT.gStyle.SetOptStat(0); ROOT.gStyle.SetTextFont(42)
47c = ROOT.TCanvas(
"c",
"", 800, 700)
48c.SetLogx(); c.SetLogy()
51h.GetXaxis().SetTitleSize(0.04)
52h.GetYaxis().SetTitleSize(0.04)
55label = ROOT.TLatex(); label.SetNDC(
True)
56label.DrawLatex(0.175, 0.740,
"#eta")
57label.DrawLatex(0.205, 0.775,
"#rho,#omega")
58label.DrawLatex(0.270, 0.740,
"#phi")
59label.DrawLatex(0.400, 0.800,
"J/#psi")
60label.DrawLatex(0.415, 0.670,
"#psi'")
61label.DrawLatex(0.485, 0.700,
"Y(1,2,3S)")
62label.DrawLatex(0.755, 0.680,
"Z")
63label.SetTextSize(0.040); label.DrawLatex(0.100, 0.920,
"#bf{CMS Open Data}")
64label.SetTextSize(0.030); label.DrawLatex(0.630, 0.920,
"#sqrt{s} = 8 TeV, L_{int} = 11.6 fb^{-1}")
66c.SaveAs(
"dimuon_spectrum.pdf")
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...