Пример #1
0
def getHistograms(path,source,modifier,plot,runRange,isMC,backgrounds,region=""):

	treesEE = readTrees(path,"EE",source = source,modifier= modifier)
	treesEM = readTrees(path,"EMu",source = source,modifier= modifier)
	treesMM = readTrees(path,"MuMu",source = source,modifier= modifier)
		
	
	histosEE = []
	histosMM = []
	histosEM = []

		#~ print path, source, modifier
	eventCounts = totalNumberOfGeneratedEvents(path,source,modifier)	
	processes = []
	for background in backgrounds:
		processes = []

		processes.append(Process(getattr(Backgrounds,background),eventCounts))
		
		histosEE.append(TheStack(processes,runRange.lumi,plot,treesEE,"None",1.0,1.0,1.0).theHistogram)		
		histosMM.append(TheStack(processes,runRange.lumi,plot,treesMM,"None",1.0,1.0,1.0).theHistogram)
		histosEM.append(TheStack(processes,runRange.lumi,plot,treesEM,"None",1.0,1.0,1.0).theHistogram)
						

			

	
	return histosEE , histosMM, histosEM
Пример #2
0
def getHistograms(path, plot, runRange, isMC, backgrounds, EM=False):

    treesEE = readTrees(path, "EE")
    treesEM = readTrees(path, "EMu")
    treesMM = readTrees(path, "MuMu")

    if isMC:

        eventCounts = totalNumberOfGeneratedEvents(path)
        processes = []
        for background in backgrounds:
            processes.append(
                Process(getattr(Backgrounds, background), eventCounts))

        histoEE = TheStack(processes, runRange.lumi, plot, treesEE, "None",
                           1.0, 1.0, 1.0).theHistogram
        histoMM = TheStack(processes, runRange.lumi, plot, treesMM, "None",
                           1.0, 1.0, 1.0).theHistogram

        if EM:
            histoEM = TheStack(processes, runRange.lumi, plot, treesEM, "None",
                               1.0, 1.0, 1.0).theHistogram

    else:
        histoEE = getDataHist(plot, treesEE)
        histoMM = getDataHist(plot, treesMM)
        if EM:
            histoEM = getDataHist(plot, treesEM)

    if EM:
        return histoEE, histoMM, histoEM
    else:
        return histoEE, histoMM
Пример #3
0
def getHistograms(path, plot, runRange, isMC, backgrounds):

    treesEE = readTrees(path, "EE")
    treesEM = readTrees(path, "EMu")
    treesMM = readTrees(path, "MuMu")

    if isMC:

        eventCounts = totalNumberOfGeneratedEvents(path)
        processes = []
        for background in backgrounds:
            processes.append(
                Process(getattr(Backgrounds, background), eventCounts))
        histoEE = TheStack(processes, runRange.lumi, plot, treesEE, "None",
                           1.0, 1.0, 1.0).theHistogram
        histoMM = TheStack(processes, runRange.lumi, plot, treesMM, "None",
                           1.0, 1.0, 1.0).theHistogram
        histoEM = TheStack(processes, runRange.lumi, plot, treesEM, "None",
                           1.0, 1.0, 1.0).theHistogram
        #~ histoEE.Scale(getattr(triggerEffs,region).effEE.val)
        #~ histoMM.Scale(getattr(triggerEffs,region).effMM.val)
        #~ histoEM.Scale(getattr(triggerEffs,region).effEM.val)

    else:
        histoEE = getDataHist(plot, treesEE)
        histoMM = getDataHist(plot, treesMM)
        histoEM = getDataHist(plot, treesEM)

    return histoEE, histoMM, histoEM
Пример #4
0
def getHistogram(plot,runRange,backgrounds,region):
        path = locations[runRange.era].dataSetPath
        treesEE = readTrees(path,"EE")
        treesEM = readTrees(path,"EMu")
        treesMM = readTrees(path,"MuMu")
                        
                
        eventCounts = totalNumberOfGeneratedEvents(path)        
        processes = []
        for background in backgrounds:
                processes.append(Process(getattr(Backgrounds[runRange.era],background),eventCounts))
        
        triggerSF_EE,_ = getTriggerScaleFactor("EE",   region, runRange)
        triggerSF_MM,_ = getTriggerScaleFactor("MuMu", region, runRange)
        triggerSF_EM,_ = getTriggerScaleFactor("EMu", region, runRange)
        
        histoEE = TheStack(processes,runRange.lumi,plot,treesEE,"None",1.0,triggerSF_EE,1.0,useTriggerEmulation=True).theHistogram               
        histoMM = TheStack(processes,runRange.lumi,plot,treesMM,"None",1.0,triggerSF_MM,1.0,useTriggerEmulation=True).theHistogram
        histoEM = TheStack(processes,runRange.lumi,plot,treesEM,"None",1.0,triggerSF_EM,1.0,useTriggerEmulation=True).theHistogram
        
        histSF = histoEE.Clone()
        histSF.Add(histoMM.Clone(), 1)
        histSF.Add(histoEM.Clone(), -1)

        return histSF
