{ "cells": [ { "cell_type": "markdown", "id": "e8ab5a15", "metadata": {}, "source": [ "### Fit the two straight line tracks with one common Y-intercept" ] }, { "cell_type": "code", "execution_count": 1, "id": "a12892ea", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import math\n", "import matplotlib.pyplot as plt\n", "import scipy.stats as stats" ] }, { "cell_type": "code", "execution_count": 2, "id": "afea4692", "metadata": {}, "outputs": [], "source": [ "# This is a nice utility to put a ROOT style stat box on a histogram plot\n", "def statBox(ax, entries, binEdges, x=0.96, y=0.98, fontsize='medium'):\n", " \"\"\"\n", " Put a stat box on the histogram at coord x and y\n", " font = medium is appropriate for 1x1. Other choices are\n", " size in points, 'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'\n", " \"\"\"\n", " en = len(entries) # number of entries\n", " ov = (entries>binEdges[-1]).sum() # overflows\n", " uf = (entries0 for some debug output\n", " Returns:\n", " par : fitted parameters\n", " chisq : chisquared at minimum\n", " ndof : number of degrees of freedom\n", " cov : covariance matrix\n", " \"\"\"\n", "\n", " # we should check that len(x1)=len(y1)=len(s1) etc, \n", " # but we shall be sloppy and assume that it is all fine\n", " \n", " # parameters\n", " par = guess.copy()\n", "\n", " # initial dy\n", "\n", " # number of points\n", " n1 = len(x1) # 1st track\n", " n2 = len(x2) # 2nd track\n", " n = n1+n2 # total\n", "\n", " # concatenate array\n", " x = np.concatenate( (x1,x2) )\n", " y = np.concatenate( (y1,y2) )\n", " s = np.concatenate( (s1,s2) )\n", "\n", " # build the covariance matrix of the measurements\n", " W = np.diag(1./(s*s)) # NxN matrix\n", " \n", " # Start the iteration\n", " for i in range(0, nIter):\n", "\n", " # fitted y coordinates\n", " y1fit = par[0] * (x1 - par[2])\n", " y2fit = par[1] * (x2 - par[2])\n", " yfit = np.concatenate( (y1fit,y2fit) )\n", "\n", " # chisq\n", " chisq = ( (yfit-y)**2/(s*s) ).sum()\n", " if verbosity>0:\n", " print (\"before iteration \", i, \"chisq =\", chisq)\n", " print( 10000* (y1fit-y1) )\n", " print( 10000* (y2fit-y2) )\n", " \n", " # derivatives..Could be done more compactly, but this is more readable\n", " dy1_dpar0 = x1 - par[2]\n", " dy1_dpar1 = 0. * y1\n", " dy1_dpar2 = np.full( (n1), -par[0] )\n", " dy2_dpar0 = 0. * y2\n", " dy2_dpar1 = x2 - par[2]\n", " dy2_dpar2 = np.full( (n2), -par[1] )\n", "\n", " dy_dpar0 = np.concatenate( (dy1_dpar0 , dy2_dpar0) )\n", " dy_dpar1 = np.concatenate( (dy1_dpar1 , dy2_dpar1) )\n", " dy_dpar2 = np.concatenate( (dy1_dpar2 , dy2_dpar2) )\n", "\n", " # matrices...A and Atrans are the derivatives of the predictions wrt the fitted parameters\n", " Atrans = np.array( [dy_dpar0, dy_dpar1, dy_dpar2] ) # 3 x N matrix\n", " A = (Atrans.T).copy() # Nx3 matrix\n", " dy = (np.array( [(y-yfit),] )).T # Nx1 column vector\n", "\n", " # find the matrix to be inverted, and invert it\n", " temp = np.matmul(Atrans, W) # 3xN * NxN = 3xN\n", " temp2 = np.matmul(temp, A) # 3xN * Nx3 = 3x3\n", " temp3 = np.linalg.inv(temp2) # 3x3 ... this is the covariance matrix\n", "\n", " # multiply again\n", " temp4 = np.matmul(temp3, Atrans) # 3x3 * 3xN = 3xN\n", " temp5 = np.matmul(temp4, W) # 3xN * NxN = 3xN\n", " dpar = np.matmul(temp5, dy) # 3xN * Nx1 = 3x1 column vector\n", "\n", " # the new values of the parameters\n", " par[0] = par[0] + dpar[0][0]\n", " par[1] = par[1] + dpar[1][0]\n", " par[2] = par[2] + dpar[2][0]\n", "\n", " # The fit is now done...calculate a few things\n", " ndof = n1 + n2 - len(par)\n", " y1fit = par[0] * (x1 - par[2])\n", " y2fit = par[1] * (x2 - par[2])\n", " yfit = np.concatenate( (y1fit,y2fit) )\n", " chisq = ( (yfit-y)**2/ (s*s) ).sum()\n", " if verbosity>0:\n", " print (\"At the end chisq =\", chisq)\n", " print( 10000* (y1fit-y1) )\n", " print( 10000* (y2fit-y2) )\n", " \n", " # we are done\n", " return par, chisq, ndof, temp3" ] }, { "cell_type": "code", "execution_count": 4, "id": "5f7a60ff", "metadata": {}, "outputs": [], "source": [ "# --------------------------------\n", "# Here are the needed constants\n", "#---------------------------------\n", "nDetectors = 4\n", "w = 0.005 # 50 micron is strip width\n", "s = np.full(nDetectors, w/np.math.sqrt(12)) # resolution in each hit\n", "xdet = np.array([2., 3., 5., 7.]) # x coordinates of detectors" ] }, { "cell_type": "code", "execution_count": 5, "id": "b5c9e119", "metadata": {}, "outputs": [], "source": [ "# read all data into numpy arrays\n", "data = np.loadtxt(\"straightTracks.txt\")\n", "xv = data[:,0] # true xverteces (called X0 in the exercise pdf)\n", "yv = data[:,1] # true yverteces\n", "nev = len(xv) # number of pairs of tracks\n", "trk1 = data[:,[2,3,4,5]] # hits for track number 1\n", "trk2 = data[:,[6,7,8,9]] # hits for track number 2" ] }, { "cell_type": "code", "execution_count": 6, "id": "d2779bd9", "metadata": {}, "outputs": [], "source": [ "# Now do the constrained fit (store results in arrays)\n", "fitVertex = np.empty(nev) \n", "pull = np.empty(nev)\n", "chiProb = np.empty(nev)\n", "x1 = xdet.copy() # not sure if the copy is necessary, but it can't hurt\n", "x2 = xdet.copy()\n", "s1 = s.copy()\n", "s2 = s.copy()\n", "verbosity = 0\n", "for i in range(nev): # loop over pairs\n", " y1 = trk1[i][:] # coordinates of trk 1 for this pair\n", " y2 = trk2[i][:] # coordinates of trk 2 for this pair\n", "\n", " # guess parameters\n", " slope1 = ( y1[3] - y1[0] ) / ( x1[3] - x1[0] )\n", " slope2 = ( y2[3] - y2[0] ) / ( x2[3] - x2[0] )\n", " inter1 = y1[3] - slope1 * x1[3]\n", " inter2 = y2[3] - slope2 * x2[3]\n", " guess = np.array( [slope1, slope2, 0.5*(inter1+inter2)] )\n", "\n", " # fit now \n", " par, chisq, ndof, cov = fit2DTracksConstrained(x1, y1, s1, x2, y2, s2,\n", " guess, nIter=10,\n", " verbosity=verbosity)\n", "\n", " # The fitted vertex in microns and the pull \n", " thisFitVertex = 10000*par[2]\n", " thisPull = (par[2]-xv[i])/np.sqrt(cov[2][2])\n", " fitVertex[i] = thisFitVertex\n", " pull[i] = thisPull\n", "\n", " # chiprob is like TMath::Prob in ROOT.\n", " # Probability that an observed Chi-squared exceeds\n", " # the value chisq by chance, even for a correct model\n", " thisChiProb = 1. - stats.chi2.cdf(chisq, ndof)\n", " chiProb[i] = thisChiProb\n", " \n", " # debug\n", " if verbosity > 0:\n", " print( \" \" )\n", " print( \"Pull:\")\n", " print( (par[2]-xv[i])/np.sqrt(cov[2][2]))" ] }, { "cell_type": "code", "execution_count": 7, "id": "ab1abcd8", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEGCAYAAABrQF4qAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAl4ElEQVR4nO3deXhV1f3v8feXSZmnRooBCRpFAgTECNhKyqDID30YFBkeWlF5Ln1aemsdEH56Hajagvpz9ur1Fq9gkUGqwu1FRIYWxIFGTCKEUUiUiIJMCggIWfePvXN6CBlOTs5JTjaf1/OcJ3uvvffZa0Hyzco6a323OecQEZHgqlPTFRARkfhSoBcRCTgFehGRgFOgFxEJOAV6EZGAq1edN/vJT37iUlJSqvOWIiK13ieffPKtcy4p2uurNdCnpKSQlZVVnbcUkWr21Vdf8cEHH3Dw4EGKiopqujoJpX79+iQlJTFw4EAaNmwY8XVmVlCV+1ZroBeRYCssLOT1118nMzOT3r17U6eORofDnThxgg0bNvDaa6/xq1/9qlLBvioU6EUkZt5++22GDBlCly5daroqCSslJYXFixezZs0aBg0aVC331K9bEYkJ5xz79++nU6dONV2VhGZmdOrUiW+//bba7qlALyIx4ZzDOUe9ehooqEiDBg04efJktd1PgV5EajUz46677grtP/HEEzz00EMRXz948GBatGjB9ddff1r5zp076d27N6mpqYwePZoTJ04AcPz4cUaPHk1qaiq9e/cmPz8/dM2f//xnUlNT6dSpE++++26V2hVLCvQiUqudc845vPnmm1EPhUyePJnXXnvtjPIpU6Zwxx13sH37dlq2bMnMmTMBmDlzJi1btmT79u3ccccdTJkyBYC8vDzmzZvHxo0bWbp0Kb/97W85depU9A2LIQV6EanV6tWrx8SJE3nqqaeiun7gwIE0bdr0tDLnHCtXrmTkyJEAjB8/nrfffhuARYsWMX78eABGjhzJihUrcM6xaNEixowZwznnnEPHjh1JTU1l3bp10TcshjSYJiK13qRJk0hPT+eee+45rXzOnDk8/vjjZ5yfmprKwoULy3y/ffv20aJFi9DnDe3ataOwsBDwppC2b98e8H7JNG/enH379lFYWEifPn1C7xF+TU1ToBeRWq9Zs2bcfPPNPPvss6fNTR83bhzjxo2rwZol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0KBBA1q0aFHpOseS0hSLSEI6duwYo0ePZvbs2fTq1Yv777+fY8eOnZZ2oCo55gsLC2nfvn1ov127dnz88cehfTNj0KBBmBm//vWvQ7lsSpOfn8+nn35K79692bFjB0lJSdx6663k5ORw+eWX88wzz9C4cePKND+mFOhFJCEtX76cnj170qtXLwDS09NZunTpaesrYpmRsqT333+f5ORk9uzZwzXXXMOll15KZmbmGecdPnyYG2+8kaeffppmzZpx8uRJ1q9fz3PPPUfv3r25/fbbmT59Og8//HDc6loRDd2ISELasGHDaU+JWr9+fWiopFhVcswnJyfz5ZdfhvZ37dpFcnLyaccBzjvvPEaMGMG6devOeI8ff/yRG2+8kXHjxnHDDTcA3l8G7dq1o3fv3gCMHDmS9evXV6LlsacevYgkpNatW7Ny5UoAtm7dyptvvnnGwz2q0qO/4oor2LZtGzt37iQ5OZl58+bx+uuvA3DkyBGKiopo2rQpR44cYdmyZWd8NuCcY8KECXTu3Jk777wzVP7Tn/6U9u3bs2XLFjp16sSKFStIS0uLup6xoB69iCSksWPHcvjwYbp27crEiROZO3curVu3jvq9SuaIr1evHs8//zzXXnstnTt3ZtSoUXTp0gWAb775hquuuoru3bvTq1cvrrvuOgYPHgz8Oyf92rVree2111i5cmXoL4niNMbPPfcc48aNIz09nezsbO69997Y/KNEycpKlxoPGRkZrrRpSnJ2M7Myc93E+vszmveMdT3Ke794tLm6FBUV8fDDD/Pggw/WdFUS3ueff87atWu5+eabIzrfzD5xzkX9CCv16EUkJsyMBg0acPTo0ZquSsI7cuQIjRo1qrb7KdCLSEyYGampqbzzzjsUFRXVdHUS1vfff8/q1atJTU2ttnvqw1gRiZnhw4czb948/vKXv9CmTRvq1q1b01VKKCdOnCA/P58rrriCHj16VNt9FehFqqCs57+erc9+rV+/PmPHjqWgoICDBw+qZ19C/fr16dOnD+eff3613leBXqQK9NCUM9WrV4+LLrqopqshYTRGLyIScAr0IiIBp0AvIhJwCvQiIgGnQC8iEnAK9CIJpEOHDpjZGa+UlJSarprUYppeKZJAypp7fzZP15SqU49eRCTgIg70ZlbXzD41s7/7+x3N7GMz225m882sQfyqKSIi0apM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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot the fitted value\n", "ax33 = plt.subplot(111)\n", "con33, bins33, _ = ax33.hist(fitVertex, np.linspace(-300.,300.,51), histtype='step', color='black')\n", "statBox(ax33, fitVertex, bins33)\n", "ax33.set_xlim(bins33[0], bins33[-1])\n", "_ = ax33.set_xlabel(\"fitted X0 (microns)\")" ] }, { "cell_type": "code", "execution_count": 8, "id": "2e2fda18", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEHCAYAAACncpHfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAnIklEQVR4nO3de3wV5b3v8c+PiwgichGpJpAgQctFxBgitIIIKooeEA9yOe6KYsvrtLRaj0VsfYnSahXrVutut9aKx9haQCkKex+NIOjGK4gYUsALUYjCpspV5aYEfuePmSwXIde1clnJfN+v13ox86y5PE9I5jfPPDO/MXdHRESip1lDV0BERBqGAoCISEQpAIiIRJQCgIhIRCkAiIhElAKAiEhEtahqATN7HLgM+Nzd+4ZlvwP+B/AN8BFwrbvvDr/7JXAdcAi43t1frGofJ554omdmZibYBBGRaHrnnXe2u3vnRNe3qp4DMLMhwB7gybgAcBGwzN1LzGwWgLtPN7PewBwgFzgFeAk4zd0PVbaPnJwcX7VqVaJtEJFGYN++fSxdupTt27dz8ODBhq5OSjEzTjjhBHJzc6nJybCZvePuOYnut8oegLsvN7PMMmWL42bfAsaG06OBue7+NbDRzIoIgsGbiVZQRBq/ffv2kZeXR0ZGBueffz4tW7Zs6CqllMOHD7N9+3aeeeYZrrjiCnr06FEv+60yAFTDZGBeOJ1GEBBKbQ7LRCTCXn75Zbp168Yll1yCmTV0dVJS165d6dixI/PmzWPatGn18nNKahDYzG4FSoCnElh3ipmtMrNV27ZtS6YaIpLitm/fzne/+10d/KuQkZHB4cOH2b9/f73sL+EAYGbXEAwOX+XfDiRsAbrGLZYelh3F3R919xx3z+ncOeExDBFpBA4dOlTvl33MjJtuuik2f99993HHHXdUe/2LL76Y9u3bc9lllx1RvnHjRs455xyysrIYP34833zzDQBff/0148ePJysri3POOYdNmzbF1rn77rvJysri9NNP58UXK78v5phjjqGkpKTa9UxGQgHAzC4GbgZGufu+uK8WARPMrJWZdQd6AiuTr6aISM20atWKBQsWsH379oTWnzZtGn/5y1+OKp8+fTo33ngjRUVFdOjQgdmzZwMwe/ZsOnToQFFRETfeeCPTp08HYP369cydO5d169aRn5/PT37yEw4d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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot the difference between the fitted and true vertex\n", "ax3 = plt.subplot(111)\n", "dxfit = fitVertex - 10000*xv\n", "con3, bins3, _ = ax3.hist(dxfit, np.linspace(-300.,300.,101), histtype='step', color='black')\n", "statBox(ax3, dxfit, bins3)\n", "ax3.set_xlim(bins3[0], bins3[-1])\n", "_ = ax3.set_xlabel(\"X0 fitted - X0 true (microns)\")" ] }, { "cell_type": "code", "execution_count": 9, "id": "f03cb9af", "metadata": {}, "outputs": [ { "data": { "image/png": "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GvAjM9sGdATm13gSEZEqNm3alEielc455xwuuOACtm3bxvjx41m0aBEA5eXllJeXk5+fz89//nOGDh3KmjVrePXVV5k6dWpikdDatWt59tln+fOf/8zSpUs566yzWL9+PePHjz/uOjfffDOzZ8+mpKSESy65hFmzZtG5c2cOHTrE559/zqpVq8jPz2fVqlWUlZXRuXNnWrdunXQBUtVl/tBEl/O7+z3APSfs/gBovBnxInLKGDduHNdddx2zZs1i0aJFiYS5bNkyli5dmhj/PnToUKIHXdkrrs1nn33Gvn37uPrqq4F4Aa0bb7wRgG9961u88cYbrFy5krvuuouioiLcnUGDBgFNvzSAarOISKPr1avXSaswP//8cz766CNycnJo3bo1HTt2pKSkhIULF/Lb3/4WiI+1//GPfzzpaUarV6/m7LPPblBMgwcPTvTGR48ezezZszEzvv3tbwPJi3ZlZWXx2muvJfbv2LGDIUOGNCimutByfhFpdAUFBRw8eJAnnngCgKNHj3LnnXdyyy230Lp1awDGjx/PL3/5Sz777DPy8vIAGD58OP/5n/+ZWMy1bt26Ol333HPPpX379qxatQqAJ598MtFLHzRoEL///e/Jzc3ltNNOo0OHDrzwwgtcddVVQPLSAMOHD2fZsmXs3buXvXv3smzZMoYPH97An1R4SuYi0ujMjOeee44//OEP5ObmctFFF3HmmWfyi1/8ItFm7NixLFiwgHHjxiX2zZgxg6+//pq8vDx69+7NjBkz6nztwsJCpk6dSl5eHuvXr0+sWI3FYrg7gwcPBuCqq66iXbt2tG/fPtR5O3TowIwZM+jXrx/9+vVj5syZSYd9Uinpcv5U0nJ+aQxazp8ZWs4fXiaX84uISBOmZC4iEgFK5iIiEaBkLiJpUVpaysUXX3zcvvrUSKlc/VkX7777Ln369OGyyy7j/fffp02bNnU6vj727NnDsGHDyM3NZdiwYY26lB+UzEUkYo4ePcrzzz/P2LFjWbduHRdeeGGjXPeBBx6goKCArVu3UlBQkHhoRWNRMheppzBPNNJzRms2ZMgQpk2bRv/+/bnooosSc7+//PJLJkyYQM+ePRkzZgxffvll4phly5YxcOBA+vbty4033sj+/fuB+H+LadOm0bdvXxYuXMjcuXN59NFHueaaa467prszdepULr74Yi655JJE3ZbbbruNpUuXAjBmzBhuvfVWAB577LHQxb+WLFnCpEmTgPjK0ueff77+P5x60ApQkXqqfI5oQ8Rr1526jhw5wpo1a3jhhReYNWsWr7zyCo8++iitW7fmnXfeoaSkhL59+wLw6aefcv/99/PKK69w9tlnJx7rVjkVsmPHjqxduxaALVu20KZNG3784x8fd73Fixezfv16NmzYwKeffkq/fv0YPHgwgwYNYtWqVYwaNYqdO3dSXl4OwKpVq5gwYQIQX1T0xRdfnPQZ5syZw7XXXssnn3xC165dATjvvPP45JNP0vNDq4GSuYikRU2/qKruv+GGGwC4/PLLKS0tBWDlypX84Ac/ACAvLy+x+vPNN99k8+bNXHnllQAcPnyYgQMHJs51YkGt6rz++utMnDiRFi1a0KVLF66++mreeustBg0axNy5c9m8eTO9evVi7969lJeX89e//pWHH34YIPGXQ9jP3ti/qJXMRSQtOnbseNJNwD179tC9e/fE9hlnnAHES+BW1iGvibszbNgwnnnmmWrfb0htlqysLPbt20dRURGDBw9mz549LFq0iDZt2tC2bVsgec+8S5culJeX07VrV8rLy+ncuXO946kPjZmLSFq0adOGrl27smLFCiCeyIuKihK1TmoyePBgnn76aQA2btxISUkJAAMGDOCNN95g27ZtABw4cIAtW7bUKaZBgwaxcOFCjh49SkVFBStXrqR///6J88+dOzcx7DJnzpxExUSI98yrq81y7bXXAjBq1KjE04UKCwsZPXp0nWJrKCVzEUmbJ554gvvuu48+ffowdOhQ7rnnnqSzS/7lX/6F/fv307NnT2bOnJmoe96pUycef/xxJk6cSF5eHgMHDuTdd9+tUzxjxowhLy+PSy+9lKFDh/LLX/6S8847D4gn+iNHjpCTk0Pfvn3Zs2fPcck8menTp/Pyyy+Tm5vLK6+8wvTp0+sUW0OpNotETmPVZknFdaJU/0W1WcLLSG0WM+thZuurvD43sx+aWQcze9nMtgZfw5UWExGRlAvz2Lj33L2Pu/cBLgcOAs8B04Hl7p4LLA+2RUQkA+o6Zl4AvO/uZcBooDDYXwhcn8K4RESkDuqazCcAlfOCurh7efD9x0CX6g4wsylmVmxmxRUVFfUMU+R/JFt5mZ2dnekQRRpd6GRuZq2AUcAfTnzP43dwqr2L4+7z3D3f3fM7depU70BFKlWuvKzpVbn4RORUUpee+T8Ca929co3qJ2bWFSD4uivVwYmINLaioiJ69OhBTk5OrcWyqmu3fft2rrnmGnr16kXv3r359a9/3Vhh1ymZT+R/hlgAlgKTgu8nAUtSFZSISCYcPXqU2267jRdffJHNmzfzzDPPsHnz5tDtWrZsyX/8x3+wefNm3nzzTR555JFqj0+HUMnczM4GhgGLq+x+ABhmZluBa4NtEZGMGDJkSGIR0e7du0+qpR7GmjVryMnJ4R/+4R9o1aoVEyZMYMmSk/upNbXr2rVrojBY27Zt6dmzJzt37mzYBwspVG0Wdz8AdDxh327is1tERDJu27ZtXHTRRQCUlJRwySWXHPd+stoqADt37uT8889PvNetWzdWr1590jFh2pWWlrJu3TquuOKK+n+oOlChLRFp9srKysjKyuK00+KDDSUlJYlqi5XqUvWwofbv3893v/td5s6dyznnnNMo11QyF5Fmb8OGDccl77fffvukkrhheuZZWVls37498d6OHTvIyso66Zja2n399dd897vf5aabbkqU+G0MSuYi0uytX7+eQ4cOAbB161aWLFnC/ffff1ybMD3zfv36sXXrVj788EOysrJYsGBBooJjmHbuzuTJk+nZsyc/+tGPUvPhQlLVRBFp9jZs2MCxY8e49NJL+dnPfkavXr0S5WjromXLlvzmN79h+PDh9OzZk3HjxtG7d+/E+yNHjuTvf/97je3eeOMNnnzySVasWEGfPn3o06cPL7zwQio/as2xN8pVRETSqKSkhLVr1yYeJNEQI0eOZOTIkdW+VzUxV9fuqquuylgVTPXMRaRZ++KLLzCzlCTy5kzJXESatbZt29b5iUNRpGQuIhIBSuYiIhGgZC4iEgFK5iIiEaBkLiISAUrmIjXIzs5O+xONkl3DzIjFYg3/MFInt956K507d05aebGm2udha6KnkpK5SA1KS0vT/kSjZNdwd8rKyhr+YaRObrnlFoqKimptU1NN87A10VNNyVxEImPDhg0MHjyYXr16cdppp2FmzJw5s87nGTx4MB06dKi1TU01zcPWRE81LecXkUg4dOgQ48eP54knnqB///7MmDGDQ4cOMWvWrESbMJUTw6qppnnYmuipFiqZm1k74HfAxcQf3Hwr8B6wEIgBpcA4d9+bjiBFRJJ55ZVX6Nu3L/37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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot the pull\n", "ax4 = plt.subplot(111)\n", "con4, bins4, _ = ax4.hist(pull, np.linspace(-4.,4.,40), histtype='step', color='black')\n", "statBox(ax4, pull, bins3)\n", "ax4.set_xlim(bins4[0], bins4[-1])\n", "_ = ax4.set_xlabel(\"Pull of X0 fit\")" ] }, { "cell_type": "code", "execution_count": 10, "id": "57e3ab4b", "metadata": {}, "outputs": [ { "data": { "image/png": "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bN++nS5duvDzn/+c3r17s3LlSl5//XXGjh0bfbDp7bff5sUXX+RPf/oThYWFnHfeeRQVFTF06NCTzjNy5EgmT55McXExV1xxBRMnTqRFixYcPnyYffv2sWzZMrp06cKyZcvYsmULLVq0oH79+hU+NFW6hAHUrFIF/wE8a2Z1gfeB7xD54zDbzEYDW4AhqQlRypOZmRn3sFCbNm1OKm8qcibx/o5lZmZy/PhxGjduzJ133pnweYcMGcL111/PxIkTmT17djSJLliwgMLCwuh4+uHDh6M97ZLe85l89tln7N27l2uuuQaIFBG79dZbAfj617/O8uXLWbp0KT/+8Y+ZP38+7k7Pnj2Bmln2IKYE7+5FQJcyVvVJajQSl5IndeNhZimKRsIont+x48ePM2nSJCZMmFBhPfacnJzTnibdt28fH374IVlZWdSvX59mzZpRXFzMrFmz+O1vfwtExu5feuml0741asWKFZx//vmxv7Ey5OfnR3vtAwYMYPLkyZgZ3/zmN4GKC5dlZGSwZMmS6PKtW7fSq1evSsVUWXqSVUSqXJ8+fTh06BBPP/00AMeOHePuu+/mtttuo379+gAMHTqUhx56iM8++4zc3FwAbrjhBn71q19F/+isXr06rvNecMEFNGnSJPpw04wZM6K9+Z49e/LMM8+QnZ1NrVq1aNq0KfPmzePqq68GKi57cMMNN7BgwQL27NnDnj17WLBgATfccEMlW6pylOBFpMqZGb///e954YUXyM7O5rLLLqNevXr84he/iG4zePBgZs6cyZAhJ0Z/x48fz5dffklubi4dOnRg/PjxcZ+7oKCAsWPHkpubS1FRERMmTAAiw0vuTn5+PgBXX301jRs3pkmTJjEdt2nTpowfP56uXbvStWtXJkyYUOGQUapZvB/xK6NLly6+atWqKjufmcU9hBH281V1jFKzxfP7cuoQTTxfm3e2ef/993njjTcYOXJkTNub2VvuXtYw+RmpBy8iElJK8CIiIaUELyISUkrwIpISmzdv5vLLLz9pWSI1YUqeYo3He++9R8eOHenUqRN///vfadCgQVz7J2L37t307duX7Oxs+vbtm/YyBaAELyIhc+zYMebMmcPgwYNZvXo1bdu2rZLzPvjgg/Tp04eNGzfSp0+f6BeBpJMSvIikRa9evRg3bhzdunXjsssui96b/vnnnzNs2DDa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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot the chisquared probability \n", "probAx = plt.subplot(111)\n", "probContents, probBins, _ = probAx.hist(chiProb, np.linspace(0.,1.,25), histtype='step', color='black')\n", "statBox(probAx, chiProb, probBins)\n", "probAx.set_xlim(probBins[0], probBins[-1])\n", "_ = probAx.set_xlabel(\"Probability of chisquared\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }