25#include <ROOT/RDataFrame.hxx>
47constexpr char const* kNTupleFileName =
"http://root.cern.ch/files/tutorials/ntpl004_dimuon_v1rc1.root";
52T InvariantMassStdVector(std::vector<T>&
pt, std::vector<T>& eta, std::vector<T>& phi, std::vector<T>& mass)
54 assert(
pt.size() == 2 && eta.size() == 2 && phi.size() == 2 && mass.size() == 2);
66void ntpl004_dimuon() {
76 auto df_2mu = df.Filter(
"#Muon == 2",
"Events with exactly two muons");
77 auto df_os = df_2mu.Filter(
"Muon.charge[0] != Muon.charge[1]",
"Muons with opposite charge");
80 auto df_mass = df_os.Define(
"Dimuon_mass", InvariantMassStdVector<float>, {
"Muon.pt",
"Muon.eta",
"Muon.phi",
"Muon.mass"});
81 auto df_size = df_os.Define(
"eta_size",
"Muon.mass.size()");
84 auto h = df_mass.Histo1D({
"Dimuon_mass",
"Dimuon_mass", 30000, 0.25, 300},
"Dimuon_mass");
87 auto report = df_mass.Report();
91 auto c =
new TCanvas(
"c",
"", 800, 700);
92 c->SetLogx();
c->SetLogy();
95 h->GetXaxis()->SetTitle(
"m_{#mu#mu} (GeV)");
h->GetXaxis()->SetTitleSize(0.04);
96 h->GetYaxis()->SetTitle(
"N_{Events}");
h->GetYaxis()->SetTitleSize(0.04);
101 label.
DrawLatex(0.205, 0.775,
"#rho,#omega");
105 label.
DrawLatex(0.485, 0.700,
"Y(1,2,3S)");
108 label.
SetTextSize(0.030); label.
DrawLatex(0.630, 0.920,
"#sqrt{s} = 8 TeV, L_{int} = 11.6 fb^{-1}");
#define R__LOAD_LIBRARY(LIBRARY)
R__EXTERN TStyle * gStyle
An RNTuple that is used to read data from storage.
A "std::vector"-like collection of values implementing handy operation to analyse them.
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
To draw Mathematical Formula.
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.
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
virtual void Print(Option_t *option="") const
Dump this text with its attributes.
virtual void SetNDC(Bool_t isNDC=kTRUE)
Set NDC mode on if isNDC = kTRUE, off otherwise.
RDataFrame MakeNTupleDataFrame(std::string_view ntupleName, std::string_view fileName)
Vector1::Scalar InvariantMass(const Vector1 &v1, const Vector2 &v2)
return the invariant mass of two LorentzVector The only requirement on the LorentzVector is that they...
void EnableImplicitMT(UInt_t numthreads=0)
Enable ROOT's implicit multi-threading for all objects and methods that provide an internal paralleli...