{ "cells": [ { "cell_type": "markdown", "id": "26a5f0c1", "metadata": {}, "source": [ "# rf712_lagrangianmorphfit\n", "Performing a simple fit with RooLagrangianMorphFunc.\n", "a morphing function is setup as a function of three variables and\n", "a fit is performed on a pseudo-dataset.\n", "\n", "\n", "\n", "\n", "**Author:** Rahul Balasubramanian \n", "This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Tuesday, May 19, 2026 at 08:35 PM." ] }, { "cell_type": "code", "execution_count": 1, "id": "5c69dc05", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:35:10.207040Z", "iopub.status.busy": "2026-05-19T20:35:10.206928Z", "iopub.status.idle": "2026-05-19T20:35:10.222510Z", "shell.execute_reply": "2026-05-19T20:35:10.221980Z" } }, "outputs": [], "source": [ "%%cpp -d\n", "#include \n", "#include \n", "#include \n", "#include \n", "#include \n", "\n", "#include \n", "#include \n", "#include \n", "#include \n", "\n", "using namespace RooFit;" ] }, { "cell_type": "markdown", "id": "a34c0ee9", "metadata": {}, "source": [ "Create variables for\n", "morphing function\n", "---------------------------------------------" ] }, { "cell_type": "code", "execution_count": 2, "id": "2c6d9e09", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:35:10.224015Z", "iopub.status.busy": "2026-05-19T20:35:10.223899Z", "iopub.status.idle": "2026-05-19T20:35:10.577657Z", "shell.execute_reply": "2026-05-19T20:35:10.576872Z" } }, "outputs": [], "source": [ "std::string observablename = \"pTV\";\n", "RooRealVar obsvar(observablename.c_str(), \"observable of pTV\", 10, 600);\n", "RooRealVar kSM(\"kSM\", \"sm modifier\", 1.0);\n", "RooRealVar cHq3(\"cHq3\", \"EFT modifier\", -10.0, 10.0);\n", "cHq3.setAttribute(\"NewPhysics\", true);\n", "RooRealVar cHl3(\"cHl3\", \"EFT modifier\", -10.0, 10.0);\n", "cHl3.setAttribute(\"NewPhysics\", true);\n", "RooRealVar cHDD(\"cHDD\", \"EFT modifier\", -10.0, 10.0);\n", "cHDD.setAttribute(\"NewPhysics\", true);" ] }, { "cell_type": "markdown", "id": "00b00cf0", "metadata": {}, "source": [ "Inputs needed for config\n", "---------------------------------------------" ] }, { "cell_type": "code", "execution_count": 3, "id": "a1a3fae0", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:35:10.579326Z", "iopub.status.busy": "2026-05-19T20:35:10.579208Z", "iopub.status.idle": "2026-05-19T20:35:10.803149Z", "shell.execute_reply": "2026-05-19T20:35:10.802312Z" } }, "outputs": [], "source": [ "std::string infilename = std::string(gROOT->GetTutorialDir()) + \"/roofit/roofit/input_histos_rf_lagrangianmorph.root\";\n", "std::vector samplelist = {\"SM_NPsq0\", \"cHq3_NPsq1\", \"cHq3_NPsq2\", \"cHl3_NPsq1\",\n", " \"cHl3_NPsq2\", \"cHDD_NPsq1\", \"cHDD_NPsq2\", \"cHl3_cHDD_NPsq2\",\n", " \"cHq3_cHDD_NPsq2\", \"cHl3_cHq3_NPsq2\"};" ] }, { "cell_type": "markdown", "id": "921deef1", "metadata": {}, "source": [ "Setup Config\n", "---------------------------------------------" ] }, { "cell_type": "code", "execution_count": 4, "id": "60a1c990", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:35:10.805298Z", "iopub.status.busy": "2026-05-19T20:35:10.805177Z", "iopub.status.idle": "2026-05-19T20:35:11.136668Z", "shell.execute_reply": "2026-05-19T20:35:11.136018Z" } }, "outputs": [], "source": [ "RooLagrangianMorphFunc::Config config;\n", "config.fileName = infilename;\n", "config.observableName = observablename;\n", "config.folderNames = samplelist;\n", "config.couplings.add(cHq3);\n", "config.couplings.add(cHl3);\n", "config.couplings.add(cHDD);\n", "config.couplings.add(kSM);" ] }, { "cell_type": "markdown", "id": "0b0134ed", "metadata": {}, "source": [ "Create morphing function\n", "---------------------------------------------" ] }, { "cell_type": "code", "execution_count": 5, "id": "72e3ac15", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:35:11.138803Z", "iopub.status.busy": "2026-05-19T20:35:11.138678Z", "iopub.status.idle": "2026-05-19T20:35:11.348019Z", "shell.execute_reply": "2026-05-19T20:35:11.347367Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[#0] PROGRESS:InputArguments -- initializing physics inputs from file /github/home/ROOT-CI/build/tutorials/roofit/roofit/input_histos_rf_lagrangianmorph.root with object name(s) 'pTV'\n" ] } ], "source": [ "RooLagrangianMorphFunc morphfunc(\"morphfunc\", \"morphed dist. of pTV\", config);" ] }, { "cell_type": "markdown", "id": "c8c99348", "metadata": {}, "source": [ "Create pseudo data histogram\n", "for fit\n", "---------------------------------------------" ] }, { "cell_type": "code", "execution_count": 6, "id": "c84974cd", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:35:11.349655Z", "iopub.status.busy": "2026-05-19T20:35:11.349524Z", "iopub.status.idle": "2026-05-19T20:35:11.559107Z", "shell.execute_reply": "2026-05-19T20:35:11.558478Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[#0] PROGRESS:Caching -- creating cache from getCache function for 0x7fa67d14e000\n", "[#0] PROGRESS:Caching -- current storage has size 10\n", "[#0] PROGRESS:ObjectHandling -- observable: pTV\n", "[#0] PROGRESS:ObjectHandling -- binWidth: binWidth_pTV\n", "[#1] INFO:DataHandling -- RooDataHist::adjustBinning(pseudo_dh): fit range of variable pTV expanded to nearest bin boundaries: [10,600] --> [0,600]\n" ] } ], "source": [ "morphfunc.setParameter(\"cHq3\", 0.01);\n", "morphfunc.setParameter(\"cHl3\", 1.0);\n", "morphfunc.setParameter(\"cHDD\", 0.2);\n", "\n", "auto pseudo_hist = morphfunc.createTH1(\"pseudo_hist\");\n", "auto pseudo_dh = new RooDataHist(\"pseudo_dh\", \"pseudo_dh\", RooArgList(obsvar), pseudo_hist);" ] }, { "cell_type": "markdown", "id": "b1d77398", "metadata": {}, "source": [ "reset parameters to zeros before fit" ] }, { "cell_type": "code", "execution_count": 7, "id": "fc936e72", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:35:11.560875Z", "iopub.status.busy": "2026-05-19T20:35:11.560755Z", "iopub.status.idle": "2026-05-19T20:35:11.769779Z", "shell.execute_reply": "2026-05-19T20:35:11.769059Z" } }, "outputs": [], "source": [ "morphfunc.setParameter(\"cHq3\", 0.0);\n", "morphfunc.setParameter(\"cHl3\", 0.0);\n", "morphfunc.setParameter(\"cHDD\", 0.0);" ] }, { "cell_type": "markdown", "id": "4b312346", "metadata": {}, "source": [ "error set used as initial step size" ] }, { "cell_type": "code", "execution_count": 8, "id": "a760b019", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:35:11.771813Z", "iopub.status.busy": "2026-05-19T20:35:11.771683Z", "iopub.status.idle": "2026-05-19T20:35:11.980723Z", "shell.execute_reply": "2026-05-19T20:35:11.979978Z" } }, "outputs": [], "source": [ "cHq3.setError(0.1);\n", "cHl3.setError(0.1);\n", "cHDD.setError(0.1);" ] }, { "cell_type": "markdown", "id": "08bcbf35", "metadata": {}, "source": [ "Wrap pdf on morphfunc and\n", "fit to data histogram\n", "---------------------------------------------\n", "wrapper pdf to normalise morphing function to a morphing pdf" ] }, { "cell_type": "code", "execution_count": 9, "id": "e0b6b8e5", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:35:11.982542Z", "iopub.status.busy": "2026-05-19T20:35:11.982420Z", "iopub.status.idle": "2026-05-19T20:35:12.204397Z", "shell.execute_reply": "2026-05-19T20:35:12.203735Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[#0] PROGRESS:Caching -- creating cache from getCache function for 0x7fa62e1f58e0\n", "[#0] PROGRESS:Caching -- current storage has size 10\n", "[#0] PROGRESS:ObjectHandling -- observable: pTV\n", "[#0] PROGRESS:ObjectHandling -- binWidth: binWidth_pTV\n", "\n", "[#1] INFO:Fitting -- RooAbsPdf::fitTo(wrap_pdf_over_wrap_pdf_Int[pTV]) fixing normalization set for coefficient determination to observables in data\n", "[#1] INFO:Fitting -- using generic CPU library compiled with no vectorizations\n", "[#1] INFO:Fitting -- Creation of NLL object took 7.36155 ms\n", "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_wrap_pdf_over_wrap_pdf_Int[pTV]_pseudo_dh) Summation contains a RooNLLVar, using its error level\n", "[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n", "RooAbsMinimizerFcn: Minimized function has error status.\n", "Returning maximum FCN so far (39620.3) to force MIGRAD to back out of this region. Error log follows.\n", "Parameter values: \tcHDD=0.22238\tcHl3=2.00088\tcHq3=0.00780325\n", "RooFit::Detail::RooNormalizedPdf::wrap_pdf_over_wrap_pdf_Int[pTV][ numerator=wrap_pdf denominator=wrap_pdf_Int[pTV] ]\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.0889525, denominator=wrap_pdf_Int[pTV]=4479.59\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.0889525, denominator=wrap_pdf_Int[pTV]=4479.59\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.0889525, denominator=wrap_pdf_Int[pTV]=4479.59\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.0889525, denominator=wrap_pdf_Int[pTV]=4479.59\n", "\n", "RooAbsMinimizerFcn: Minimized function has error status.\n", "Returning maximum FCN so far (39620.3) to force MIGRAD to back out of this region. Error log follows.\n", "Parameter values: \tcHDD=1.16153\tcHl3=8.6965\tcHq3=0.0408466\n", "RooFit::Detail::RooNormalizedPdf::wrap_pdf_over_wrap_pdf_Int[pTV][ numerator=wrap_pdf denominator=wrap_pdf_Int[pTV] ]\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.894368, denominator=wrap_pdf_Int[pTV]=3980.01\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.894368, denominator=wrap_pdf_Int[pTV]=3980.01\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.894368, denominator=wrap_pdf_Int[pTV]=3980.01\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.894368, denominator=wrap_pdf_Int[pTV]=3980.01\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.894368, denominator=wrap_pdf_Int[pTV]=3980.01\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.894368, denominator=wrap_pdf_Int[pTV]=3980.01\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.894368, denominator=wrap_pdf_Int[pTV]=3980.01\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.894368, denominator=wrap_pdf_Int[pTV]=3980.01\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.894368, denominator=wrap_pdf_Int[pTV]=3980.01\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.894368, denominator=wrap_pdf_Int[pTV]=3980.01\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.894368, denominator=wrap_pdf_Int[pTV]=3980.01\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.894368, denominator=wrap_pdf_Int[pTV]=3980.01\n", " ... (remaining 4 messages suppressed)\n", "\n", "RooAbsMinimizerFcn: Minimized function has error status.\n", "Returning maximum FCN so far (39620.3) to force MIGRAD to back out of this region. Error log follows.\n", "Parameter values: \tcHDD=0.607791\tcHl3=5.23432\tcHq3=0.0213386\n", "RooFit::Detail::RooNormalizedPdf::wrap_pdf_over_wrap_pdf_Int[pTV][ numerator=wrap_pdf denominator=wrap_pdf_Int[pTV] ]\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.315769, denominator=wrap_pdf_Int[pTV]=237.773\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.315769, denominator=wrap_pdf_Int[pTV]=237.773\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.315769, denominator=wrap_pdf_Int[pTV]=237.773\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.315769, denominator=wrap_pdf_Int[pTV]=237.773\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.315769, denominator=wrap_pdf_Int[pTV]=237.773\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.315769, denominator=wrap_pdf_Int[pTV]=237.773\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.315769, denominator=wrap_pdf_Int[pTV]=237.773\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.315769, denominator=wrap_pdf_Int[pTV]=237.773\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.315769, denominator=wrap_pdf_Int[pTV]=237.773\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.315769, denominator=wrap_pdf_Int[pTV]=237.773\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.315769, denominator=wrap_pdf_Int[pTV]=237.773\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.315769, denominator=wrap_pdf_Int[pTV]=237.773\n", " ... (remaining 16 messages suppressed)\n", "\n", "RooAbsMinimizerFcn: Minimized function has error status.\n", "Returning maximum FCN so far (39620.3) to force MIGRAD to back out of this region. Error log follows.\n", "Parameter values: \tcHDD=0.330108\tcHl3=2.94627\tcHq3=0.0115846\n", "RooFit::Detail::RooNormalizedPdf::wrap_pdf_over_wrap_pdf_Int[pTV][ numerator=wrap_pdf denominator=wrap_pdf_Int[pTV] ]\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.131032, denominator=wrap_pdf_Int[pTV]=2465.37\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.131032, denominator=wrap_pdf_Int[pTV]=2465.37\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.131032, denominator=wrap_pdf_Int[pTV]=2465.37\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.131032, denominator=wrap_pdf_Int[pTV]=2465.37\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.131032, denominator=wrap_pdf_Int[pTV]=2465.37\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.131032, denominator=wrap_pdf_Int[pTV]=2465.37\n", "\n", "RooAbsMinimizerFcn: Minimized function has error status.\n", "Returning maximum FCN so far (39620.3) to force MIGRAD to back out of this region. Error log follows.\n", "Parameter values: \tcHDD=0.191157\tcHl3=1.72296\tcHq3=0.00670752\n", "RooFit::Detail::RooNormalizedPdf::wrap_pdf_over_wrap_pdf_Int[pTV][ numerator=wrap_pdf denominator=wrap_pdf_Int[pTV] ]\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.0801556, denominator=wrap_pdf_Int[pTV]=5193.38\n", " p.d.f value is less than zero, trying to recover @ numerator=wrap_pdf=0.0801556, denominator=wrap_pdf_Int[pTV]=5193.38\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.0801556, denominator=wrap_pdf_Int[pTV]=5193.38\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.0801556, denominator=wrap_pdf_Int[pTV]=5193.38\n", "\n", "RooAbsMinimizerFcn: Minimized function has error status.\n", "Returning maximum FCN so far (39620.3) to force MIGRAD to back out of this region. Error log follows.\n", "Parameter values: \tcHDD=0.138238\tcHl3=1.24892\tcHq3=0.00485049\n", "RooFit::Detail::RooNormalizedPdf::wrap_pdf_over_wrap_pdf_Int[pTV][ numerator=wrap_pdf denominator=wrap_pdf_Int[pTV] ]\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.0688277, denominator=wrap_pdf_Int[pTV]=6538.46\n", "\n", "RooAbsMinimizerFcn: Minimized function has error status.\n", "Returning maximum FCN so far (39620.3) to force MIGRAD to back out of this region. Error log follows.\n", "Parameter values: \tcHDD=0.121667\tcHl3=1.24299\tcHq3=0.004269\n", "RooFit::Detail::RooNormalizedPdf::wrap_pdf_over_wrap_pdf_Int[pTV][ numerator=wrap_pdf denominator=wrap_pdf_Int[pTV] ]\n", " getLogVal() top-level p.d.f evaluates to NaN @ numerator=wrap_pdf=0.0667251, denominator=wrap_pdf_Int[pTV]=6553.34\n", "\n", "[#1] INFO:Fitting -- RooAbsPdf::fitTo(wrap_pdf) Calculating sum-of-weights-squared correction matrix for covariance matrix\n" ] } ], "source": [ "RooWrapperPdf model(\"wrap_pdf\", \"wrap_pdf\", morphfunc);\n", "auto fitres = model.fitTo(*pseudo_dh, SumW2Error(true), Save(), PrintLevel(-1));\n", "auto hcorr = fitres->correlationHist();" ] }, { "cell_type": "markdown", "id": "c1021400", "metadata": {}, "source": [ "Extract postfit distribution\n", "and plot with initial\n", "histogram\n", "---------------------------------------------" ] }, { "cell_type": "code", "execution_count": 10, "id": "b7a2b405", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:35:12.206226Z", "iopub.status.busy": "2026-05-19T20:35:12.206097Z", "iopub.status.idle": "2026-05-19T20:35:12.412228Z", "shell.execute_reply": "2026-05-19T20:35:12.411891Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[#1] INFO:InputArguments -- RooAbsData::plotOn(pseudo_dh) INFO: dataset has non-integer weights, auto-selecting SumW2 errors instead of Poisson errors\n", "[#1] INFO:Plotting -- RooPlot::updateFitRangeNorm: New event count of 7389.24 will supersede previous event count of 7388.38 for normalization of PDF projections\n" ] } ], "source": [ "auto postfit_hist = morphfunc.createTH1(\"morphing_postfit_hist\");\n", "RooDataHist postfit_dh(\"morphing_postfit_dh\", \"morphing_postfit_dh\", RooArgList(obsvar), postfit_hist);\n", "\n", "auto frame0 = obsvar.frame(Title(\"Fitted histogram of p_{T}^{V}\"));\n", "postfit_dh.plotOn(frame0, Name(\"postfit_dist\"), DrawOption(\"C\"), LineColor(kBlue), DataError(RooAbsData::None),\n", " XErrorSize(0));\n", "pseudo_dh->plotOn(frame0, Name(\"input\"));" ] }, { "cell_type": "markdown", "id": "7c2fb079", "metadata": {}, "source": [ "Draw plots on canvas\n", "---------------------------------------------" ] }, { "cell_type": "code", "execution_count": 11, "id": "d1f9d560", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:35:12.418446Z", "iopub.status.busy": "2026-05-19T20:35:12.418315Z", "iopub.status.idle": "2026-05-19T20:35:12.624322Z", "shell.execute_reply": "2026-05-19T20:35:12.623828Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "Info in : png file rf712_lagrangianmorphfit.png has been created\n" ] } ], "source": [ "TCanvas *c1 = new TCanvas(\"fig3\", \"fig3\", 800, 400);\n", "c1->Divide(2, 1);\n", "\n", "c1->cd(1);\n", "gPad->SetLeftMargin(0.15);\n", "gPad->SetRightMargin(0.05);\n", "\n", "model.paramOn(frame0, Layout(0.50, 0.75, 0.9), Parameters(config.couplings));\n", "frame0->GetXaxis()->SetTitle(\"p_{T}^{V}\");\n", "frame0->Draw();\n", "\n", "c1->cd(2);\n", "gPad->SetLeftMargin(0.15);\n", "gPad->SetRightMargin(0.15);\n", "gStyle->SetPaintTextFormat(\"4.1f\");\n", "gStyle->SetOptStat(0);\n", "hcorr->SetMarkerSize(3.);\n", "hcorr->SetTitle(\"correlation matrix\");\n", "hcorr->GetYaxis()->SetTitleOffset(1.4);\n", "hcorr->GetYaxis()->SetLabelSize(0.1);\n", "hcorr->GetXaxis()->SetLabelSize(0.1);\n", "hcorr->GetYaxis()->SetBinLabel(1, \"c_{HDD}\");\n", "hcorr->GetYaxis()->SetBinLabel(2, \"c_{Hl^{(3)}}\");\n", "hcorr->GetYaxis()->SetBinLabel(3, \"c_{Hq^{(3)}}\");\n", "hcorr->GetXaxis()->SetBinLabel(3, \"c_{HDD}\");\n", "hcorr->GetXaxis()->SetBinLabel(2, \"c_{Hl^{(3)}}\");\n", "hcorr->GetXaxis()->SetBinLabel(1, \"c_{Hq^{(3)}}\");\n", "hcorr->Draw(\"colz text\");\n", "c1->SaveAs(\"rf712_lagrangianmorphfit.png\");" ] }, { "cell_type": "markdown", "id": "3e16a3d7", "metadata": {}, "source": [ "Draw all canvases " ] }, { "cell_type": "code", "execution_count": 12, "id": "17ce9610", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:35:12.625945Z", "iopub.status.busy": "2026-05-19T20:35:12.625824Z", "iopub.status.idle": "2026-05-19T20:35:12.841193Z", "shell.execute_reply": "2026-05-19T20:35:12.840621Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%jsroot on\n", "gROOT->GetListOfCanvases()->Draw()" ] } ], "metadata": { "kernelspec": { "display_name": "ROOT C++", "language": "c++", "name": "root" }, "language_info": { "codemirror_mode": "text/x-c++src", "file_extension": ".C", "mimetype": " text/x-c++src", "name": "c++" } }, "nbformat": 4, "nbformat_minor": 5 }