def getHistograms(path,plot,runRange,backgrounds):

        treesEE = readTrees(path,"EE")
        treesEM = readTrees(path,"EMu")
        treesMM = readTrees(path,"MuMu")

        eventCounts = totalNumberOfGeneratedEvents(path)        
        processes = []
        for background in backgrounds:
                processes.append(Process(getattr(Backgrounds[runRange.era],background),eventCounts))
        histoEE = TheStack(processes,runRange.lumi,plot,treesEE,"None",1.0,1.0,1.0).theHistogram                
        histoMM = TheStack(processes,runRange.lumi,plot,treesMM,"None",1.0,1.0,1.0).theHistogram            


        return histoEE , histoMM
def getHistograms(path,plot,runRange,backgrounds):

        treesEE = readTrees(path,"EE")
        treesEM = readTrees(path,"EMu")
        treesMM = readTrees(path,"MuMu")

        eventCounts = totalNumberOfGeneratedEvents(path)        
        processes = []
        for background in backgrounds:
                processes.append(Process(getattr(Backgrounds[runRange.era],background),eventCounts))
        tmpC = plot.cuts
        plot.cuts = plot.cuts.replace("pt > 25 &&", "pt > 25 && miniIsoEffArea1 < 0.1 && miniIsoEffArea2 < 0.1 &&")
        histoEE = TheStack(processes,runRange.lumi,plot,treesEE,"None",1.0,1.0,1.0).theHistogram                
        plot.cuts = tmpC
        plot.cuts = plot.cuts.replace("pt > 25 &&", "pt > 25 && miniIsoEffArea1 < 0.2 && miniIsoEffArea2 < 0.2 &&")
        histoMM = TheStack(processes,runRange.lumi,plot,treesMM,"None",1.0,1.0,1.0).theHistogram  

        return histoEE , histoMM
Пример #7
0
def getHistograms(path, plot, runRange, isMC, backgrounds):

    treesEE = readTrees(path, "EE")
    treesEM = readTrees(path, "EMu")
    treesMM = readTrees(path, "MuMu")

    if "NLL" in path:
        isNLL = True
        plot.cuts = plot.cuts.replace(" && metFilterSummary > 0", "")

    if isMC:
        eventCounts = totalNumberOfGeneratedEvents(path)
        processes = []
        for background in backgrounds:
            processes.append(
                Process(getattr(Backgrounds[runRange.era], background),
                        eventCounts))
        histoEE = TheStack(processes,
                           runRange.lumi,
                           plot,
                           treesEE,
                           "None",
                           1.0,
                           1.0,
                           1.0,
                           useTriggerEmulation=(not isNLL)).theHistogram
        histoMM = TheStack(processes,
                           runRange.lumi,
                           plot,
                           treesMM,
                           "None",
                           1.0,
                           1.0,
                           1.0,
                           useTriggerEmulation=(not isNLL)).theHistogram
    else:
        histoEE = getDataHist(plot, treesEE)
        histoMM = getDataHist(plot, treesMM)

    return histoEE, histoMM
Пример #8
0
def getHistograms(path,source,modifier,plot,runRange,isMC,nonNormalized,backgrounds,region=""):
        era = runRange.era
        treesEE = readTrees(path,"EE",source = source,modifier= modifier)
        treesEM = readTrees(path,"EMu",source = source,modifier= modifier)
        treesMM = readTrees(path,"MuMu",source = source,modifier= modifier)
                
        
        
        if isMC:
                #~ print path, source, modifier
                eventCounts = totalNumberOfGeneratedEvents(path,source,modifier)        
                processes = []
                for background in backgrounds:
                        if nonNormalized:
                                processes.append(Process(getattr(Backgrounds[era],background),eventCounts,normalized=False))
                        else:
                                processes.append(Process(getattr(Backgrounds[era],background),eventCounts))
                
                triggerSF_EE,_ = getTriggerScaleFactor("EE",   region, runRange)
                triggerSF_MM,_ = getTriggerScaleFactor("MuMu", region, runRange)
                triggerSF_EM,_ = getTriggerScaleFactor("EMu",  region, runRange)
                
                histoEE = TheStack(processes,runRange.lumi,plot,treesEE,"None",1.0,triggerSF_EE,1.0).theHistogram              
                histoMM = TheStack(processes,runRange.lumi,plot,treesMM,"None",1.0,triggerSF_MM,1.0).theHistogram
                histoEM = TheStack(processes,runRange.lumi,plot,treesEM,"None",1.0,triggerSF_EM,1.0).theHistogram
                #~ 
                #~ histoEE = TheStack(processes,runRange.lumi,plot,treesEE,"None",1.0,1.0,1.0).theHistogram             
                #~ histoMM = TheStack(processes,runRange.lumi,plot,treesMM,"None",1.0,1.0,1.0).theHistogram
                #~ histoEM = TheStack(processes,runRange.lumi,plot,treesEM,"None",1.0,1.0,1.0).theHistogram
                                                #~ 
                #~ histoEE.Scale(getattr(triggerEffs,region).effEE.val/getattr(triggerEffs,region).effEE.valMC)
                #~ histoMM.Scale(getattr(triggerEffs,region).effMM.val/getattr(triggerEffs,region).effMM.valMC) 
                #~ histoEM.Scale(getattr(triggerEffs,region).effEM.val/getattr(triggerEffs,region).effEM.valMC)
                        
        else:
                histoEE = getDataHist(plot,treesEE)
                histoMM = getDataHist(plot,treesMM)
                histoEM = getDataHist(plot,treesEM)
        
        return histoEE , histoMM, histoEM
