Exemplo n.º 1
0
    def create_samples(self):
        print "total samples:",len(sample_names)
        for index in range(len(sample_names)):
            sample_name = sample_names[index]
            sample = Sample(sample_name, sample_colors[index])
            
            file_name = input_dir+sample_name+"_combined.root"
            yields_dic = self.read_hist(file_name)
            print "Sample:", sample_name+";",
            if "data" in sample_name:
                sample.setData()
                self.data_sample = sample
                for region in regions:
                    nevts, nerror = yields_dic[region]
                    sample.buildHisto([nevts], region, "cuts", 0.5)
                    print region,str(round(nevts,3))+";",
                print
                continue

            sample.setNormByTheory()
            for region in regions:
                nevts, nerror = yields_dic[region]
                nevts *= weight
                nerror *= weight
                if "Dijets" in sample_name and "SR" in region:
                    if self.cut == 10:
                        nevts = 4.07
                        nerror = math.sqrt(nevts)
                    if self.cut == 14:
                        nevts = 2.42
                        nerror = math.sqrt(nevts)
                sample.buildHisto([nevts], region, "cuts", 0.5)
                sample.buildStatErrors([nerror], region, "cuts")
                print region,str(round(nevts,3))+";",
            print
            #sample.setStatConfig(True)
            sample.setFileList([in_file_path])
            ## add systematic??
            sample.addSystematic(Systematic(sample_name+"_stats",\
                        configMgr.weights, 1.2, 0.8, "user", "userOverallSys"))
            #for systematic in self.sys_common:
                #sample.addSystematic(systematic)
            self.set_norm_factor(sample)
Exemplo n.º 2
0
    print 'Setting up exclusion fit!'
    # sig_sample_list=['sig_100', 'sig_200', 'sig_300', 'sig_400', 'sig_500',
    #                  'sig_600', 'sig_700', 'sig_800', 'sig_900', 'sig_1000']
    sig_sample_list=['sig_400', 'sig_500', 'sig_600', 'sig_700', 'sig_800',
                     'sig_900', 'sig_1000', 'sig_1100']
    # sig_sample_list=['sig_900']

    sig_samples = []
    for sig in sig_sample_list:
        print 'setting up signal sample: ', sig
        exclusion_sr_config = configMgr.addFitConfigClone(background_config,
                                                          "Sig_excl_%s" % sig)

        sig_sample = Sample(sig, kViolet+5)
        sig_sample.setStatConfig(use_stat)
        sig_sample.setFileList(sig_files)
        sig_sample.setNormByTheory()
        sig_sample.setNormFactor("mu_SIG", 1., 0., 5.)

        sig_sample.weights = [nominal_weight_sig]

        # add baseline systematics to signal samples
        addSystematic([sig_sample],
                      (btag_sf_uncert_sig_list +
                      jes_uncert_list +
                      [jer_uncert]))

        # apply the correct cross section systematic to the signal
        # sample if it is available
        if sig in signal_xsec_rel_uncert:
            this_signal_xsec_uncert = Systematic(
Exemplo n.º 3
0
# **************

# Fit config instance
exclusionFitConfig = configMgr.addTopLevelXML("Exclusion")
meas = exclusionFitConfig.addMeasurement(name="NormalMeasurement", lumi=1.0, lumiErr=0.039)
meas.addPOI("mu_SIG")

# Samples
exclusionFitConfig.addSamples([topSample, wzSample, dataSample])

# Systematics
exclusionFitConfig.getSample("Top").addSystematic(topKtScale)
exclusionFitConfig.getSample("WZ").addSystematic(wzKtScale)
exclusionFitConfig.addSystematic(jes)

# Channel
srBin = exclusionFitConfig.addChannel("met/meff2Jet", ["SR"], 6, 0.1, 0.7)
srBin.useOverflowBin = True
srBin.useUnderflowBin = True
exclusionFitConfig.setSignalChannels([srBin])

sigSample = Sample("SM_GG_onestepCC_425_385_345", kPink)
sigSample.setFileList(["samples/tutorial/SusyFitterTree_p832_GG-One-Step_soft_v1.root"])
sigSample.setNormByTheory()
sigSample.setNormFactor("mu_SIG", 1.0, 0.0, 5.0)
exclusionFitConfig.addSamples(sigSample)
exclusionFitConfig.setSignalSample(sigSample)

# 2nd cloned-copy just to accomodate -l option...
exclusionFitClone = configMgr.addTopLevelXMLClone(exclusionFitConfig, "ExclusionFitClone")
Exemplo n.º 4
0
                      1.0 - theoSysWNumber, "user", "userOverallSys")

