def findNLLParams(self, dataFileName): function = Function() NLLExp = NLL(function.expPDF, dataFileName) optimiser = Optimise() #finds minimum tau for our NLL paramsGuess = [2.] paramsJump = [0.01] paramsAccuracy = [0.00001] params = optimiser.min(NLLExp.evalNLL, paramsGuess, paramsJump, paramsAccuracy, []) tauMin = params[0] minNll = NLLExp.evalNLL(params) #finding err of tau in params by finding where the chiSquare #increases by 0.5 either side of the minimum tauRootGuess = [tauMin] tauRootJump = [0.001] tauRootAccuracy = [0.00001] tauErrPos = abs( optimiser.equalTo((minNll + 0.5), NLLExp.evalNLL, tauRootGuess, tauRootJump, tauRootAccuracy, [])[0] - tauMin) tauErrNeg = abs( optimiser.equalTo((minNll + 0.5), NLLExp.evalNLL, [tauMin - tauErrPos], tauRootJump, tauRootAccuracy, [])[0] - tauMin) tauErrMean = (tauErrPos + tauErrNeg) / 2. print("") print("tau:\t" + str(np.round(tauMin, 6)) + "\n") print("tauErr:\t+" + str(np.round(tauErrPos, 6)) + "\t-" + str(np.round(tauErrNeg, 6))) print("mean:\t" + str(np.round(tauErrMean, 6))) print("") #self.plotNLLAroundMin(NLLExp.evalNLL, params, [tauErrPos], [tauErrNeg]) plotter = Plot() plotter.plotNLLAroundMin(NLLExp.evalNLL, params, [tauErrPos], [tauErrNeg])