def getCounts(trees,
              cut,
              isMC,
              backgrounds,
              plot,
              runRange,
              path,
              blind=False):

    rMuEPars = corrections[runRange.era].rMuELeptonPt.inclusive

    corrMap = {}
    corrMapUp = {}
    corrMapDn = {}
    if isMC:
        corrMap["offset"] = rMuEPars.ptOffsetMC
        corrMap["falling"] = rMuEPars.ptFallingMC
        corrMap["etaParabolaBase"] = rMuEPars.etaParabolaBaseMC
        corrMap["etaParabolaMinus"] = rMuEPars.etaParabolaMinusMC
        corrMap["etaParabolaPlus"] = rMuEPars.etaParabolaPlusMC
        corrMap["norm"] = rMuEPars.normMC
    else:
        corrMap["offset"] = rMuEPars.ptOffset
        corrMap["falling"] = rMuEPars.ptFalling
        corrMap["etaParabolaBase"] = rMuEPars.etaParabolaBase
        corrMap["etaParabolaMinus"] = rMuEPars.etaParabolaMinus
        corrMap["etaParabolaPlus"] = rMuEPars.etaParabolaPlus
        corrMap["norm"] = rMuEPars.norm

    rMuEDummy = "({norm:.3f}*( ({offset:.3f} + {falling:.3f}/{pt})*({etaParabolaBase} + ({eta}<-1.6)*{etaParabolaMinus:.3f}*pow({eta}+1.6, 2)+({eta}>1.6)*{etaParabolaPlus:.3f}*pow({eta}-1.6,2) )))"
    rMuE_El = rMuEDummy.format(pt="pt1", eta="eta1", **corrMap)
    rMuE_Mu = rMuEDummy.format(pt="pt2", eta="eta2", **corrMap)
    rMuEWeight = "(0.5*(%s + pow(%s, -1)))" % (rMuE_El, rMuE_Mu)

    rMuEWeight_EE = "(0.5*pow(%s, -1))" % (rMuE_Mu)
    rMuEWeight_MM = "(0.5*(%s))" % (rMuE_El)

    variationUpFlat = "(1 + 0.05)"  #
    variationDnFlat = "(1 - 0.05)"  #
    variationUpPt = "(1 + 0.05*max(110.0 - {pt},0)/90.0)"  #
    variationDnPt = "(1 - 0.05*max(110.0 - {pt},0)/90.0)"  #
    variationUpEta = "(1 + 0.05*abs(max({eta}-1.2,0))/1.2 )"  #
    variationDnEta = "(1 - 0.05*abs(max({eta}-1.2,0))/1.2 )"  #

    # Flat uncertainty
    rMuE_ElUpFlat = "(%s*%s)" % (rMuE_El, variationUpFlat)
    rMuE_MuUpFlat = "(%s*%s)" % (rMuE_Mu, variationUpFlat)
    rMuEWeightUpFlat = "(0.5*(%s + pow(%s, -1)))" % (rMuE_ElUpFlat,
                                                     rMuE_MuUpFlat)
    rMuEWeightUpFlat_MM = "(0.5*(%s))" % (rMuE_ElUpFlat)
    rMuEWeightUpFlat_EE = "(0.5*pow(%s, -1))" % (rMuE_MuUpFlat)

    rMuE_ElDnFlat = "(%s*%s)" % (rMuE_El, variationDnFlat)
    rMuE_MuDnFlat = "(%s*%s)" % (rMuE_Mu, variationDnFlat)
    rMuEWeightDnFlat = "(0.5*(%s + pow(%s, -1)))" % (rMuE_ElDnFlat,
                                                     rMuE_MuDnFlat)
    rMuEWeightDnFlat_MM = "(0.5*(%s))" % (rMuE_ElDnFlat)
    rMuEWeightDnFlat_EE = "(0.5*pow(%s, -1))" % (rMuE_MuDnFlat)

    # Pt uncertainty
    rMuE_ElUpPt = "(%s*%s)" % (rMuE_El, variationUpPt.format(pt="pt1"))
    rMuE_MuUpPt = "(%s*%s)" % (rMuE_Mu, variationUpPt.format(pt="pt2"))
    rMuEWeightUpPt = "(0.5*(%s + pow(%s, -1)))" % (rMuE_ElUpPt, rMuE_MuUpPt)
    rMuEWeightUpPt_MM = "(0.5*(%s))" % (rMuE_ElUpPt)
    rMuEWeightUpPt_EE = "(0.5*pow(%s, -1))" % (rMuE_MuUpPt)

    rMuE_ElDnPt = "(%s*%s)" % (rMuE_El, variationDnPt.format(pt="pt1"))
    rMuE_MuDnPt = "(%s*%s)" % (rMuE_Mu, variationDnPt.format(pt="pt2"))
    rMuEWeightDnPt = "(0.5*(%s + pow(%s, -1)))" % (rMuE_ElDnPt, rMuE_MuDnPt)
    rMuEWeightDnPt_MM = "(0.5*(%s))" % (rMuE_ElDnPt)
    rMuEWeightDnPt_EE = "(0.5*pow(%s, -1))" % (rMuE_MuDnPt)

    # Pt uncertainty
    rMuE_ElUpEta = "(%s*%s)" % (rMuE_El, variationUpEta.format(eta="eta1"))
    rMuE_MuUpEta = "(%s*%s)" % (rMuE_Mu, variationUpEta.format(eta="eta2"))
    rMuEWeightUpEta = "(0.5*(%s + pow(%s, -1)))" % (rMuE_ElUpEta, rMuE_MuUpEta)
    rMuEWeightUpEta_MM = "(0.5*(%s))" % (rMuE_ElUpEta)
    rMuEWeightUpEta_EE = "(0.5*pow(%s, -1))" % (rMuE_MuUpEta)

    rMuE_ElDnEta = "(%s*%s)" % (rMuE_El, variationDnEta.format(eta="eta1"))
    rMuE_MuDnEta = "(%s*%s)" % (rMuE_Mu, variationDnEta.format(eta="eta2"))
    rMuEWeightDnEta = "(0.5*(%s + pow(%s, -1)))" % (rMuE_ElDnEta, rMuE_MuDnEta)
    rMuEWeightDnEta_MM = "(0.5*(%s))" % (rMuE_ElDnEta)
    rMuEWeightDnEta_EE = "(0.5*pow(%s, -1))" % (rMuE_MuDnEta)

    plot.cuts = cut.replace(
        "prefireWeight*leptonFullSimScaleFactor1*leptonFullSimScaleFactor2*genWeight*weight*",
        "")

    cutRMuEScaled = "%s*%s" % (rMuEWeight, plot.cuts)
    cutRMuEScaledUpFlat = "%s*%s" % (rMuEWeightUpFlat, plot.cuts)
    cutRMuEScaledDnFlat = "%s*%s" % (rMuEWeightDnFlat, plot.cuts)
    cutRMuEScaledUpPt = "%s*%s" % (rMuEWeightUpPt, plot.cuts)
    cutRMuEScaledDnPt = "%s*%s" % (rMuEWeightDnPt, plot.cuts)
    cutRMuEScaledUpEta = "%s*%s" % (rMuEWeightUpEta, plot.cuts)
    cutRMuEScaledDnEta = "%s*%s" % (rMuEWeightDnEta, plot.cuts)

    cutRMuEScaled_EE = "%s*%s" % (rMuEWeight_EE, plot.cuts)
    cutRMuEScaledUpFlat_EE = "%s*%s" % (rMuEWeightUpFlat_EE, plot.cuts)
    cutRMuEScaledDnFlat_EE = "%s*%s" % (rMuEWeightDnFlat_EE, plot.cuts)
    cutRMuEScaledUpPt_EE = "%s*%s" % (rMuEWeightUpPt_EE, plot.cuts)
    cutRMuEScaledDnPt_EE = "%s*%s" % (rMuEWeightDnPt_EE, plot.cuts)
    cutRMuEScaledUpEta_EE = "%s*%s" % (rMuEWeightUpEta_EE, plot.cuts)
    cutRMuEScaledDnEta_EE = "%s*%s" % (rMuEWeightDnEta_EE, plot.cuts)

    cutRMuEScaled_MM = "%s*%s" % (rMuEWeight_MM, plot.cuts)
    cutRMuEScaledUpFlat_MM = "%s*%s" % (rMuEWeightUpFlat_MM, plot.cuts)
    cutRMuEScaledDnFlat_MM = "%s*%s" % (rMuEWeightDnFlat_MM, plot.cuts)
    cutRMuEScaledUpPt_MM = "%s*%s" % (rMuEWeightUpPt_MM, plot.cuts)
    cutRMuEScaledDnPt_MM = "%s*%s" % (rMuEWeightDnPt_MM, plot.cuts)
    cutRMuEScaledUpEta_MM = "%s*%s" % (rMuEWeightUpEta_MM, plot.cuts)
    cutRMuEScaledDnEta_MM = "%s*%s" % (rMuEWeightDnEta_MM, plot.cuts)

    if isMC:
        RT = corrections[runRange.era].rSFOFTrig.inclusive.valMC
        RTErr = corrections[runRange.era].rSFOFTrig.inclusive.errMC
    else:
        RT = corrections[runRange.era].rSFOFTrig.inclusive.val
        RTErr = corrections[runRange.era].rSFOFTrig.inclusive.err

    if isMC:
        source = ""
        modifier = ""
        eventCounts = totalNumberOfGeneratedEvents(path, source, modifier)
        processes = []
        for background in backgrounds:
            processes.append(
                Process(getattr(Backgrounds[runRange.era], background),
                        eventCounts))

        n = {}
        for region in [
                "inclusive",
        ]:
            histEE = TheStack(processes, runRange.lumi, plot, trees["EE"],
                              "None", 1.0,
                              getTriggerScaleFactor("EE", region, runRange),
                              1.0).theHistogram
            histMM = TheStack(processes, runRange.lumi, plot, trees["MM"],
                              "None", 1.0,
                              getTriggerScaleFactor("MM", region, runRange),
                              1.0).theHistogram
            histEM = TheStack(processes, runRange.lumi, plot, trees["EM"],
                              "None", 1.0,
                              getTriggerScaleFactor("EM", region, runRange),
                              1.0).theHistogram

            triggerEffs = corrections[runRange.era]
            histEE.Scale(getattr(triggerEffs, region).effEE.val)
            histMM.Scale(getattr(triggerEffs, region).effMM.val)
            histEM.Scale(getattr(triggerEffs, region).effEM.val)

            # central value
            plot.cuts = cutRMuEScaled
            histEMRMuEScaled = TheStack(processes, runRange.lumi, plot,
                                        trees["EM"], "None", 1.0, 1.0,
                                        1.0).theHistogram
            histEMRMuEScaled.Scale(getattr(triggerEffs, region).effEM.val)

            # flat uncertainty
            plot.cuts = cutRMuEScaledUpFlat
            histEMRMuEScaledUpFlat = TheStack(processes, runRange.lumi, plot,
                                              trees["EM"], "None", 1.0, 1.0,
                                              1.0).theHistogram
            histEMRMuEScaledUpFlat.Scale(
                getattr(triggerEffs, region).effEM.val)

            plot.cuts = cutRMuEScaledDnFlat
            histEMRMuEScaledDownFlat = TheStack(processes, runRange.lumi, plot,
                                                trees["EM"], "None", 1.0, 1.0,
                                                1.0).theHistogram
            histEMRMuEScaledDownFlat.Scale(
                getattr(triggerEffs, region).effEM.val)

            # pt uncertainty
            plot.cuts = cutRMuEScaledUpPt
            histEMRMuEScaledUpPt = TheStack(processes, runRange.lumi, plot,
                                            trees["EM"], "None", 1.0, 1.0,
                                            1.0).theHistogram
            histEMRMuEScaledUpPt.Scale(getattr(triggerEffs, region).effEM.val)

            plot.cuts = cutRMuEScaledDnPt
            histEMRMuEScaledDownPt = TheStack(processes, runRange.lumi, plot,
                                              trees["EM"], "None", 1.0, 1.0,
                                              1.0).theHistogram
            histEMRMuEScaledDownPt.Scale(
                getattr(triggerEffs, region).effEM.val)

            # eta uncertainty
            plot.cuts = cutRMuEScaledUpEta
            histEMRMuEScaledUpEta = TheStack(processes, runRange.lumi, plot,
                                             trees["EM"], "None", 1.0, 1.0,
                                             1.0).theHistogram
            histEMRMuEScaledUpEta.Scale(getattr(triggerEffs, region).effEM.val)

            plot.cuts = cutRMuEScaledDnEta
            histEMRMuEScaledDownEta = TheStack(processes, runRange.lumi, plot,
                                               trees["EM"], "None", 1.0, 1.0,
                                               1.0).theHistogram
            histEMRMuEScaledDownEta.Scale(
                getattr(triggerEffs, region).effEM.val)

            eeErr = ROOT.Double()
            ee = histEE.IntegralAndError(0, -1, eeErr)
            mmErr = ROOT.Double()
            mm = histMM.IntegralAndError(0, -1, mmErr)
            emErr = ROOT.Double()
            em = histEM.IntegralAndError(0, -1, emErr)

            #central value
            emRMuEScaledErr = ROOT.Double()
            emRMuEScaled = histEMRMuEScaled.IntegralAndError(
                0, -1, emRMuEScaledErr)

            # flat uncertainty
            emRMuEScaledUpFlatErr = ROOT.Double()
            emRMuEScaledUpFlat = histEMRMuEScaledUpFlat.IntegralAndError(
                0, -1, emRMuEScaledUpFlatErr)
            emRMuEScaledDownFlatErr = ROOT.Double()
            emRMuEScaledDownFlat = histEMRMuEScaledDownFlat.IntegralAndError(
                0, -1, emRMuEScaledDownFlatErr)

            # pt uncertainty
            emRMuEScaledUpPtErr = ROOT.Double()
            emRMuEScaledUpPt = histEMRMuEScaledUpPt.IntegralAndError(
                0, -1, emRMuEScaledUpPtErr)
            emRMuEScaledDownPtErr = ROOT.Double()
            emRMuEScaledDownPt = histEMRMuEScaledDownPt.IntegralAndError(
                0, -1, emRMuEScaledDownPtErr)

            # eta uncertainty
            emRMuEScaledUpEtaErr = ROOT.Double()
            emRMuEScaledUpEta = histEMRMuEScaledUpEta.IntegralAndError(
                0, -1, emRMuEScaledUpEtaErr)
            emRMuEScaledDownEtaErr = ROOT.Double()
            emRMuEScaledDownEta = histEMRMuEScaledDownEta.IntegralAndError(
                0, -1, emRMuEScaledDownEtaErr)

            n["EMRMuEScaled"] = emRMuEScaled * RT
            n["EMRMuEScaledUpFlat"] = emRMuEScaledUpFlat * RT
            n["EMRMuEScaledDownFlat"] = emRMuEScaledDownFlat * RT
            n["EMRMuEScaledUpPt"] = emRMuEScaledUpPt * RT
            n["EMRMuEScaledDownPt"] = emRMuEScaledDownPt * RT
            n["EMRMuEScaledUpEta"] = emRMuEScaledUpEta * RT
            n["EMRMuEScaledDownEta"] = emRMuEScaledDownEta * RT

            n["MM"] = mm
            n["EE"] = ee
            n["EM"] = em
            n["MMStatErr"] = float(mmErr)
            n["EEStatErr"] = float(eeErr)
            n["EMStatErr"] = float(emErr)

    else:
        n = {}
        for region in [
                "inclusive",
        ]:
            if blind:
                n["MM"] = createHistoFromTree(trees["EM"], "mll",
                                              cutRMuEScaled_MM, 100, 0,
                                              10000).Integral(0, -1) * RT
                n["EE"] = createHistoFromTree(trees["EM"], "mll",
                                              cutRMuEScaled_EE, 100, 0,
                                              10000).Integral(0, -1) * RT
            else:
                n["MM"] = trees["MM"].GetEntries(plot.cuts)
                n["EE"] = trees["EE"].GetEntries(plot.cuts)
            n["EM"] = trees["EM"].GetEntries(plot.cuts)

            n["EMRMuEScaled"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaled, 100, 0, 10000).Integral(
                    0, -1) * RT
            n["EMRMuEScaled_EE"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaled_EE, 100, 0, 10000).Integral(
                    0, -1) * RT
            n["EMRMuEScaled_MM"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaled_MM, 100, 0, 10000).Integral(
                    0, -1) * RT

            n["EMRMuEScaledUpRT"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaled, 10, 0, 10000).Integral(
                    0, -1) * (RT + RTErr)
            n["EMRMuEScaledDownRT"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaled, 10, 0, 10000).Integral(
                    0, -1) * (RT - RTErr)
            n["EMRMuEScaledUpFlat"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledUpFlat, 10, 0,
                10000).Integral(0, -1) * RT
            n["EMRMuEScaledDownFlat"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledDnFlat, 10, 0,
                10000).Integral(0, -1) * RT
            n["EMRMuEScaledUpPt"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledUpPt, 10, 0, 10000).Integral(
                    0, -1) * RT
            n["EMRMuEScaledDownPt"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledDnPt, 10, 0, 10000).Integral(
                    0, -1) * RT
            n["EMRMuEScaledUpEta"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledUpEta, 10, 0, 10000).Integral(
                    0, -1) * RT
            n["EMRMuEScaledDownEta"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledDnEta, 10, 0, 10000).Integral(
                    0, -1) * RT

            n["EMRMuEScaledUpRT_EE"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaled_EE, 10, 0, 10000).Integral(
                    0, -1) * (RT + RTErr)
            n["EMRMuEScaledDownRT_EE"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaled_EE, 10, 0, 10000).Integral(
                    0, -1) * (RT - RTErr)
            n["EMRMuEScaledUpFlat_EE"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledUpFlat_EE, 10, 0,
                10000).Integral(0, -1) * RT
            n["EMRMuEScaledDownFlat_EE"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledDnFlat_EE, 10, 0,
                10000).Integral(0, -1) * RT
            n["EMRMuEScaledUpPt_EE"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledUpPt_EE, 10, 0,
                10000).Integral(0, -1) * RT
            n["EMRMuEScaledDownPt_EE"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledDnPt_EE, 10, 0,
                10000).Integral(0, -1) * RT
            n["EMRMuEScaledUpEta_EE"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledUpEta_EE, 10, 0,
                10000).Integral(0, -1) * RT
            n["EMRMuEScaledDownEta_EE"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledDnEta_EE, 10, 0,
                10000).Integral(0, -1) * RT

            n["EMRMuEScaledUpRT_MM"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaled_MM, 10, 0, 10000).Integral(
                    0, -1) * (RT + RTErr)
            n["EMRMuEScaledDownRT_MM"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaled_MM, 10, 0, 10000).Integral(
                    0, -1) * (RT - RTErr)
            n["EMRMuEScaledUpFlat_MM"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledUpFlat_MM, 10, 0,
                10000).Integral(0, -1) * RT
            n["EMRMuEScaledDownFlat_MM"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledDnFlat_MM, 10, 0,
                10000).Integral(0, -1) * RT
            n["EMRMuEScaledUpPt_MM"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledUpPt_MM, 10, 0,
                10000).Integral(0, -1) * RT
            n["EMRMuEScaledDownPt_MM"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledDnPt_MM, 10, 0,
                10000).Integral(0, -1) * RT
            n["EMRMuEScaledUpEta_MM"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledUpEta_MM, 10, 0,
                10000).Integral(0, -1) * RT
            n["EMRMuEScaledDownEta_MM"] = createHistoFromTree(
                trees["EM"], "mll", cutRMuEScaledDnEta_MM, 10, 0,
                10000).Integral(0, -1) * RT

            n["MMStatErr"] = n["MM"]**0.5
            n["EEStatErr"] = n["EE"]**0.5
            n["EMStatErr"] = n["EM"]**0.5

    n["cut"] = cut
    return n