#diboson
theoSysDiboson = Systematic("theoSysDiboson", configMgr.weights, 1.5, 0.5,
                            "user", "userOverallSys")

#photon systematics in SR for Z
gammaToZSyst = Systematic("gammaToZSyst", configMgr.weights, 1.25, 0.75,
                          "user", "userOverallSys")

#-------------------------------------------
# List of samples and their plotting colours
#-------------------------------------------
dibosonSample = Sample("Diboson", kRed + 3)
dibosonSample.setTreeName("Diboson_SRAll")
dibosonSample.setFileList(dibosonFiles)
dibosonSample.setStatConfig(useStat)
dibosonSample.addSystematic(theoSysDiboson)

topSample = Sample("Top", kGreen - 9)
topSample.setTreeName("Top_SRAll")
topSample.setNormFactor("mu_Top", 1., 0., 500.)
topSample.setFileList(topFiles)
topSample.setStatConfig(useStat)

qcdSample = Sample("MCMultijet", kOrange + 2)
qcdSample.setTreeName("QCD_SRAll")
qcdSample.setNormFactor("mu_MCMultijet", 1., 0., 500.)
qcdSample.setFileList(qcdFiles)
qcdSample.setStatConfig(useStat)
Exemplo n.º 5
0
                                                 lumiErr=0.039)
        meas.addPOI("mu_SIG")

        # Samples
        exclusionFitConfig.addSamples([topSample, wzSample, dataSample])

        # Systematics
        exclusionFitConfig.getSample("Top").addSystematic(topKtScale)
        exclusionFitConfig.getSample("WZ").addSystematic(wzKtScale)
        exclusionFitConfig.addSystematic(jes)

        # Channel
        srBin = exclusionFitConfig.addChannel("met/meff2Jet", ["SR"], 6, 0.1,
                                              0.7)
        srBin.useOverflowBin = True
        srBin.useUnderflowBin = True
        exclusionFitConfig.addSignalChannels([srBin])

        sigSample = Sample(sig, kPink)
        sigSample.setFileList(
            ["samples/tutorial/SusyFitterTree_p832_GG-One-Step_soft_v1.root"])
        sigSample.setNormByTheory()
        sigSample.setNormFactor("mu_SIG", 1., 0., 5.)
        #sigSample.addSampleSpecificWeight("0.001")
        exclusionFitConfig.addSamples(sigSample)
        exclusionFitConfig.setSignalSample(sigSample)

        # Cosmetics
        srBin.minY = 0.0001
        srBin.maxY = 80.
log.info("Wait 3 seconds for you to panic if these settings are wrong")
wait(3)
log.info("No panicking detected, continuing...")

#######################################################################
# List of samples and their plotting colours
#######################################################################

#--------------------------
# Diboson
#--------------------------
# NB: note that theoSys on diboson are applied on the level of the region definitions,
# since we have one for the SR and one for the CR
dibosonSample = Sample(zlFitterConfig.dibosonSampleName, kRed+3)
dibosonSample.setTreeName("Diboson_SRAll")
dibosonSample.setFileList(dibosonFiles)
dibosonSample.setStatConfig(zlFitterConfig.useStat)

#--------------------------
# QCD
#--------------------------
qcdSample = Sample(zlFitterConfig.qcdSampleName, kOrange+2)
if zlFitterConfig.useDDQCDsample:#normWeight is 0 => remove it
    qcdSample.setTreeName("Data_SRAll")
else :
    qcdSample.setTreeName("QCD_SRAll")
qcdSample.setNormFactor("mu_"+zlFitterConfig.qcdSampleName, 1., 0., 50000000.)
qcdSample.setFileList(qcdFiles)
qcdSample.setStatConfig(zlFitterConfig.useStat)

qcdWeight = 1
Exemplo n.º 7
0
    ssChannel.addDiscoverySamples(["SS"], [1.], [0.], [100.], [kMagenta])
    discovery.addSignalChannels([ssChannel])
    dataSample.buildHisto([26.], "SS", "cuts", 0.5)

