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,
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)