Exemple #1
0
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
Exemple #2
0
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()
Exemple #3
0
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()
Exemple #4
0
  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)