예제 #1
0
def refinedDataSets(dirs, dataEra, searchMode, analysis, optMode, removeTTJets):
    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra,  searchMode=searchMode, analysisName=analysis, optimizationMode=optMode)

    datasets.updateNAllEventsToPUWeighted()
    datasets.loadLuminosities()

    datasets.remove(filter(lambda name: "TTToHplus" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "Hplus_taunu_t-channel" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "Hplus_taunu_tW-channel" in name, datasets.getAllDatasetNames()))
    if removeTTJets:
        datasets.remove(filter(lambda name: "TTJets_SemiLept" in name, datasets.getAllDatasetNames()))
        datasets.remove(filter(lambda name: "TTJets_FullLept" in name, datasets.getAllDatasetNames()))
        datasets.remove(filter(lambda name: "TTJets_Hadronic" in name, datasets.getAllDatasetNames()))

    plots.mergeRenameReorderForDataMC(datasets)

    datasets.merge("EWK", [
        "TTJets",
        "WJets",
        "DYJetsToLL",
        "SingleTop",
        "Diboson"
        ])

    return datasets
def main(argv):
    interactive = True
    interactive = False
    #    HISTONAME = "TauIdJets"
#    HISTONAME = "TauIdBtag"
    HISTONAME = "TauIdBveto"
    
    dirs = []
    if len(sys.argv) < 2:
	usage()

    dirs.append(sys.argv[1])

    

    # Disable batch mode here to have the interactivity (see also the line with 'raw_input') below
    if interactive:
        ROOT.gROOT.SetBatch(False)

    # Create all datasets from a multicrab task
#    datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters)
#    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra)
    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra, analysisbaseName = "signalAnalysisInvertedTau")
  
    # As we use weighted counters for MC normalisation, we have to
    # update the all event count to a separately defined value because
    # the analysis job uses skimmed pattuple as an input
    datasets.updateNAllEventsToPUWeighted()

    # Read integrated luminosities of data datasets from lumi.json
    datasets.loadLuminosities()

    # Include only 120 mass bin of HW and HH datasets
    datasets.remove(filter(lambda name: "TTToHplus" in name and not "M120" in name, datasets.getAllDatasetNames()))

    # Default merging nad ordering of data and MC datasets
    # All data datasets to "Data"
    # All QCD datasets to "QCD"
    # All single top datasets to "SingleTop"
    # WW, WZ, ZZ to "Diboson"
    plots.mergeRenameReorderForDataMC(datasets)

    # Set BR(t->H) to 0.2, keep BR(H->tau) in 1
    xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.05, br_Htaunu=1)

    # Merge WH and HH datasets to one (for each mass bin)
    # TTToHplusBWB_MXXX and TTToHplusBHminusB_MXXX to "TTToHplus_MXXX"
    plots.mergeWHandHH(datasets)

    # Apply TDR style
    style = tdrstyle.TDRStyle()

    #dataMCExample(datasets)
    distComparison(datasets)

    # Script execution can be paused like this, it will continue after
    # user has given some input (which must include enter)
    if interactive:
        raw_input("Hit enter to continue")
def main():

    if len(sys.argv) < 2:
        usage()

    dirs = []
    dirs.append(sys.argv[1])
        
    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName=analysis)
    datasets.loadLuminosities()
    datasets.updateNAllEventsToPUWeighted()

    plots.mergeRenameReorderForDataMC(datasets)

    datasets.merge("EWK", [
                    "TTJets",
                    "WJets",
                    "DYJetsToLL",
                    "SingleTop",
                    "Diboson"
                    ])
    style = tdrstyle.TDRStyle()

    plot = plots.PlotBase()

    legends = {}
    name_re = re.compile("SelectedTau_pT_(?P<name>\S+)")
    for i,histo in enumerate(HISTONAMES):
        plot.histoMgr.appendHisto(purityGraph(i,datasets,histo))
        name = histo
        match = name_re.search(histo)
        if match:
            name = match.group("name")
        legends["Purity%s"%i] = name

    plot.createFrame("purity", opts={"xmin": 40, "ymin": 0., "ymax": 1.2})
    plot.frame.GetXaxis().SetTitle("tau p_{T} (GeV/c)")
    plot.frame.GetYaxis().SetTitle("Purity")
    plot.setEnergy(datasets.getEnergies())
    plot.setLuminosity(datasets.getDataset("Data").getLuminosity())
    
    plot.histoMgr.setHistoLegendLabelMany(legends)
    plot.setLegend(histograms.createLegend(0.6, 0.3, 0.8, 0.4))

    plot.addStandardTexts()

    plot.draw()
    plot.save()
예제 #4
0
def getDatasets(multicrabPath, myDataEra):
    '''
    def getDatasets(multicrabPath):
    '''

    ### Get the ROOT files for all datasets, merge datasets and reorder them
    print "*** Obtaining datasets from: %s" % (multicrabPath)
    datasets = dataset.getDatasetsFromMulticrabDirs(multicrabPath, dataEra=myDataEra)

    ### Print PSets used in ROOT-file generation
    printPSet(bPrintPSet, folderName=myAnalysis+myDataEra)
    
    ### Take care of PU weighting, luminosity, signal merging etc... of the datatasets
    manageDatasets(datasets)

    return datasets
def getDatasets(multicrabPath, myDataEra):
    '''
    def getDatasets(multicrabPath):
    '''

    ### Get the ROOT files for all datasets, merge datasets and reorder them
    print "*** Obtaining datasets from: %s" % (multicrabPath)
    datasets = dataset.getDatasetsFromMulticrabDirs(multicrabPath, dataEra=myDataEra)

    ### Print PSets used in ROOT-file generation
    printPSet(bPrintPSet, folderName=myAnalysis+myDataEra)
    
    ### Take care of PU weighting, luminosity, signal merging etc... of the datatasets
    manageDatasets(datasets)

    return datasets
예제 #6
0
def main():

    if len(sys.argv) < 2:
        usage()

    dirs = []
    dirs.append(sys.argv[1])

    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,
                                                    dataEra=dataEra,
                                                    searchMode=searchMode,
                                                    analysisName=analysis)
    datasets.loadLuminosities()
    datasets.updateNAllEventsToPUWeighted()

    plots.mergeRenameReorderForDataMC(datasets)

    datasets.merge("EWK",
                   ["TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson"])
    style = tdrstyle.TDRStyle()

    plot = plots.PlotBase()

    legends = {}
    name_re = re.compile("SelectedTau_pT_(?P<name>\S+)")
    for i, histo in enumerate(HISTONAMES):
        plot.histoMgr.appendHisto(purityGraph(i, datasets, histo))
        name = histo
        match = name_re.search(histo)
        if match:
            name = match.group("name")
        legends["Purity%s" % i] = name

    plot.createFrame("purity", opts={"xmin": 40, "ymin": 0., "ymax": 1.2})
    plot.frame.GetXaxis().SetTitle("tau p_{T} (GeV/c)")
    plot.frame.GetYaxis().SetTitle("Purity")
    plot.setEnergy(datasets.getEnergies())
    plot.setLuminosity(datasets.getDataset("Data").getLuminosity())

    plot.histoMgr.setHistoLegendLabelMany(legends)
    plot.setLegend(histograms.createLegend(0.6, 0.3, 0.8, 0.4))

    plot.addStandardTexts()

    plot.draw()
    plot.save()
예제 #7
0
def refinedDataSets(dirs, dataEra, searchMode, analysis, optMode,
                    removeTTJets):
    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,
                                                    dataEra=dataEra,
                                                    searchMode=searchMode,
                                                    analysisName=analysis,
                                                    optimizationMode=optMode)

    datasets.updateNAllEventsToPUWeighted()
    datasets.loadLuminosities()

    datasets.remove(
        filter(lambda name: "TTToHplus" in name,
               datasets.getAllDatasetNames()))
    datasets.remove(
        filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))
    datasets.remove(
        filter(lambda name: "Hplus_taunu_t-channel" in name,
               datasets.getAllDatasetNames()))
    datasets.remove(
        filter(lambda name: "Hplus_taunu_tW-channel" in name,
               datasets.getAllDatasetNames()))
    if removeTTJets:
        datasets.remove(
            filter(lambda name: "TTJets_SemiLept" in name,
                   datasets.getAllDatasetNames()))
        datasets.remove(
            filter(lambda name: "TTJets_FullLept" in name,
                   datasets.getAllDatasetNames()))
        datasets.remove(
            filter(lambda name: "TTJets_Hadronic" in name,
                   datasets.getAllDatasetNames()))

    plots.mergeRenameReorderForDataMC(datasets)

    datasets.merge("EWK",
                   ["TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson"])

    return datasets
예제 #8
0
def main(argv):

