diff --git a/TPCQCVis/reports/TPC_AQC_Template_ComparePasses.ipynb b/TPCQCVis/reports/TPC_AQC_Template_ComparePasses.ipynb index 70872ed..bc8ed8f 100644 --- a/TPCQCVis/reports/TPC_AQC_Template_ComparePasses.ipynb +++ b/TPCQCVis/reports/TPC_AQC_Template_ComparePasses.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 47, "id": "6ba04481", "metadata": {}, "outputs": [], @@ -44,11 +44,12 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 61, "id": "1e556f7f-d199-4a14-bb9f-0515fb139009", "metadata": {}, "outputs": [], "source": [ + "MaxRunsPerLegColumn = 10\n", "def drawQuantileProjection(objectName,rootDataFile,quantileOrder=0.5, axis=\"x\"):\n", " from copy import copy\n", " canvas = ROOT.TCanvas()\n", @@ -58,6 +59,8 @@ " quants = []\n", " canvas.cd()\n", " ROOT.gPad.SetGridy(1)\n", + " if len(hist) > 10:\n", + " legend.SetNColumns(math.ceil(len(hist)/MaxRunsPerLegColumn))\n", " for i,histo in enumerate(hist):\n", " if axis == \"y\":\n", " quant = copy(histo.QuantilesY(quantileOrder))\n", @@ -84,6 +87,8 @@ " fits = []\n", " myFunc = ROOT.TF1(\"myFunc\",\"gaus\",40,60)\n", " canvas.cd()\n", + " if len(hist) > 10:\n", + " legend.SetNColumns(math.ceil(len(hist)/MaxRunsPerLegColumn))\n", " for i,histo in enumerate(hist):\n", " try:\n", " histo.FitSlicesY(myFunc, 0, -1, 0, \"QNR\")\n", @@ -93,7 +98,7 @@ " return [],legend,canvas\n", " fit.SetYTitle(\"Gaus Fit Mean \"+ histo.GetYaxis().GetTitle())\n", " fit.SetXTitle(histo.GetXaxis().GetTitle())\n", - " fit.SetTitle(quant.GetYaxis().GetTitle()+\" vs. \"+quant.GetXaxis().GetTitle())\n", + " fit.SetTitle(histo.GetYaxis().GetTitle()+\" vs. \"+histo.GetXaxis().GetTitle())\n", " fit.SetLineWidth(2)\n", " fits.append(fit)\n", " legend.AddEntry(fit,LegRunParam[i])\n", @@ -102,7 +107,7 @@ " legend.Draw()\n", " return fits, legend, canvas\n", "\n", - "def sliceAndFitWidth(objectName,rootDataFile,fitFunc=\"gaus\",fitRange=[40,60],size=[600,400]):\n", + "def sliceAndFitWidth(objectName,rootDataFile,fitFunc=\"gaus\",fitRange=[40,60]):\n", " from copy import copy\n", " canvas = ROOT.TCanvas()\n", " legend = ROOT.TLegend()\n", @@ -112,6 +117,8 @@ " fits = []\n", " myFunc = ROOT.TF1(\"myFunc\",\"gaus\",40,60)\n", " canvas.cd()\n", + " if len(hist) > 10:\n", + " legend.SetNColumns(math.ceil(len(hist)/MaxRunsPerLegColumn))\n", " for i,histo in enumerate(hist):\n", " try:\n", " histo.FitSlicesY(myFunc, 0, -1, 0, \"QNR\")\n", @@ -121,7 +128,7 @@ " return [],legend,canvas\n", " fit.SetYTitle(\"Gaus Fit Width \"+ histo.GetYaxis().GetTitle())\n", " fit.SetXTitle(histo.GetXaxis().GetTitle())\n", - " fit.SetTitle(quant.GetYaxis().GetTitle()+\" vs. \"+quant.GetXaxis().GetTitle())\n", + " fit.SetTitle(histo.GetYaxis().GetTitle()+\" vs. \"+histo.GetXaxis().GetTitle())\n", " fit.SetLineWidth(2)\n", " fits.append(fit)\n", " legend.AddEntry(fit,LegRunParam[i])\n", @@ -133,7 +140,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "0b4c56f8-1009-40aa-8a1f-12c5bd2e1ffb", "metadata": {}, "outputs": [], @@ -216,6 +223,13 @@ " # clones needed for not changing colors of previous quants\n", " quants_clone = quants[iniFile + i].Clone(f\"hist_clone_{iniFile + i}\")\n", " quantscomp_clone = quants_comparison[iniFile + i].Clone(f\"hist_clonecomp_{iniFile + i}\")\n", + " \n", + " ymin = min(quants_clone.GetMinimum(), quantscomp_clone.GetMinimum())\n", + " ymax = max(quants_clone.GetMaximum(), quantscomp_clone.GetMaximum())\n", + " ymin *= 0.9\n", + " ymax *= 1.1\n", + " quants_clone.GetYaxis().SetRangeUser(ymin, ymax) \n", + " \n", " quants_clone.SetLineColor(ROOT.kBlue+3)\n", " quantscomp_clone.SetLineColor(ROOT.kRed-3)\n", " if plotTarget:\n", @@ -264,16 +278,28 @@ "path = \"myPath\"\n", "passName_comparison = \"myComparisonPass\"\n", "\n", + "#periodName = \"LHC23zzh\"\n", + "#passName = \"apass4_test\"\n", + "#runNumber = 123456\n", + "#path = \"/cave/alice-tpc-qc/data/2023/\"\n", + "\n", "# periodName = \"LHC24af\"\n", "# passName = \"apass1\"\n", "# runNumber = 123456\n", "# path = \"/home/ferrandi/alice/TPCQCVis/TPCQCVis/DownloadedData/2024\"\n", "# passName_comparison = \"All\"\n", "\n", - "#periodName = \"LHC23zzh\"\n", - "#passName = \"apass4_test\"\n", - "#runNumber = 123456\n", - "#path = \"/cave/alice-tpc-qc/data/2023/\"\n", + "# periodName = \"LHC23f\"\n", + "# passName = \"apass4\" # This has to be the pass with greater number in the folder!\n", + "# runNumber = \"550369\"\n", + "# path = \"/home/ferrandi/alice/TPCQCVis/TPCQCVis/DownloadedData/2023\"\n", + "# passName_comparison = \"All\"\n", + "\n", + "# periodName = \"LHC23za\"\n", + "# passName = \"apass4\" # This has to be the pass with greater number in the folder!\n", + "# runNumber = \"537822\"\n", + "# path = \"/home/ferrandi/alice/TPCQCVis/TPCQCVis/DownloadedData/2023\"\n", + "# passName_comparison = \"All\"\n", "\n", "# periodName = \"LHC23f\"\n", "# passName = \"apass4\"\n", @@ -393,8 +419,177 @@ "toc": true }, "source": [ - "

Table of Contents

\n", - "
" + "\n", + "

Table of Contents

\n", + "
\n", + " \n", + "\n", + " \n", + "
\n" ] }, { @@ -408,7 +603,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "a180f093", "metadata": {}, "outputs": [], @@ -785,6 +980,128 @@ "canvas.Draw()" ] }, + { + "cell_type": "markdown", + "id": "6bddf8f0", + "metadata": {}, + "source": [ + "### MIP Mean vs. Interaction Rate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "279931ae", + "metadata": {}, + "outputs": [], + "source": [ + "objectName = \"hdEdxTotMIP_TPC\"\n", + "leg = ROOT.TLegend()\n", + "MIPMeans = []\n", + "MIPSigmas =[]\n", + "for file_id in range(len(rootDataFile[:6])):\n", + " file = rootDataFile[file_id:file_id+1]\n", + " quality = checkHistograms(objectName,file,check=\"(histogram.Fit(\\\"gaus\\\",\\\"Sq\\\",\\\"\\\",40,60)) and 48 10:\n", + " legend.SetNColumns(math.ceil(len(hist)/MaxRunsPerLegColumn))\n", " for i,histo in enumerate(hist):\n", " if axis == \"y\":\n", " quant = copy(histo.QuantilesY(quantileOrder))\n", @@ -74,18 +141,22 @@ " quants.append(quant)\n", " quants[i].SetStats(0)\n", " quants[i].Draw(\"SAME L\")\n", - " legend.AddEntry(quant,runList[i])\n", + " legend.AddEntry(quant,LegRunParam[i])\n", " return quants,legend,canvas\n", " \n", "def sliceAndFit(objectName,rootDataFile,fitFunc=\"gaus\",fitRange=[40,60]):\n", " from copy import copy\n", " canvas = ROOT.TCanvas()\n", " legend = ROOT.TLegend()\n", + " n_DataFiles = len(rootDataFile)\n", + " runListNumbers = list(np.array([r.split('_')[-1] for r in runList[n_DataFiles:]]))\n", " [hist,leg,canvo,pad1] = drawHistograms(objectName,rootDataFile,normalize=False,legend=False,\n", - " legendNames=runList,pads=True,drawOption=\"COLZ\",maxColumns=3)\n", + " legendNames=runListNumbers,pads=True,drawOption=\"COLZ\",maxColumns=3)\n", " fits = []\n", " myFunc = ROOT.TF1(\"myFunc\",\"gaus\",40,60)\n", " canvas.cd()\n", + " if len(hist) > 10:\n", + " legend.SetNColumns(math.ceil(len(hist)/MaxRunsPerLegColumn))\n", " for i,histo in enumerate(hist):\n", " try:\n", " histo.FitSlicesY(myFunc, 0, -1, 0, \"QNR\")\n", @@ -95,11 +166,43 @@ " return [],legend,canvas\n", " fit.SetYTitle(\"Gaus Fit Mean \"+ histo.GetYaxis().GetTitle())\n", " fit.SetXTitle(histo.GetXaxis().GetTitle())\n", - " fit.SetTitle(quant.GetYaxis().GetTitle()+\" vs. \"+quant.GetXaxis().GetTitle())\n", + " fit.SetTitle(histo.GetYaxis().GetTitle()+\" vs. \"+histo.GetXaxis().GetTitle())\n", + " fit.SetLineWidth(2)\n", + " fits.append(fit)\n", + " legend.AddEntry(fit,LegRunParam[i])\n", + " fit.Draw(\"SAME L\")\n", + " legend.Draw()\n", + " return fits, legend, canvas\n", + "\n", + "def sliceAndFitWidth(objectName,rootDataFile,fitFunc=\"gaus\",fitRange=[40,60]):\n", + " from copy import copy\n", + " canvas = ROOT.TCanvas()\n", + " legend = ROOT.TLegend()\n", + " n_DataFiles = len(rootDataFile)\n", + " runListNumbers = list(np.array([r.split('_')[-1] for r in runList[n_DataFiles:]]))\n", + " [hist,leg,canvo,pad1] = drawHistograms(objectName,rootDataFile,normalize=False,legend=False,\n", + " legendNames=runListNumbers,pads=True,drawOption=\"COLZ\",maxColumns=3)\n", + " \n", + " fits = []\n", + " myFunc = ROOT.TF1(\"myFunc\",\"gaus\",40,60)\n", + " canvas.cd()\n", + " if len(hist) > 10:\n", + " legend.SetNColumns(math.ceil(len(hist)/MaxRunsPerLegColumn))\n", + " for i,histo in enumerate(hist):\n", + " try:\n", + " histo.FitSlicesY(myFunc, 0, -1, 0, \"QNR\")\n", + " fit = copy(ROOT.gDirectory.Get(histo.GetName()+\"_2\"))\n", + " except:\n", + " print(\"Could not perform fit.\")\n", + " return [],legend,canvas\n", + " fit.SetYTitle(\"Gaus Fit Width \"+ histo.GetYaxis().GetTitle())\n", + " fit.SetXTitle(histo.GetXaxis().GetTitle())\n", + " fit.SetTitle(histo.GetYaxis().GetTitle()+\" vs. \"+histo.GetXaxis().GetTitle())\n", " fit.SetLineWidth(2)\n", " fits.append(fit)\n", - " legend.AddEntry(fit,runList[i])\n", + " legend.AddEntry(fit,LegRunParam[i])\n", " fit.Draw(\"SAME L\")\n", + " legend.SetHeader(\"#Run polarity IRstart IRmid IRend\", \"C\")\n", " legend.Draw()\n", " return fits, legend, canvas" ] @@ -117,7 +220,7 @@ "ROOT.gStyle.SetGridWidth(1)\n", "ROOT.gStyle.SetOptStat(0)\n", "cols = list(ROOT.TColor.GetPalette())\n", - "def updateColors(histograms,palette):\n", + "def updateColorsMC(histograms,palette):\n", " global runList_first, runList_comparison\n", " nFirst = len(runList_first)\n", " nComparison = len(runList_comparison)\n", @@ -133,6 +236,19 @@ " hist.SetMarkerColor(color)\n", " return colors\n", "\n", + "def updateColorsComparison(histograms,palette):\n", + " colors = []\n", + " for i,hist in enumerate(histograms):\n", + " if len(histograms)>1:\n", + " color = palette[math.floor((i/(len(histograms)-1))*(len(palette)-1))]\n", + " else:\n", + " color = palette[0]\n", + " #color = i\n", + " colors.append(color)\n", + " hist.SetLineColor(color)\n", + " hist.SetMarkerColor(color)\n", + " return colors\n", + "\n", "def setHistRangesNormalized(trends):\n", " if type(trends[0]) in (ROOT.TH1D, ROOT.TH1F, ROOT.TH1C):\n", " # Initialize variables to track the min and max range based on entries\n", @@ -182,9 +298,20 @@ "periodName_comparison = \"myComparisonPeriod\"\n", "passName_comparison = \"myComparisonPassName\" # keep empty (\"\") if MC\n", "\n", + "# First production in comparison\n", + "# path = \"/home/ferrandi/alice/TPCQCVis/TPCQCVis/DownloadedData/sim/2024\"\n", + "# periodName_first = \"LHC24f4\" \n", + "# passName_first = \"0\" # keep empty (\"\") if MC\n", + " \n", + "# Second production in comparison\n", + "# path_comparison = \"/home/ferrandi/alice/TPCQCVis/TPCQCVis/DownloadedData/2024\"\n", + "# periodName_comparison = \"LHC24af\"\n", + "# passName_comparison = \"apass1_skimmed\" # keep empty (\"\") if MC\n", + "\n", + "\n", "if debug:\n", - " print(path+\"/\"+periodName_first+\"/\"+passName_first+\"/\")\n", - " print(path_comparison+\"/\"+periodName_comparison+\"/\"+passName_comparison+\"/\")" + " print(\"Debug: \", path+\"/\"+periodName_first+\"/\"+passName_first+\"/\")\n", + " print(\"Debug: \", path_comparison+\"/\"+periodName_comparison+\"/\"+passName_comparison+\"/\")" ] }, { @@ -227,8 +354,8 @@ "runList_first = [run for run in runList_first]# if run in myRuns]\n", "\n", "\n", - "if debug : print(periodName_first, passName_first, \"Files: \",fileList_first,\"\\n\")\n", - "if debug : print(periodName_first, passName_first, \"Runs: \", runList_first,\"\\n\")\n", + "if debug : print(\"Debug: \", periodName_first, passName_first, \"Files: \",fileList_first,\"\\n\")\n", + "if debug : print(\"Debug: \", periodName_first, passName_first, \"Runs: \", runList_first,\"\\n\")\n", " \n", "# Find runs in period to be compared\n", "fileList_comparison = glob.glob(path_comparison+\"/\"+periodName_comparison+\"/\"+passName_comparison+\"/\"+\"*_QC.root\")\n", @@ -237,12 +364,12 @@ "fileList_comparison = [file for file in fileList_comparison]\n", "runList_comparison = [fileList_comparison[i][-14:-8] for i in range(len(fileList_comparison))]\n", "\n", - "if debug : print(periodName_comparison, passName_comparison, \"Runs: \", fileList_comparison,\"\\n\")\n", - "if debug : print(periodName_comparison, passName_comparison, \"Runs: \", runList_comparison,\"\\n\")\n", + "if debug : print(\"Debug: \", periodName_comparison, passName_comparison, \"Runs: \", fileList_comparison,\"\\n\")\n", + "if debug : print(\"Debug: \", periodName_comparison, passName_comparison, \"Runs: \", runList_comparison,\"\\n\")\n", " \n", "# Make sure only the same runs are there\n", "runList_temp = [run for run in runList_first if run in runList_comparison]\n", - "if debug : print(periodName_comparison, passName_comparison, \"Runs temp: \", runList_temp,\"\\n\")\n", + "if debug : print(\"Debug: \", periodName_comparison, passName_comparison, \"Runs temp: \", runList_temp,\"\\n\")\n", "runList_first = runList_temp\n", "fileList_first = [file for file in fileList_first if file[-14:-8] in runList_first]\n", "fileList_comparison = [fileList_comparison[i] for i in range(len(fileList_comparison)) if runList_comparison[i] in runList_first]\n", @@ -264,7 +391,7 @@ "metadata": {}, "outputs": [], "source": [ - "display(Markdown(f\"# TPC Async QC Report - {periodName_first} {passName_first} vs Anchored MC {periodName_comparison}\"))" + "display(Markdown(f\"# TPC Async QC Report - {periodName_first} {passName_first} vs {periodName_comparison}\"))" ] }, { @@ -280,7 +407,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5f717680", + "id": "fd88f943", "metadata": {}, "outputs": [], "source": [ @@ -308,8 +435,173 @@ "toc": true }, "source": [ + "\n", "

Table of Contents

\n", - "
" + "
\n", + " \n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "60638d29", + "metadata": {}, + "source": [ + "---\n", + "## Run Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c0f627c2", + "metadata": {}, + "outputs": [], + "source": [ + "def PlotRunParam(ParamName, ParamUnit, ParamArray, Runs):\n", + " canvas = ROOT.TCanvas(ParamName+\"Canvas\", \"Canvas\", 1100, 400)\n", + " canvas.SetBottomMargin(0.15)\n", + " canvas.SetGridx()\n", + " runListArrayint = np.array(Runs, dtype='int')\n", + " NRuns = len(Runs)\n", + " # Histogram of parameters\n", + " hPar = ROOT.TH1F(ParamName, ParamName, NRuns, min(runListArrayint), max(runListArrayint))\n", + " for i in range(len(ParamArray)):\n", + " hPar.Fill(Runs[i], \n", + " ParamArray[i])\n", + " hPar.SetBinError(i+1,0)\n", + " hPar.SetMarkerStyle(ROOT.kFullCircle)\n", + " hPar.SetLineWidth(2)\n", + " hPar.SetMarkerSize(1.5)\n", + " hPar.SetStats(0)\n", + " hPar.LabelsOption(\"v\") # Vertical labels\n", + " hPar.SetLineColor(ROOT.kBlack)\n", + " hPar.GetXaxis().SetTitle(\"Run\")\n", + " hPar.GetYaxis().SetTitle(ParamName+\" ({})\".format(ParamUnit))\n", + " hPar.Draw(\"SAME L P E\")\n", + " canvas.Update()\n", + " # needs to return canvas also otherwise jupyter notebook doesn't display\n", + " return hPar, canvas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "955992de", + "metadata": {}, + "outputs": [], + "source": [ + "# Minor issue: these variables are not used if none of the QC.root files contain the RunParameters tree\n", + "# Table in HTML\n", + "RunParamTable = f\"\"\"\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \"\"\"\n", + "# Arrays for run parameters defined as initially containing only \"?\"\n", + "IntRatesAvg = np.full(len(runList), \"?\", dtype=object)\n", + "IntRatesStart = np.full(len(runList), \"?\", dtype=object)\n", + "IntRatesMid = np.full(len(runList), \"?\", dtype=object)\n", + "IntRatesEnd = np.full(len(runList), \"?\", dtype=object)\n", + "Durations = np.full(len(runList), \"?\", dtype=object)\n", + "BFields = np.full(len(runList), \"?\", dtype=object)\n", + "Polarity = np.full(len(runList), \"?\", dtype=object)\n", + "runsWithParamList=np.array([]) # List of runs with RunParameters tree\n", + "DisplayRunParam = False # Checks if at least 1 _QC.root has RunParameters\n", + "n_DataFiles = len(rootDataFile_first)\n", + "runListNumbers = np.array([r.split('_')[-1] for r in runList[n_DataFiles:]])\n", + "LegRunParam = [str(x) for x in runListNumbers]\n", + "for i in range(len(runListNumbers)):\n", + " RunParamTree = rootDataFile_comparison[i].Get(\"RunParameters\")\n", + " if RunParamTree:\n", + " DisplayRunParam = True \n", + " runsWithParamList=np.append(runsWithParamList, (runListNumbers[i]))\n", + " RunParamTree.GetEntry(0)\n", + " if RunParamTree.GetListOfBranches().FindObject(\"IRavg\"):\n", + " IntRateAvg = getattr(RunParamTree, \"IRavg\")\n", + " IntRatesAvg[i] = float(IntRateAvg)\n", + " IntRateStart = getattr(RunParamTree, \"IRstart\")\n", + " IntRatesStart[i] = float(IntRateStart)\n", + " IntRateMid = getattr(RunParamTree, \"IRmid\")\n", + " IntRatesMid[i] = float(IntRateMid)\n", + " IntRateEnd = getattr(RunParamTree, \"IRend\")\n", + " IntRatesEnd[i] = float(IntRateEnd)\n", + " LegIRstart = str(round(IntRatesStart[i]/1000, 1))\n", + " LegIRmid = str(round(IntRatesMid[i]/1000, 1))\n", + " LegIRend = str(round(IntRatesEnd[i]/1000, 1))\n", + " else:\n", + " IntRateAvg = getattr(RunParamTree, \"IR\")\n", + " IntRatesAvg[i] = float(IntRateAvg)\n", + "# IntRatesStart[i] = float(IntRateStart)\n", + "# IntRatesMid[i] = float(IntRateMid)\n", + "# IntRatesEnd[i] = float(IntRateEnd)\n", + " LegIRstart = \"?\"\n", + " LegIRmid = \"?\"\n", + " LegIRend = \"?\"\n", + " LegIRavg = str(round(IntRatesAvg[i]/1000, 1))\n", + " Duration = getattr(RunParamTree, \"Duration\")\n", + " Durations[i] = float(Duration)\n", + " BField = getattr(RunParamTree, \"BField\")\n", + " BFields[i] = float(BField)\n", + " Polarity[i] = \"+\" if BField > 0 else \"-\"\n", + " LegRunParam[i] += \" (\" + Polarity[i] + \") \" + LegIRstart + \" \" + LegIRmid + \" \" + LegIRend + \" (kHz)\"\n", + " RunParamTable += f\"\"\"\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \"\"\" # Row appended to table\n", + " else: #if no RunParameters tree, fills table with \"?\"\n", + " LegRunParam[i] += \" (\" + Polarity[i] + \") \" + \"?\" + \" kHz\" \n", + " RunParamTable += f\"\"\"\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \"\"\"\n", + "if DisplayRunParam:\n", + " display(HTML(RunParamTable))\n", + " [hIR, canvasIR] = PlotRunParam(\"Interaction Rates\", \"Hz\", IntRatesAvg[IntRatesAvg != \"?\"], runsWithParamList)\n", + " canvasIR.Draw()\n", + " [hDur, canvasDur] = PlotRunParam(\"Duration\", \"s\", Durations[Durations != \"?\"], runsWithParamList)\n", + " canvasDur.Draw()\n", + " [hBField, canvasBField] = PlotRunParam(\"BField\", \"Amperes\", BFields[BFields != \"?\"], runsWithParamList)\n", + " canvasBField.Draw()\n", + "else:\n", + " display(HTML(f\"No RunParameters trees found for the runs.\"))" ] }, { @@ -331,7 +623,17 @@ "ROOT.gStyle.SetPalette(57)\n", "ROOT.gStyle.SetGridStyle(3)\n", "ROOT.gStyle.SetGridWidth(1)\n", - "ROOT.gStyle.SetPalette(57)" + "ROOT.gStyle.SetPalette(57)\n", + "\n", + "maxHistosPerCanvas = 4\n", + "maxColumns = 2\n", + "\n", + "# needed to avoid that garbage collector removes canvases, pads, hists and legends within each loop of drawPlotsPerRun\n", + "canvases = []\n", + "pads=[]\n", + "cloned_hists = []\n", + "legs = []\n", + "lines = []" ] }, { @@ -351,30 +653,69 @@ "id": "d4d46a67", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hPhiAside\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,\n", + "# normalize=True,legend=True,legendNames=runList,pads=False,\n", + "# maxColumns=2,drawOption=\"SAME L\",yAxisRange=[2.2e-3,3.2e-3],\n", + "# grid=True)\n", + "# setHistRangesNormalized(hist)\n", + "# #Sector boundatries\n", + "# pad1.cd()\n", + "# sectorBoundary = ROOT.TLine(0,hist[0].GetMinimum(),0,hist[0].GetMaximum())\n", + "# sectorBoundary.SetLineStyle(2)\n", + "# sectorNum = ROOT.TText(.5,.5,\"test\")\n", + "# sectorNum.SetTextAlign(22)\n", + "# sectorNum.SetTextColor(ROOT.kGray+1)\n", + "# sectorNum.SetTextFont(0)\n", + "# for j in range(19):\n", + "# sectorBoundary.DrawLine((j*2*math.pi)/18,hist[0].GetMinimum(),(j*2*math.pi)/18,hist[0].GetMaximum())\n", + "# if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,hist[0].GetMaximum()*0.95+hist[0].GetMinimum()*0.05,str(j))\n", + "# pad1.SetGridy(1)\n", + "# canvas.SetCanvasSize(1200,400)\n", + "# updateColorsMC(hist,0)\n", + "# canvas.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d76af9f", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"hPhiAside\"\n", + "nCanvases = math.ceil(len(rootDataFile_first)/maxHistosPerCanvas)\n", + "canvases = [] # needed to avoid that garbage collector removes canvases and ratio histograms within each loop\n", + "ratios = []\n", "if checkIfExists(rootDataFile,objectName):\n", - " [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,\n", - " normalize=True,legend=True,legendNames=runList,pads=False,\n", - " maxColumns=2,drawOption=\"SAME L\",yAxisRange=[2.2e-3,3.2e-3],\n", - " grid=True)\n", - " setHistRangesNormalized(hist)\n", - " #Sector boundatries\n", - " pad1.cd()\n", - " sectorBoundary = ROOT.TLine(0,hist[0].GetMinimum(),0,hist[0].GetMaximum())\n", - " sectorBoundary.SetLineStyle(2)\n", - " sectorNum = ROOT.TText(.5,.5,\"test\")\n", - " sectorNum.SetTextAlign(22)\n", - " sectorNum.SetTextColor(ROOT.kGray+1)\n", - " sectorNum.SetTextFont(0)\n", - " for j in range(19):\n", - " sectorBoundary.DrawLine((j*2*math.pi)/18,hist[0].GetMinimum(),(j*2*math.pi)/18,hist[0].GetMaximum())\n", - " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,hist[0].GetMaximum()*0.95+hist[0].GetMinimum()*0.05,str(j))\n", - " pad1.SetGridy(1)\n", - " canvas.SetCanvasSize(1200,400)\n", - " updateColors(hist,0)\n", - " canvas.Draw()" + " for canv in range(nCanvases):\n", + " cName=\"canvas\" + str(canv) # canvas name needs to change in every loop\n", + " iniFile = canv * maxHistosPerCanvas\n", + " finalFile = iniFile + maxHistosPerCanvas\n", + " [hist,legend,canvas,pad1,histosComp,histosRatio] = drawHistograms(objectName,rootDataFile_first[iniFile:finalFile],compareTo=rootDataFile_comparison[iniFile:finalFile],\n", + " normalize=True,legend=False,legendNames=runList_first[iniFile:finalFile],pads=True,\n", + " maxColumns=2,drawOption=\"SAME L\",yAxisRange=[2.2e-3,3.2e-3],\n", + " grid=False, canvasName=cName, histosRatio=ratios)\n", + " canvases.append(canvas)\n", + " setHistRangesNormalized(hist)\n", + " setHistRangesNormalized(histosComp)\n", + " leg = ROOT.TLegend()\n", + " leg.AddEntry(hist[0],periodName_first)\n", + " leg.AddEntry(histosComp[0],periodName_comparison)\n", + " leg.Draw()\n", + " #Sector boundaries\n", + " for subpad_i in range(len(hist)):\n", + " subpad_i += 1\n", + " pad1.cd(subpad_i).cd(1)\n", + " pad1.cd(subpad_i).cd(1).SetGrid(1)\n", + " \n", + " pad1.cd(subpad_i).cd(2).SetGrid(1)\n", + " canvas.SetCanvasSize(1200,400)\n", + " canvas.Draw()" ] }, { @@ -391,30 +732,81 @@ "id": "347e4057", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hPhiCside\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,\n", + "# normalize=True,legend=True,legendNames=runList,pads=False,\n", + "# maxColumns=2,drawOption=\"SAME L\",yAxisRange=[2.2e-3,3.2e-3],\n", + "# grid=True)\n", + "# setHistRangesNormalized(hist)\n", + "# #Sector boundatries\n", + "# pad1.cd()\n", + "# sectorBoundary = ROOT.TLine(0,hist[0].GetMinimum(),0,hist[0].GetMaximum())\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "# sectorBoundary.SetLineStyle(2)\n", + "# sectorNum = ROOT.TText(.5,.5,\"test\")\n", + "# sectorNum.SetTextAlign(22)\n", + "# sectorNum.SetTextColor(ROOT.kGray+1)\n", + "# sectorNum.SetTextFont(0)\n", + "# for j in range(19):\n", + "# sectorBoundary.DrawLine((j*2*math.pi)/18,hist[0].GetMinimum(),(j*2*math.pi)/18,hist[0].GetMaximum())\n", + "# if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,hist[0].GetMaximum()*0.95+hist[0].GetMinimum()*0.05,str(j))\n", + "# pad1.SetGridy(1)\n", + "# canvas.SetCanvasSize(1200,400)\n", + "# updateColorsMC(hist,0)\n", + "# canvas.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "749c8c9a", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"hPhiCside\"\n", + "nCanvases = math.ceil(len(rootDataFile_first)/maxHistosPerCanvas)\n", + "canvases = [] # needed to avoid that garbage collector removes canvases and ratio histograms within each loop\n", + "ratios = []\n", "if checkIfExists(rootDataFile,objectName):\n", - " [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,\n", - " normalize=True,legend=True,legendNames=runList,pads=False,\n", - " maxColumns=2,drawOption=\"SAME L\",yAxisRange=[2.2e-3,3.2e-3],\n", - " grid=True)\n", - " setHistRangesNormalized(hist)\n", - " #Sector boundatries\n", - " pad1.cd()\n", - " sectorBoundary = ROOT.TLine(0,hist[0].GetMinimum(),0,hist[0].GetMaximum())\n", - " sectorBoundary.SetLineStyle(2)\n", - " sectorNum = ROOT.TText(.5,.5,\"test\")\n", - " sectorNum.SetTextAlign(22)\n", - " sectorNum.SetTextColor(ROOT.kGray+1)\n", - " sectorNum.SetTextFont(0)\n", - " for j in range(19):\n", - " sectorBoundary.DrawLine((j*2*math.pi)/18,hist[0].GetMinimum(),(j*2*math.pi)/18,hist[0].GetMaximum())\n", - " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,hist[0].GetMaximum()*0.95+hist[0].GetMinimum()*0.05,str(j))\n", - " pad1.SetGridy(1)\n", - " canvas.SetCanvasSize(1200,400)\n", - " updateColors(hist,0)\n", - " canvas.Draw()" + " for canv in range(nCanvases):\n", + " cName=\"canvas\" + str(canv) # canvas name needs to change in every loop\n", + " iniFile = canv * maxHistosPerCanvas\n", + " finalFile = iniFile + maxHistosPerCanvas\n", + " [hist,legend,canvas,pad1,histosComp,histosRatio] = drawHistograms(objectName,rootDataFile_first[iniFile:finalFile],compareTo=rootDataFile_comparison[iniFile:finalFile],\n", + " normalize=True,legend=False,legendNames=runList_first[iniFile:finalFile],pads=True,\n", + " maxColumns=2,drawOption=\"SAME L\",yAxisRange=[2.2e-3,3.2e-3],\n", + " grid=False, canvasName=cName, histosRatio=ratios)\n", + " canvases.append(canvas)\n", + " setHistRangesNormalized(hist)\n", + " setHistRangesNormalized(histosComp)\n", + " leg = ROOT.TLegend()\n", + " leg.AddEntry(hist[0],periodName_first)\n", + " leg.AddEntry(histosComp[0],periodName_comparison)\n", + " leg.Draw()\n", + " #Sector boundaries\n", + " for subpad_i in range(len(hist)):\n", + " subpad_i += 1\n", + " pad1.cd(subpad_i).cd(1)\n", + " pad1.cd(subpad_i).cd(1).SetGrid(1)\n", + " pad1.cd(subpad_i).cd(2).SetGrid(1)\n", + " canvas.SetCanvasSize(1200,400)\n", + " canvas.Draw()" ] }, { @@ -431,22 +823,63 @@ "id": "e2d2dcfc", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hEta\"\n", + "# xRange = [-1.1,1.1]\n", + "# yRange = [2e-3,13e-3]\n", + "# log = \"none\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,\n", + "# normalize=True,legend=True,legendNames=runList,pads=False,\n", + "# maxColumns=2,drawOption=\"SAME L\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", + "# grid=True)\n", + "# setHistRangesNormalized(hist)\n", + "# pad1.SetGrid(1)\n", + "# canvas.SetCanvasSize(800,500)\n", + "# updateColorsMC(hist,0)\n", + "# canvas.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "48d734e2", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"hEta\"\n", "xRange = [-1.1,1.1]\n", "yRange = [2e-3,13e-3]\n", "log = \"none\"\n", + "nCanvases = math.ceil(len(rootDataFile_first)/maxHistosPerCanvas)\n", + "canvases = [] # needed to avoid that garbage collector removes canvases and ratio histograms within each loop\n", + "ratios = []\n", "if checkIfExists(rootDataFile,objectName):\n", - " [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,\n", - " normalize=True,legend=True,legendNames=runList,pads=False,\n", - " maxColumns=2,drawOption=\"SAME L\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", - " grid=True)\n", - " setHistRangesNormalized(hist)\n", - " pad1.SetGrid(1)\n", - " canvas.SetCanvasSize(800,500)\n", - " updateColors(hist,0)\n", - " canvas.Draw()" + " for canv in range(nCanvases):\n", + " cName=\"canvas\" + str(canv) # canvas name needs to change in every loop\n", + " iniFile = canv * maxHistosPerCanvas\n", + " finalFile = iniFile + maxHistosPerCanvas\n", + " [hist,legend,canvas,pad1,histosComp,histosRatio] = drawHistograms(objectName,rootDataFile_first[iniFile:finalFile],compareTo=rootDataFile_comparison[iniFile:finalFile],\n", + " normalize=True,legend=False,legendNames=runList_first[iniFile:finalFile],pads=True,\n", + " maxColumns=2,drawOption=\"SAME L\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", + " grid=False, canvasName=cName, histosRatio=ratios)\n", + " canvases.append(canvas)\n", + " setHistRangesNormalized(hist)\n", + " setHistRangesNormalized(histosComp)\n", + " leg = ROOT.TLegend()\n", + " leg.AddEntry(hist[0],periodName_first)\n", + " leg.AddEntry(histosComp[0],periodName_comparison)\n", + " leg.Draw()\n", + " #Sector boundaries\n", + " for subpad_i in range(len(hist)):\n", + " subpad_i += 1\n", + " pad1.cd(subpad_i).SetGrid(1)\n", + " pad1.cd(subpad_i).cd(1).SetGrid(1)\n", + " pad1.cd(subpad_i).cd(2).SetGrid(1)\n", + " canvas.SetCanvasSize(1200,400)\n", + " canvas.Draw()" ] }, { @@ -455,20 +888,53 @@ "id": "99e1195a-bfe1-450e-a934-f1d591424808", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"h2DEtaPhi\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGridy(1)\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# #quant.GetYaxis().SetRangeUser(-.1,.1)\n", + "# quant.SetTitle(passName+\" - Median eta vs phi\")\n", + "# sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + "# sectorBoundary.SetLineStyle(2)\n", + "# sectorNum = ROOT.TText(.5,.5,\"test\")\n", + "# sectorNum.SetTextAlign(22)\n", + "# sectorNum.SetTextColor(ROOT.kGray+1)\n", + "# sectorNum.SetTextFont(0)\n", + "# for j in range(19):\n", + "# sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + "# if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + "# legend.Draw()\n", + "# c.Draw()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e30247b2", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"h2DEtaPhi\"\n", - "if checkIfExists(rootDataFile,objectName):\n", + "if checkIfExists(rootDataFile_first,objectName):\n", " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", " canvas.SetGridy(1)\n", " setHistRangesNormalized(quants)\n", " for quant in quants:\n", " quant.Draw(\"L SAME\")\n", - " #quant.GetYaxis().SetRangeUser(-.1,.1)\n", - " quant.SetTitle(passName+\" - Median eta vs phi\")\n", + " quant.SetTitle(periodName_first+\" - Median eta vs phi\")\n", " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", " sectorBoundary.SetLineStyle(2)\n", " sectorNum = ROOT.TText(.5,.5,\"test\")\n", @@ -479,7 +945,29 @@ " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", " legend.Draw()\n", - " c.Draw()\n" + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = drawQuantileProjection(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\" - Median eta vs phi\")\n", + " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + " sectorBoundary.SetLineStyle(2)\n", + " sectorNum = ROOT.TText(.5,.5,\"test\")\n", + " sectorNum.SetTextAlign(22)\n", + " sectorNum.SetTextColor(ROOT.kGray+1)\n", + " sectorNum.SetTextFont(0)\n", + " for j in range(19):\n", + " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + " legend_comparison.Draw()\n", + "c.Draw() # No need for this canva if the previous cell already plots this\n", + "\n", + "title = \" - Median eta vs phi\"\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" ] }, { @@ -511,10 +999,49 @@ " setHistRangesNormalized(hist)\n", " pad1.SetGrid(1)\n", " canvas.SetCanvasSize(800,500)\n", - " updateColors(hist,0)\n", + " updateColorsComparison(hist,cols)\n", " canvas.Draw()" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "f15dba34", + "metadata": {}, + "outputs": [], + "source": [ + "%jsroot on\n", + "objectName=\"hPt\"\n", + "xRange = [0,0]\n", + "yRange = [0,0]\n", + "log = \"logxy\"\n", + "nCanvases = math.ceil(len(rootDataFile_first)/maxHistosPerCanvas)\n", + "canvases = [] # needed to avoid that garbage collector removes canvases and ratio histograms within each loop\n", + "ratios = []\n", + "if checkIfExists(rootDataFile,objectName):\n", + " for canv in range(nCanvases):\n", + " cName=\"canvas\" + str(canv) # canvas name needs to change in every loop\n", + " iniFile = canv * maxHistosPerCanvas\n", + " finalFile = iniFile + maxHistosPerCanvas\n", + " [hist,legend,canvas,pad1,histosComp,histosRatio] = drawHistograms(objectName,rootDataFile_first[iniFile:finalFile],compareTo=rootDataFile_comparison[iniFile:finalFile],\n", + " normalize=True,legend=False,legendNames=runList_first[iniFile:finalFile],pads=True,\n", + " maxColumns=2,drawOption=\"SAME L\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", + " grid=False, canvasName=cName, histosRatio=ratios)\n", + " canvases.append(canvas)\n", + " setHistRangesNormalized(hist)\n", + " setHistRangesNormalized(histosComp)\n", + " leg = ROOT.TLegend()\n", + " leg.AddEntry(hist[0],periodName_first)\n", + " leg.AddEntry(histosComp[0],periodName_comparison)\n", + " leg.Draw()\n", + " for subpad_i in range(len(hist)):\n", + " subpad_i += 1\n", + " pad1.cd(subpad_i).cd(1).SetGrid(1)\n", + " pad1.cd(subpad_i).cd(2).SetGrid(1)\n", + " canvas.SetCanvasSize(1200,400)\n", + " canvas.Draw()" + ] + }, { "cell_type": "markdown", "id": "5200e396", @@ -529,22 +1056,61 @@ "id": "e222519f", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hSign\"\n", + "# xRange = [0,0]\n", + "# yRange = [0,0]\n", + "# log = \"none\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,\n", + "# normalize=True,legend=True,legendNames=runList,pads=False,\n", + "# maxColumns=2,drawOption=\"SAME HIST\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", + "# grid=True)\n", + "# setHistRangesNormalized(hist)\n", + "# pad1.SetGrid(1)\n", + "# canvas.SetCanvasSize(800,400)\n", + "# updateColorsMC(hist,0)\n", + "# canvas.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fbf3bc29", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"hSign\"\n", "xRange = [0,0]\n", "yRange = [0,0]\n", "log = \"none\"\n", + "nCanvases = math.ceil(len(rootDataFile_first)/maxHistosPerCanvas)\n", + "canvases = [] # needed to avoid that garbage collector removes canvases and ratio histograms within each loop\n", + "ratios = []\n", "if checkIfExists(rootDataFile,objectName):\n", - " [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,\n", - " normalize=True,legend=True,legendNames=runList,pads=False,\n", - " maxColumns=2,drawOption=\"SAME HIST\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", - " grid=True)\n", - " setHistRangesNormalized(hist)\n", - " pad1.SetGrid(1)\n", - " canvas.SetCanvasSize(800,400)\n", - " updateColors(hist,0)\n", - " canvas.Draw()" + " for canv in range(nCanvases):\n", + " cName=\"canvas\" + str(canv) # canvas name needs to change in every loop\n", + " iniFile = canv * maxHistosPerCanvas\n", + " finalFile = iniFile + maxHistosPerCanvas\n", + " [hist,legend,canvas,pad1,histosComp,histosRatio] = drawHistograms(objectName,rootDataFile_first[iniFile:finalFile],compareTo=rootDataFile_comparison[iniFile:finalFile],\n", + " normalize=True,legend=False,legendNames=runList_first[iniFile:finalFile],pads=True,\n", + " maxColumns=2,drawOption=\"SAME HIST\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", + " grid=False, canvasName=cName, histosRatio=ratios)\n", + " canvases.append(canvas)\n", + " setHistRangesNormalized(hist)\n", + " setHistRangesNormalized(histosComp)\n", + " leg = ROOT.TLegend()\n", + " leg.AddEntry(hist[0],periodName_first)\n", + " leg.AddEntry(histosComp[0],periodName_comparison)\n", + " leg.Draw()\n", + " for subpad_i in range(len(hist)):\n", + " subpad_i += 1\n", + " pad1.cd(subpad_i).cd(1).SetGrid(1)\n", + " pad1.cd(subpad_i).cd(2).SetGrid(1)\n", + " canvas.SetCanvasSize(1200,400)\n", + " canvas.Draw()" ] }, { @@ -561,22 +1127,61 @@ "id": "edc50695", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hQOverPt\"\n", + "# xRange = [0,0]\n", + "# yRange = [0,0]\n", + "# log = \"none\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,\n", + "# normalize=True,legend=True,legendNames=runList,pads=False,\n", + "# maxColumns=2,drawOption=\"SAME L\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", + "# grid=True)\n", + "# setHistRangesNormalized(hist)\n", + "# pad1.SetGrid(1)\n", + "# canvas.SetCanvasSize(800,400)\n", + "# updateColorsMC(hist,0)\n", + "# canvas.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13df083f", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"hQOverPt\"\n", "xRange = [0,0]\n", "yRange = [0,0]\n", "log = \"none\"\n", + "nCanvases = math.ceil(len(rootDataFile_first)/maxHistosPerCanvas)\n", + "canvases = [] # needed to avoid that garbage collector removes canvases and ratio histograms within each loop\n", + "ratios = []\n", "if checkIfExists(rootDataFile,objectName):\n", - " [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,\n", - " normalize=True,legend=True,legendNames=runList,pads=False,\n", - " maxColumns=2,drawOption=\"SAME L\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", - " grid=True)\n", - " setHistRangesNormalized(hist)\n", - " pad1.SetGrid(1)\n", - " canvas.SetCanvasSize(800,400)\n", - " updateColors(hist,0)\n", - " canvas.Draw()" + " for canv in range(nCanvases):\n", + " cName=\"canvas\" + str(canv) # canvas name needs to change in every loop\n", + " iniFile = canv * maxHistosPerCanvas\n", + " finalFile = iniFile + maxHistosPerCanvas\n", + " [hist,legend,canvas,pad1,histosComp,histosRatio] = drawHistograms(objectName,rootDataFile_first[iniFile:finalFile],compareTo=rootDataFile_comparison[iniFile:finalFile],\n", + " normalize=True,legend=False,legendNames=runList_first[iniFile:finalFile],pads=True,\n", + " maxColumns=2,drawOption=\"SAME L\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", + " grid=False, canvasName=cName, histosRatio=ratios)\n", + " canvases.append(canvas)\n", + " setHistRangesNormalized(hist)\n", + " setHistRangesNormalized(histosComp)\n", + " leg = ROOT.TLegend()\n", + " leg.AddEntry(hist[0],periodName_first)\n", + " leg.AddEntry(histosComp[0],periodName_comparison)\n", + " leg.Draw()\n", + " for subpad_i in range(len(hist)):\n", + " subpad_i += 1\n", + " pad1.cd(subpad_i).cd(1).SetGrid(1)\n", + " pad1.cd(subpad_i).cd(2).SetGrid(1)\n", + " canvas.SetCanvasSize(1200,400)\n", + " canvas.Draw()" ] }, { @@ -593,22 +1198,129 @@ "id": "ad5067a9", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hNClustersAfterCuts\"\n", + "# xRange = [50,160]\n", + "# yRange = [0,40e-3]\n", + "# log = \"none\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,\n", + "# normalize=True,legend=True,legendNames=runList,pads=False,\n", + "# maxColumns=2,drawOption=\"SAME L\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", + "# grid=True)\n", + "# setHistRangesNormalized(hist)\n", + "# pad1.SetGrid(1)\n", + "# canvas.SetCanvasSize(800,400)\n", + "# updateColorsMC(hist,0)\n", + "# canvas.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "be0b1739", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"hNClustersAfterCuts\"\n", "xRange = [50,160]\n", "yRange = [0,40e-3]\n", "log = \"none\"\n", + "nCanvases = math.ceil(len(rootDataFile_first)/maxHistosPerCanvas)\n", + "canvases = [] # needed to avoid that garbage collector removes canvases and ratio histograms within each loop\n", + "ratios = []\n", "if checkIfExists(rootDataFile,objectName):\n", - " [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,\n", - " normalize=True,legend=True,legendNames=runList,pads=False,\n", - " maxColumns=2,drawOption=\"SAME L\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", - " grid=True)\n", - " setHistRangesNormalized(hist)\n", - " pad1.SetGrid(1)\n", - " canvas.SetCanvasSize(800,400)\n", - " updateColors(hist,0)\n", - " canvas.Draw()" + " for canv in range(nCanvases):\n", + " cName=\"canvas\" + str(canv) # canvas name needs to change in every loop\n", + " iniFile = canv * maxHistosPerCanvas\n", + " finalFile = iniFile + maxHistosPerCanvas\n", + " [hist,legend,canvas,pad1,histosComp,histosRatio] = drawHistograms(objectName,rootDataFile_first[iniFile:finalFile],compareTo=rootDataFile_comparison[iniFile:finalFile],\n", + " normalize=True,legend=False,legendNames=runList_first[iniFile:finalFile],pads=True,\n", + " maxColumns=2,drawOption=\"SAME L\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", + " grid=False, canvasName=cName, histosRatio=ratios)\n", + " canvases.append(canvas)\n", + " setHistRangesNormalized(hist)\n", + " setHistRangesNormalized(histosComp)\n", + " leg = ROOT.TLegend()\n", + " leg.AddEntry(hist[0],periodName_first)\n", + " leg.AddEntry(histosComp[0],periodName_comparison)\n", + " leg.Draw()\n", + " for subpad_i in range(len(hist)):\n", + " subpad_i += 1\n", + " pad1.cd(subpad_i).cd(1).SetGrid(1)\n", + " pad1.cd(subpad_i).cd(2).SetGrid(1)\n", + " canvas.SetCanvasSize(1200,400)\n", + " canvas.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0c7ba36a", + "metadata": {}, + "outputs": [], + "source": [ + "%jsroot on\n", + "objectName=\"crossedRows\"\n", + "nCanvases = math.ceil(len(rootDataFile_first)/maxHistosPerCanvas)\n", + "canvases = [] # needed to avoid that garbage collector removes canvases and ratio histograms within each loop\n", + "ratios = []\n", + "compareTo2=rootDataFile_comparison\n", + "if checkIfExists(rootDataFile,objectName) and checkIfExists(rootDataFile_comparison,objectName):\n", + " for canv in range(nCanvases):\n", + " cName=\"canvas\" + str(canv) # canvas name needs to change in every loop\n", + " iniFile = canv * maxHistosPerCanvas\n", + " finalFile = iniFile + maxHistosPerCanvas\n", + " [hist,legend,canvas,pad1,histosComp,histosRatio] = drawHistograms(objectName,rootDataFile_first[iniFile:finalFile],compareTo=rootDataFile_comparison[iniFile:finalFile],\n", + " normalize=True,legend=False,legendNames=runList_first[iniFile:finalFile],pads=True,\n", + " maxColumns=2,drawOption=\"SAME L\",grid=True,\n", + " xAxisRange = [50,160], canvasName=cName, histosRatio=ratios)\n", + " \n", + "# [hist,legend,canvas,pad1,histosComp,histosRatio] = drawHistograms(objectName,rootDataFile_first[iniFile:finalFile],compareTo=rootDataFile_comparison[iniFile:finalFile],\n", + "# normalize=True,legend=False,legendNames=runList_first[iniFile:finalFile],pads=True,\n", + "# maxColumns=2,drawOption=\"SAME L\",xAxisRange=xRange,yAxisRange=yRange,log=log,\n", + "# grid=False, canvasName=cName, histosRatio=ratios)\n", + " canvases.append(canvas)\n", + " setHistRangesNormalized(hist)\n", + " setHistRangesNormalized(histosComp)\n", + " leg = ROOT.TLegend()\n", + " leg.AddEntry(hist[0],periodName_first)\n", + " leg.AddEntry(histosComp[0],periodName_comparison)\n", + " leg.Draw()\n", + " canvas.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b4719814", + "metadata": {}, + "outputs": [], + "source": [ + "%jsroot on\n", + "objectName=\"sharedClusters\"\n", + "nCanvases = math.ceil(len(rootDataFile_first)/maxHistosPerCanvas)\n", + "canvases = [] # needed to avoid that garbage collector removes canvases and ratio histograms within each loop\n", + "ratios = []\n", + "if checkIfExists(rootDataFile,objectName) and checkIfExists(rootDataFile_comparison,objectName):\n", + " for canv in range(nCanvases):\n", + " cName=\"canvas\" + str(canv) # canvas name needs to change in every loop\n", + " iniFile = canv * maxHistosPerCanvas\n", + " finalFile = iniFile + maxHistosPerCanvas\n", + " [hist,legend,canvas,pad1,histosComp,histosRatio] = drawHistograms(objectName,rootDataFile_first[iniFile:finalFile],compareTo=rootDataFile_comparison[iniFile:finalFile],\n", + " normalize=True,legend=False,legendNames=runList[iniFile:finalFile],pads=True,\n", + " maxColumns=2,drawOption=\"SAME L\",grid=True,\n", + " xAxisRange = [0,160],log=\"logy\", canvasName=cName, histosRatio=ratios)\n", + " canvases.append(canvas)\n", + " setHistRangesNormalized(hist)\n", + " setHistRangesNormalized(histosComp)\n", + " leg = ROOT.TLegend()\n", + " leg.AddEntry(hist[0],periodName_first)\n", + " leg.AddEntry(histosComp[0],periodName_comparison)\n", + " leg.Draw()\n", + " canvas.Draw()" ] }, { @@ -625,20 +1337,53 @@ "id": "f4295051-b300-4f80-a42b-1f00d9fc10aa", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"h2DNClustersPhiAside\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGridy(1)\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# #quant.GetYaxis().SetRangeUser(60,160)\n", + "# quant.SetTitle(passName+\"- A-Side - nClusters per track vs phi\")\n", + "# sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + "# sectorBoundary.SetLineStyle(2)\n", + "# sectorNum = ROOT.TText(.5,.5,\"test\")\n", + "# sectorNum.SetTextAlign(22)\n", + "# sectorNum.SetTextColor(ROOT.kGray+1)\n", + "# sectorNum.SetTextFont(0)\n", + "# for j in range(19):\n", + "# sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + "# if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + "# legend.Draw()\n", + "# c.Draw()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70835df2", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"h2DNClustersPhiAside\"\n", - "if checkIfExists(rootDataFile,objectName):\n", + "if checkIfExists(rootDataFile_first,objectName):\n", " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", " canvas.SetGridy(1)\n", " setHistRangesNormalized(quants)\n", " for quant in quants:\n", " quant.Draw(\"L SAME\")\n", - " #quant.GetYaxis().SetRangeUser(60,160)\n", - " quant.SetTitle(passName+\"- A-Side - nClusters per track vs phi\")\n", + " quant.SetTitle(periodName_first+\"- A-Side - nClusters per track vs phi\")\n", " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", " sectorBoundary.SetLineStyle(2)\n", " sectorNum = ROOT.TText(.5,.5,\"test\")\n", @@ -649,7 +1394,29 @@ " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", " legend.Draw()\n", - " c.Draw()\n" + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = drawQuantileProjection(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\"- A-Side - nClusters per track vs phi\")\n", + " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + " sectorBoundary.SetLineStyle(2)\n", + " sectorNum = ROOT.TText(.5,.5,\"test\")\n", + " sectorNum.SetTextAlign(22)\n", + " sectorNum.SetTextColor(ROOT.kGray+1)\n", + " sectorNum.SetTextFont(0)\n", + " for j in range(19):\n", + " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "title = \"- A-Side - nClusters per track vs phi\"\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" ] }, { @@ -659,19 +1426,52 @@ "metadata": {}, "outputs": [], "source": [ - "%jsroot on\n", + "# %jsroot on\n", + "# objectName=\"h2DNClustersPhiCside\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGridy(1)\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# #quant.GetYaxis().SetRangeUser(60,160)\n", + "# quant.SetTitle(passName+\"- C-Side - nClusters per track vs phi\")\n", + "# sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + "# sectorBoundary.SetLineStyle(2)\n", + "# sectorNum = ROOT.TText(.5,.5,\"test\")\n", + "# sectorNum.SetTextAlign(22)\n", + "# sectorNum.SetTextColor(ROOT.kGray+1)\n", + "# sectorNum.SetTextFont(0)\n", + "# for j in range(19):\n", + "# sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + "# if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + "# legend.Draw()\n", + "# c.Draw()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "330abbbc", + "metadata": {}, + "outputs": [], + "source": [ + "%jsroot on\n", "objectName=\"h2DNClustersPhiCside\"\n", - "if checkIfExists(rootDataFile,objectName):\n", + "if checkIfExists(rootDataFile_first,objectName):\n", " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", " canvas.SetGridy(1)\n", " setHistRangesNormalized(quants)\n", " for quant in quants:\n", " quant.Draw(\"L SAME\")\n", - " #quant.GetYaxis().SetRangeUser(60,160)\n", - " quant.SetTitle(passName+\"- C-Side - nClusters per track vs phi\")\n", + " quant.SetTitle(periodName_first+\"- C-Side - nClusters per track vs phi\")\n", " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", " sectorBoundary.SetLineStyle(2)\n", " sectorNum = ROOT.TText(.5,.5,\"test\")\n", @@ -682,7 +1482,29 @@ " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", " legend.Draw()\n", - " c.Draw()\n" + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = drawQuantileProjection(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\"- C-Side - nClusters per track vs phi\")\n", + " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + " sectorBoundary.SetLineStyle(2)\n", + " sectorNum = ROOT.TText(.5,.5,\"test\")\n", + " sectorNum.SetTextAlign(22)\n", + " sectorNum.SetTextColor(ROOT.kGray+1)\n", + " sectorNum.SetTextFont(0)\n", + " for j in range(19):\n", + " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "title = \"- C-Side - nClusters per track vs phi\"\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" ] }, { @@ -699,23 +1521,62 @@ "id": "9fe0d2ad-6969-4d87-9ac2-ade8f2ab95e7", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"h2DNClustersEta\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGrid(1)\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# quant.GetXaxis().SetRangeUser(-1.1,1.1)\n", + "# #quant.GetYaxis().SetRangeUser(60,160)\n", + "# quant.SetTitle(passName+\"- nClusters per track vs eta\")\n", + "# legend.Draw()\n", + "# c.Draw()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3d5b7362", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"h2DNClustersEta\"\n", - "if checkIfExists(rootDataFile,objectName):\n", + "if checkIfExists(rootDataFile_first,objectName):\n", " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", " canvas.SetGrid(1)\n", " setHistRangesNormalized(quants)\n", " for quant in quants:\n", " quant.Draw(\"L SAME\")\n", " quant.GetXaxis().SetRangeUser(-1.1,1.1)\n", - " #quant.GetYaxis().SetRangeUser(60,160)\n", - " quant.SetTitle(passName+\"- nClusters per track vs eta\")\n", + " quant.SetTitle(periodName_first+\"- nClusters per track vs eta\")\n", " legend.Draw()\n", - " c.Draw()\n" + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = drawQuantileProjection(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGrid(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.GetXaxis().SetRangeUser(-1.1,1.1)\n", + " quant.SetTitle(periodName_comparison+\"- nClusters per track vs eta\")\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "title = \"- nClusters per track vs eta\"\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" ] }, { @@ -732,23 +1593,80 @@ "id": "60716034-b41d-4983-a5a3-4dad574c907a", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"h2DNClustersPt\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGrid(1)\n", + "# canvas.SetLogx()\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# #quant.GetYaxis().SetRangeUser(60,160)\n", + "# quant.SetTitle(passName+\"- nClusters per track vs pT\")\n", + "# legend.Draw()\n", + "# c.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6ed3061e", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"h2DNClustersPt\"\n", - "if checkIfExists(rootDataFile,objectName):\n", + "if checkIfExists(rootDataFile_first,objectName):\n", " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", " canvas.SetGrid(1)\n", " canvas.SetLogx()\n", " setHistRangesNormalized(quants)\n", " for quant in quants:\n", " quant.Draw(\"L SAME\")\n", - " #quant.GetYaxis().SetRangeUser(60,160)\n", - " quant.SetTitle(passName+\"- nClusters per track vs pT\")\n", + " quant.SetTitle(periodName_first+\"- nClusters per track vs pT\")\n", + "# sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + "# sectorBoundary.SetLineStyle(2)\n", + "# sectorNum = ROOT.TText(.5,.5,\"test\")\n", + "# sectorNum.SetTextAlign(22)\n", + "# sectorNum.SetTextColor(ROOT.kGray+1)\n", + "# sectorNum.SetTextFont(0)\n", + "# for j in range(19):\n", + "# sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + "# if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", " legend.Draw()\n", - " c.Draw()" + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = drawQuantileProjection(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGrid(1)\n", + " canvas_comparison.SetLogx()\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\"- nClusters per track vs pT\")\n", + "# sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + "# sectorBoundary.SetLineStyle(2)\n", + "# sectorNum = ROOT.TText(.5,.5,\"test\")\n", + "# sectorNum.SetTextAlign(22)\n", + "# sectorNum.SetTextColor(ROOT.kGray+1)\n", + "# sectorNum.SetTextFont(0)\n", + "# for j in range(19):\n", + "# sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + "# if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "title = \"- nClusters per track vs pT\"\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" ] }, { @@ -765,21 +1683,54 @@ "id": "e439180b-5d8d-4c34-a993-64e1f7018737", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hDCAr_A_Pos\"\n", + "# title = \" - DCAr A-Side - Positive\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGridy(1)\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# #quant.GetYaxis().SetRangeUser(-3,3)\n", + "# quant.SetTitle(passName+title)\n", + "# sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + "# sectorBoundary.SetLineStyle(2)\n", + "# sectorNum = ROOT.TText(.5,.5,\"test\")\n", + "# sectorNum.SetTextAlign(22)\n", + "# sectorNum.SetTextColor(ROOT.kGray+1)\n", + "# sectorNum.SetTextFont(0)\n", + "# for j in range(19):\n", + "# sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + "# if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + "# legend.Draw()\n", + "# c.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "609c646b", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"hDCAr_A_Pos\"\n", - "title = \" - DCAr A-Side - Positive\"\n", - "if checkIfExists(rootDataFile,objectName):\n", + "if checkIfExists(rootDataFile_first,objectName):\n", " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", " canvas.SetGridy(1)\n", " setHistRangesNormalized(quants)\n", " for quant in quants:\n", " quant.Draw(\"L SAME\")\n", - " #quant.GetYaxis().SetRangeUser(-3,3)\n", - " quant.SetTitle(passName+title)\n", + " quant.SetTitle(periodName_first+\" - DCAr A-Side - Positive\")\n", " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", " sectorBoundary.SetLineStyle(2)\n", " sectorNum = ROOT.TText(.5,.5,\"test\")\n", @@ -790,7 +1741,29 @@ " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", " legend.Draw()\n", - " c.Draw()" + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = drawQuantileProjection(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\" - DCAr A-Side - Positive\")\n", + " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + " sectorBoundary.SetLineStyle(2)\n", + " sectorNum = ROOT.TText(.5,.5,\"test\")\n", + " sectorNum.SetTextAlign(22)\n", + " sectorNum.SetTextColor(ROOT.kGray+1)\n", + " sectorNum.SetTextFont(0)\n", + " for j in range(19):\n", + " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "title = \" - DCAr A-Side - Positive\"\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" ] }, { @@ -799,21 +1772,54 @@ "id": "b0eb056b-e630-4812-ac76-d98f9f62bfbf", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hDCAr_A_Neg\"\n", + "# title = \" - DCAr A-Side - Negative\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGridy(1)\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# #quant.GetYaxis().SetRangeUser(-3,3)\n", + "# quant.SetTitle(passName+title)\n", + "# sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + "# sectorBoundary.SetLineStyle(2)\n", + "# sectorNum = ROOT.TText(.5,.5,\"test\")\n", + "# sectorNum.SetTextAlign(22)\n", + "# sectorNum.SetTextColor(ROOT.kGray+1)\n", + "# sectorNum.SetTextFont(0)\n", + "# for j in range(19):\n", + "# sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + "# if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + "# legend.Draw()\n", + "# c.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e798ff09", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"hDCAr_A_Neg\"\n", - "title = \" - DCAr A-Side - Negative\"\n", - "if checkIfExists(rootDataFile,objectName):\n", + "if checkIfExists(rootDataFile_first,objectName):\n", " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", " canvas.SetGridy(1)\n", " setHistRangesNormalized(quants)\n", " for quant in quants:\n", " quant.Draw(\"L SAME\")\n", - " #quant.GetYaxis().SetRangeUser(-3,3)\n", - " quant.SetTitle(passName+title)\n", + " quant.SetTitle(periodName_first+\" - DCAr A-Side - Negative\")\n", " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", " sectorBoundary.SetLineStyle(2)\n", " sectorNum = ROOT.TText(.5,.5,\"test\")\n", @@ -824,7 +1830,29 @@ " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", " legend.Draw()\n", - " c.Draw()" + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = drawQuantileProjection(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\" - DCAr A-Side - Negative\")\n", + " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + " sectorBoundary.SetLineStyle(2)\n", + " sectorNum = ROOT.TText(.5,.5,\"test\")\n", + " sectorNum.SetTextAlign(22)\n", + " sectorNum.SetTextColor(ROOT.kGray+1)\n", + " sectorNum.SetTextFont(0)\n", + " for j in range(19):\n", + " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "title = \" - DCAr A-Side - Negative\"\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" ] }, { @@ -833,21 +1861,54 @@ "id": "6f4125b9-2961-4315-9014-73ca4486a001", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hDCAr_C_Pos\"\n", + "# title = \" - DCAr C-Side - Positive\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGridy(1)\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# #quant.GetYaxis().SetRangeUser(-3,3)\n", + "# quant.SetTitle(passName+title)\n", + "# sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + "# sectorBoundary.SetLineStyle(2)\n", + "# sectorNum = ROOT.TText(.5,.5,\"test\")\n", + "# sectorNum.SetTextAlign(22)\n", + "# sectorNum.SetTextColor(ROOT.kGray+1)\n", + "# sectorNum.SetTextFont(0)\n", + "# for j in range(19):\n", + "# sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + "# if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + "# legend.Draw()\n", + "# c.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c1100efd", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"hDCAr_C_Pos\"\n", - "title = \" - DCAr C-Side - Positive\"\n", - "if checkIfExists(rootDataFile,objectName):\n", + "if checkIfExists(rootDataFile_first,objectName):\n", " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", " canvas.SetGridy(1)\n", " setHistRangesNormalized(quants)\n", " for quant in quants:\n", " quant.Draw(\"L SAME\")\n", - " #quant.GetYaxis().SetRangeUser(-3,3)\n", - " quant.SetTitle(passName+title)\n", + " quant.SetTitle(periodName_first+\" - DCAr C-Side - Positive\")\n", " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", " sectorBoundary.SetLineStyle(2)\n", " sectorNum = ROOT.TText(.5,.5,\"test\")\n", @@ -858,7 +1919,29 @@ " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", " legend.Draw()\n", - " c.Draw()" + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = drawQuantileProjection(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\" - DCAr C-Side - Positive\")\n", + " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + " sectorBoundary.SetLineStyle(2)\n", + " sectorNum = ROOT.TText(.5,.5,\"test\")\n", + " sectorNum.SetTextAlign(22)\n", + " sectorNum.SetTextColor(ROOT.kGray+1)\n", + " sectorNum.SetTextFont(0)\n", + " for j in range(19):\n", + " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "title = \" - DCAr C-Side - Positive\"\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" ] }, { @@ -867,21 +1950,54 @@ "id": "c8c8ae14-8f11-45e5-8edf-927a208859c2", "metadata": {}, "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hDCAr_C_Neg\"\n", + "# title = \" - DCAr C-Side - Negative\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGridy(1)\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# #quant.GetYaxis().SetRangeUser(-3,3)\n", + "# quant.SetTitle(passName+title)\n", + "# sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + "# sectorBoundary.SetLineStyle(2)\n", + "# sectorNum = ROOT.TText(.5,.5,\"test\")\n", + "# sectorNum.SetTextAlign(22)\n", + "# sectorNum.SetTextColor(ROOT.kGray+1)\n", + "# sectorNum.SetTextFont(0)\n", + "# for j in range(19):\n", + "# sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + "# if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + "# legend.Draw()\n", + "# c.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "343251f5", + "metadata": {}, + "outputs": [], "source": [ "%jsroot on\n", "objectName=\"hDCAr_C_Neg\"\n", - "title = \" - DCAr C-Side - Negative\"\n", - "if checkIfExists(rootDataFile,objectName):\n", + "if checkIfExists(rootDataFile_first,objectName):\n", " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = drawQuantileProjection(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", " canvas.SetGridy(1)\n", " setHistRangesNormalized(quants)\n", " for quant in quants:\n", " quant.Draw(\"L SAME\")\n", - " #quant.GetYaxis().SetRangeUser(-3,3)\n", - " quant.SetTitle(passName+title)\n", + " quant.SetTitle(periodName_first+\" - DCAr C-Side - Negative\")\n", " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", " sectorBoundary.SetLineStyle(2)\n", " sectorNum = ROOT.TText(.5,.5,\"test\")\n", @@ -892,7 +2008,29 @@ " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", " legend.Draw()\n", - " c.Draw()" + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = drawQuantileProjection(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\" - DCAr C-Side - Negative\")\n", + " sectorBoundary = ROOT.TLine(0,quant.GetMinimum(),0,quant.GetMaximum())\n", + " sectorBoundary.SetLineStyle(2)\n", + " sectorNum = ROOT.TText(.5,.5,\"test\")\n", + " sectorNum.SetTextAlign(22)\n", + " sectorNum.SetTextColor(ROOT.kGray+1)\n", + " sectorNum.SetTextFont(0)\n", + " for j in range(19):\n", + " sectorBoundary.DrawLine((j*2*math.pi)/18,quant.GetMinimum(),(j*2*math.pi)/18,quant.GetMaximum())\n", + " if j < 18 : sectorNum.DrawText(((j+0.5)*2*math.pi)/18,quant.GetMaximum()*0.95+quant.GetMinimum()*0.05,str(j))\n", + " legend_comparison.Draw()\n", + "c.Draw() # No need for this canva if the previous cell already plots this\n", + "\n", + "title = \" - DCAr C-Side - Negative\"\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" ] }, { @@ -917,9 +2055,9 @@ "if all([checkIfExists(rootDataFile,objectName) for objectName in objects]):\n", " hists = []\n", " for objectName in objects:\n", - " [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile,normalize=True,legend=True,legendNames=runList,pads=False,\n", + " [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile_first,normalize=True,legend=True,legendNames=LegRunParam,pads=False,\n", " drawOption=\"SAME L\",yAxisRange=yRange,log=\"logx\")\n", - " updateColors(hist,cols)\n", + " updateColorsComparison(hist,cols)\n", " hists.append(copy(hist))\n", " c = ROOT.TCanvas(\"MIP\",\"MIP\",1100,600)\n", " c.Divide(2)\n", @@ -928,7 +2066,7 @@ " for hist_list in hists:\n", " setHistRangesNormalized(hist_list)\n", " for hist in hists[0]:\n", - " hist.SetTitle(passName+\" - \"+hist.GetTitle())\n", + " hist.SetTitle(periodName_first+\" - \"+hist.GetTitle())\n", " hist.Draw(\"SAME L\")\n", " hist.SetStats(0)\n", " #Draw target 50\n", @@ -945,7 +2083,7 @@ " rightPad.cd(i)\n", " ROOT.gPad.SetGrid(1)\n", " for hist in hists[i]:\n", - " hist.SetTitle(passName+\" - \"+hist.GetTitle())\n", + " hist.SetTitle(periodName_first+\" - \"+hist.GetTitle())\n", " hist.Draw(\"SAME L\")\n", " hist.SetStats(0)\n", " targets[i].Draw()\n", @@ -953,140 +2091,838 @@ ] }, { - "cell_type": "markdown", - "id": "b9ed6bf3", + "cell_type": "code", + "execution_count": null, + "id": "ca7c503c", "metadata": {}, + "outputs": [], "source": [ - "#### TPC Gain calibration\n", - "**dEdx of MIP vs sector**" + "%jsroot on\n", + "yRange = [0,0.09]\n", + "objects = [\"hdEdxTotMIP_\" + region for region in [\"TPC\",\"IROC\",\"OROC1\",\"OROC2\",\"OROC3\"]]\n", + "if all([checkIfExists(rootDataFile,objectName) for objectName in objects]):\n", + " hists = []\n", + " for objectName in objects:\n", + " [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile_comparison,normalize=True,legend=True,legendNames=LegRunParam,pads=False,\n", + " drawOption=\"SAME L\",yAxisRange=yRange,log=\"logx\")\n", + " updateColorsComparison(hist,cols)\n", + " hists.append(copy(hist))\n", + " c = ROOT.TCanvas(\"MIP\",\"MIP\",1100,600)\n", + " c.Divide(2)\n", + " leftPad = c.cd(1)\n", + " leftPad.SetGrid(1)\n", + " for hist_list in hists:\n", + " setHistRangesNormalized(hist_list)\n", + " for hist in hists[0]:\n", + " hist.SetTitle(periodName_comparison+\" - \"+hist.GetTitle())\n", + " hist.Draw(\"SAME L\")\n", + " hist.SetStats(0)\n", + " #Draw target 50\n", + " targets = [ROOT.TLine(50,yRange[0],50,yRange[1]) for hist in hists]\n", + " for i in range(len(objects)):\n", + " targets[i].SetLineStyle(2)\n", + " targets[i].SetLineColor(3)\n", + " targets[i].SetLineWidth(3)\n", + " targets[0].Draw()\n", + " legend.Draw()\n", + " rightPad = c.cd(2)\n", + " rightPad.Divide(2,2)\n", + " for i in range(1,5):\n", + " rightPad.cd(i)\n", + " ROOT.gPad.SetGrid(1)\n", + " for hist in hists[i]:\n", + " hist.SetTitle(periodName_comparison+\" - \"+hist.GetTitle())\n", + " hist.Draw(\"SAME L\")\n", + " hist.SetStats(0)\n", + " targets[i].Draw()\n", + " c.Draw()" ] }, { "cell_type": "code", "execution_count": null, - "id": "b3d4f947-e97e-4c8d-9e0d-c22eef7d2913", + "id": "3d1fef74", "metadata": {}, "outputs": [], "source": [ "%jsroot on\n", - "objectName=\"hdEdxTotMIPVsSec_TPC\"\n", - "title = \"TPC Mean MIP Q_{Tot} vs Sector\"\n", + "# objectName=\"hNClustersAfterCuts\"\n", + "objectName = \"hdEdxTotMIP_TPC\"\n", + "yRange = [0,0.09]\n", + "log = \"none\"\n", + "nCanvases = math.ceil(len(rootDataFile_first)/maxHistosPerCanvas)\n", + "canvases = [] # needed to avoid that garbage collector removes canvases and ratio histograms within each loop\n", + "ratios = []\n", + "target = ROOT.TLine(50,yRange[0],50,yRange[1])\n", + "target.SetLineStyle(2)\n", + "target.SetLineColor(3)\n", + "target.SetLineWidth(3)\n", "if checkIfExists(rootDataFile,objectName):\n", - " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", - " canvas.SetGridy(1)\n", - " setHistRangesNormalized(quants)\n", - " for quant in quants:\n", - " quant.Draw(\"L SAME\")\n", - " #quant.GetYaxis().SetRangeUser(45,55)\n", - " quant.SetTitle(passName+\" - \"+title)\n", - " legend.Draw() \n", - " c.Draw()" + " for canv in range(nCanvases):\n", + " cName=\"canvas\" + str(canv) # canvas name needs to change in every loop\n", + " iniFile = canv * maxHistosPerCanvas\n", + " finalFile = iniFile + maxHistosPerCanvas\n", + " [hist,legend,canvas,pad1,histosComp,histosRatio] = drawHistograms(objectName,rootDataFile_first[iniFile:finalFile],compareTo=rootDataFile_comparison[iniFile:finalFile],\n", + " normalize=True,legend=False,legendNames=runList_first[iniFile:finalFile],pads=True,\n", + " maxColumns=2,drawOption=\"SAME L\",yAxisRange=yRange,log=log,\n", + " grid=False, canvasName=cName, histosRatio=ratios)\n", + " canvases.append(canvas)\n", + " setHistRangesNormalized(hist)\n", + " setHistRangesNormalized(histosComp)\n", + " targets = [ROOT.TLine(50,yRange[0],50,yRange[1]) for hist in hists]\n", + " for i in range(len(objects)):\n", + " targets[i].SetLineStyle(2)\n", + " targets[i].SetLineColor(3)\n", + " targets[i].SetLineWidth(3)\n", + " targets[0].Draw()\n", + " leg = ROOT.TLegend()\n", + " leg.AddEntry(hist[0],periodName_first)\n", + " leg.AddEntry(histosComp[0],periodName_comparison)\n", + " leg.Draw()\n", + " for subpad_i in range(len(hist)):\n", + " subpad_i += 1\n", + " pad1.cd(subpad_i).cd(1).SetGrid(1)\n", + " pad1.cd(subpad_i).cd(1)\n", + " target.Draw()\n", + " pad1.cd(subpad_i).cd(2).SetGrid(1)\n", + " canvas.SetCanvasSize(1200,400)\n", + " canvas.Draw()" ] }, { "cell_type": "markdown", - "id": "dedc1882", + "id": "b9ed6bf3", "metadata": {}, "source": [ - "**dEdx of Mip vs nClusters**" + "#### TPC Gain calibration\n", + "**dEdx of MIP vs sector**" ] }, { "cell_type": "code", "execution_count": null, - "id": "91d4c491-8c38-4a13-8221-6e164424c2af", + "id": "b3d4f947-e97e-4c8d-9e0d-c22eef7d2913", + "metadata": {}, + "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hdEdxTotMIPVsSec_TPC\"\n", + "# title = \"TPC Mean MIP Q_{Tot} vs Sector\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGridy(1)\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# #quant.GetYaxis().SetRangeUser(45,55)\n", + "# quant.SetTitle(passName+\" - \"+title)\n", + "# legend.Draw() \n", + "# c.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4b45ba37", "metadata": {}, "outputs": [], "source": [ "%jsroot on\n", - "objectName=\"hdEdxTotMIPVsNcl_TPC\"\n", - "title = \"TPC Mean MIP Q_{Tot} vs nClusters\"\n", + "objectName=\"hdEdxTotMIPVsSec_TPC\"\n", + "title = \"TPC Mean MIP Q_{Tot} vs Sector\"\n", "if checkIfExists(rootDataFile,objectName):\n", " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", " canvas.SetGridy(1)\n", " setHistRangesNormalized(quants)\n", " for quant in quants:\n", " quant.Draw(\"L SAME\")\n", - " #quant.GetYaxis().SetRangeUser(45,55)\n", - " quant.GetXaxis().SetRangeUser(60,155)\n", - " quant.SetTitle(passName+\" - \"+title)\n", + " quant.SetTitle(periodName_first+\" - \"+title)\n", " legend.Draw()\n", - " c.Draw()" - ] - }, - { - "cell_type": "markdown", - "id": "560a30ec", - "metadata": {}, - "source": [ - "**dEdx of Mip vs tan(lambda)**" + " \n", + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = sliceAndFit(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\" - \"+title)\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" ] }, { "cell_type": "code", "execution_count": null, - "id": "ea06236c-f411-42e6-a8f6-6cb0c3b96a4b", + "id": "8f5bf557", "metadata": {}, "outputs": [], "source": [ - "%jsroot on\n", - "objectName=\"hdEdxTotMIPVsTgl_TPC\"\n", - "title = \"TPC Mean MIP Q_{Tot} vs tan(lambda)\"\n", + "title = \"TPC Width MIP Q_{Tot} vs Sector\"\n", "if checkIfExists(rootDataFile,objectName):\n", " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = sliceAndFitWidth(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", " canvas.SetGridy(1)\n", " setHistRangesNormalized(quants)\n", " for quant in quants:\n", " quant.Draw(\"L SAME\")\n", - " #quant.GetYaxis().SetRangeUser(45,55)\n", - " quant.GetXaxis().SetRangeUser(-2,2)\n", - " quant.SetTitle(passName+\" - \"+title)\n", + " quant.SetTitle(periodName_first+\" - \"+title)\n", " legend.Draw()\n", - " c.Draw()" + " \n", + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = sliceAndFitWidth(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\" - \"+title)\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" ] }, { "cell_type": "markdown", - "id": "61714520", + "id": "dedc1882", "metadata": {}, "source": [ - "**dEdx of Mip vs sin(phi)**" + "**dEdx of Mip vs nClusters**" ] }, { "cell_type": "code", "execution_count": null, - "id": "c5e9bdae-e112-472e-be5a-82277ad7ea37", + "id": "91d4c491-8c38-4a13-8221-6e164424c2af", + "metadata": {}, + "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hdEdxTotMIPVsNcl_TPC\"\n", + "# title = \"TPC Mean MIP Q_{Tot} vs nClusters\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGridy(1)\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# #quant.GetYaxis().SetRangeUser(45,55)\n", + "# quant.GetXaxis().SetRangeUser(60,155)\n", + "# quant.SetTitle(passName+\" - \"+title)\n", + "# legend.Draw()\n", + "# c.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4f076c00", "metadata": {}, "outputs": [], "source": [ "%jsroot on\n", - "objectName=\"hdEdxTotMIPVsSnp_TPC\"\n", - "title = \"TPC Mean MIP Q_{Tot} vs sin(phi)\"\n", - "if checkIfExists(rootDataFile,objectName):\n", + "objectName=\"hdEdxTotMIPVsNcl_TPC\"\n", + "title = \"TPC Mean MIP Q_{Tot} vs nClusters\"\n", + "if checkIfExists(rootDataFile,objectName):\n", " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", - " [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile)\n", - " updateColors(quants,cols)\n", - " canvas = c.cd()\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", " canvas.SetGridy(1)\n", " setHistRangesNormalized(quants)\n", " for quant in quants:\n", " quant.Draw(\"L SAME\")\n", - " #quant.GetYaxis().SetRangeUser(45,55)\n", - " quant.GetXaxis().SetRangeUser(-1,1)\n", - " quant.SetTitle(passName+\" - \"+title)\n", + " quant.SetTitle(periodName_first+\" - \"+title)\n", + " legend.Draw()\n", + " \n", + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = sliceAndFit(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\" - \"+title)\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "61a04c7e", + "metadata": {}, + "outputs": [], + "source": [ + "title = \"TPC Width MIP Q_{Tot} vs nClusters\"\n", + "if checkIfExists(rootDataFile,objectName):\n", + " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = sliceAndFitWidth(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", + " canvas.SetGridy(1)\n", + " setHistRangesNormalized(quants)\n", + " for quant in quants:\n", + " quant.Draw(\"L SAME\")\n", + " #quant.GetXaxis().SetRangeUser(60,155)\n", + " quant.SetTitle(periodName_first+\" - \"+title)\n", + " legend.Draw()\n", + " \n", + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = sliceAndFitWidth(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " #quant.GetXaxis().SetRangeUser(60,155)\n", + " quant.SetTitle(periodName_comparison+\" - \"+title)\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" + ] + }, + { + "cell_type": "markdown", + "id": "560a30ec", + "metadata": {}, + "source": [ + "**dEdx of Mip vs tan(lambda)**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea06236c-f411-42e6-a8f6-6cb0c3b96a4b", + "metadata": {}, + "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hdEdxTotMIPVsTgl_TPC\"\n", + "# title = \"TPC Mean MIP Q_{Tot} vs tan(lambda)\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGridy(1)\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# #quant.GetYaxis().SetRangeUser(45,55)\n", + "# quant.GetXaxis().SetRangeUser(-2,2)\n", + "# quant.SetTitle(passName+\" - \"+title)\n", + "# legend.Draw()\n", + "# c.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11166067", + "metadata": {}, + "outputs": [], + "source": [ + "%jsroot on\n", + "objectName=\"hdEdxTotMIPVsTgl_TPC\"\n", + "title = \"TPC Mean MIP Q_{Tot} vs tan(lambda)\"\n", + "if checkIfExists(rootDataFile,objectName):\n", + " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", + " canvas.SetGridy(1)\n", + " setHistRangesNormalized(quants)\n", + " for quant in quants:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_first+\" - \"+title)\n", + " legend.Draw()\n", + " \n", + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = sliceAndFit(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\" - \"+title)\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c57c304d", + "metadata": {}, + "outputs": [], + "source": [ + "title = \"TPC Width MIP Q_{Tot} vs tan(lambda)\"\n", + "if checkIfExists(rootDataFile,objectName):\n", + " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = sliceAndFitWidth(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", + " canvas.SetGridy(1)\n", + " setHistRangesNormalized(quants)\n", + " for quant in quants:\n", + " quant.Draw(\"L SAME\")\n", + " #quant.GetXaxis().SetRangeUser(-2,2)\n", + " quant.SetTitle(periodName_first+\" - \"+title)\n", + " legend.Draw()\n", + " \n", + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = sliceAndFitWidth(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " #quant.GetXaxis().SetRangeUser(-2,2)\n", + " quant.SetTitle(periodName_comparison+\" - \"+title)\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" + ] + }, + { + "cell_type": "markdown", + "id": "61714520", + "metadata": {}, + "source": [ + "**dEdx of Mip vs sin(phi)**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c5e9bdae-e112-472e-be5a-82277ad7ea37", + "metadata": {}, + "outputs": [], + "source": [ + "# %jsroot on\n", + "# objectName=\"hdEdxTotMIPVsSnp_TPC\"\n", + "# title = \"TPC Mean MIP Q_{Tot} vs sin(phi)\"\n", + "# if checkIfExists(rootDataFile,objectName):\n", + "# c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + "# [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile)\n", + "# updateColorsComparison(quants,cols)\n", + "# canvas = c.cd()\n", + "# canvas.SetGridy(1)\n", + "# setHistRangesNormalized(quants)\n", + "# for quant in quants:\n", + "# quant.Draw(\"L SAME\")\n", + "# #quant.GetYaxis().SetRangeUser(45,55)\n", + "# quant.GetXaxis().SetRangeUser(-1,1)\n", + "# quant.SetTitle(passName+\" - \"+title)\n", + "# legend.Draw()\n", + "# c.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "06ff8269", + "metadata": {}, + "outputs": [], + "source": [ + "%jsroot on\n", + "objectName=\"hdEdxTotMIPVsSnp_TPC\"\n", + "title = \"TPC Mean MIP Q_{Tot} vs sin(phi)\"\n", + "if checkIfExists(rootDataFile,objectName):\n", + " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", + " canvas.SetGridy(1)\n", + " setHistRangesNormalized(quants)\n", + " for quant in quants:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_first+\" - \"+title)\n", + " legend.Draw()\n", + " \n", + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = sliceAndFit(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\" - \"+title)\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d85a5ebe", + "metadata": {}, + "outputs": [], + "source": [ + "title = \"TPC Width MIP Q_{Tot} vs sin(phi)\"\n", + "if checkIfExists(rootDataFile,objectName):\n", + " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = sliceAndFitWidth(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", + " canvas.SetGridy(1)\n", + " setHistRangesNormalized(quants)\n", + " for quant in quants:\n", + " quant.Draw(\"L SAME\")\n", + " #quant.GetXaxis().SetRangeUser(-1,1)\n", + " quant.SetTitle(periodName_first+\" - \"+title)\n", + " legend.Draw()\n", + " \n", + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = sliceAndFitWidth(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " #quant.GetXaxis().SetRangeUser(-1,1)\n", + " quant.SetTitle(periodName_comparison+\" - \"+title)\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" + ] + }, + { + "cell_type": "markdown", + "id": "3541f99e", + "metadata": {}, + "source": [ + "#### dEdxMax of MIP" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4debdf7e", + "metadata": {}, + "outputs": [], + "source": [ + "%jsroot on\n", + "yRange = [0,0.09]\n", + "objects = [\"hdEdxMaxMIP_\" + region for region in [\"TPC\",\"IROC\",\"OROC1\",\"OROC2\",\"OROC3\"]]\n", + "if all([checkIfExists(rootDataFile,objectName) for objectName in objects]):\n", + " hists = []\n", + " for objectName in objects:\n", + " [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile_first,normalize=True,legend=True,legendNames=LegRunParam,pads=False,\n", + " drawOption=\"SAME L\",yAxisRange=yRange,log=\"logx\")\n", + " updateColorsComparison(hist,cols)\n", + " hists.append(copy(hist))\n", + " c = ROOT.TCanvas(\"MIP\",\"MIP\",1100,600)\n", + " c.Divide(2)\n", + " leftPad = c.cd(1)\n", + " leftPad.SetGrid(1)\n", + " for hist_list in hists:\n", + " setHistRangesNormalized(hist_list)\n", + " for hist in hists[0]:\n", + " hist.SetTitle(periodName_first+\" - \"+hist.GetTitle())\n", + " hist.Draw(\"SAME L\")\n", + " hist.SetStats(0)\n", + " #Draw target 50\n", + " targets = [ROOT.TLine(50,yRange[0],50,yRange[1]) for hist in hists]\n", + " for i in range(len(objects)):\n", + " targets[i].SetLineStyle(2)\n", + " targets[i].SetLineColor(3)\n", + " targets[i].SetLineWidth(3)\n", + " targets[0].Draw()\n", + "# legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + " legend.AddEntry(\"\", \"#Run polarity IRstart IRmid IRend\", \"\")\n", " legend.Draw()\n", + " rightPad = c.cd(2)\n", + " rightPad.Divide(2,2)\n", + " for i in range(1,5):\n", + " rightPad.cd(i)\n", + " ROOT.gPad.SetGrid(1)\n", + " for hist in hists[i]:\n", + " hist.SetTitle(periodName_first+\" - \"+hist.GetTitle())\n", + " hist.Draw(\"SAME L\")\n", + " hist.SetStats(0)\n", + " targets[i].Draw()\n", " c.Draw()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28fe6fe3", + "metadata": {}, + "outputs": [], + "source": [ + "%jsroot on\n", + "yRange = [0,0.09]\n", + "objects = [\"hdEdxMaxMIP_\" + region for region in [\"TPC\",\"IROC\",\"OROC1\",\"OROC2\",\"OROC3\"]]\n", + "if all([checkIfExists(rootDataFile_comparison,objectName) for objectName in objects]):\n", + " hists2 = []\n", + " for objectName in objects:\n", + " [hist,legend,canvas,pad1] = drawHistograms(objectName,rootDataFile_comparison,normalize=True,legend=True,legendNames=LegRunParam,pads=False,\n", + " drawOption=\"SAME L\",yAxisRange=yRange,log=\"logx\")\n", + " updateColorsComparison(hist,cols)\n", + " hists2.append(copy(hist))\n", + " c = ROOT.TCanvas(\"MIP\",\"MIP\",1100,600)\n", + " c.Divide(2)\n", + " leftPad = c.cd(1)\n", + " leftPad.SetGrid(1)\n", + " for hist_list in hists2:\n", + " setHistRangesNormalized(hist_list)\n", + " for hist in hists2[0]:\n", + " hist.SetTitle(periodName_comparison+\" - \"+hist.GetTitle())\n", + " hist.Draw(\"SAME L\")\n", + " hist.SetStats(0)\n", + " #Draw target 50\n", + " targets = [ROOT.TLine(50,yRange[0],50,yRange[1]) for hist in hists2]\n", + " for i in range(len(objects)):\n", + " targets[i].SetLineStyle(2)\n", + " targets[i].SetLineColor(3)\n", + " targets[i].SetLineWidth(3)\n", + " targets[0].Draw()\n", + "# legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + " legend.AddEntry(\"\", \"#Run polarity IRstart IRmid IRend\", \"\")\n", + " legend.Draw()\n", + " rightPad = c.cd(2)\n", + " rightPad.Divide(2,2)\n", + " for i in range(1,5):\n", + " rightPad.cd(i)\n", + " ROOT.gPad.SetGrid(1)\n", + " for hist in hists2[i]:\n", + " hist.SetTitle(periodName_comparison+\" - \"+hist.GetTitle())\n", + " hist.Draw(\"SAME L\")\n", + " hist.SetStats(0)\n", + " targets[i].Draw()\n", + " c.Draw()\n", + " \n", + "title = \" - MIP Q_{Max} TPC\"\n", + "drawPlotsPerRun(hists[0], hists2[0], canvases, pads, cloned_hists, legs, title, True, lines)" + ] + }, + { + "cell_type": "markdown", + "id": "0a943b4d", + "metadata": {}, + "source": [ + "**dEdx of MIP vs sector**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "da53ecdc", + "metadata": {}, + "outputs": [], + "source": [ + "%jsroot on\n", + "objectName=\"hdEdxMaxMIPVsSec_TPC\"\n", + "title = \"TPC Mean MIP Q_{Max} vs Sector\"\n", + "if checkIfExists(rootDataFile,objectName):\n", + " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", + " canvas.SetGridy(1)\n", + " setHistRangesNormalized(quants)\n", + " for quant in quants:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_first+\" - \"+title)\n", + " legend.Draw()\n", + " \n", + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = sliceAndFit(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.SetTitle(periodName_comparison+\" - \"+title)\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" + ] + }, + { + "cell_type": "markdown", + "id": "0fe82a5e", + "metadata": {}, + "source": [ + "**dEdx of Mip vs nClusters**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e6d3e6f", + "metadata": {}, + "outputs": [], + "source": [ + "%jsroot on\n", + "objectName=\"hdEdxMaxMIPVsNcl_TPC\"\n", + "title = \"TPC Mean MIP Q_{Max} vs nClusters\"\n", + "if checkIfExists(rootDataFile,objectName):\n", + " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", + " canvas.SetGridy(1)\n", + " setHistRangesNormalized(quants)\n", + " for quant in quants:\n", + " quant.Draw(\"L SAME\")\n", + " quant.GetXaxis().SetRangeUser(60,155)\n", + " quant.SetTitle(periodName_first+\" - \"+title)\n", + " legend.Draw()\n", + " \n", + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = sliceAndFit(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.GetXaxis().SetRangeUser(60,155)\n", + " quant.SetTitle(periodName_comparison+\" - \"+title)\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" + ] + }, + { + "cell_type": "markdown", + "id": "f35c3a97", + "metadata": {}, + "source": [ + "**dEdx of Mip vs tan(lambda)**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e6fd39b0", + "metadata": {}, + "outputs": [], + "source": [ + "%jsroot on\n", + "objectName=\"hdEdxMaxMIPVsTgl_TPC\"\n", + "title = \"TPC Mean MIP Q_{Max} vs tan(lambda)\"\n", + "if checkIfExists(rootDataFile,objectName):\n", + " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", + " canvas.SetGridy(1)\n", + " setHistRangesNormalized(quants)\n", + " for quant in quants:\n", + " quant.Draw(\"L SAME\")\n", + " quant.GetXaxis().SetRangeUser(-2,2)\n", + " quant.SetTitle(periodName_first+\" - \"+title)\n", + " legend.Draw()\n", + " \n", + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = sliceAndFit(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.GetXaxis().SetRangeUser(-2,2)\n", + " quant.SetTitle(periodName_comparison+\" - \"+title)\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" + ] + }, + { + "cell_type": "markdown", + "id": "8e73c5ba", + "metadata": {}, + "source": [ + "**dEdx of Mip vs sin(phi)**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fd3b7b56", + "metadata": {}, + "outputs": [], + "source": [ + "%jsroot on\n", + "objectName=\"hdEdxMaxMIPVsSnp_TPC\"\n", + "title = \"TPC Mean MIP Q_{Max} vs sin(phi)\"\n", + "if checkIfExists(rootDataFile,objectName):\n", + " c = ROOT.TCanvas(\"\",\"\",1200,500)\n", + " c.Divide(2)\n", + " [quants,legend,canvas] = sliceAndFit(objectName,rootDataFile_first)\n", + " updateColorsComparison(quants,cols)\n", + " canvas = c.cd(1)\n", + " canvas.SetGridy(1)\n", + " setHistRangesNormalized(quants)\n", + " for quant in quants:\n", + " quant.Draw(\"L SAME\")\n", + " quant.GetXaxis().SetRangeUser(-1,1)\n", + " quant.SetTitle(periodName_first+\" - \"+title)\n", + " legend.Draw()\n", + " \n", + "if checkIfExists(rootDataFile_comparison,objectName):\n", + " [quants_comparison,legend_comparison,canvas_comparison] = sliceAndFit(objectName,rootDataFile_comparison)\n", + " updateColorsComparison(quants_comparison,cols)\n", + " canvas_comparison = c.cd(2)\n", + " canvas_comparison.SetGridy(1)\n", + " setHistRangesNormalized(quants_comparison)\n", + " for quant in quants_comparison:\n", + " quant.Draw(\"L SAME\")\n", + " quant.GetXaxis().SetRangeUser(-1,1)\n", + " quant.SetTitle(periodName_comparison+\" - \"+title)\n", + " legend_comparison.Draw()\n", + "c.Draw()\n", + "\n", + "drawPlotsPerRun(quants, quants_comparison, canvases, pads, cloned_hists, legs, title)" + ] } ], "metadata": { diff --git a/TPCQCVis/reports/TPC_AQC_Template_Period.ipynb b/TPCQCVis/reports/TPC_AQC_Template_Period.ipynb index 372efe9..7b37d1b 100644 --- a/TPCQCVis/reports/TPC_AQC_Template_Period.ipynb +++ b/TPCQCVis/reports/TPC_AQC_Template_Period.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "6ba04481", "metadata": {}, "outputs": [], @@ -44,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "1e556f7f-d199-4a14-bb9f-0515fb139009", "metadata": {}, "outputs": [], @@ -193,7 +193,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "0b4c56f8-1009-40aa-8a1f-12c5bd2e1ffb", "metadata": {}, "outputs": [], @@ -406,7 +406,7 @@ "metadata": {}, "source": [ "

Table of Contents

\n", - "
" + "
" ] }, { @@ -420,7 +420,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "ddd293fc", "metadata": {}, "outputs": [], @@ -563,7 +563,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "id": "4052a354", "metadata": {}, "outputs": [], @@ -580,7 +580,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "69a20633", "metadata": {}, "outputs": [], @@ -602,7 +602,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "id": "293f06ea", "metadata": {}, "outputs": [], @@ -663,7 +663,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "id": "0969cccc", "metadata": {}, "outputs": [], @@ -890,6 +890,14 @@ "canvas.Draw()\n" ] }, + { + "cell_type": "markdown", + "id": "198e2c7d", + "metadata": {}, + "source": [ + "### MIP Mean vs. Interaction Rate" + ] + }, { "cell_type": "code", "execution_count": null, @@ -919,7 +927,7 @@ "n_bins = len(MIPdata)\n", "hMIP_IR = ROOT.TH1F(\n", " \"hMIP_vs_IntRate\",\n", - " \"MIP Mean vs Interaction Rate;IR (Hz);MIP Mean\",\n", + " \"MIP Mean vs Interaction Rate;IR (kHz);MIP Mean\",\n", " n_bins,\n", " 0,\n", " n_bins\n", @@ -934,12 +942,16 @@ " hMIP_IR.SetBinContent(bin_idx, mip_mean)\n", " hMIP_IR.SetBinError(bin_idx, mip_sigma)\n", " if isinstance(int_rate, (float)):\n", - " label = f\"#splitline{{{int_rate:.2f}}}{{(run {run})}}\"\n", - " else:\n", - " label = f\"#splitline{{{int_rate}}}{{(run {run})}}\"\n", + "# label = f\"#splitline{{{int_rate/1000:.1f}}}{{({run})}}\"\n", + " label = f\"{int_rate/1000:.1f} [{run}]\"\n", + "\n", + " else: # \"?\", for example\n", + "# label = f\"#splitline{{{int_rate}}}{{(run {run})}}\"\n", + " label = f\"{int_rate} [{run}]\"\n", " hMIP_IR.GetXaxis().SetBinLabel(bin_idx, label)\n", + " hMIP_IR.GetXaxis().SetTitleOffset(1.5)\n", "# hMIP_IR.LabelsOption(\"v\")\n", - "MIP_IR_canvas = ROOT.TCanvas(\"MIP_IR_canvas\",\"MIP Mean vs. Interaction Rate\",1100,400)\n", + "MIP_IR_canvas = ROOT.TCanvas(\"MIP_IR_canvas\",\"MIP Mean vs. Interaction Rate\",1000,400)\n", "hMIP_IR.Draw(\"EL\")\n", "MIP_IR_canvas.Draw()" ] @@ -1012,7 +1024,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "id": "824fe439", "metadata": {}, "outputs": [], @@ -1160,7 +1172,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "id": "94dac685", "metadata": {}, "outputs": [], @@ -1518,7 +1530,8 @@ " pad1.SetGridy(1)\n", " canvas.SetCanvasSize(1000,400)\n", " updateColors(hist,cols)\n", - " legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + "# legend.SetHeader(\"Normalized to integral\\n#Run polarity IRstart IRmid IRend\", \"C\")\n", + " legend.AddEntry(\"\", \"#Run polarity IRstart IRmid IRend\", \"\")\n", " legend.Draw()\n", " canvas.Draw()" ] @@ -1560,7 +1573,8 @@ "\n", " pad1.SetGridy(1)\n", " canvas.SetCanvasSize(1000,400)\n", - " legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + "# legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + " legend.AddEntry(\"\", \"#Run polarity IRstart IRmid IRend\", \"\")\n", " legend.Draw()\n", " canvas.Draw()" ] @@ -1592,7 +1606,8 @@ "\n", " pad1.SetGrid(1)\n", " canvas.SetCanvasSize(700,400)\n", - " legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + "# legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + " legend.AddEntry(\"\", \"#Run polarity IRstart IRmid IRend\", \"\")\n", " legend.Draw()\n", " canvas.Draw()" ] @@ -1659,7 +1674,8 @@ " updateColors(hist,cols)\n", " pad1.SetGrid(1)\n", " canvas.SetCanvasSize(700,400)\n", - " legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + "# legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + " legend.AddEntry(\"\", \"#Run polarity IRstart IRmid IRend\", \"\")\n", " legend.Draw()\n", " canvas.Draw()" ] @@ -1690,7 +1706,8 @@ " updateColors(hist,cols)\n", " pad1.SetGrid(1)\n", " canvas.SetCanvasSize(700,400)\n", - " legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + "# legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + " legend.AddEntry(\"\", \"#Run polarity IRstart IRmid IRend\", \"\")\n", " legend.Draw()\n", " canvas.Draw()" ] @@ -1721,7 +1738,8 @@ " updateColors(hist,cols)\n", " pad1.SetGrid(1)\n", " canvas.SetCanvasSize(700,400)\n", - " legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + "# legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + " legend.AddEntry(\"\", \"#Run polarity IRstart IRmid IRend\", \"\")\n", " legend.Draw()\n", " canvas.Draw()" ] @@ -1761,13 +1779,16 @@ " bigCanvas.cd(1)\n", " ROOT.gPad.SetGrid(1)\n", " for hist in hist1 : hist.Draw(\"SAME L\")\n", - " legend1.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + "# legend1.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + " legend1.AddEntry(\"\", \"#Run polarity IRstart IRmid IRend\", \"\")\n", + " \n", " legend1.Draw()\n", " histoOut, canvasOut = outlierDetection(objectName,hist2,runList)\n", " bigCanvas.cd(2)\n", " ROOT.gPad.SetGrid(1)\n", " for hist in hist2 : hist.Draw(\"SAME L\")\n", - " legend2.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + "# legend2.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + " legend2.AddEntry(\"\", \"#Run polarity IRstart IRmid IRend\", \"\")\n", " legend2.Draw()\n", " histoOut, canvasOut = outlierDetection(objectName,hist3,runList)\n", " bigCanvas.cd(3)\n", @@ -2301,7 +2322,8 @@ " targets[i].SetLineColor(3)\n", " targets[i].SetLineWidth(3)\n", " targets[0].Draw()\n", - " legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + "# legend.SetHeader(\"Normalized to integral, #Run polarity IRstart IRmid IRend\", \"C\")\n", + " legend.AddEntry(\"\", \"#Run polarity IRstart IRmid IRend\", \"\")\n", " legend.Draw()\n", " rightPad = c.cd(2)\n", " rightPad.Divide(2,2)\n", diff --git a/TPCQCVis/src/drawHistograms.py b/TPCQCVis/src/drawHistograms.py index dedbe1e..b745478 100644 --- a/TPCQCVis/src/drawHistograms.py +++ b/TPCQCVis/src/drawHistograms.py @@ -72,8 +72,9 @@ def logScale(log): if legend: leg = ROOT.TLegend() if normalize : leg.SetHeader("Normalized to integral") - if files > 10 : leg.SetNColumns(2) - + MaxRunsPerLegColumn = 10 + if files > 10: + leg.SetNColumns(math.ceil(files/MaxRunsPerLegColumn)) for i in range(files): if i==0 or not addHistos : hist = getHistogram(fileList[i], histogram) @@ -127,6 +128,9 @@ def logScale(log): if ratio: if type(hist) in (ROOT.TH1D, ROOT.TH1F, ROOT.TH1C, ROOT.TH2D, ROOT.TH2F, ROOT.TH2C): histRatio = hist.Clone("hRatio_"+str(i)) + if histRatio.GetNbinsX() != histComp.GetNbinsX(): + print("Histograms have different numbers of bins. Skipping creation of ratio plots.") + ratio = False histRatio.Divide(histComp) histRatio.SetTitle("Ratio") histRatio.SetStats(0) diff --git a/TPCQCVis/src/utility.py b/TPCQCVis/src/utility.py index 9f7a44e..2f289b1 100644 --- a/TPCQCVis/src/utility.py +++ b/TPCQCVis/src/utility.py @@ -34,19 +34,40 @@ def recursiveGetHistogram(folder, title): return hist return None +# Older version, which does not check every file +# def checkIfExists(files, title): +# title = title.split(";")[0] +# objectAvailable = False +# hist = None +# if type(files) is list: +# file = files[0] +# else: +# file = files +# hist = getHistogram(file, title) +# if hist: +# return True +# else: +# print(title,"not found") +# return False + def checkIfExists(files, title): title = title.split(";")[0] - objectAvailable = False + objectAvailable = True + problematicFiles = [] hist = None - if type(files) is list: - file = files[0] - else: - file = files - hist = getHistogram(file, title) - if hist: + if type(files) is not list: + files=[files] + for file in files: + hist = getHistogram(file, title) + if not hist: + objectAvailable = False + problematicFiles.append(file.GetName()) + if objectAvailable: return True else: - print(title,"not found") + print(title, "not found in the following files:") + for file in problematicFiles: + print(file) return False def drawMovingWindowOverlay(histograms,timestamps,normalize=False): diff --git a/TPCQCVis/tools/downloadSim.py b/TPCQCVis/tools/downloadSim.py index f87ec44..a5800c9 100644 --- a/TPCQCVis/tools/downloadSim.py +++ b/TPCQCVis/tools/downloadSim.py @@ -23,7 +23,8 @@ import time DATADIR = os.environ['TPCQCVIS_DATA'] -LOCALDIR = DATADIR+"/sim/" +# LOCALDIR = DATADIR+"/sim/" +LOCALDIR = DATADIR+"/sim" def getPaths(path): runs = subprocess.run(["alien_ls", path], capture_output=True) diff --git a/TPCQCVis/tools/generateMCComparisonReports.py b/TPCQCVis/tools/generateMCComparisonReports.py index ce5cd63..78f88d4 100644 --- a/TPCQCVis/tools/generateMCComparisonReports.py +++ b/TPCQCVis/tools/generateMCComparisonReports.py @@ -37,14 +37,23 @@ def replace_in_ipynb(file_path, temp, patterns, replacements): temp_run_path = temp_run.name ### Part to set - path = f"{DATADIR}/sim/2024/" + path = f"{DATADIR}/sim/2024" period = "LHC24e2" passName = "" #keep empty ("") if MC - pathComparison = f"{DATADIR}/2023/" + pathComparison = f"{DATADIR}/2023" periodListComparison = ["LHC23zzf","LHC23zzg","LHC23zzh"] passNameListComparison = ["apass3","apass3","apass3"] #passNameListComparison = ["" for period in periodListComparison] #keep empty ("") if MC + + # path = f"{DATADIR}/sim/2024" + # period = "LHC24f4" + # passName = "0" #keep empty ("") if MC + # pathComparison = f"{DATADIR}/2024" + # periodListComparison = ["LHC24af"] + # passNameListComparison = ["apass1_skimmed"] + # passNameListComparison = ["" for period in periodListComparison] #keep empty ("") if MC + # Loop over the comparison periods for i,periodComparison in enumerate(periodListComparison): passNameComparison = passNameListComparison[i]
Run NumberInteraction Rate (Hz)Duration (s)Magnetic Field (Amperes)
{runListNumbers[i]}{IntRateAvg}{Duration}{BField}
{runListNumbers[i]} (RunParameters tree not found)???