ROOT
Version v6.34
master
v6.32
v6.30
v6.28
v6.26
v6.24
v6.22
v6.20
v6.18
v6.16
v6.14
v6.12
v6.10
v6.08
v6.06
Reference Guide
►
ROOT
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
Pages
Loading...
Searching...
No Matches
ntpl004_dimuon.C
Go to the documentation of this file.
1
/// \file
2
/// \ingroup tutorial_ntuple
3
/// \notebook
4
/// Mini-Analysis on CMS OpenData with RDataFrame.
5
/// This tutorial illustrates that analyzing data with RDataFrame works the same
6
/// for both TTree data and RNTuple data. The RNTuple data are converted from the Events tree
7
/// in http://root.cern/files/NanoAOD_DoubleMuon_CMS2011OpenData.root
8
/// Based on RDataFrame's df102_NanoAODDimuonAnalysis.C
9
///
10
/// \macro_image
11
/// \macro_code
12
///
13
/// \date April 2019
14
/// \author The ROOT Team
15
16
// NOTE: The RNTuple classes are experimental at this point.
17
// Functionality and interface are still subject to changes.
18
19
#include <
ROOT/RDataFrame.hxx
>
20
#include <
ROOT/RNTupleDS.hxx
>
21
#include <
ROOT/RVec.hxx
>
22
23
#include <
TCanvas.h
>
24
#include <
TH1D.h
>
25
#include <
TLatex.h
>
26
#include <
TStyle.h
>
27
28
#include <cassert>
29
#include <cmath>
30
#include <iostream>
31
#include <memory>
32
#include <string>
33
#include <vector>
34
#include <utility>
35
36
// Import classes from experimental namespace for the time being
37
using
RNTupleDS =
ROOT::Experimental::RNTupleDS
;
38
39
constexpr
char
const
*
kNTupleFileName
=
"http://root.cern/files/tutorials/ntpl004_dimuon_v1.root"
;
40
41
using namespace
ROOT::VecOps
;
42
43
void
ntpl004_dimuon
() {
44
// Use all available CPU cores
45
ROOT::EnableImplicitMT
();
46
47
ROOT::RDataFrame
df(
"Events"
,
kNTupleFileName
);
48
49
// The tutorial is identical to df102_NanoAODDimuonAnalysis except the use of RNTuple.
50
51
// For simplicity, select only events with exactly two muons and require opposite charge
52
auto
df_2mu
= df.Filter(
"nMuon == 2"
,
"Events with exactly two muons"
);
53
auto
df_os
=
df_2mu
.Filter(
"Muon_charge[0] != Muon_charge[1]"
,
"Muons with opposite charge"
);
54
55
// Compute invariant mass of the dimuon system
56
auto
df_mass
=
df_os
.Define(
"Dimuon_mass"
,
InvariantMass<float>
, {
"Muon_pt"
,
"Muon_eta"
,
"Muon_phi"
,
"Muon_mass"
});
57
58
// Make histogram of dimuon mass spectrum
59
auto
h
=
df_mass
.Histo1D({
"Dimuon_mass"
,
"Dimuon_mass"
, 30000, 0.25, 300},
"Dimuon_mass"
);
60
61
// Request cut-flow report
62
auto
report
=
df_mass
.Report();
63
64
// Produce plot
65
gStyle
->
SetOptStat
(0);
gStyle
->
SetTextFont
(42);
66
auto
c
=
new
TCanvas
(
"c"
,
""
, 800, 700);
67
c
->SetLogx();
c
->SetLogy();
68
69
h
->SetTitle(
""
);
70
h
->GetXaxis()->SetTitle(
"m_{#mu#mu} (GeV)"
);
h
->GetXaxis()->SetTitleSize(0.04);
71
h
->GetYaxis()->SetTitle(
"N_{Events}"
);
h
->GetYaxis()->SetTitleSize(0.04);
72
h
->DrawCopy();
73
74
TLatex
label
;
label
.SetNDC(
true
);
75
label
.DrawLatex(0.175, 0.740,
"#eta"
);
76
label
.DrawLatex(0.205, 0.775,
"#rho,#omega"
);
77
label
.DrawLatex(0.270, 0.740,
"#phi"
);
78
label
.DrawLatex(0.400, 0.800,
"J/#psi"
);
79
label
.DrawLatex(0.415, 0.670,
"#psi'"
);
80
label
.DrawLatex(0.485, 0.700,
"Y(1,2,3S)"
);
81
label
.DrawLatex(0.755, 0.680,
"Z"
);
82
label
.SetTextSize(0.040);
label
.DrawLatex(0.100, 0.920,
"#bf{CMS Open Data}"
);
83
label
.SetTextSize(0.030);
label
.DrawLatex(0.630, 0.920,
"#sqrt{s} = 8 TeV, L_{int} = 11.6 fb^{-1}"
);
84
85
// Print cut-flow report
86
report
->Print();
87
}
RDataFrame.hxx
RNTupleDS.hxx
c
#define c(i)
Definition
RSha256.hxx:101
h
#define h(i)
Definition
RSha256.hxx:106
RVec.hxx
TCanvas.h
TRangeDynCast
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Definition
TCollection.h:358
TH1D.h
TLatex.h
TStyle.h
gStyle
R__EXTERN TStyle * gStyle
Definition
TStyle.h:436
ROOT::Detail::TRangeCast
Definition
TCollection.h:311
ROOT::Experimental::RNTupleDS
The RDataSource implementation for RNTuple.
Definition
RNTupleDS.hxx:46
ROOT::RDataFrame
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
Definition
RDataFrame.hxx:41
TAttText::SetTextFont
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
Definition
TAttText.h:46
TCanvas
The Canvas class.
Definition
TCanvas.h:23
TLatex
To draw Mathematical Formula.
Definition
TLatex.h:18
TStyle::SetOptStat
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:1640
ROOT::VecOps
Definition
TCollectionProxyInfo.h:42
ROOT::EnableImplicitMT
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:539
tutorials
v7
ntuple
ntpl004_dimuon.C
ROOT tags/6-34-04 - Reference Guide Generated on Wed Mar 26 2025 04:46:26 (GVA Time) using Doxygen 1.10.0