#    HISTONAME = "TauIdJets"
#    HISTONAME = "TauIdJetsCollinear"
#    HISTONAME = "TauIdBtag"
#    HISTONAME = "TauIdBvetoCollinear"
#    HISTONAME = "TauIdBveto"
    HISTONAME = "TauIdAfterCollinearCuts"
   
    dirs = []
    if len(sys.argv) < 2:
	usage()

    dirs.append(sys.argv[1])



    
    # Create all datasets from a multicrab task
    # datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau")
    #datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau")
    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra,  searchMode=searchMode, analysisName=analysis, optimizationMode=optimizationMode)
#    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra)

    # Check multicrab consistency
    consistencyCheck.checkConsistencyStandalone(dirs[0],datasets,name="QCD inverted")
   
    # As we use weighted counters for MC normalisation, we have to
    # update the all event count to a separately defined value because
    # the analysis job uses skimmed pattuple as an input
    datasets.updateNAllEventsToPUWeighted()

    # Read integrated luminosities of data datasets from lumi.json
    datasets.loadLuminosities()

    # Include only 120 mass bin of HW and HH datasets
    datasets.remove(filter(lambda name: "TTToHplus" in name and not "M120" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "Hplus_taunu_t-channel" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "Hplus_taunu_tW-channel" in name, datasets.getAllDatasetNames()))
    # Default merging nad ordering of data and MC datasets
    # All data datasets to "Data"
    # All QCD datasets to "QCD"
    # All single top datasets to "SingleTop"
    # WW, WZ, ZZ to "Diboson"
    plots.mergeRenameReorderForDataMC(datasets)

    # Set BR(t->H) to 0.05, keep BR(H->tau) in 1
    xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.05, br_Htaunu=1)

    # Merge WH and HH datasets to one (for each mass bin)
    # TTToHplusBWB_MXXX and TTToHplusBHminusB_MXXX to "TTToHplus_MXXX"
    plots.mergeWHandHH(datasets)

    datasets.merge("EWK", [
	    "TTJets",
            "WJets",
            "DYJetsToLL",
            "SingleTop",
            "Diboson"
            ])

    # Apply TDR style
    style = tdrstyle.TDRStyle()
    style.setOptStat(True)

    invertedQCD = InvertedTauID()
    invertedQCD.setLumi(datasets.getDataset("Data").getLuminosity())
    invertedQCD.setInfo([dataEra,searchMode,HISTONAME])

    histonames = datasets.getDataset("Data").getDirectoryContent("baseline/METBaseline"+HISTONAME)
    bins = []
    binLabels = []
    for histoname in histonames:
        bins.append(histoname.replace("METBaseline"+HISTONAME,""))
        title = datasets.getDataset("Data").getDatasetRootHisto("baseline/METBaseline"+HISTONAME+"/"+histoname).getHistogram().GetTitle()
        title = title.replace("METBaseline"+HISTONAME,"")
        title = title.replace("#tau p_{T}","taup_T")
        title = title.replace("#tau eta","taueta")
        title = title.replace("<","lt")
        title = title.replace(">","gt")
        title = title.replace("=","eq")
        title = title.replace("..","to")
        title = title.replace(".","p")
        title = title.replace("/","_")
        binLabels.append(title)

    print
    print "Histogram bins available",bins

#    bins = ["Inclusive"]
#    bins = ["taup_Tleq50","taup_Teq50to60"]
    print "Using bins              ",bins
    print
    print "Bin labels"
    for i in range(len(binLabels)):
        line = bins[i]
        while len(line) < 10:
            line += " "
        line += ": "+binLabels[i]
        print line
    print

    for i,bin in enumerate(bins):

	invertedQCD.setLabel(binLabels[i])

        metBase = plots.DataMCPlot(datasets, "baseline/METBaseline"+HISTONAME+"/METBaseline"+HISTONAME+bin)
        metInver = plots.DataMCPlot(datasets, "Inverted/METInverted"+HISTONAME+"/METInverted"+HISTONAME+bin)
        # Rebin before subtracting
        metBase.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5))
        metInver.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5))
        
        metInverted_data = metInver.histoMgr.getHisto("Data").getRootHisto().Clone("Inverted/METInverted"+HISTONAME+"/METInverted"+HISTONAME+bin)
        metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone("Inverted/METInverted"+HISTONAME+"/METInverted"+HISTONAME+bin)
        metBase_data = metBase.histoMgr.getHisto("Data").getRootHisto().Clone("Baseline/METBaseLine"+HISTONAME+"/METBaseline"+HISTONAME+bin)
        metBase_EWK = metBase.histoMgr.getHisto("EWK").getRootHisto().Clone("Baseline/METBaseLine"+HISTONAME+"/METBaseline"+HISTONAME+bin)

        metBase_QCD = metBase_data.Clone("QCD")
        metBase_QCD.Add(metBase_EWK,-1)

        metInverted_QCD = metInverted_data.Clone("QCD")
        metInverted_QCD.Add(metInverted_EWK,-1)

        metInverted_data = addlabels(metInverted_data)
        metInverted_EWK  = addlabels(metInverted_EWK)
        metBase_data     = addlabels(metBase_data)
        metBase_EWK      = addlabels(metBase_EWK)
        metInverted_QCD  = addlabels(metInverted_QCD)

        invertedQCD.plotHisto(metInverted_data,"inverted")
        invertedQCD.plotHisto(metInverted_EWK,"invertedEWK")
        invertedQCD.plotHisto(metBase_data,"baseline")
        invertedQCD.plotHisto(metBase_EWK,"baselineEWK")


        fitOptions = "LRB"
#        fitOptions = "RB"
#        fitOptions = "IEB"

#        ROOT.TVirtualFitter.SetDefaultFitter("Minuit")
#        ROOT.TVirtualFitter.SetDefaultFitter("Minuit2")
#        fitOptions = "Q"   # Chi2 Fit
#        fitOptions = "VEB"  # Chi2 Fit with Minos Error
#        fitOptions = "IEB"  # Chi2 Fit with Integral and Minos
#        fitOptions = "VLEB" # Likelihood Fit with Minos Error

#        ROOT.TVirtualFitter.SetDefaultFitter("Fumili")
#        ROOT.TVirtualFitter.SetDefaultFitter("Fumili2")
#        fitOptions = "Q"   # Chi2 Fit
#        fitOptions = "VE"  # Chi2 Fit with Minos Error
#        fitOptions = "IE"  # Chi2 Fit with Integral and Minos
#        fitOptions = "VLE" # Likelihood Fit with Minos Error
        

        invertedQCD.fitEWK(metInverted_EWK,fitOptions)
        invertedQCD.fitEWK(metBase_EWK,fitOptions)
        invertedQCD.fitQCD(metInverted_QCD,fitOptions)
        invertedQCD.fitData(metBase_data)

        invertedQCD.getNormalization()

    invertedQCD.Summary()
    invertedQCD.WriteNormalizationToFile("QCDInvertedNormalizationFactors.py")
    invertedQCD.WriteLatexOutput("fits.tex")
def main(argv):

