Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
hist102_NanoAODDimuonAnalysis.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_histv7
3/// \notebook -js
4/// Show how NanoAOD files can be processed with RDataFrame and RHist.
5///
6/// This tutorial is based on df102_NanoAODDimuonAnalysis.C.
7/// It illustrates how NanoAOD files can be processed with ROOT
8/// dataframes. The NanoAOD-like input files are filled with 66 mio. events
9/// from CMS OpenData containing muon candidates part of 2012 dataset
10/// ([DOI: 10.7483/OPENDATA.CMS.YLIC.86ZZ](http://opendata.cern.ch/record/6004)
11/// and [DOI: 10.7483/OPENDATA.CMS.M5AD.Y3V3](http://opendata.cern.ch/record/6030)).
12/// The macro matches muon pairs and produces an histogram of the dimuon mass
13/// spectrum showing resonances up to the Z mass.
14/// Note that the bump at 30 GeV is not a resonance but a trigger effect.
15///
16/// More details about the dataset can be found on
17/// [the CERN Open Data portal](http://opendata.web.cern.ch/record/12341).
18///
19/// \macro_image
20/// \macro_code
21/// \macro_output
22///
23/// \date August 2018, February 2026
24/// \author Stefan Wunsch (KIT, CERN), the ROOT Team
25
26#include <ROOT/RDataFrame.hxx>
27#include <ROOT/RHist.hxx>
28#include <ROOT/RVec.hxx>
30#include <TCanvas.h>
31#include <TH1.h>
32#include <TLatex.h>
33#include <TStyle.h>
34
35using namespace ROOT::VecOps;
36
38{
39 // Enable multi-threading
41
42 // Create dataframe from NanoAOD files
43 ROOT::RDataFrame df("Events", "root://eospublic.cern.ch//eos/opendata/cms/derived-data/AOD2NanoAODOutreachTool/"
44 "Run2012BC_DoubleMuParked_Muons.root");
45
46 // For simplicity, select only events with exactly two muons and require opposite charge
47 auto df_2mu = df.Filter("nMuon == 2", "Events with exactly two muons");
48 auto df_os = df_2mu.Filter("Muon_charge[0] != Muon_charge[1]", "Muons with opposite charge");
49
50 // Compute invariant mass of the dimuon system
51 auto df_mass = df_os.Define("Dimuon_mass", InvariantMass<float>, {"Muon_pt", "Muon_eta", "Muon_phi", "Muon_mass"});
52
53 // Make histogram of dimuon mass spectrum
54 auto hist = df_mass.Hist(30000, {0.25, 300}, "Dimuon_mass");
55
56 // Request cut-flow report
57 auto report = df.Report();
58
59 // Convert histogram to TH1, set title and axis labels
61 h->SetName("Dimuon_mass");
62 h->SetTitle("Dimuon mass;m_{#mu#mu} (GeV);N_{Events}");
63
64 // Produce plot
67 auto c = new TCanvas("c", "", 800, 700);
68 c->SetLogx();
69 c->SetLogy();
70
71 h->GetXaxis()->SetTitleSize(0.04);
72 h->GetYaxis()->SetTitleSize(0.04);
73 h->DrawClone();
74
75 TLatex label;
76 label.SetNDC(true);
77 label.DrawLatex(0.175, 0.740, "#eta");
78 label.DrawLatex(0.205, 0.775, "#rho,#omega");
79 label.DrawLatex(0.270, 0.740, "#phi");
80 label.DrawLatex(0.400, 0.800, "J/#psi");
81 label.DrawLatex(0.415, 0.670, "#psi'");
82 label.DrawLatex(0.485, 0.700, "Y(1,2,3S)");
83 label.DrawLatex(0.755, 0.680, "Z");
84 label.SetTextSize(0.040);
85 label.DrawLatex(0.100, 0.920, "#bf{CMS Open Data}");
86 label.SetTextSize(0.030);
87 label.DrawLatex(0.630, 0.920, "#sqrt{s} = 8 TeV, L_{int} = 11.6 fb^{-1}");
88
89 c->SaveAs("hist102_dimuon_spectrum.pdf");
90
91 // Print cut-flow report
92 report->Print();
93}
94
95int main()
96{
98}
int main()
Definition Prototype.cxx:12
#define c(i)
Definition RSha256.hxx:101
#define h(i)
Definition RSha256.hxx:106
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
R__EXTERN TStyle * gStyle
Definition TStyle.h:442
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
Definition TAttText.h:48
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
Definition TAttText.h:49
The Canvas class.
Definition TCanvas.h:23
To draw Mathematical Formula.
Definition TLatex.h:20
TLatex * DrawLatex(Double_t x, Double_t y, const char *text)
Make a copy of this object with the new parameters And copy object attributes.
Definition TLatex.cxx:1949
virtual void SaveAs(const char *filename="", Option_t *option="") const
Save this object in the file specified by filename.
Definition TObject.cxx:706
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
Definition TStyle.cxx:1641
virtual void SetNDC(Bool_t isNDC=kTRUE)
Set NDC mode on if isNDC = kTRUE, off otherwise.
Definition TText.cxx:816
std::unique_ptr< TH1D > ConvertToTH1D(const RHistEngine< double > &engine)
Convert a one-dimensional histogram to TH1D.
void EnableImplicitMT(UInt_t numthreads=0)
Enable ROOT's implicit multi-threading for all objects and methods that provide an internal paralleli...
Definition TROOT.cxx:544