#-----------------------------
# Exclusion fits (1-step simplified model in this case)
#-----------------------------
if doExclusion:
    sigSamples = ["SM_GG_onestepCC_425_385_345"]
    dataSample.buildHisto([1., 6., 16., 3., 0.], "SS", "metmeff2Jet", 0.2, 0.1)

    for sig in sigSamples:
        myTopLvl = configMgr.addTopLevelXMLClone(bkt, "Sig_%s" % sig)

        sigSample = Sample(sig, kPink)
        sigSample.setFileList(sigFiles)
        sigSample.setNormByTheory()
        sigSample.setStatConfig(useStat)
        sigSample.setNormFactor("mu_SIG", 1., 0., 5.)
        myTopLvl.addSamples(sigSample)
        myTopLvl.setSignalSample(sigSample)

        # s1l2j using met/meff
        if doValidation:
            mm2J = myTopLvl.getChannel("met/meff2Jet", ["SS"])
            iPop = myTopLvl.validationChannels.index("SS_metmeff2Jet")
            myTopLvl.validationChannels.pop(iPop)
        else:
            mm2J = myTopLvl.addChannel("met/meff2Jet", ["SS"], 5, 0.2, 0.7)
            mm2J.useOverflowBin = True
            mm2J.addSystematic(jes)
Exemplo n.º 8
0
mcSamples = [ higgsSample, zvSample, wwSample, dataSample ]

bkgFiles   = []
topFiles   = []
zjetsFiles = []

bkgFiles.append( userOpts.bkgFile )
topFiles.append( topFile )
zjetsFiles.append( zjetsFile )

for sample in mcSamples :
    # assign higgs, zv, ww, and data to HFT_BG8TeV
    sample.setFileList(bkgFiles)
# assign top and zjets to their specific files
topSample.setFileList(topFiles)
zjetsSample.setFileList(zjetsFiles)

##############################################################
## Configure the selection                                  ##
##############################################################
userPrint("Configuring selection")
configMgr = selectionConfig(configMgr, userOpts.slepLimitN)

##############################################################
## Configure weight                                         ##
##############################################################
userPrint("Specifying Weight")
configMgr.weights = ["eventweight"]

##############################################################
Exemplo n.º 9
0
        sampleInfo = sampleDict.get(sampleID, None)
        if sampleInfo: sampleType = sampleInfo["phyType"]

    #infer type from dataset name
    if not sampleType:
        sampleType = ssUtil.guessSampleType(fName)

    if sampleType == "wgamma": wgammaFiles.append(fName)
    elif sampleType == "diboson": dibosonFiles.append(fName)
    elif sampleType == "triboson": tribosonFiles.append(fName)
    elif sampleType == "topX": topXFiles.append(fName)
    elif sampleType == "higgs": higgsFiles.append(fName)
    elif sampleType == "data": dataFiles.append(fName)
    else: print "Skipped unrecognized sample : %s" % fName

wgammaSample.setFileList(wgammaFiles)
dibosonSample.setFileList(dibosonFiles)
tribosonSample.setFileList(tribosonFiles)
topXSample.setFileList(topXFiles)
higgsSample.setFileList(higgsFiles)

qFlipSample.setFileList(dataFiles)
fLepSample.setFileList(dataFiles)
dataSample.setFileList(dataFiles)

for aSample in [
        wgammaSample, dibosonSample, tribosonSample, topXSample, higgsSample
]:
    aSample.setNormByTheory(True)
    aSample.setStatConfig(True)
    for aSys in reconSys:
theoSysW = Systematic("theoSysW", configMgr.weights, 1.0+theoSysWNumber,1.0-theoSysWNumber, "user","userOverallSys")

#diboson
theoSysDiboson = Systematic("theoSysDiboson", configMgr.weights, 1.5,0.5, "user","userOverallSys")

#photon systematics in SR for Z
gammaToZSyst = Systematic("gammaToZSyst", configMgr.weights, 1.25,0.75, "user","userOverallSys")



#-------------------------------------------
# List of samples and their plotting colours
#-------------------------------------------
dibosonSample = Sample("Diboson",kRed+3)
dibosonSample.setTreeName("Diboson_SRAll")
dibosonSample.setFileList(dibosonFiles)
dibosonSample.setStatConfig(useStat)
dibosonSample.addSystematic(theoSysDiboson)

topSample = Sample("Top",kGreen-9)
topSample.setTreeName("Top_SRAll")
topSample.setNormFactor("mu_Top",1.,0.,50000.)
topSample.setFileList(topFiles)
topSample.setStatConfig(useStat)

qcdSample = Sample("MCMultijet",kOrange+2)
qcdSample.setTreeName("QCD_SRAll")
qcdSample.setNormFactor("mu_MCMultijet",1.,0.,500.)
qcdSample.setFileList(qcdFiles)
qcdSample.setStatConfig(useStat)
Exemplo n.º 11
0
    ssChannel.addSystematic(jes)
    ssChannel.addDiscoverySamples(["SS"],[1.],[0.],[100.],[kMagenta])
    discovery.setSignalChannels([ssChannel])


