コード例 #1
0
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))
コード例 #2
0
ファイル: Get2DContour.py プロジェクト: kakwok/RazorAnalyzer
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
コード例 #3
0
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))
コード例 #4
0
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)
コード例 #5
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
コード例 #6
0
    #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'
コード例 #7
0
    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:
コード例 #8
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

    for (mg, mchi) in gchipairs(options.model):
コード例 #9
0
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:
コード例 #10
0
    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
コード例 #11
0
ファイル: GetCombine.py プロジェクト: shtan/RazorAnalyzer
    #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))
コード例 #12
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
コード例 #13
0
                        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
コード例 #14
0
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:
コード例 #15
0
            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)]))
        
コード例 #16
0
ファイル: Get2DContour.py プロジェクト: kakwok/RazorAnalyzer
            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