Пример #10
0
	
	plot = getPlot("mllPlot")
	selection = getRegion("SignalInclusive")
	plot.addRegion(selection)
	plot.cleanCuts()
	plot.cuts = plot.cuts % runRange.runCut			
	
	eventCounts = totalNumberOfGeneratedEvents(path)
	processes = [Process(getattr(Backgrounds,"TT_Powheg"),eventCounts)]

	treesEE = readTrees(path,"EE")
	treesEM = readTrees(path,"EMu")
	treesMM = readTrees(path,"MuMu")


	histoEE = TheStack(processes,runRange.lumi,plot,treesEE,"None",1.0,1.0,1.0).theHistogram		
	histoMM = TheStack(processes,runRange.lumi,plot,treesMM,"None",1.0,1.0,1.0).theHistogram
	histoEM = TheStack(processes,runRange.lumi,plot,treesEM,"None",1.0,1.0,1.0).theHistogram		
	#~ histoEE.Scale(getattr(triggerEffs,"central").effEE.valMC)
	#~ histoMM.Scale(getattr(triggerEffs,"central").effMM.valMC)	
	#~ histoEM.Scale(getattr(triggerEffs,"central").effEM.valMC)	



	histoSF = histoEE.Clone()
	histoSF.Add(histoMM)

		
	hCanvas = TCanvas("hCanvas", "Distribution", 800,800)
	
	plotPad = ROOT.TPad("plotPad","plotPad",0,0.3,1,1)
