dataArray = numpy.zeros(2)
            dataArray[1] = cdfAtZcut
        else:
            dataArray = numpy.zeros(dataPastCut.numEntries() + 2)
            dataArray[0] = 0.0
            for k in xrange(0, dataPastCut.numEntries()):
                thisX = dataPastCut.get(k).getRealValue(vtxVar)
                w.var(vtxVar).setVal(thisX)
                #dataArray[i+1]=(signalCdf.getVal()-cdfAtZcut)
                dataArray[k + 1] = (cdfAtZcut - exppol4.Integral(thisX, maxz))
                #print "thisX={0}, cdf={1}".format(thisX,dataArray[i+1])
            dataArray[dataPastCut.numEntries() + 1] = cdfAtZcut
        dataArray /= (cdfAtZcut)
        dataArray.sort()
        #print dataArray
        output = upperlimit.upperlim(CL, 1, dataArray, 0., dataArray)

        prodHist.Fill(mass, 10**eps, ap_yield * 10**eps)
        allzHist.Fill(mass, 10**eps, ap_yield * 10**eps * sig_integral)
        detectableHist.Fill(mass, 10**eps,
                            ap_yield * 10**eps * sig_integral * cdfAtZcut)
        gammactHist.Fill(mass, 10**eps, gammact)
        limit_detectable = output[
            0]  # this is a limit on number of detectable A' (past zcut, within mass cut)
        limit_allz = limit_detectable / (
            cdfAtZcut * masscut_eff
        )  # this is a limit on number of detectable A' if we didn't have zcut or mass cut
        limit_production = limit_allz / sig_integral  # limit on number of produced A'
        limit_eps = limit_production / ap_yield
        limit_scaled = limit_eps / 10**eps
        print "{0} {1} {2} {3} {4}".format(limit_detectable, limit_allz,
示例#2
0
    bkgArray = numpy.zeros(dataPastCut.numEntries() + 2)
    dataArray[0] = 0.0
    bkgArray[0] = 0.0
    for i in xrange(0, dataPastCut.numEntries()):
        thisX = dataPastCut.get(i).getRealValue("x")
        w.var("x").setVal(thisX)
        dataArray[i + 1] = (signalCdf.getVal() - cdfAtZcut)
        bkgArray[i + 1] = (bkgCdf.getVal() - bkgCdfAtZcut)
    dataArray[dataPastCut.numEntries() + 1] = 1.0 - cdfAtZcut
    bkgArray[dataPastCut.numEntries() + 1] = 1.0 - bkgCdfAtZcut
    dataArray /= (1.0 - cdfAtZcut)
    bkgArray /= (1.0 - bkgCdfAtZcut)
    dataArray.sort()
    bkgArray.sort()
    #print "zcut {0} data {1}".format(zcut,dataArray)
    output = upperlimit.upperlim(CL, 1, dataArray, 0., dataArray)
    rawlimit = output[0]
    if output[1] == 256:
        rawlimit = upperlimit.upperlimcom.exclude_low[0]
    limit = rawlimit / (1.0 - cdfAtZcut)
    limitArr.append(limit)

    outputBkg = upperlimit.upperlim(CL, 1, dataArray, zcut_count, bkgArray)
    #print outputBkg
    rawlimitBkg = outputBkg[0]
    if outputBkg[1] == 256:
        rawlimitBkg = upperlimit.upperlimcom.exclude_low[0]
    if outputBkg[1] != 0:
        print outputBkg
    bkglimit = rawlimitBkg / (1.0 - cdfAtZcut)
    limitBkgArr.append(bkglimit)