#    HISTONAME = "TauIdJets"
#    HISTONAME = "TauIdJetsCollinear"
#    HISTONAME = "TauIdBtag"
#    HISTONAME = "TauIdBvetoCollinear"
#    HISTONAME = "TauIdBveto"
    HISTONAME = "TauIdAfterCollinearCuts"
    FAKEHISTO = "OnlyEWKFakeTaus"
   
    dirs = []
    if len(sys.argv) < 2:
	usage()

    dirs.append(sys.argv[1])

    
    # Create all datasets from a multicrab task

    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra,  searchMode=searchMode, analysisName="signalAnalysisInvertedTau",optimizationMode="") #no collinear
    #datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra,  searchMode=searchMode, analysisName="signalAnalysisInvertedTau",optimizationMode="OptQCDTailKillerLoosePlus") #collinear


    # Check multicrab consistency
    consistencyCheck.checkConsistencyStandalone(dirs[0],datasets,name="QCD inverted")
   
    # As we use weighted counters for MC normalisation, we have to
    # update the all event count to a separately defined value because
    # the analysis job uses skimmed pattuple as an input
    datasets.updateNAllEventsToPUWeighted()

    # Read integrated luminosities of data datasets from lumi.json
    datasets.loadLuminosities()

    # Include only 120 mass bin of HW and HH datasets
    datasets.remove(filter(lambda name: "TTToHplus" in name and not "M120" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "Hplus_taunu_t-channel" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "Hplus_taunu_tW-channel" in name, datasets.getAllDatasetNames()))
    #datasets.remove(filter(lambda name: "TTJets_SemiLept" in name, datasets.getAllDatasetNames()))
    #datasets.remove(filter(lambda name: "TTJets_FullLept" in name, datasets.getAllDatasetNames()))
    #datasets.remove(filter(lambda name: "TTJets_Hadronic" in name, datasets.getAllDatasetNames()))
    # Default merging nad ordering of data and MC datasets
    # All data datasets to "Data"
    # All QCD datasets to "QCD"
    # All single top datasets to "SingleTop"
    # WW, WZ, ZZ to "Diboson"
    plots.mergeRenameReorderForDataMC(datasets)

    # Set BR(t->H) to 0.05, keep BR(H->tau) in 1
    xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.05, br_Htaunu=1)

    # Merge WH and HH datasets to one (for each mass bin)
    # TTToHplusBWB_MXXX and TTToHplusBHminusB_MXXX to "TTToHplus_MXXX"
    plots.mergeWHandHH(datasets)

    datasets.merge("EWK", [
	    "TTJets",
            "WJets",
            "DYJetsToLL",
            "SingleTop",
            "Diboson"
            ])

    # Apply TDR style
    style = tdrstyle.TDRStyle()
    style.setOptStat(True)

    invertedQCD = InvertedTauID()
    invertedQCD.setLumi(datasets.getDataset("Data").getLuminosity())
    invertedQCD.setInfo([dataEra,searchMode,HISTONAME])
    
    histonames = datasets.getDataset("Data").getDirectoryContent("baseline/METBaseline"+HISTONAME)
    bins = []
    binLabels = []
    for histoname in histonames:
        bins.append(histoname.replace("METBaseline"+HISTONAME,""))
        title = datasets.getDataset("Data").getDatasetRootHisto("baseline/METBaseline"+HISTONAME+"/"+histoname).getHistogram().GetTitle()
        title = title.replace("METBaseline"+HISTONAME,"")
        title = title.replace("#tau p_{T}","taup_T")
        title = title.replace("#tau eta","taueta")
        title = title.replace("<","lt")
        title = title.replace(">","gt")
        title = title.replace("=","eq")
        title = title.replace("..","to")
        title = title.replace(".","p")
        title = title.replace("/","_")
        binLabels.append(title)
    #binLabels = bins # for this data set
    print
    print "Histogram bins available",bins
    
    #    bins = ["Inclusive"]
    #    bins = ["taup_Tleq50","taup_Teq50to60"]
    print "Using bins              ",bins
    print
    print "Bin labels"
    for i in range(len(binLabels)):
        line = bins[i]
        while len(line) < 10:
            line += " "
        line += ": "+binLabels[i]
        print line
    print

    for i,bin in enumerate(bins):
        invertedQCD.setLabel(binLabels[i])

        metBase = plots.DataMCPlot(datasets, "baseline/METBaseline"+HISTONAME+"/METBaseline"+HISTONAME+bin)
        metInver = plots.DataMCPlot(datasets, "Inverted/METInverted"+HISTONAME+"/METInverted"+HISTONAME+bin)

        metBase_FakeTaus = plots.DataMCPlot(datasets, "baseline/METBaseline"+HISTONAME+FAKEHISTO+"/METBaseline"+HISTONAME+FAKEHISTO+bin)
        metInver_FakeTaus = plots.DataMCPlot(datasets, "Inverted/METInverted"+HISTONAME+FAKEHISTO+"/METInverted"+HISTONAME+FAKEHISTO+bin)


        # Rebin before subtracting
        
        metBase.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(10)) #5
        metInver.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(10)) #5
        
        metBase_FakeTaus.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(10)) #5
        metInver_FakeTaus.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(10)) #5
        
        metInverted_data = metInver.histoMgr.getHisto("Data").getRootHisto().Clone("Inverted/METInverted"+HISTONAME+"/METInverted"+HISTONAME+bin)
        metBase_data = metBase.histoMgr.getHisto("Data").getRootHisto().Clone("baseline/METBaseLine"+HISTONAME+"/METBaseline"+HISTONAME+bin)

        metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone("Inverted/METInverted"+HISTONAME+"/METInverted"+HISTONAME+bin)
        metBase_EWK = metBase.histoMgr.getHisto("EWK").getRootHisto().Clone("baseline/METBaseLine"+HISTONAME+"/METBaseline"+HISTONAME+bin)

        metInverted_EWK_FakeTaus = metInver_FakeTaus.histoMgr.getHisto("EWK").getRootHisto().Clone("Inverted/METInverted"+HISTONAME+FAKEHISTO+"/METInverted"+HISTONAME+FAKEHISTO+bin)
        metBase_EWK_FakeTaus = metBase_FakeTaus.histoMgr.getHisto("EWK").getRootHisto().Clone("baseline/METBaseLine"+HISTONAME+FAKEHISTO+"/METBaseline"+HISTONAME+FAKEHISTO+bin)

        metBase_QCD = metBase_data.Clone("QCD")
        metBase_QCD.Add(metBase_EWK,-1)
        metInverted_QCD = metInverted_data.Clone("QCD")
        metInverted_QCD.Add(metInverted_EWK,-1)

        metInverted_data = addlabels(metInverted_data)
        metInverted_EWK  = addlabels(metInverted_EWK)
        metInverted_EWK_FakeTaus  = addlabels(metInverted_EWK_FakeTaus)
        
        metBase_data = addlabels(metBase_data)
        metBase_EWK  = addlabels(metBase_EWK)
        metBase_EWK_FakeTaus = addlabels(metBase_EWK_FakeTaus)

        metInverted_QCD  = addlabels(metInverted_QCD)

        invertedQCD.plotHisto(metInverted_data,"inverted")
        invertedQCD.plotHisto(metInverted_EWK,"invertedEWK")
        invertedQCD.plotHisto(metBase_data,"baseline")
        invertedQCD.plotHisto(metBase_EWK,"baselineEWK")
        invertedQCD.plotHisto(metInverted_EWK_FakeTaus,"invertedEWK_FakeTaus")
        invertedQCD.plotHisto(metBase_EWK_FakeTaus,"baselineEWK_FakeTaus")

        fitOptions = "LRB"
        #fitOptions = "RB"                                                                              
        #fitOptions = "IEB"

        invertedQCD.fitEWK(metInverted_EWK,fitOptions)
        invertedQCD.fitEWK(metBase_EWK,fitOptions)
        invertedQCD.fitQCD(metInverted_QCD,fitOptions)
        invertedQCD.fitData(metBase_data)

        invertedQCD.fitEWK_FakeTaus(metInverted_EWK_FakeTaus,fitOptions)
        invertedQCD.fitEWK_FakeTaus(metBase_EWK_FakeTaus,fitOptions)

        invertedQCD.getNormalization()
        
    invertedQCD.Summary()
    invertedQCD.WriteNormalizationToFile("QCDInvertedNormalizationFactors.py")
    invertedQCD.WriteLatexOutput("fits.tex")
def main():
    if len(sys.argv) < 2:
        usage()

#    HISTONAME = "METInvertedTauIdAfterJets"
    HISTONAME = "METInvertedTauIdAfterCollinearCuts"
    #    HISTONAME = "MET_InvertedTauIdBveto"
    #    HISTONAME = "METInvertedTauIdAfterCollinearCutsPlusBtag"
    #    HISTONAME = "METInvertedTauIdAfterCollinearCutsPlusBtag"
    #    HISTONAME = "MTInvertedTauIdJet"
    #    HISTONAME = "MTInvertedTauIdPhi"

    invertedhisto = HISTONAME
    baselinehisto = HISTONAME.replace("Inverted", "BaseLine")

    dirs = []
    if len(sys.argv) < 2:
        usage()

    dirs.append(sys.argv[1])

    # Create all datasets from a multicrab task
    #datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters)
    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,
                                                    dataEra=dataEra,
                                                    searchMode=searchMode,
                                                    analysisName=analysis)
    #    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau" )

    # As we use weighted counters for MC normalisation, we have to
    # As we use weighted counters for MC normalisation, we have to
    # update the all event count to a separately defined value because
    # the analysis job uses skimmed pattuple as an input
    datasets.updateNAllEventsToPUWeighted()

    # Read integrated luminosities of data datasets from lumi.json
    datasets.loadLuminosities()

    # Include only 120 mass bin of HW and HH datasets
    datasets.remove(
        filter(lambda name: "TTToHplus" in name and not "M120" in name,
               datasets.getAllDatasetNames()))
    datasets.remove(
        filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))
    # Default merging nad ordering of data and MC datasets
    # All data datasets to "Data"
    # All QCD datasets to "QCD"
    # All single top datasets to "SingleTop"
    # WW, WZ, ZZ to "Diboson"
    plots.mergeRenameReorderForDataMC(datasets)

    # Set BR(t->H) to 0.05, keep BR(H->tau) in 1
    xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.05, br_Htaunu=1)

    # Merge WH and HH datasets to one (for each mass bin)
    # TTToHplusBWB_MXXX and TTToHplusBHminusB_MXXX to "TTToHplus_MXXX"
    plots.mergeWHandHH(datasets)

    datasets.merge("EWK",
                   ["TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson"])

    # Apply TDR style
    style = tdrstyle.TDRStyle()

    invertedQCD = InvertedTauID()
    invertedQCD.setLumi(datasets.getDataset("Data").getLuminosity())

    if ReBinning:
        rebinfactor = 1.3
        histobins = []
        histobins.append(0)
        histobins.append(1)
        i = 1
        while histobins[len(histobins) - 1] < 400:
            edge = histobins[i] + (histobins[i] -
                                   histobins[i - 1]) * rebinfactor
            histobins.append(edge)
            i += 1
            print histobins