Пример #11
0
def getCounts(trees, cut, isMC, backgrounds,plot,runRange,baseTreePath):

	if isMC:
		tmpCut = plot.cuts
		plot.cuts = cut
		source = ""
		modifier = ""
		eventCounts = totalNumberOfGeneratedEvents(baseTreePath,source,modifier)	
		processes = []
		for background in backgrounds:
			processes.append(Process(getattr(Backgrounds,background),eventCounts))
		
		histEE = TheStack(processes,runRange.lumi,plot,trees["EE"],"None",1.0,1.0,1.0).theHistogram		
		histMM = TheStack(processes,runRange.lumi,plot,trees["MM"],"None",1.0,1.0,1.0).theHistogram
		histEM = TheStack(processes,runRange.lumi,plot,trees["EM"],"None",1.0,1.0,1.0).theHistogram
						
		#~ histoEE.Scale(getattr(triggerEffs,region).effEE.val)
		#~ histoEE.Scale(getattr(triggerEffs,region).effMM.val)	
		#~ histoEM.Scale(getattr(triggerEffs,region).effEM.val)	
		
		
		eeErr = ROOT.Double()
		ee = histEE.IntegralAndError(1,histEE.GetNbinsX(),eeErr)
		mmErr = ROOT.Double()
		mm = histMM.IntegralAndError(1,histMM.GetNbinsX(),mmErr)
		emErr = ROOT.Double()
		em = histEM.IntegralAndError(1,histEM.GetNbinsX(),emErr)
		
		
		
		n= {
			"MM": ee,
			"EE": mm,
			"EM": em,
			}
		n["MMStatErr"] = float(eeErr)	
		n["EEStatErr"] = float(mmErr)	
		n["EMStatErr"] = float(emErr)		
		
		plot.cuts = tmpCut
		
	else:		
		n= {
			"MM": trees["MM"].GetEntries(cut),
			"EE": trees["EE"].GetEntries(cut),
			"EM": trees["EM"].GetEntries(cut),
			}
		n["MMStatErr"] = n["MM"]**0.5	
		n["EEStatErr"] = n["EE"]**0.5	
		n["EMStatErr"] = n["EM"]**0.5	
		#~ print cut, n
	n["cut"] = cut
	return n
