Revision 090ccec988dca3bec28755dd9de8472fcbfdfb52 authored by will-cern on 28 September 2023, 12:09:24 UTC, committed by GitHub on 28 September 2023, 12:09:24 UTC
* update xRooFit to latest version * declare ROOT::Experimental::XRooFit namespace for ROOT's copy of xRooFit * fix namespace alias * address PR comments * [RF] Improvements to `xroofit` documentation structure * Add a new `xroofit` group to the RooFit documentation * Add semicolons behind the `NAMESPACE` macros. They have no effect on the C++ compilier, but macros without trailing semicolons confuse doxygen * Add the `xRooNode` and `xRooNLLVar` classes to the `xroofit` documentation group. Other xroofit classes might also go there, but I don't know which ones should really be public. So I only added these two to give and example. * Move RooBrowser documentation to xRooBrowser. Now that xRooFit is considered part as the experimental user interface, this is fine to do. Like this, doxygen can associate the actual xRooBrowser implementation with the docs. * Rename `RooFit::Detail::XRooFit` namespace to `ROOT::Experimental::XRooFit` instad of using namespace alias. Again, this is done to not confuse doxygen. To build the documentation quickly, edit the `documentation/doxygen/makeinput.sh` directory and comment out all subdirectories except for `roofit`. Call `make` in the doxygen directory. Type `y` if it should ask you to overwrite some files in the end. The xRooFit documentation will end up in the `~/rootdoc/html/group__xroofit.html` directory. * address some typos
1 parent a345367
df003_profiles.py
## \file
## \ingroup tutorial_dataframe
## \notebook -draw
## Use TProfiles with RDataFrame.
##
## This tutorial illustrates how to use TProfiles in combination with the
## RDataFrame. See the documentation of TProfile and TProfile2D to better
## understand the analogy of this code with the example one.
##
## \macro_code
## \macro_image
##
## \date February 2017
## \author Danilo Piparo (CERN)
import ROOT
# A simple helper function to fill a test tree: this makes the example
# stand-alone.
def fill_tree(treeName, fileName):
d = ROOT.RDataFrame(25000)
d.Define("px", "gRandom->Gaus()")\
.Define("py", "gRandom->Gaus()")\
.Define("pz", "sqrt(px * px + py * py)")\
.Snapshot(treeName, fileName)
# We prepare an input tree to run on
fileName = "df003_profiles_py.root"
treeName = "myTree"
fill_tree(treeName, fileName)
# We read the tree from the file and create a RDataFrame.
d = ROOT.RDataFrame(treeName, fileName)
# Create the profiles
hprof1d = d.Profile1D(("hprof1d", "Profile of pz versus px", 64, -4, 4), "px", "py")
hprof2d = d.Profile2D(("hprof2d", "Profile of pz versus px and py", 40, -4, 4, 40, -4, 4, 0, 20), "px", "py", "pz")
# And Draw
c1 = ROOT.TCanvas("c1", "Profile histogram example", 200, 10, 700, 500)
hprof1d.Draw()
c1.SaveAs("df003_c1.png")
c2 = ROOT.TCanvas("c2", "Profile2D histogram example", 200, 10, 700, 500)
hprof2d.Draw()
c2.SaveAs("df003_c2.png")
print("Saved figures to df003_*.png")
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...