32 using namespace ROOT::VecOps;
34 void df102_NanoAODDimuonAnalysis()
37 ROOT::EnableImplicitMT();
40 ROOT::RDataFrame df(
"Events",
41 {
"root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/Run2012B_DoubleMuParked.root",
42 "root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/Run2012C_DoubleMuParked.root"});
45 auto df_2mu = df.Filter(
"nMuon == 2",
"Events with exactly two muons");
46 auto df_os = df_2mu.Filter(
"Muon_charge[0] != Muon_charge[1]",
"Muons with opposite charge");
49 auto df_mass = df_os.Define(
"Dimuon_mass", InvariantMass<float>, {
"Muon_pt",
"Muon_eta",
"Muon_phi",
"Muon_mass"});
52 auto h = df_mass.Histo1D({
"Dimuon_mass",
"Dimuon_mass", 30000, 0.25, 300},
"Dimuon_mass");
55 auto report = df_mass.Report();
58 gStyle->SetOptStat(0); gStyle->SetTextFont(42);
59 auto c =
new TCanvas(
"c",
"", 800, 700);
60 c->SetLogx(); c->SetLogy();
63 h->GetXaxis()->SetTitle(
"m_{#mu#mu} (GeV)"); h->GetXaxis()->SetTitleSize(0.04);
64 h->GetYaxis()->SetTitle(
"N_{Events}"); h->GetYaxis()->SetTitleSize(0.04);
67 TLatex label; label.SetNDC(
true);
68 label.DrawLatex(0.175, 0.740,
"#eta");
69 label.DrawLatex(0.205, 0.775,
"#rho,#omega");
70 label.DrawLatex(0.270, 0.740,
"#phi");
71 label.DrawLatex(0.400, 0.800,
"J/#psi");
72 label.DrawLatex(0.415, 0.670,
"#psi'");
73 label.DrawLatex(0.485, 0.700,
"Y(1,2,3S)");
74 label.DrawLatex(0.755, 0.680,
"Z");
75 label.SetTextSize(0.040); label.DrawLatex(0.100, 0.920,
"#bf{CMS Open Data}");
76 label.SetTextSize(0.030); label.DrawLatex(0.630, 0.920,
"#sqrt{s} = 8 TeV, L_{int} = 11.6 fb^{-1}");
78 c->SaveAs(
"dimuon_spectrum.pdf");
86 df102_NanoAODDimuonAnalysis();