def fix_hist_byhand(hist, model, box, clsType): if 'Obs' in clsType: for (mg,mchi) in gchipairs(model): obs = hist.GetBinContent(hist.FindBin(mg,mchi)) exp = xsecUL['Exp'].GetBinContent(xsecUL['Exp'].FindBin(mg,mchi)) expPlus2 = xsecUL['ExpPlus2'].GetBinContent(xsecUL['ExpPlus2'].FindBin(mg,mchi)) expPlus = xsecUL['ExpPlus'].GetBinContent(xsecUL['ExpPlus'].FindBin(mg,mchi)) expMinus = xsecUL['ExpMinus'].GetBinContent(xsecUL['ExpMinus'].FindBin(mg,mchi)) expMinus2 = xsecUL['ExpMinus2'].GetBinContent(xsecUL['ExpMinus2'].FindBin(mg,mchi)) if hist.GetBinContent(hist.FindBin(mg,mchi))==0: if (mg,mchi) not in toFix: toFix.append((mg,mchi))
def fix_hist_byhand(hist, model, box, clsType): if 'Obs' in clsType: for (mg, mchi) in gchipairs(model): obs = hist.GetBinContent(hist.FindBin(mg, mchi)) exp = xsecUL['Exp'].GetBinContent(xsecUL['Exp'].FindBin(mg, mchi)) expPlus2 = xsecUL['ExpPlus2'].GetBinContent( xsecUL['ExpPlus2'].FindBin(mg, mchi)) expPlus = xsecUL['ExpPlus'].GetBinContent( xsecUL['ExpPlus'].FindBin(mg, mchi)) expMinus = xsecUL['ExpMinus'].GetBinContent( xsecUL['ExpMinus'].FindBin(mg, mchi)) expMinus2 = xsecUL['ExpMinus2'].GetBinContent( xsecUL['ExpMinus2'].FindBin(mg, mchi)) if hist.GetBinContent(hist.FindBin(mg, mchi)) == 0: if (mg, mchi) not in toFix: toFix.append((mg, mchi)) elif obs < expPlus2 or obs > expMinus2: hist.SetBinContent(hist.FindBin(mg, mchi), exp) #hist.SetBinContent(hist.FindBin(mg,mchi),0) if (mg, mchi) not in toFix: toFix.append((mg, mchi)) if model == "T1tttt" and box == "MultiJet": #hist.SetBinContent(hist.FindBin(975,700),0) pass if model == "T1tttt" and box == "MuMultiJet_EleMultiJet_MultiJet": #hist.SetBinContent(hist.FindBin(1650,650),0) #hist.SetBinContent(hist.FindBin(1600,200),0) #hist.SetBinContent(hist.FindBin(1600,50),0) #hist.SetBinContent(hist.FindBin(1550,200),0) #for mg in range(1450,1550,50): # for mchi in range(650,800,50): # hist.SetBinContent(hist.FindBin(mg,mchi),0) #hist.SetBinContent(hist.FindBin(975,725),0) pass if model == "T1ttbb" or model == "T1bri" or "T1x" in model: #for x in range(600,2000,25): # hist.SetBinContent(hist.FindBin(x,0),hist.GetBinContent(hist.FindBin(x,100))) # hist.SetBinContent(hist.FindBin(x,50),hist.GetBinContent(hist.FindBin(x,100))) #hist.SetBinContent(hist.FindBin(1650,550),0) #hist.SetBinContent(hist.FindBin(1700,500),0) #hist.SetBinContent(hist.FindBin(1700,600),0) #hist.SetBinContent(hist.FindBin(1600,600),0) if model == "T1x0p00y0p50": #hist.SetBinContent(hist.FindBin(1500,0),0) #hist.SetBinContent(hist.FindBin(1550,0),0) #for mg in range(1000,1300,25): # for mchi in range(0,mg,25): # hist.SetBinContent(hist.FindBin(mg,mchi),0) pass
def fix_hist_byhand(hist, model, box, clsType): if 'Obs' in clsType: for (mg, mchi) in gchipairs(model): obs = hist.GetBinContent(hist.FindBin(mg, mchi)) exp = xsecUL['Exp'].GetBinContent(xsecUL['Exp'].FindBin(mg, mchi)) expPlus2 = xsecUL['ExpPlus2'].GetBinContent( xsecUL['ExpPlus2'].FindBin(mg, mchi)) expPlus = xsecUL['ExpPlus'].GetBinContent( xsecUL['ExpPlus'].FindBin(mg, mchi)) expMinus = xsecUL['ExpMinus'].GetBinContent( xsecUL['ExpMinus'].FindBin(mg, mchi)) expMinus2 = xsecUL['ExpMinus2'].GetBinContent( xsecUL['ExpMinus2'].FindBin(mg, mchi)) if hist.GetBinContent(hist.FindBin(mg, mchi)) == 0: if (mg, mchi) not in toFix: toFix.append((mg, mchi))
def fix_hist_byhand(hist, model, box, clsType): if 'Obs' in clsType: for (mg,mchi) in gchipairs(model): obs = hist.GetBinContent(hist.FindBin(mg,mchi)) exp = xsecUL['Exp'].GetBinContent(xsecUL['Exp'].FindBin(mg,mchi)) expPlus2 = xsecUL['ExpPlus2'].GetBinContent(xsecUL['ExpPlus2'].FindBin(mg,mchi)) expPlus = xsecUL['ExpPlus'].GetBinContent(xsecUL['ExpPlus'].FindBin(mg,mchi)) expMinus = xsecUL['ExpMinus'].GetBinContent(xsecUL['ExpMinus'].FindBin(mg,mchi)) expMinus2 = xsecUL['ExpMinus2'].GetBinContent(xsecUL['ExpMinus2'].FindBin(mg,mchi)) if hist.GetBinContent(hist.FindBin(mg,mchi))==0: if (mg,mchi) not in toFix: toFix.append((mg,mchi)) elif obs<expPlus2 or obs>expMinus2: hist.SetBinContent(hist.FindBin(mg,mchi),exp) #hist.SetBinContent(hist.FindBin(mg,mchi),0) if (mg,mchi) not in toFix: toFix.append((mg,mchi)) if model == "T1tttt" and box == "MultiJet": hist.SetBinContent(hist.FindBin(975,700),0) if model == "T1tttt" and box == "MuMultiJet_EleMultiJet_MultiJet": #hist.SetBinContent(hist.FindBin(1650,650),0) #hist.SetBinContent(hist.FindBin(1600,200),0) #hist.SetBinContent(hist.FindBin(1600,50),0) #hist.SetBinContent(hist.FindBin(1550,200),0) #for mg in range(1450,1550,50): # for mchi in range(650,800,50): # hist.SetBinContent(hist.FindBin(mg,mchi),0) #hist.SetBinContent(hist.FindBin(975,725),0) pass if model == "T1ttbb" or model=="T1bri" or "T1x" in model: #for x in range(600,2000,25): # hist.SetBinContent(hist.FindBin(x,0),hist.GetBinContent(hist.FindBin(x,100))) # hist.SetBinContent(hist.FindBin(x,50),hist.GetBinContent(hist.FindBin(x,100))) hist.SetBinContent(hist.FindBin(1650,550),0) hist.SetBinContent(hist.FindBin(1700,500),0) hist.SetBinContent(hist.FindBin(1700,600),0) hist.SetBinContent(hist.FindBin(1600,600),0) if model == "T1x0p00y0p50": hist.SetBinContent(hist.FindBin(1500,0),0) hist.SetBinContent(hist.FindBin(1550,0),0)
help='save workspace in combine output file') (options, args) = parser.parse_args() boxes = options.box.split('_') nJobs = 0 donePairs = [] if options.doneFile is not None: if options.signif: combineMethod = 'ProfileLikelihood' else: combineMethod = 'Asymptotic' with open(options.doneFile, 'r') as f: allFiles = [line.replace('\n', '') for line in f.readlines()] for (mg, mchi) in gchipairs(options.model): outputname = 'higgsCombineMADD_%s_SMS-%s_%i_%i.%s.mH120.root' % ( options.box, options.model, mg, mchi, combineMethod) if outputname in allFiles: donePairs.append((mg, mchi)) thyXsec = {} if "T1" in options.model or "T5" in options.model: xsecFile = 'data/gluino13TeV.txt' if "T2" in options.model: xsecFile = 'data/stop13TeV.txt' for line in open(xsecFile, 'r'): for (mg, mchi) in gchipairs(options.model): if str(int(mg)) == line.split(',')[0]: thyXsec[(mg, mchi)] = float(line.split(',')[1]) #pb
#get theory cross sections and errors for mg in range(100, 2025, 25): for line in open(refXsecFile, 'r'): line = line.replace('\n', '') if str(mg) == line.split(',')[0]: thyXsec[mg] = float(line.split(',')[1]) #pb thyXsecErr[mg] = 0.01 * float(line.split(',')[2]) #significance histogram sigHist = None if doSignificance: sigHist = rt.TH2F('sigHist', 'sigHist', 56, 600, 2000, 72, 0, 1800) #get combine results for mg, mchi in gchipairs(model): print "Looking for", mg, mchi refXsec = 1.e3 * thyXsec[mg] modelName = 'SMS-' + ('_'.join([model, str(mg), str(mchi)])) #open file if present combineName = 'MADD_' + options.box + '_' + modelName if doSignificance and doHybridNew: prefix = 'higgsCombineSignif' suffix = 'HybridNew' elif doHybridNew: prefix = 'higgsCombineToys' suffix = 'HybridNew' elif doSignificance: prefix = 'higgsCombine' suffix = 'ProfileLikelihood'
parser.add_argument('--done-file', dest="doneFile", help="file containing output file names") parser.add_argument('--combined-with-boost', action='store_true', help='whether to combine with boosted analysis') args = parser.parse_args() nJobs = 0 donePairs = [] if args.doneFile is not None: combineMethod = 'ProfileLikelihood' with open(args.doneFile, 'r') as f: allFiles = [line.replace('\n', '') for line in f.readlines()] for (mg, mchi) in gchipairs(args.model): outputname = 'higgsCombineMADDSignificance_SMS-%s_%i_%i.%s.mH120.root' % ( args.model, mg, mchi, combineMethod) if args.combined_with_boost: outputname = outputname.replace('MADD', 'RazorInclusiveBoost') if outputname in allFiles: donePairs.append((mg, mchi)) submodels = sms_models[args.model].submodels if submodels is None: pairs = gchipairs(args.model) else: pairs = [] for submodel in submodels: pairs += gchipairs(submodel) for (mg, mchi) in pairs:
help='save workspace in combine output file') (options,args) = parser.parse_args() boxes = options.box.split('_') nJobs = 0 donePairs = [] if options.doneFile is not None: if options.signif: combineMethod = 'ProfileLikelihood' else: combineMethod = 'Asymptotic' with open(options.doneFile,'r') as f: allFiles = [ line.replace('\n','') for line in f.readlines()] for (mg, mchi) in gchipairs(options.model): outputname = 'higgsCombineMADD_%s_SMS-%s_%i_%i.%s.mH120.root'%(options.box,options.model,mg,mchi,combineMethod) if outputname in allFiles: donePairs.append((mg,mchi)) thyXsec = {} if "T1" in options.model or "T5" in options.model: xsecFile = 'data/gluino13TeV.txt' if "T2" in options.model: xsecFile = 'data/stop13TeV.txt' for line in open(xsecFile,'r'): for (mg, mchi) in gchipairs(options.model): if str(int(mg))==line.split(',')[0]: thyXsec[(mg,mchi)] = float(line.split(',')[1]) #pb for (mg, mchi) in gchipairs(options.model):
from framework import Config from GChiPairs import gchipairs from SidebandMacro import LUMI from CheckSignalContamination import checkSignalContamination def usage(): print "usage: ScanSignalContamination.py modelName" if __name__ == '__main__': rt.gROOT.SetBatch() if len(sys.argv) != 2: usage() sys.exit() model = sys.argv[1] pairs = gchipairs(model) contam = rt.TH2F("contam", "Signal contamination", 80, 0, 2000, 40, 0, 1000) for p in pairs: mLSP = p[1] if 'T2' in model: mGluino = -1 mStop = p[0] outFileName = 'contamination_%s_%d_%d.root'%(model,mStop,mLSP) else: mGluino = p[0] mStop = -1 outFileName = 'contamination_%s_%d_%d.root'%(model,mGluino,mLSP) try: h = checkSignalContamination("config/run2_20151229_ControlRegion.config", outDir='SMSPlots', lumi=LUMI, box="TTJetsSingleLeptonControlRegion", model=model, mGluino=mGluino, mStop=mStop, mLSP=mLSP, mergeBins=True, treeName="RazorInclusive") except:
parser.add_argument('--no-sub',dest="noSub",action='store_true', help="no submission") parser.add_argument('--queue',default="1nd", help="queue: 1nh, 8nh, 1nd, etc.") parser.add_argument('--done-file',dest="doneFile", help="file containing output file names") args = parser.parse_args() nJobs = 0 donePairs = [] if args.doneFile is not None: combineMethod = 'Asymptotic' with open(args.doneFile,'r') as f: allFiles = [line.replace('\n','') for line in f.readlines()] for (mg, mchi) in gchipairs(args.model): outputname = 'higgsCombineMADD_%s_SMS-%s_%i_%i.%s.mH120.root'%( '_'.join(args.boxes),args.model,mg,mchi,combineMethod) if outputname in allFiles: donePairs.append((mg,mchi)) submodels = sms_models[args.model].submodels if submodels is None: pairs = gchipairs(args.model) else: pairs = [] for submodel in submodels: pairs += gchipairs(submodel) for (mg, mchi) in pairs: if (mg, mchi) in donePairs: print (mg,mchi),"is already done; skipping" continue
#mgMin, mgMax, mchiMin, mchiMax, binWidth, nRebins, xsecMin, xsecMax, diagonalOffset, smoothing = getModelSettings(model) #sigHist = rt.TH2D("significance","significance",int((mgMax-mgMin)/binWidth),mgMin, mgMax,int((mchiMax-mchiMin)/binWidth), mchiMin, mchiMax) thyXsec = {} thyXsecErr = {} if refXsecFile is not None: print "INFO: Input ref xsec file!" for mg in range(600, 2025, 25): for line in open(refXsecFile, 'r'): line = line.replace('\n', '') if str(mg) == line.split(',')[0]: thyXsec[mg] = float(line.split(',')[1]) #pb thyXsecErr[mg] = 0.01 * float(line.split(',')[2]) for mg, mchi in gchipairs(model): if refXsecFile is not None: refXsec = 1.e3 * thyXsec[mg] #print "INFO: ref xsec taken to be: %s mass %d, xsec = %f fb"%(gluinoHistName, mg, refXsec) if doSignificance and doHybridNew: if not glob.glob( getFileName("higgsCombineSignif", mg, mchi, boxInput, model, lumi, btag, directory, "HybridNew", 0)): continue print "INFO: opening %s" % (getFileName( "higgsCombineSignif", mg, mchi, boxInput, model, lumi, btag, directory, "HybridNew", 0)) tFile = rt.TFile.Open( getFileName("higgsCombineSignif", mg, mchi, boxInput, model, lumi, btag, directory, "HybridNew", 0))
for mg in range(int(mgMin-12.5),int(mgMax+binWidth-12.5),int(binWidth)): for mchi in range(int(mchiMin-12.5),int(mchiMax+binWidth-12.5),int(binWidth)): s.mg = mg s.mchi = mchi xsecULObs = xsecUL["Obs"].GetBinContent(xsecUL["Obs"].FindBin(mg,mchi)) xsecULExp = xsecUL["Exp"].GetBinContent(xsecUL["Exp"].FindBin(mg,mchi)) xsecULExpPlus = xsecUL["ExpMinus"].GetBinContent(xsecUL["ExpMinus"].FindBin(mg,mchi)) xsecULExpMinus = xsecUL["ExpPlus"].GetBinContent(xsecUL["ExpPlus"].FindBin(mg,mchi)) xsecULExpPlus2 = xsecUL["ExpMinus2"].GetBinContent(xsecUL["ExpMinus2"].FindBin(mg,mchi)) xsecULExpMinus2 = xsecUL["ExpPlus2"].GetBinContent(xsecUL["ExpPlus2"].FindBin(mg,mchi)) exec 's.xsecUL%i = xsecULObs'%(ixsecUL+0) exec 's.xsecUL%i = xsecULExpPlus2'%(ixsecUL+1) exec 's.xsecUL%i = xsecULExpPlus'%(ixsecUL+2) exec 's.xsecUL%i = xsecULExp'%(ixsecUL+3) exec 's.xsecUL%i = xsecULExpMinus'%(ixsecUL+4) exec 's.xsecUL%i = xsecULExpMinus2'%(ixsecUL+5) if xsecULObs > 0.: smoothXsecTree.Fill() smoothOutFile.cd() smoothXsecTree.Write() smoothOutFile.Close() print len(gchipairs(model)), "total points" print len(toFix), "points to fix" print toFix
help="no shape systematic uncertainties") parser.add_argument('--save-workspace', dest='saveWorkspace', action='store_true', help='save workspace in output file') args = parser.parse_args() boxes = args.box.split('_') nJobs = 0 donePairs = [] if args.doneFile is not None: combineMethod = 'Asymptotic' with open(args.doneFile, 'r') as f: allFiles = [line.replace('\n', '') for line in f.readlines()] for (mg, mchi) in gchipairs(args.model): outputname = 'higgsCombineMADD_%s_SMS-%s_%i_%i.%s.mH120.root' % ( args.box, args.model, mg, mchi, combineMethod) if outputname in allFiles: donePairs.append((mg, mchi)) thyXsec = {} if "T1" in args.model or "T5" in args.model: xsecFile = 'data/gluino13TeV.txt' else: xsecFile = 'data/stop13TeV.txt' for line in open(xsecFile, 'r'): for (mg, mchi) in gchipairs(args.model): if str(int(mg)) == line.split(',')[0]: thyXsec[(mg, mchi)] = float(line.split(',')[1]) #pb
from SidebandMacro import LUMI from CheckSignalContamination import checkSignalContamination def usage(): print "usage: ScanSignalContamination.py modelName" if __name__ == '__main__': rt.gROOT.SetBatch() if len(sys.argv) != 2: usage() sys.exit() model = sys.argv[1] pairs = gchipairs(model) contam = rt.TH2F("contam", "Signal contamination", 80, 0, 2000, 40, 0, 1000) for p in pairs: mLSP = p[1] if 'T2' in model: mGluino = -1 mStop = p[0] outFileName = 'contamination_%s_%d_%d.root' % (model, mStop, mLSP) else: mGluino = p[0] mStop = -1 outFileName = 'contamination_%s_%d_%d.root' % (model, mGluino, mLSP) try:
line = line.replace('\n','') if str(mg)==line.split(',')[0]: thyXsec[mg] = float(line.split(',')[1]) #pb thyXsecErr[mg] = 0.01*float(line.split(',')[2]) #significance histogram sigHist = None if doSignificance: sms = sms_models[model] sigHist = rt.TH2F('sigHist','sigHist',50,sms.mgMin,sms.mgMax, 50,sms.mchiMin,sms.mchiMax) #get combine results submodels = sms_models[model].submodels if submodels is None: pairs = gchipairs(model) else: pairs = [] for submodel in submodels: pairs += gchipairs(submodel) for mg, mchi in pairs: print "Looking for",mg,mchi try: refXsec = 1.e3*thyXsec[mg] except KeyError: refXsec, interpLow, interpHigh = interpolateXsec(thyXsec, mg) print ("Warning: couldn't find cross section for mass {} GeV." "Interpolating between {} and {}.".format( mg, interpLow, interpHigh)) modelName = 'SMS-'+('_'.join([model, str(mg), str(mchi)]))
xsecULObs = xsecUL["Obs"].GetBinContent(xsecUL["Obs"].FindBin( mg, mchi)) xsecULExp = xsecUL["Exp"].GetBinContent(xsecUL["Exp"].FindBin( mg, mchi)) xsecULExpPlus = xsecUL["ExpMinus"].GetBinContent( xsecUL["ExpMinus"].FindBin(mg, mchi)) xsecULExpMinus = xsecUL["ExpPlus"].GetBinContent( xsecUL["ExpPlus"].FindBin(mg, mchi)) xsecULExpPlus2 = xsecUL["ExpMinus2"].GetBinContent( xsecUL["ExpMinus2"].FindBin(mg, mchi)) xsecULExpMinus2 = xsecUL["ExpPlus2"].GetBinContent( xsecUL["ExpPlus2"].FindBin(mg, mchi)) exec 's.xsecUL%i = xsecULObs' % (ixsecUL + 0) exec 's.xsecUL%i = xsecULExpPlus2' % (ixsecUL + 1) exec 's.xsecUL%i = xsecULExpPlus' % (ixsecUL + 2) exec 's.xsecUL%i = xsecULExp' % (ixsecUL + 3) exec 's.xsecUL%i = xsecULExpMinus' % (ixsecUL + 4) exec 's.xsecUL%i = xsecULExpMinus2' % (ixsecUL + 5) if xsecULObs > 0.: smoothXsecTree.Fill() smoothOutFile.cd() smoothXsecTree.Write() smoothOutFile.Close() print len(gchipairs(model)), "total points" print len(toFix), "points to fix" print toFix