def useCSV(mass, compileOrLoad): dummyHist = TH1F() binMap = getBinMap() instance("CL95cms", compileOrLoad) compileOrLoad = "load" massWindows = getMassWindows() #print "massWindows dict is:" #print massWindows #print "massWindows[750] is: ", #print massWindows[750] #print "binMap dict is:" #print binMap response = {} for workingPoint in binMap.keys(): #print "massWindows[mass] = massWindows[%i] is: " % mass #print massWindows[mass] csvInfo = fillHist_csv(dummyHist, "MC", mass, massWindows[mass], compileOrLoad) compileOrLoad = "load" print "for mass %i, working point %s" % (mass, workingPoint) print csvInfo sAndBinfo = csvInfo[workingPoint] expectedLimitInfo = getExpectedLimit_csv(sAndBinfo["S"], sAndBinfo["B"], mass) #print "expected limit is %f" % expectedLimitInfo["expectedLimit"] response[workingPoint]=expectedLimitInfo["expectedLimit"] response[compileOrLoad]=expectedLimitInfo["compileOrLoad"] return response
def makeCosThetaPtOverMcomparisonGraphs(compileOrLoad): HbbCutValue = 0.9 pToverMgraphs = [] cosThetagraphs = [] compileOrLoad = "compile" massWindows = getMassWindows() massWindows.pop(2000) massWindows.pop(3000) for mass in getSortedDictKeys(massWindows): pToverMgraphs.append(TGraph()) pToverMgraphs[-1].SetNameTitle( "M=%i_pToverM" % mass, "M=%i GeV, p_{T}/M_{j#gamma} cuts" % mass) fillGraph_pToverM(pToverMgraphs[-1], dataOrMCbg, str(mass), massWindows[mass], 0.9, compileOrLoad) compileOrLoad = "load" cosThetagraphs.append(TGraph()) cosThetagraphs[-1].SetNameTitle("M=%i_cosTheta" % mass, "M=%i GeV, cos(#theta*) cuts" % mass) fillGraph_cosTheta(cosThetagraphs[-1], dataOrMCbg, str(mass), massWindows[mass], 0.9, compileOrLoad) compileOrLoad = "load" outfile = TFile("cosTheta_pToverM_lowMasses_HbbCut0.9.root", "RECREATE") outfile.cd() for graph in pToverMgraphs: graph.Write() for graph in cosThetagraphs: graph.Write() outfile.Close()
def makeOptGraphs(category, higgswindow, compileOrLoad): #cosThetaCutValue = 0.7 print "making optgraphs for category %s, window (%i-%i)" % ( category, higgswindow[0], higgswindow[1]) graphs = [] massWindows = getMassWindows() massWindows.pop(2000) massWindows.pop(3000) cutValues = getCutValues() pToverMcutValue = cutValues["ptOverM"] deltaRcutValue = cutValues["deltaR"] jetEtaCutValue = cutValues["jetEta"] phoEtaCutValue = cutValues["phEta"] for mass in getSortedDictKeys(massWindows): print "making S/rootB optGraph for mass %s" % mass masswindow = massWindows[mass] graphs.append(TGraph()) graphs[-1].SetNameTitle( "HbbOpt", "S/#sqrt{B}, M=%s, higgs window %s-%s" % (str(mass), str(higgswindow[0]), str(higgswindow[1]))) #print "Signal mass %f" % mass # just keep the name from TTree::MakeClass(), don't give it a special name samplesDirs = getSamplesDirs() fillGraph(graphs[-1], dataOrMCbg, str(mass), higgswindow, masswindow, category, pToverMcutValue, deltaRcutValue, jetEtaCutValue, phoEtaCutValue, compileOrLoad) compileOrLoad = "load" canvas = TCanvas() canvas.cd() option = "" iGraph = 0 for graph in graphs: graph.Draw(option) x = TColor() graph.SetLineColor(x.GetColor(0, 0.9 - iGraph * 0.15, iGraph * 0.15)) graph.SetFillColor(kWhite) iGraph += 1 option = "SAME" outfile = TFile( "HbbOpt_SoverRootB_higgsWindow_%i-%i.root" % (higgswindow[0], higgswindow[1]), "RECREATE") outfile.cd() canvas.BuildLegend() canvas.Draw() legend = canvas.GetPrimitive("TPave") legend.SetHeader("%s category" % category) for prim in canvas.GetListOfPrimitives(): if "HbbOpt" in prim: prim.SetTitle("H(b#bar{b})#gamma optimization: S/#sqrt{B}") prim.GetXaxis().SetRangeUser(0, 2500) canvas.Write() outfile.Close()
bck = sigAndBGinfo["B"] sbck = sigAndBGinfo["B"]*quadratureUncertainties expectedLimit = CLA(ilum, slum, eff, seff, bck, sbck) print "expected limit is: %f" % expectedLimit compileOrLoad = "load" response = {} response["compileOrLoad"]="load" response["expectedLimit"]=expectedLimit return response samplesDirs = getSamplesDirs() small3sDir = samplesDirs["small3sDir"] ddDir = samplesDirs["ddDir"] massWindows = getMassWindows() def useHbbTag(cosThetaCutValue): if testTwoMasses: del massWindows[1000] del massWindows[2000] graphs = [] compileOrLoad = "compile" for mass in massWindows.keys(): graphs.append(TGraph()) graphs[-1].SetNameTitle(str(mass), str(mass)) #for i in range(-10, 20): # TODO make some reasonable way of chosing the step size and bounds for the optimization scan # HbbCutValue = i/float(20) for i in range(0, 4): HbbCutValue = (i/float(3))-0.1 expectedLimitInfo = getExpectedLimit(small3sDir, ddDir, mass, massWindows[mass], HbbCutValue, cosThetaCutValue, compileOrLoad)