{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "fb90c5b0", "metadata": {}, "outputs": [], "source": [ "import ROOT" ] }, { "cell_type": "markdown", "id": "68a9f689", "metadata": {}, "source": [ "## First some code to create the data in NumPy" ] }, { "cell_type": "code", "execution_count": null, "id": "099a780d", "metadata": {}, "outputs": [], "source": [ "b0_mass = 5279.65" ] }, { "cell_type": "code", "execution_count": null, "id": "98c508a3", "metadata": {}, "outputs": [], "source": [ "mass = ROOT.RooRealVar(\"mass\", \"mass\", 4.6, 6.)" ] }, { "cell_type": "code", "execution_count": null, "id": "0de94c08", "metadata": {}, "outputs": [], "source": [ "rand = 0" ] }, { "cell_type": "code", "execution_count": null, "id": "de7a08bb", "metadata": {}, "outputs": [], "source": [ "low1=5.26\n", "high1=5.3\n", "low = 4.6\n", "high = 6\n", "\n", "rand+=1\n", "\n", "#signal fit\n", "#crystal ball parameters\n", "mu=ROOT.RooRealVar(f\"mu_{rand}\", f\"mu_{rand}\", b0_mass/1000., low, high)\n", "sigma = ROOT.RooRealVar(f\"sigma_{rand}\", f\"sigma_{rand}\", 0.04, 0.025, 0.2)\n", "alphaL = ROOT.RooRealVar(f\"alphaL_{rand}\", f\"alphaL_{rand}\", 0.2, 0., 5.)\n", "nL = ROOT.RooRealVar(f\"nL_{rand}\", f\"nL_{rand}\", 10., 0., 200.)\n", "alphaR = ROOT.RooRealVar(f\"alphaR_{rand}\", f\"alphaR_{rand}\", -0.2, -5., 0.)\n", "nR = ROOT.RooRealVar(f\"nR_{rand}\", f\"nR_{rand}\", 10., 0., 200.)\n", "# Core gaussian parameters\n", "muG = ROOT.RooRealVar(f\"muG_{rand}\", f\"muG_{rand}\", b0_mass/1000., low1, high1)\n", "sigmaG = ROOT.RooRealVar(f\"sigmaG_{rand}\", f\"sigmaG_{rand}\", 0.015, 0., 1)\n", "# Fractions\n", "frac = ROOT.RooRealVar(f\"frac_{rand}\", f\"frac_{rand}\", 0.5, 0., 1.)\n", "frac_CB = ROOT.RooRealVar(f\"frac_CB_{rand}\", f\"frac_CB_{rand}\", 0.5, 0., 1.)\n", "#pdfs\n", "CBR = ROOT.RooCrystalBall(f\"CBR_{rand}\",f\"CBR_{rand}\",mass,mu,sigma,alphaR, nR, doubleSided=False)\n", "CBL = ROOT.RooCrystalBall(f\"CBL_{rand}\",f\"CBL_{rand}\",mass,mu,sigma,alphaL, nL, doubleSided=False)\n", "Gau = ROOT.RooGaussian(f\"gau_{rand}\",f\"gau_{rand}\",mass,muG,sigmaG)\n", "sig_a = ROOT.RooAddPdf( f\"sig_a_{rand}\",f\"sig_a_{rand}\",CBL,CBR,frac_CB)\n", "sig_fit= ROOT.RooAddPdf( f\"sig_fit_{rand}\",f\"sig_fit_{rand}\",sig_a, Gau,frac)" ] }, { "cell_type": "code", "execution_count": null, "id": "a105d55e", "metadata": {}, "outputs": [], "source": [ "# Create the toy data to load from NumPy\n", "signal_mass = sig_fit.generate(mass, 10000)\n", "ROOT.SetOwnership(signal_mass, True) # because generate returns an owning pointer\n", "data = signal_mass.to_numpy()" ] }, { "cell_type": "markdown", "id": "977741b3", "metadata": {}, "source": [ "## Here, the actual reproducer code starts:" ] }, { "cell_type": "code", "execution_count": null, "id": "3ffa0fe8", "metadata": {}, "outputs": [], "source": [ "mass = ROOT.RooRealVar(\"mass\", \"mass\", 4.6, 6.)\n", "signal_mass = ROOT.RooDataSet.from_numpy(data={\"mass\": data[\"mass\"]}, variables=[mass])" ] }, { "cell_type": "code", "execution_count": null, "id": "af72bede", "metadata": {}, "outputs": [], "source": [ "low1=5.26\n", "high1=5.3\n", "low = 4.6\n", "high = 6\n", "\n", "rand+=1\n", "\n", "#signal fit\n", "#crystal ball parameters\n", "mu=ROOT.RooRealVar(f\"mu_{rand}\", f\"mu_{rand}\", b0_mass/1000., low, high)\n", "sigma = ROOT.RooRealVar(f\"sigma_{rand}\", f\"sigma_{rand}\", 0.04, 0.025, 0.2)\n", "alphaL = ROOT.RooRealVar(f\"alphaL_{rand}\", f\"alphaL_{rand}\", 0.2, 0., 5.)\n", "nL = ROOT.RooRealVar(f\"nL_{rand}\", f\"nL_{rand}\", 10., 0., 200.)\n", "alphaR = ROOT.RooRealVar(f\"alphaR_{rand}\", f\"alphaR_{rand}\", -0.2, -5., 0.)\n", "nR = ROOT.RooRealVar(f\"nR_{rand}\", f\"nR_{rand}\", 10., 0., 200.)\n", "# Core gaussian parameters\n", "muG = ROOT.RooRealVar(f\"muG_{rand}\", f\"muG_{rand}\", b0_mass/1000., low1, high1)\n", "sigmaG = ROOT.RooRealVar(f\"sigmaG_{rand}\", f\"sigmaG_{rand}\", 0.015, 0., 1)\n", "# Fractions\n", "frac = ROOT.RooRealVar(f\"frac_{rand}\", f\"frac_{rand}\", 0.5, 0., 1.)\n", "frac_CB = ROOT.RooRealVar(f\"frac_CB_{rand}\", f\"frac_CB_{rand}\", 0.5, 0., 1.)\n", "#pdfs\n", "CBR = ROOT.RooCrystalBall(f\"CBR_{rand}\",f\"CBR_{rand}\",mass,mu,sigma,alphaR, nR, doubleSided=False)\n", "CBL = ROOT.RooCrystalBall(f\"CBL_{rand}\",f\"CBL_{rand}\",mass,mu,sigma,alphaL, nL, doubleSided=False)\n", "Gau = ROOT.RooGaussian(f\"gau_{rand}\",f\"gau_{rand}\",mass,muG,sigmaG)\n", "sig_a = ROOT.RooAddPdf( f\"sig_a_{rand}\",f\"sig_a_{rand}\",CBL,CBR,frac_CB)\n", "sig_fit= ROOT.RooAddPdf( f\"sig_fit_{rand}\",f\"sig_fit_{rand}\",sig_a, Gau,frac)" ] }, { "cell_type": "code", "execution_count": null, "id": "b33a08ed", "metadata": {}, "outputs": [], "source": [ "sig_fit.fitTo(signal_mass, PrintLevel=-1, PrintEvalErrors=-1)\n", "c22=ROOT.TCanvas()\n", "Mframe = mass.frame()\n", "signal_mass.plotOn(Mframe)\n", "sig_fit.plotOn(Mframe)\n", "Mframe.Draw()\n", "c22.Draw('mass')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.9" } }, "nbformat": 4, "nbformat_minor": 5 }