#        metBase_data = metBase_data.Rebin(len(histobins)-1,   metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone(analysis+"/"+invertedhisto) "",array.array("d", histobins))
        metInverted_data = metInverted_data.Rebin(
            len(histobins) - 1, "", array.array("d", histobins))
        metBase_EWK = metBase_EWK.Rebin(
            len(histobins) - 1, "", array.array("d", histobins))
        metInverted_EWK = metInverted_EWK.Rebin(
            len(histobins) - 1, "", array.array("d", histobins))

    normData, normEWK = normalisation()

    metInverted = []
    metBaseline = []
    metBaselineQCD = []

    for ptbin in ptbins:
        ## inverted
        met_tmp = plots.PlotBase([
            datasets.getDataset("Data").getDatasetRootHisto(
                "Inverted/METInvertedTauIdAfterCollinearCuts/METInvertedTauIdAfterCollinearCuts"
                + ptbin)
        ])

        #met_tmp = plots.PlotBase([datasets.getDataset("Data").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)])
        met_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5))
        met = met_tmp.histoMgr.getHisto("Data").getRootHisto().Clone()
        met.Scale(normData[ptbin])

        metEWK_tmp = plots.PlotBase([
            datasets.getDataset("EWK").getDatasetRootHisto(
                "Inverted/METInvertedTauIdAfterCollinearCuts/METInvertedTauIdAfterCollinearCuts"
                + ptbin)
        ])
        #metEWK_tmp = plots.PlotBase([datasets.getDataset("EWK").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)])
        metEWK_tmp.histoMgr.normalizeMCToLuminosity(
            datasets.getDataset("Data").getLuminosity())
        metEWK_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5))
        metEWK = metEWK_tmp.histoMgr.getHisto("EWK").getRootHisto().Clone()
        metEWK.Scale(normEWK[ptbin])
        met.Add(metEWK, -1)
        metInverted.append(met)

        ## baseline
        met_tmp = plots.PlotBase([
            datasets.getDataset("Data").getDatasetRootHisto(
                "baseline/METBaselineTauIdAfterCollinearCuts/METBaselineTauIdAfterCollinearCuts"
                + ptbin)
        ])

        #met_tmp = plots.PlotBase([datasets.getDataset("Data").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)])
        met_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5))
        metbaseline = met_tmp.histoMgr.getHisto("Data").getRootHisto().Clone()

        metEWK_tmp = plots.PlotBase([
            datasets.getDataset("EWK").getDatasetRootHisto(
                "baseline/METBaselineTauIdAfterCollinearCuts/METBaselineTauIdAfterCollinearCuts"
                + ptbin)
        ])
        #metEWK_tmp = plots.PlotBase([datasets.getDataset("EWK").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)])
        metEWK_tmp.histoMgr.normalizeMCToLuminosity(
            datasets.getDataset("Data").getLuminosity())
        metEWK_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5))
        metEWKbaseline = metEWK_tmp.histoMgr.getHisto(
            "EWK").getRootHisto().Clone()
        metBaseline.append(metbaseline)
        metbaseline.Add(metEWKbaseline, -1)
        metBaselineQCD.append(metbaseline)

    metInverted_data = metInverted[0].Clone("met")
    metInverted_data.SetName("met")
    metInverted_data.SetTitle("Inverted tau ID")
    metInverted_data.Reset()
    for histo in metInverted:
        metInverted_data.Add(histo)

    metBaseline_data = metBaseline[0].Clone("met")
    metBaseline_data.SetName("met")
    metBaseline_data.SetTitle("baseline tau ID")
    metBaseline_data.Reset()
    for histo in metBaseline:
        metBaseline_data.Add(histo)

    metBaseline_QCD = metBaselineQCD[0].Clone("met")
    metBaseline_QCD.SetName("met")
    metBaseline_QCD.SetTitle("baseline tau ID")
    metBaseline_QCD.Reset()
    for histo in metBaselineQCD:
        metBaseline_QCD.Add(histo)

    #metBase_data.SetTitle("Data: BaseLine TauID")
    #metInverted_data.SetTitle("Data: Inverted TauID")
    #metBase_QCD = metBase_data.Clone("QCD")

    #metBase_QCD.Add(metBase_EWK,-1)
    #metBase_QCD.SetTitle("Data - EWK MC: BaseLine TauID")

    invertedQCD.setLabel("BaseVsInverted")
    invertedQCD.comparison(metInverted_data, metBaseline_data)
    invertedQCD.setLabel("BaseMinusEWKVsInverted")
    invertedQCD.comparison(metInverted_data, metBaseline_QCD)
    invertedQCD.setLabel("McVsInverted")
    #    invertedQCD.comparison(metInverted_data,metInverted_MC)
    invertedQCD.setLabel("EfficiencyBaseMinusEWKVsInverted")
    invertedQCD.cutefficiency(metInverted_data, metBaseline_QCD)
예제 #11
0
def getDatasetNames(multiCrabDir):
    datasets = dataset.getDatasetsFromMulticrabDirs([multiCrabDir],counters=counters)
    return datasets.getAllDatasetNames()
예제 #12
0
def main():

    if len(sys.argv) < 2:
        usage()

    dirs = []
    dirs.append(sys.argv[1])

    # Read the datasets
#    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau")
    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName=analysis) 
#    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters)
#    datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters, dataEra=dataEra)
#    datasets.updateNAllEventsToPUWeighted()
    datasets.loadLuminosities()
    datasets.updateNAllEventsToPUWeighted()

    
    # Take QCD from data
    datasetsQCD = None

    if QCDfromData:

        datasetsQCD = dataset.getDatasetsFromMulticrabCfg(cfgfile="/home/rkinnune/signalAnalysis/CMSSW_4_2_8_patch2/src/HiggsAnalysis/HeavyChHiggsToTauNu/test/multicrab_111123_132128/multicrab.cfg", counters=counters)
        datasetsQCD.loadLuminosities()
        print "QCDfromData", QCDfromData
        datasetsQCD.mergeData()
        datasetsQCD.remove(datasetsQCD.getMCDatasetNames())
        datasetsQCD.rename("Data", "QCD")
    


    plots.mergeRenameReorderForDataMC(datasets)

    print "Int.Lumi",datasets.getDataset("Data").getLuminosity()

    # Remove signals other than M120
    datasets.remove(filter(lambda name: "TTToHplus" in name and not "M120" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))
    datasets.merge("EWK", ["WJets", "DYJetsToLL", "SingleTop", "Diboson","TTJets"], keepSources=True)
    datasets.remove(filter(lambda name: "W2Jets" in name, datasets.getAllDatasetNames()))        
    datasets.remove(filter(lambda name: "W3Jets" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "W4Jets" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "Hplus_taunu_s-channel" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "Hplus_taunu_t-channel" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "Hplus_taunu_tW-channel" in name, datasets.getAllDatasetNames()))
    datasets_lands = datasets.deepCopy()

    # Set the signal cross sections to the ttbar for datasets for lands
#    xsect.setHplusCrossSectionsToTop(datasets_lands)

    # Set the signal cross sections to a given BR(t->H), BR(h->taunu)
    xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.01, br_Htaunu=1)

    # Set the signal cross sections to a value from MSSM
#    xsect.setHplusCrossSectionsToMSSM(datasets, tanbeta=20, mu=200)

    plots.mergeWHandHH(datasets) # merging of WH and HH signals must be done after setting the cross section


    # Apply TDR style
    style = tdrstyle.TDRStyle()

    # Create plots
    doPlots(datasets)

    # Write mt histograms to ROOT file
#    writeTransverseMass(datasets_lands)

    # Print counters
    doCounters(datasets)
예제 #13
0
def main():

    errorBars = False
    dirs = []
    if len(sys.argv) < 2:
        usage()

    dirs.append(sys.argv[1])
    

    # Create all datasets from a multicrab task
    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra,  searchMode=searchMode, analysisName=analysis) 
#    datasets = dataset.getDatasetsFromMulticrabDirs(dirs, counters=counters, dataEra=dataEra,  analysisBaseName="signalAnalysisInvertedTau")
##    datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters, dataEra=dataEra)

    # As we use weighted counters for MC normalisation, we have to
    # update the all event count to a separately defined value because
    # the analysis job uses skimmed pattuple as an input
    datasets.updateNAllEventsToPUWeighted()

    # Read integrated luminosities of data datasets from lumi.json
    datasets.loadLuminosities()

    # Include only 120 mass bin of HW and HH datasets
    datasets.remove(filter(lambda name: "TTToHplus" in name and not "M120" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))
    # Default merging nad ordering of data and MC datasets
    # All data datasets to "Data"
    # All QCD datasets to "QCD"
    # All single top datasets to "SingleTop"
    # WW, WZ, ZZ to "Diboson"
    plots.mergeRenameReorderForDataMC(datasets)

    # Set BR(t->H) to 0.05, keep BR(H->tau) in 1
    xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.05, br_Htaunu=1)

    # Merge WH and HH datasets to one (for each mass bin)
    # TTToHplusBWB_MXXX and TTToHplusBHminusB_MXXX to "TTToHplus_MXXX"
    plots.mergeWHandHH(datasets)

    datasets.merge("EWK", [
	    "TTJets",
            "WJets",
            "DYJetsToLL",
            "SingleTop",
            "Diboson"
            ])

    # Apply TDR style
    style = tdrstyle.TDRStyle()

    invertedQCD = InvertedTauID()
    invertedQCD.setLumi(datasets.getDataset("Data").getLuminosity())
    invertedQCD.useErrorBars(errorBars)

    metBase = plots.DataMCPlot(datasets, "BaseLine/MET_BaseLineTauIdBvetoCollinear")
    metInver = plots.DataMCPlot(datasets, "Inverted/MET_InvertedTauIdBvetoCollinear")
#    metBase = plots.DataMCPlot(datasets, "BaseLine/MET_BaseLineTauIdJetsCollinear")
#    metInver = plots.DataMCPlot(datasets, "Inverted/MET_InvertedTauIdJetsCollinear")
#    metBase = plots.DataMCPlot(datasets, "BaseLine/MET_BaseLineTauIdBveto")
#    metInver = plots.DataMCPlot(datasets, "Inverted/MET_InvertedTauIdBveto") 

    # Rebin before subtracting
    metBase.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(1))
    metInver.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(1))
    
#    metInverted_data = metInver.histoMgr.getHisto("Data").getRootHisto().Clone("Inverted/MET_InvertedTauIdBveto")
#    metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone("Inverted/MET_InvertedTauIdBveto") 
#    metBase_data = metBase.histoMgr.getHisto("Data").getRootHisto().Clone("BaseLine/MET_BaselineTauIdBveto")
#    metBase_EWK = metBase.histoMgr.getHisto("EWK").getRootHisto().Clone("BaseLine/MET_BaselineTauIdBveto")

    metInverted_data = metInver.histoMgr.getHisto("Data").getRootHisto().Clone("Inverted/MET_InvertedTauIdBvetoCollinear")
    metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone("Inverted/MET_InvertedTauIdBvetoCollinear") 
    metBase_data = metBase.histoMgr.getHisto("Data").getRootHisto().Clone("BaseLine/MET_BaselineTauIdBvetoCollinear")
    metBase_EWK = metBase.histoMgr.getHisto("EWK").getRootHisto().Clone("BaseLine/MET_BaselineTauIdBvetoCollinear")
#    metInverted_data = metInver.histoMgr.getHisto("Data").getRootHisto().Clone("Inverted/MET_InvertedTauIdJetsCollinear")
#    metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone("Inverted/MET_InvertedTauIdJetsCollinear") 
#    metBase_data = metBase.histoMgr.getHisto("Data").getRootHisto().Clone("BaseLine/MET_BaselineTauIdJetsCollinear")
#    metBase_EWK = metBase.histoMgr.getHisto("EWK").getRootHisto().Clone("BaseLine/MET_BaselineTauIdJetsCollinear")


    metBase_data.SetTitle("Data: BaseLine TauID")
    metInverted_data.SetTitle("Data: Inverted TauID")
    metBase_QCD = metBase_data.Clone("QCD")
    metBase_QCD.Add(metBase_EWK,-1)
    metBase_QCD.SetTitle("Data - EWK MC: BaseLine TauID")

    metInverted_data.GetXaxis().SetTitle("PFMET (GeV)")

    invertedQCD.setLabel("BaseVsInverted")
#    invertedQCD.comparison(metInverted_data,metBase_data)
    invertedQCD.setLabel("BaseMinusEWKVsInverted")
#    invertedQCD.comparison(metInverted_data,metBase_QCD)

    invertedQCD.cutefficiency(metInverted_data,metBase_QCD)
예제 #14
0
def main(argv):

    dirs = []
    if len(sys.argv) < 2:
	usage()

    dirs.append(sys.argv[1])

    QCDInvertedNormalization = sort(QCDInvertedNormalizationFactors.QCDInvertedNormalization)

    analysis = "signalAnalysisInvertedTau"
    optModes = []
    optModes.append("OptQCDTailKillerZeroPlus")
    optModes.append("OptQCDTailKillerLoosePlus") 
    optModes.append("OptQCDTailKillerMediumPlus") 
    optModes.append("OptQCDTailKillerTightPlus") 
    optModes.append("OptQCDTailKillerVeryTightPlus")
                    
    plot = plots.PlotBase()
    color = 1
    for optMode in optModes:
        datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra,  searchMode=searchMode, analysisName=analysis, optimizationMode=optMode)
        datasets.updateNAllEventsToPUWeighted()
        datasets.loadLuminosities()

        plots.mergeRenameReorderForDataMC(datasets)

        histonames = datasets.getDataset("Data").getDirectoryContent(HISTONAME)

        bins = []
        for histoname in histonames:
            binname = histoname.replace(HISTONAME,"")
            if not binname == "Inclusive":
                bins.append(binname)


        for i,bin in enumerate(bins):
            mtplot = plots.DataMCPlot(datasets, HISTONAME+"/"+HISTONAME+bin)
            if i == 0:
                mt = mtplot.histoMgr.getHisto("Data").getRootHisto().Clone(HISTONAME+"/"+HISTONAME+bin)
                legendName = optMode.replace("OptQCDTailKiller","R_{BB} ")
                legendName = legendName.replace("Plus","")
                mt.SetName(legendName)
                mt.SetLineColor(color)
                mt.Scale(QCDInvertedNormalization[i])
                color += 1
                if color == 5:
                    color += 1
            else:
                h = mtplot.histoMgr.getHisto("Data").getRootHisto().Clone(HISTONAME+"/"+HISTONAME+bin)
                h.Scale(QCDInvertedNormalization[i])
                mt.Add(h)
 
        plot.histoMgr.appendHisto(histograms.Histo(mt,mt.GetName()))

    style = tdrstyle.TDRStyle()

    plot.createFrame("mt")
    moveLegend={"dx": -0.15,"dy": 0.}
    plot.setLegend(histograms.moveLegend(histograms.createLegend(), **moveLegend))

    plot.setLuminosity(datasets.getDataset("Data").getLuminosity())
    plot.addStandardTexts()

    plot.draw()
    plot.save()
#dataEra = "Run2011A"
#dataEra = "Run2011B"
dataEra = "Run2011AB"

# Go to batch mode, comment if interactive mode is wanted
ROOT.gROOT.SetBatch(True)
#-------------------------------------------------------------------------#

# Apply TDR style
style = tdrstyle.TDRStyle()

# Construct the datasets
datasets = dataset.getDatasetsFromMulticrabDirs(
    dirs,
    counters=counters,
    dataEra=dataEra,
    analysisBaseName="signalAnalysis")
if not mcOnly:
    datasets.loadLuminosities()
datasets.updateNAllEventsToPUWeighted()

# # Construct datasets as stated in the multicrab.cfg of the execution
# # directory. The returned object is of type DatasetManager.
# #datasets = dataset.getDatasetsFromMulticrabCfg(counters = "qcdMeasurementMethod2Part1Counters")
# #datasets.updateNAllEventsToPUWeighted()

# # Construct datasets from the given list of CRAB task directories
# datasets = dataset.getDatasetsFromCrabDirs(["TTToHplusBWB_M120_Fall11"])
# #datasets = dataset.getDatasetsFromCrabDirs(["TTbar_Htaunu_M80"])
예제 #16
0
mcOnly = False
mcOnlyLumi = 5000 # pb

#dataEra = "Run2011A"
#dataEra = "Run2011B"
dataEra = "Run2011AB"

# Go to batch mode, comment if interactive mode is wanted
ROOT.gROOT.SetBatch(True)
#-------------------------------------------------------------------------#

# Apply TDR style
style = tdrstyle.TDRStyle()

# Construct the datasets
datasets = dataset.getDatasetsFromMulticrabDirs(dirs, counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysis")
if not mcOnly:
    datasets.loadLuminosities()
datasets.updateNAllEventsToPUWeighted()

plots.mergeRenameReorderForDataMC(datasets)

# This can be used to merge datasets:
#datasets.merge("TTJetsPlusWJets", ["TTJets", "WJets"], keepSources=True)

# Override the data luminosity (should not be used except for testing)
#datasets.getDataset("Data").setLuminosity(35)



# Create the plot, the latter argument is the path to the histogram in the ROOT files
예제 #17
0
def main():

    if len(sys.argv) < 2:
        usage()

    dirs = []
    dirs.append(sys.argv[1])
        
    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName=analysis, optimizationMode=optMode)
    datasets.loadLuminosities()
    datasets.updateNAllEventsToPUWeighted()

    plots.mergeRenameReorderForDataMC(datasets)

    datasets.merge("EWK", [
                    "TTJets",
                    "WJets",
                    "DYJetsToLL",
                    "SingleTop",
                    "Diboson"
                    ])
    style = tdrstyle.TDRStyle()

    plot = plots.PlotBase()
    

    legends = {}
    name_re = re.compile("SelectedTau_pT_(?P<name>\S+)")
    for i,histo in enumerate(HISTONAMES):
        plot.histoMgr.appendHisto(purityGraph(i,datasets,histo))
        name = histo
        match = name_re.search(histo)
        if match:
            name = match.group("name")
        legends["Purity%s"%i] = name
#        if "AfterMetCut"  in name:    
#            legends["Purity%s"%i] = "MET > 60 GeV"
        if "SelectedTau_pT_CollinearCuts"  in name:    
            legends["Purity%s"%i] = "Collinear cuts"
        if "AfterBtagging"  in name:    
            legends["Purity%s"%i] = "B tagging"
        if "AfterBveto"  in name:    
            legends["Purity%s"%i] = "B-jet veto"
        if "AfterBvetoPhiCuts"  in name:    
            legends["Purity%s"%i] = "B-jet veto, TailKiller"
        if "SelectedTau_pT_BackToBackCuts"  in name:    
            legends["Purity%s"%i] = "BackToBack cuts" 

    plot.createFrame("purityLoose", opts={"xmin": 40, "xmax": 160, "ymin": 0., "ymax": 1.05})
    plot.frame.GetXaxis().SetTitle("p_{T}^{#tau jet} (GeV/c)")
    plot.frame.GetYaxis().SetTitle("QCD purity")
#    plot.setEnergy(datasets.getEnergies())

    
    plot.histoMgr.setHistoLegendLabelMany(legends)

    plot.setLegend(histograms.createLegend(0.3, 0.35, 0.6, 0.5))
    
 
#    histograms.addText(0.2, 0.3, "TailKiller: MediumPlus", 18)
    histograms.addText(0.35, 0.28, "BackToBack cuts: TightPlus", 20)
    histograms.addText(0.35, 0.22, "2011B", 20)


    histograms.addText(0.2, 0.3, "TailKiller: MediumPlus", 18)
#    histograms.addText(0.2, 0.3, "TailKiller: TightPlus", 18)


    plot.setEnergy(datasets.getEnergies())
    plot.setLuminosity(datasets.getDataset("Data").getLuminosity())
    plot.addStandardTexts()

    plot.draw()
    plot.save()
예제 #18
0
def main():

    ### Get the ROOT files for all datasets, merge datasets and reorder them
    print "*** Obtaining ROOT files from:\n    %s" % (multicrabPath)
    datasets = dataset.getDatasetsFromMulticrabDirs(multicrabPath, dataEra="Run2011A")

    printPSet(bPrintPSet, folderName="signalAnalysisRun2011A")

    print "*** Calling datasets.updateNAllEventsToPUWeighted():"
    datasets.updateNAllEventsToPUWeighted()
    print "*** Loading luminosities"
    datasets.loadLuminosities()    
    print "*** Calling plots.mergeRenameReorderForDataMC(datasets):"
    plots.mergeRenameReorderForDataMC(datasets)
    
    if mcOnly:
        datasets.remove(datasets.getDataDatasetNames())
        histograms.cmsTextMode = histograms.CMSMode.SIMULATION

    ### Merge desirable datasets
    if bMergeEwk:
        print "*** Merging EWK MC"
        datasets.merge("EWK MC", ["WJets", "TTJets", "DYJetsToLL", "SingleTop", "Diboson"])
        plots._plotStyles["EWK MC"] = styles.ttStyle  #plots._plotStyles["EWK"] = styles.getEWKStyle()
    
    ### Remove signals other than M120
    print "*** Removing all signal except M120"
    datasets.remove(filter(lambda name: "TTToHplus" in name and not "M120" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))

    ### Setup style
    print "*** Setting up style"
    styleGenerator = styles.generator(fill=True)
    style = tdrstyle.TDRStyle()
    histograms.createLegend.moveDefaults(dx=-0.05, dy=+0.0)
    
    # Set the signal cross sections to a given BR(t->H), BR(h->taunu)
    print "*** Setting the signal cross sections to a given BR(t->bH+) and BR(H+ -> tau+ nu)"
    xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.01, br_Htaunu=1)

    ### Merge signals into one histo
    print "*** Merging WH and HH signals into one histogram"
    plots.mergeWHandHH(datasets) # merging of WH and HH signals must be done after setting the cross section

    ### Print desirable information here
    print "*** Available datasets:\n    %s" % (datasets.getAllDatasetNames())
    if mcOnly:
        print "*** Integrated Luminosity:\n    %s (pb)" % (mcOnlyLumi)
    else:
        print "*** Integrated Luminosity:\n     %s (pb)" % (datasets.getDataset("Data").getLuminosity())

    ### Do all plots defined in histoDict function
    doPlots(datasets, histoDict, JetSelectionCuts, SaveExtension = "JetSelection")
    #doPlots(datasets, histoDict, MtCut, SaveExtension = "Mt_"+MtCutValue.replace(" >= ","GE").replace(" <= ","LE"))
    #doPlots(datasets, histoDict, MetBtagDeltaPhiCuts, SaveExtension = "MetBtagDeltaPhi")
    #doPlots(datasets, histoDict, MetBtagDeltaPhiMtCuts, SaveExtension = "MetBtagDeltaPhiMt_"+MtCutValue.replace(" >= ","GE").replace(" <= ","LE".replace(".", ""))
    #doPlots(datasets, histoDict, MetBtagDeltaPhiPlanCuts, SaveExtension = "MetBtagDeltaPhi_"+PlanarityCut.replace(" >= ","GE").replace(" <= ","LE".replace(".", ""))
    #doPlots(datasets, histoDict, MetBtagDeltaPhiCircCuts, SaveExtension = "MetBtagDeltaPhi_"+CircularityCut.replace(" >= ","GE").replace(" <= ","LE".replace(".", ""))
    #doPlots(datasets, histoDict, MetBtagDeltaPhiSpherCuts, SaveExtension = "MetBtagDeltaPhi_"+SphericityCut.replace(" >= ","GE").replace(" <= ","LE".replace(".", ""))
    #doPlots(datasets, histoDict, MetBtagDeltaPhiAplanCuts, SaveExtension = "MetBtagDeltaPhi_"+AplanarityCut.replace(" >= ","_GE").replace(" <= ","_LE").replace(".", ""))
    #doPlots(datasets, histoDict, MetBtagDeltaPhiAlphaTCuts, SaveExtension = "MetBtagDeltaPhi_"+AlphaTCut.replace(" >= ","_GE").replace(" <= ","_LE").replace(".", ""))

    ### Keep session alive (otherwise canvases close automatically)
    if bBatchMode == False:
        raw_input("*** Press \"any\" key to exit pyROOT: ")
