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",
+ " \n",
+ " \n",
+ " Trendings\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " Number of tracks\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " Mean phi of tracks\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " A‑Side\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " C‑Side\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ " \n",
+ " - \n",
+ " \n",
+ " \n",
+ " Mean eta of tracks\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " Mean tracks transverse momentum of tracks\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " Mean charge sign of tracks\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " Mean dEdxTot of MIPs tracks\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " MIP Mean vs. Interaction Rate\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ " \n",
+ " - \n",
+ " \n",
+ " \n",
+ " Plots\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " Tracks\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " Geometrical distributions of tracks\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " Track properties\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ " \n",
+ " - \n",
+ " \n",
+ " \n",
+ " DCAr\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " 1-GeV))\"\n",
+ " data-toc-modified-id=\"DCAr-(with-pT-cut-(>1-GeV))-2.3\">\n",
+ " DCAr (with pT cut (>1 GeV))\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " PID\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " dEdxTot of MIP\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " TPC Gain calibration\n",
+ " \n",
+ " \n",
+ "
\n",
+ " - \n",
+ " \n",
+ " \n",
+ " dEdxMax of MIP\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\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",
+ " - \n",
+ " Plots\n",
+ "
\n",
+ " - \n",
+ " Tracks\n",
+ " \n",
+ "
\n",
+ " - DCAr
\n",
+ " - \n",
+ " PID\n",
+ " \n",
+ "
\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",
+ " | Run Number | \n",
+ " Interaction Rate (Hz) | \n",
+ " Duration (s) | \n",
+ " Magnetic Field (Amperes) | \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",
+ " {runListNumbers[i]} | \n",
+ " {IntRateAvg} | \n",
+ " {Duration} | \n",
+ " {BField} | \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",
+ " {runListNumbers[i]} (RunParameters tree not found) | \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]