3## Drawing histograms in Python
6made blocking to interactively show it on the screen before continuing execution.
9h =
ROOT.TH1D(
"h1",
"h1", 100, -5, 5)
10h.FillRandom(
"gaus", 10000)
16## Fitting histograms in Python
18One-dimensional histograms can be fit in [Python](https:
19To fit
a 1D histogram to one of the
ROOT standard functions (
e.g.
a Gaussian):
23myTH1D =
ROOT.
TH1D(
"th1d",
"Histogram for fitting", 200, 0, 10)
30The list of standard functions in
ROOT can be accessed with the
TROOT::GetListOfFunctions.
31In Python, the standard functions
for TF1 can be printed
as follows:
36#
Print a list of available functions and their definitions
40## Accessing results of the fit in Python
43documentation
for a list of possible options).
49# Re-using the
TH1D defined in the earlier example code
50myResult = myTH1D.
Fit(
"gaus",
"s")
55# Get the error of the first parameter
60##
Fitting to user-defined functions in Python
611D histograms can also be fit to any user-defined
function expressed
as a TF1 (see the
TF1 documentation
for examples on how to do this).
67myTF1 =
ROOT.
TF1(
"myFunction",
"[0] * pow(x, [1])", 0, 10)
73myTH1D =
ROOT.
TH1D(
"th1d",
"My histogram to fit", 200, 0, 10)
75myTH1D.
Fit(
"myFunction")
81def myGaussian(
x, pars):
83 Defines a Gaussian function
87#
Initialize from the Python
function with the range -5 to +5, with two parameters to fit, and
a one-dimensional input
x
88myTF1 =
ROOT.
TF1(
"myFunction", myGaussian, -5, 5, npar=2, ndim=1)
91myTH1D =
ROOT.
TH1D(
"th1d",
"Test", 200, -5, 5)
95myTH1D.
Fit(
"myFunction")
99The
TH1 class has several additions
for its use from Python, which are also available in its subclasses (
e.
g.,
TH1F,
TH1D).
101### In-Place Multiplication
103TH1 instances support in-place multiplication with
a scalar value using the `*=` operator:
111# Multiply histogram contents by 2
115This operation is equivalent to calling `
h.Scale(2)`.
117### Filling with NumPy Arrays
119The
Fill method has been pythonized to accept NumPy arrays
as input. This allows
for efficient filling of histograms with large datasets:
129data = np.random.normal(0, 2, 10000)
131#
Fill histogram with data
135weights = np.ones_like(data) * 0.5
139The
Fill method accepts the following arguments when used with NumPy arrays:
140- First argument: NumPy array containing the data to fill
141- Second argument (optional): NumPy array containing the weights
for each entry
146# This will raise ValueError
147data = np.array([1.0, 2.0, 3.0])
148weights = np.array([0.5, 1.0]) # Wrong length!
149h.Fill(data, weights) # Raises ValueError: "Length mismatch: data length (3) != weights length (2)"
152The original Fill method functionality is preserved for non-NumPy arguments:
155# Traditional filling still works
156h.Fill(1.0) # Fill single value
157h.Fill(1.0, 2.0) # Fill single value with weight
160## Further Python fitting examples
161Further examples can be found in the tutorials:
162- [combinedFit.py](combinedFit_8py.html) performs a combined (simultaneous) fit of two 1D histograms with separate functions and some common parameters.
163- [fit1.py](fit1_8py.html) reads a `TF1` and 1D histogram (created and saved in an earlier example [fillrandom.py](fillrandom__8py.html)), and fits the histogram.
164- [fitConvolution.py](fitConvolution_8py.html) fits a 1D histogram to a convolution of two functions.
165- [fitNormSum.py](fitNormSum_8py.html) fits a 1D histogram to the normalized sum of two functions (here, a background exponential and a crystal ball function).
166- [multifit.py](multifit_8py.html) fits multiple functions to different ranges of a 1D histogram.
double Double_t
Double 8 bytes.
const char Option_t
Option string (const char).
void SetParameters(TFitEditor::FuncParams_t &pars, TF1 *func)
Restore the parameters from pars into the function.
void Draw(Option_t *option="") override
Draw a canvas.
Extends the ROOT::Fit::Result class with a TNamed inheritance providing easy possibility for I/O.
1-D histogram with a double per channel (see TH1 documentation)
1-D histogram with a float per channel (see TH1 documentation)
TH1 is the base class of all histogram classes in ROOT.
void Draw(Option_t *option="") override
Draw this histogram with options.
ROOT top level object description.
RooCmdArg Parameters(const RooArgSet ¶ms)
RVec< PromoteTypes< T0, T1 > > pow(const T0 &x, const RVec< T1 > &v)
RVec< PromoteType< T > > exp(const RVec< T > &v)
h1 FillRandom("gaus", 30000)
TFitResultPtr Fit(FitObject *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
void Print(std::ostream &os, const OptionType &opt)
void function(const Char_t *name_, T fun, const Char_t *docstring=0)
double polynomial(DoubleArray coeffs, int nCoeffs, int lowestOrder, double x)
In pdfMode, a coefficient for the constant term of 1.0 is implied if lowestOrder > 0.
void Fill(float *output, float value, int size)
void Initialize(Bool_t useTMVAStyle=kTRUE)
constexpr Double_t C()
Velocity of light in .
BVH_ALWAYS_INLINE T length(const Vec< T, N > &v)