def main():

    ### Get the ROOT files for all datasets, merge datasets and reorder them
    print "*** Obtaining ROOT files from:\n    %s" % (multicrabPath)
    datasets = dataset.getDatasetsFromMulticrabDirs(multicrabPath,
                                                    dataEra="Run2011A")

    printPSet(bPrintPSet, folderName="signalAnalysisRun2011A")

    print "*** Calling datasets.updateNAllEventsToPUWeighted():"
    datasets.updateNAllEventsToPUWeighted()
    print "*** Loading luminosities"
    datasets.loadLuminosities()
    print "*** Calling plots.mergeRenameReorderForDataMC(datasets):"
    plots.mergeRenameReorderForDataMC(datasets)

    if mcOnly:
        datasets.remove(datasets.getDataDatasetNames())
        histograms.cmsTextMode = histograms.CMSMode.SIMULATION

    ### Merge desirable datasets
    if bMergeEwk:
        print "*** Merging EWK MC"
        datasets.merge(
            "EWK MC",
            ["WJets", "TTJets", "DYJetsToLL", "SingleTop", "Diboson"])
        plots._plotStyles[
            "EWK MC"] = styles.ttStyle  #plots._plotStyles["EWK"] = styles.getEWKStyle()

    ### Remove signals other than M120
    print "*** Removing all signal except M120"
    datasets.remove(
        filter(lambda name: "TTToHplus" in name and not "M120" in name,
               datasets.getAllDatasetNames()))
    datasets.remove(
        filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))
    datasets.remove(
        filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))

    ### Setup style
    print "*** Setting up style"
    styleGenerator = styles.generator(fill=True)
    style = tdrstyle.TDRStyle()
    histograms.createLegend.moveDefaults(dx=-0.05, dy=+0.0)

    # Set the signal cross sections to a given BR(t->H), BR(h->taunu)
    print "*** Setting the signal cross sections to a given BR(t->bH+) and BR(H+ -> tau+ nu)"
    xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.01, br_Htaunu=1)

    ### Merge signals into one histo
    print "*** Merging WH and HH signals into one histogram"
    plots.mergeWHandHH(
        datasets
    )  # merging of WH and HH signals must be done after setting the cross section

    ### Print desirable information here
    print "*** Available datasets:\n    %s" % (datasets.getAllDatasetNames())
    if mcOnly:
        print "*** Integrated Luminosity:\n    %s (pb)" % (mcOnlyLumi)
    else:
        print "*** Integrated Luminosity:\n     %s (pb)" % (
            datasets.getDataset("Data").getLuminosity())

    ### Do all plots defined in histoDict function
    doPlots(datasets,
            histoDict,
            JetSelectionCuts,
            SaveExtension="JetSelection_Validation")
    #doPlots(datasets, histoDict, MetBtagDeltaPhiCuts, SaveExtension = "MetBtagDeltaPhi")
    #doPlots(datasets, histoDict, MetBtagDeltaPhiMtCuts, SaveExtension = "MetBtagDeltaPhiMt")
    #doPlots(datasets, histoDict, MtCut, SaveExtension = "Mt")
    #doPlots(datasets, histoDict, MetBtagDeltaPhiCircCuts, SaveExtension = "MetBtagDeltaPhiCirc")
    #doPlots(datasets, histoDict, MetBtagDeltaPhiSpherCuts, SaveExtension = "MetBtagDeltaPhiSpher")
    #doPlots(datasets, histoDict, MetBtagDeltaPhiAplanCuts, SaveExtension = "MetBtagDeltaPhiAplan")
    #doPlots(datasets, histoDict, MetBtagDeltaPhiPlanCuts, SaveExtension = "MetBtagDeltaPhiPlan")
    #doPlots(datasets, histoDict, MetBtagDeltaPhiAlphaTCuts, SaveExtension = "MetBtagDeltaPhiAlphaT")

    ### Keep session alive (otherwise canvases close automatically)
    if bBatchMode == False:
        raw_input("*** Press \"any\" key to exit pyROOT: ")
예제 #20
0
def getDatasetNames(multiCrabDir):
    datasets = dataset.getDatasetsFromMulticrabDirs([multiCrabDir],
                                                    counters=counters)
    return datasets.getAllDatasetNames()
예제 #21
0
def main():

    if len(sys.argv) < 2:
        usage()

    dirs = []
    dirs.append(sys.argv[1])

    # Read the datasets
    #    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau")
    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,
                                                    dataEra=dataEra,
                                                    searchMode=searchMode,
                                                    analysisName=analysis,
                                                    optimizationMode=optMode)
    #    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters)
    #    datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters, dataEra=dataEra)
    #    datasets.updateNAllEventsToPUWeighted()
    datasets.loadLuminosities()
    datasets.updateNAllEventsToPUWeighted()

    # Take QCD from data
    datasetsQCD = None

    if QCDfromData:

        datasetsQCD = dataset.getDatasetsFromMulticrabCfg(
            cfgfile=
            "/home/rkinnune/signalAnalysis/CMSSW_4_2_8_patch2/src/HiggsAnalysis/HeavyChHiggsToTauNu/test/multicrab_111123_132128/multicrab.cfg",
            counters=counters)
        datasetsQCD.loadLuminosities()
        print "QCDfromData", QCDfromData
        datasetsQCD.mergeData()
        datasetsQCD.remove(datasetsQCD.getMCDatasetNames())
        datasetsQCD.rename("Data", "QCD")

    plots.mergeRenameReorderForDataMC(datasets)

    print "Int.Lumi", datasets.getDataset("Data").getLuminosity()

    # Remove signals other than M120
    datasets.remove(
        filter(lambda name: "TTToHplus" in name and not "M120" in name,
               datasets.getAllDatasetNames()))
    datasets.remove(
        filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))
    datasets.merge("EWK",
                   ["WJets", "DYJetsToLL", "SingleTop", "Diboson", "TTJets"],
                   keepSources=True)
    datasets.remove(
        filter(lambda name: "W2Jets" in name, datasets.getAllDatasetNames()))
    datasets.remove(
        filter(lambda name: "W3Jets" in name, datasets.getAllDatasetNames()))
    datasets.remove(
        filter(lambda name: "W4Jets" in name, datasets.getAllDatasetNames()))
    datasets.remove(
        filter(lambda name: "Hplus_taunu_s-channel" in name,
               datasets.getAllDatasetNames()))

    datasets_lands = datasets.deepCopy()

    # Set the signal cross sections to the ttbar for datasets for lands
    #    xsect.setHplusCrossSectionsToTop(datasets_lands)

    # Set the signal cross sections to a given BR(t->H), BR(h->taunu)
    xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.01, br_Htaunu=1)

    # Set the signal cross sections to a value from MSSM
    #    xsect.setHplusCrossSectionsToMSSM(datasets, tanbeta=20, mu=200)

    plots.mergeWHandHH(
        datasets
    )  # merging of WH and HH signals must be done after setting the cross section

    # Apply TDR style
    style = tdrstyle.TDRStyle()

    # Create plots
    doPlots(datasets)

    # Write mt histograms to ROOT file
    #    writeTransverseMass(datasets_lands)

    # Print counters
    doCounters(datasets)
예제 #22
0
def main():

    if len(sys.argv) < 2:
        usage()

    dirs = []
    dirs.append(sys.argv[1])

    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,
                                                    dataEra=dataEra,
                                                    searchMode=searchMode,
                                                    analysisName=analysis,
                                                    optimizationMode=optMode)
    datasets.loadLuminosities()
    datasets.updateNAllEventsToPUWeighted()

    plots.mergeRenameReorderForDataMC(datasets)

    datasets.merge("EWK",
                   ["TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson"])
    style = tdrstyle.TDRStyle()

    plot = plots.PlotBase()

    legends = {}
    name_re = re.compile("SelectedTau_pT_(?P<name>\S+)")
    for i, histo in enumerate(HISTONAMES):
        plot.histoMgr.appendHisto(purityGraph(i, datasets, histo))
        name = histo
        match = name_re.search(histo)
        if match:
            name = match.group("name")
        legends["Purity%s" % i] = name
        #        if "AfterMetCut"  in name:
        #            legends["Purity%s"%i] = "MET > 60 GeV"
        if "SelectedTau_pT_CollinearCuts" in name:
            legends["Purity%s" % i] = "Collinear cuts"
        if "AfterBtagging" in name:
            legends["Purity%s" % i] = "B tagging"
        if "AfterBveto" in name:
            legends["Purity%s" % i] = "B-jet veto"
        if "AfterBvetoPhiCuts" in name:
            legends["Purity%s" % i] = "B-jet veto, TailKiller"
        if "SelectedTau_pT_BackToBackCuts" in name:
            legends["Purity%s" % i] = "BackToBack cuts"

    plot.createFrame("purityLoose",
                     opts={
                         "xmin": 40,
                         "xmax": 160,
                         "ymin": 0.,
                         "ymax": 1.05
                     })
    plot.frame.GetXaxis().SetTitle("p_{T}^{#tau jet} (GeV/c)")
    plot.frame.GetYaxis().SetTitle("QCD purity")
    #    plot.setEnergy(datasets.getEnergies())

    plot.histoMgr.setHistoLegendLabelMany(legends)

    plot.setLegend(histograms.createLegend(0.3, 0.35, 0.6, 0.5))

    #    histograms.addText(0.2, 0.3, "TailKiller: MediumPlus", 18)
    histograms.addText(0.35, 0.28, "BackToBack cuts: TightPlus", 20)
    histograms.addText(0.35, 0.22, "2011B", 20)

    histograms.addText(0.2, 0.3, "TailKiller: MediumPlus", 18)
    #    histograms.addText(0.2, 0.3, "TailKiller: TightPlus", 18)

    plot.setEnergy(datasets.getEnergies())
    plot.setLuminosity(datasets.getDataset("Data").getLuminosity())
    plot.addStandardTexts()

    plot.draw()
    plot.save()
예제 #23
0
def main(argv):
    interactive = True
    interactive = False
    #    HISTONAME = "TauIdJets"
    #    HISTONAME = "TauIdBtag"
    HISTONAME = "TauIdBveto"

    dirs = []
    if len(sys.argv) < 2:
        usage()

    dirs.append(sys.argv[1])

    # Disable batch mode here to have the interactivity (see also the line with 'raw_input') below
    if interactive:
        ROOT.gROOT.SetBatch(False)

    # Create all datasets from a multicrab task