def getHistograms(path, plot, runRange, isMC, backgrounds, source):

    if not isMC:
        treesEE = readTrees(path, "EE", modifier="TriggerPFHT")
        treesMuMu = readTrees(path, "MuMu", modifier="TriggerPFHT")
        treesEMu = readTrees(path, "EMu", modifier="TriggerPFHT")

        denominatorHistoEE = TH1F("", "", plot.nBins, plot.firstBin,
                                  plot.lastBin)
        for name, tree in treesEE.iteritems():
            if name == "MergedData":
                denominatorHistoEE.Add(
                    createHistoFromTree(tree,
                                        plot.variable,
                                        plot.cuts,
                                        plot.nBins,
                                        plot.firstBin,
                                        plot.lastBin,
                                        binning=plot.binning).Clone())
        denominatorHistoMuMu = TH1F("", "", plot.nBins, plot.firstBin,
                                    plot.lastBin)
        for name, tree in treesMuMu.iteritems():
            if name == "MergedData":
                denominatorHistoMuMu.Add(
                    createHistoFromTree(tree,
                                        plot.variable,
                                        plot.cuts,
                                        plot.nBins,
                                        plot.firstBin,
                                        plot.lastBin,
                                        binning=plot.binning).Clone())
        denominatorHistoMuEG = TH1F("", "", plot.nBins, plot.firstBin,
                                    plot.lastBin)
        for name, tree in treesEMu.iteritems():
            if name == "MergedData":
                denominatorHistoMuEG.Add(
                    createHistoFromTree(tree,
                                        plot.variable,
                                        plot.cuts,
                                        plot.nBins,
                                        plot.firstBin,
                                        plot.lastBin,
                                        binning=plot.binning).Clone())

        cutsEE = plot.cuts.replace(
            "chargeProduct < 0",
            "chargeProduct < 0 && %s" % theCuts.triggerCuts.EE.cut)
        cutsOF = plot.cuts.replace(
            "chargeProduct < 0",
            "chargeProduct < 0 && %s" % theCuts.triggerCuts.EM.cut)
        cutsMuMu = plot.cuts.replace(
            "chargeProduct < 0",
            "chargeProduct < 0 && %s" % theCuts.triggerCuts.MM.cut)

        nominatorHistoEE = TH1F("", "", plot.nBins, plot.firstBin,
                                plot.lastBin)
        for name, tree in treesEE.iteritems():
            if name == "MergedData":
                nominatorHistoEE.Add(
                    createHistoFromTree(tree,
                                        plot.variable,
                                        cutsEE,
                                        plot.nBins,
                                        plot.firstBin,
                                        plot.lastBin,
                                        binning=plot.binning).Clone())
        nominatorHistoMuMu = TH1F("", "", plot.nBins, plot.firstBin,
                                  plot.lastBin)
        for name, tree in treesMuMu.iteritems():
            if name == "MergedData":
                nominatorHistoMuMu.Add(
                    createHistoFromTree(tree,
                                        plot.variable,
                                        cutsMuMu,
                                        plot.nBins,
                                        plot.firstBin,
                                        plot.lastBin,
                                        binning=plot.binning).Clone())
        nominatorHistoMuEG = TH1F("", "", plot.nBins, plot.firstBin,
                                  plot.lastBin)
        for name, tree in treesEMu.iteritems():
            if name == "MergedData":
                nominatorHistoMuEG.Add(
                    createHistoFromTree(tree,
                                        plot.variable,
                                        cutsOF,
                                        plot.nBins,
                                        plot.firstBin,
                                        plot.lastBin,
                                        binning=plot.binning).Clone())
    else:
        treesEE = readTrees(path, "EE")
        treesMuMu = readTrees(path, "MuMu")
        treesEMu = readTrees(path, "EMu")

        eventCounts = totalNumberOfGeneratedEvents(path)
        processes = []
        for background in backgrounds:
            processes.append(
                Process(getattr(Backgrounds, background), eventCounts))

        nominatorStackEE = TheStack(processes,
                                    runRange.lumi,
                                    plot,
                                    treesEE,
                                    "None",
                                    1.0,
                                    1.0,
                                    1.0,
                                    useTriggerEmulation=True)
        nominatorStackMuMu = TheStack(processes,
                                      runRange.lumi,
                                      plot,
                                      treesMuMu,
                                      "None",
                                      1.0,
                                      1.0,
                                      1.0,
                                      useTriggerEmulation=True)
        nominatorStackMuEG = TheStack(processes,
                                      runRange.lumi,
                                      plot,
                                      treesEMu,
                                      "None",
                                      1.0,
                                      1.0,
                                      1.0,
                                      useTriggerEmulation=True)

        denominatorStackEE = TheStack(processes, runRange.lumi, plot, treesEE,
                                      "None", 1.0, 1.0, 1.0)
        denominatorStackMuMu = TheStack(processes, runRange.lumi, plot,
                                        treesMuMu, "None", 1.0, 1.0, 1.0)
        denominatorStackMuEG = TheStack(processes, runRange.lumi, plot,
                                        treesEMu, "None", 1.0, 1.0, 1.0)

        denominatorHistoEE = denominatorStackEE.theHistogram
        denominatorHistoMuMu = denominatorStackMuMu.theHistogram
        denominatorHistoMuEG = denominatorStackMuEG.theHistogram

        nominatorHistoEE = nominatorStackEE.theHistogram
        nominatorHistoMuMu = nominatorStackMuMu.theHistogram
        nominatorHistoMuEG = nominatorStackMuEG.theHistogram

    return {
        "EE": denominatorHistoEE,
        "MuMu": denominatorHistoMuMu,
        "MuEG": denominatorHistoMuEG
    }, {
        "EE": nominatorHistoEE,
        "MuMu": nominatorHistoMuMu,
        "MuEG": nominatorHistoMuEG
    }