#-----------------------------
# Exclusion fits (1-step simplified model in this case)
#-----------------------------
if doExclusion:
    sigSamples=["SM_GG_onestepCC_425_385_345"]
                        
    for sig in sigSamples:
        myTopLvl = configMgr.addTopLevelXMLClone(bkt,"Sig_%s"%sig)

        sigSample = Sample(sig,kPink)
        sigSample.setFileList(sigFiles)
        sigSample.setNormByTheory()
        sigSample.setStatConfig(useStat)
        sigSample.setNormFactor("mu_SIG",1.,0.,5.)                    
        myTopLvl.addSamples(sigSample)
        myTopLvl.setSignalSample(sigSample)
    

        # s1l2j using met/meff
        if doValidation:
            mm2J = myTopLvl.getChannel("met/meff2Jet",["SS"])
            iPop=myTopLvl.validationChannels.index("SS_metmeff2Jet")
            myTopLvl.validationChannels.pop(iPop)
        else:
            mm2J = myTopLvl.addChannel("met/meff2Jet",["SS"],5,0.2,0.7)
            mm2J.useOverflowBin=True
Exemplo n.º 12
0
        # ---------------------------------------------------------------- #

        doToys   = userOpts.doToys
        hasHippo = doToys and 'hippo' in userOpts.gridForToys
        hasSig   = doToys and signame in userOpts.gridForToys
        if not doToys or hasHippo or hasSig:
            exclusion = configMgr.addFitConfigClone(tlx,'TopLvlXML_Exclusion_%s'%s)
            print '!!!--- in LOOP ', s
            sigSample = Sample(s, kRed)
            sigSample.setStatConfig(useStat)
            if userOpts.splitMCSys:
                sigSample.addSystematic(sysObj.AR_mcstat_SIG)

            sigUncert = userOpts.sigUncert

            sigSample.setFileList([userOpts.sigFile])
            if sigUncert == "up":
                sigSample.setWeights(("eventweight","syst_XSUP","1.0"))
            elif sigUncert == "down":
                sigSample.setWeights(("eventweight","syst_XSDOWN","1.0"))
# TODO
            sigSample.addSystematic(sysObj.AR_all_JES_MC)
            sigSample.addSystematic(sysObj.AR_all_JER_MC)
#            sigSample.addSystematic(sysObj.AR_all_JVF_MC)
            sigSample.addSystematic(sysObj.AR_all_TES_MC)
            sigSample.addSystematic(sysObj.AR_all_BJET_MC)
            sigSample.addSystematic(sysObj.AR_all_CJET_MC)
            sigSample.addSystematic(sysObj.AR_all_BMISTAG_MC)
            sigSample.addSystematic(sysObj.AR_all_EER_MC)
            sigSample.addSystematic(sysObj.AR_all_EESLOW_MC)
            sigSample.addSystematic(sysObj.AR_all_EESMAT_MC)
Exemplo n.º 13
0
    higgsSample,
    dataSample,
]  # wjets covered by fakes
# all_samples = [ ttbarSample, vvDFSample, vvSFSample, stSample, wjetsSample, zjetsSample, fakeSample, ttvSample, dataSample ]
# all_samples = [ ttbarSample, vvSample, stSample, wjetsSample, zjetsSample, dataSample ]
# ttbar skip
# samples     = [ vvSample, stSample, wjetsSample, zjetsSample, dataSample ]
# samples_noVV     = [ ttbarSample, stSample, wjetsSample, zjetsSample ]#, dataSample ]
samples_mc_noVV = [ttbarSample, stSample, zjetsSample, ttvSample, higgsSample]
# samples_mc_noVV = [ttbarSample, stSample, wjetsSample, zjetsSample, ttvSample]
samples_data = [dataSample]
# samples     = [ ttbarSample, vvSample, stSample, wjetsSample, zjetsSample, dataSample ]
for s in samples_mc_noVV:
    s.setFileList([mc_file])
    userPrint(" --> Sample : %s at %s" % (s.name, mc_file))
vvDFSample.setFileList([vv_df_file])
userPrint(" --> Sample : %s at %s" % (vvDFSample.name, vv_df_file))
vvSFSample.setFileList([vv_sf_file])
userPrint(" --> Sample : %s at %s" % (vvSFSample.name, vv_sf_file))
fakeSample.setFileList([fake_file])
userPrint(" --> Sample : %s at %s" % (fakeSample.name, fake_file))
dataSample.setFileList([data_file])
# dysample.setFileList([drellyan_file])
# userPrint(" --> Sample : %s at %s"%(dysample.name, drellyan_file))


##########################################
## split MC sys --> need to look this one up again
runOptions.setSplitMCsys(False)

##########################################