#    datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters)
#    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra)
    datasets = dataset.getDatasetsFromMulticrabDirs(
        dirs,
        counters=counters,
        dataEra=dataEra,
        analysisbaseName="signalAnalysisInvertedTau")

    # As we use weighted counters for MC normalisation, we have to
    # update the all event count to a separately defined value because
    # the analysis job uses skimmed pattuple as an input
    datasets.updateNAllEventsToPUWeighted()

    # Read integrated luminosities of data datasets from lumi.json
    datasets.loadLuminosities()

    # Include only 120 mass bin of HW and HH datasets
    datasets.remove(
        filter(lambda name: "TTToHplus" in name and not "M120" in name,
               datasets.getAllDatasetNames()))

    # Default merging nad ordering of data and MC datasets
    # All data datasets to "Data"
    # All QCD datasets to "QCD"
    # All single top datasets to "SingleTop"
    # WW, WZ, ZZ to "Diboson"
    plots.mergeRenameReorderForDataMC(datasets)

    # Set BR(t->H) to 0.2, keep BR(H->tau) in 1
    xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.05, br_Htaunu=1)

    # Merge WH and HH datasets to one (for each mass bin)
    # TTToHplusBWB_MXXX and TTToHplusBHminusB_MXXX to "TTToHplus_MXXX"
    plots.mergeWHandHH(datasets)

    # Apply TDR style
    style = tdrstyle.TDRStyle()

    #dataMCExample(datasets)
    distComparison(datasets)

    # Script execution can be paused like this, it will continue after
    # user has given some input (which must include enter)
    if interactive:
        raw_input("Hit enter to continue")
def main():
    if len(sys.argv) < 2:
        usage()


#    HISTONAME = "METInvertedTauIdAfterJets"
    HISTONAME = "METInvertedTauIdAfterCollinearCuts"
#    HISTONAME = "MET_InvertedTauIdBveto"
#    HISTONAME = "METInvertedTauIdAfterCollinearCutsPlusBtag"
#    HISTONAME = "METInvertedTauIdAfterCollinearCutsPlusBtag"
#    HISTONAME = "MTInvertedTauIdJet"
#    HISTONAME = "MTInvertedTauIdPhi"

    invertedhisto = HISTONAME
    baselinehisto = HISTONAME.replace("Inverted","BaseLine")

    dirs = []
    if len(sys.argv) < 2:
        usage()

    dirs.append(sys.argv[1])
    
    # Create all datasets from a multicrab task
    #datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters)
    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra,  searchMode=searchMode, analysisName=analysis)
#    datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau" )

    # As we use weighted counters for MC normalisation, we have to
    # As we use weighted counters for MC normalisation, we have to
    # update the all event count to a separately defined value because
    # the analysis job uses skimmed pattuple as an input
    datasets.updateNAllEventsToPUWeighted()

    # Read integrated luminosities of data datasets from lumi.json
    datasets.loadLuminosities()

    # Include only 120 mass bin of HW and HH datasets
    datasets.remove(filter(lambda name: "TTToHplus" in name and not "M120" in name, datasets.getAllDatasetNames()))
    datasets.remove(filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames()))
    # Default merging nad ordering of data and MC datasets
    # All data datasets to "Data"
    # All QCD datasets to "QCD"
    # All single top datasets to "SingleTop"
    # WW, WZ, ZZ to "Diboson"
    plots.mergeRenameReorderForDataMC(datasets)

    # Set BR(t->H) to 0.05, keep BR(H->tau) in 1
    xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.05, br_Htaunu=1)

    # Merge WH and HH datasets to one (for each mass bin)
    # TTToHplusBWB_MXXX and TTToHplusBHminusB_MXXX to "TTToHplus_MXXX"
    plots.mergeWHandHH(datasets)

    datasets.merge("EWK", [
	    "TTJets",
            "WJets",
            "DYJetsToLL",
            "SingleTop",
            "Diboson"
            ])

    # Apply TDR style
    style = tdrstyle.TDRStyle()

    invertedQCD = InvertedTauID()
    invertedQCD.setLumi(datasets.getDataset("Data").getLuminosity())



    if ReBinning:
        rebinfactor = 1.3
        histobins = []
        histobins.append(0)
        histobins.append(1)
        i = 1
        while histobins[len(histobins)-1] < 400:
            edge = histobins[i] + (histobins[i]-histobins[i-1])*rebinfactor
            histobins.append(edge)
            i += 1
            print histobins
            
#        metBase_data = metBase_data.Rebin(len(histobins)-1,   metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone(analysis+"/"+invertedhisto) "",array.array("d", histobins))
        metInverted_data = metInverted_data.Rebin(len(histobins)-1,"",array.array("d", histobins))
        metBase_EWK = metBase_EWK.Rebin(len(histobins)-1,"",array.array("d", histobins))
        metInverted_EWK = metInverted_EWK.Rebin(len(histobins)-1,"",array.array("d", histobins))
    
    normData,normEWK=normalisation()

    metInverted = []
    metBaseline = []
    metBaselineQCD = []
    
    for ptbin in ptbins:
        ## inverted
        met_tmp = plots.PlotBase([datasets.getDataset("Data").getDatasetRootHisto("Inverted/METInvertedTauIdAfterCollinearCuts/METInvertedTauIdAfterCollinearCuts"+ptbin)])

        #met_tmp = plots.PlotBase([datasets.getDataset("Data").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)])
        met_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5))
        met = met_tmp.histoMgr.getHisto("Data").getRootHisto().Clone()        
        met.Scale(normData[ptbin])
    
        metEWK_tmp = plots.PlotBase([datasets.getDataset("EWK").getDatasetRootHisto("Inverted/METInvertedTauIdAfterCollinearCuts/METInvertedTauIdAfterCollinearCuts"+ptbin)])        
        #metEWK_tmp = plots.PlotBase([datasets.getDataset("EWK").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)])
        metEWK_tmp.histoMgr.normalizeMCToLuminosity(datasets.getDataset("Data").getLuminosity())
        metEWK_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5))
        metEWK = metEWK_tmp.histoMgr.getHisto("EWK").getRootHisto().Clone()
        metEWK.Scale(normEWK[ptbin])
        met.Add(metEWK, -1)
        metInverted.append(met) 

## baseline
        met_tmp = plots.PlotBase([datasets.getDataset("Data").getDatasetRootHisto("baseline/METBaselineTauIdAfterCollinearCuts/METBaselineTauIdAfterCollinearCuts"+ptbin)])

        #met_tmp = plots.PlotBase([datasets.getDataset("Data").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)])
        met_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5))
        metbaseline = met_tmp.histoMgr.getHisto("Data").getRootHisto().Clone()        
    
        metEWK_tmp = plots.PlotBase([datasets.getDataset("EWK").getDatasetRootHisto("baseline/METBaselineTauIdAfterCollinearCuts/METBaselineTauIdAfterCollinearCuts"+ptbin)])        
        #metEWK_tmp = plots.PlotBase([datasets.getDataset("EWK").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)])
        metEWK_tmp.histoMgr.normalizeMCToLuminosity(datasets.getDataset("Data").getLuminosity())
        metEWK_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5))
        metEWKbaseline = metEWK_tmp.histoMgr.getHisto("EWK").getRootHisto().Clone()
        metBaseline.append(metbaseline)
        metbaseline.Add(metEWKbaseline, -1)
        metBaselineQCD.append(metbaseline)

        
    metInverted_data = metInverted[0].Clone("met")
    metInverted_data.SetName("met")
    metInverted_data.SetTitle("Inverted tau ID")
    metInverted_data.Reset()
    for histo in metInverted:
        metInverted_data.Add(histo)
        
    metBaseline_data = metBaseline[0].Clone("met")
    metBaseline_data.SetName("met")
    metBaseline_data.SetTitle("baseline tau ID")
    metBaseline_data.Reset()
    for histo in metBaseline:
        metBaseline_data.Add(histo)

    metBaseline_QCD = metBaselineQCD[0].Clone("met")
    metBaseline_QCD .SetName("met")
    metBaseline_QCD.SetTitle("baseline tau ID")
    metBaseline_QCD.Reset()
    for histo in metBaselineQCD:
        metBaseline_QCD.Add(histo)

        
    #metBase_data.SetTitle("Data: BaseLine TauID")
    #metInverted_data.SetTitle("Data: Inverted TauID")
    #metBase_QCD = metBase_data.Clone("QCD")

    #metBase_QCD.Add(metBase_EWK,-1)
    #metBase_QCD.SetTitle("Data - EWK MC: BaseLine TauID")

    invertedQCD.setLabel("BaseVsInverted")
    invertedQCD.comparison(metInverted_data,metBaseline_data)
    invertedQCD.setLabel("BaseMinusEWKVsInverted")
    invertedQCD.comparison(metInverted_data,metBaseline_QCD)
    invertedQCD.setLabel("McVsInverted")
#    invertedQCD.comparison(metInverted_data,metInverted_MC)
    invertedQCD.setLabel("EfficiencyBaseMinusEWKVsInverted")
    invertedQCD.cutefficiency(metInverted_data,metBaseline_QCD )