Beispiel #1
0
    def __init__(self, year=2016):

        if year not in [ 2016, 2017, 2018 ]:
            raise Exception("Lepton SF for year %i not known"%year)

        self.year    = year
        self.dataDir = "$CMSSW_BASE/src/Analysis/Tools/data/photonSFData/"

        if year == 2016:
#            g_file = 'g2016_Fall17V2_2016_Medium_photons_private.root'
            g_file = 'g2016_egammaPlots_MWP_PhoSFs_2016_LegacyReReco_New_private.root'
            g_key  = "EGamma_SF2D"
            g_key_altSig  = "EGamma_SF2D_altModel"

        elif year == 2017:
            g_file = 'g2017_PhotonsMedium_mod_private_BostonAdded.root'
            g_key  = "EGamma_SF2D"
            g_key_altSig  = "EGamma_SF2D_altModel"

        elif year == 2018:
            g_file = 'g2018_PhotonsMedium_mod_private_BostonAdded.root'
            g_key  = "EGamma_SF2D"
            g_key_altSig  = "EGamma_SF2D_altModel"

        self.g_sf = getObjFromFile( os.path.expandvars( os.path.join( self.dataDir, g_file ) ), g_key )
        self.g_sf_altSig = getObjFromFile( os.path.expandvars( os.path.join( self.dataDir, g_file ) ), g_key_altSig )
        assert self.g_sf, "Could not load gamma SF histo %s from file %s."%( g_key, g_file )
        assert self.g_sf_altSig, "Could not load gamma SF histo %s from file %s."%( g_key_altSig, g_file )

        self.g_ptMax = self.g_sf.GetYaxis().GetXmax()
        self.g_ptMin = self.g_sf.GetYaxis().GetXmin()

        self.g_etaMax = self.g_sf.GetXaxis().GetXmax()
        self.g_etaMin = self.g_sf.GetXaxis().GetXmin()
Beispiel #2
0
    def __init__(self, year, syst=0.2):
        if year == 2016:
            self.phEff = getObjFromFile(
                os.path.expandvars(
                    '$CMSSW_BASE/src/Analysis/Tools/data/L1Prefiring/L1prefiring_photonpt_2016BtoH.root'
                ), 'L1prefiring_photonpt_2016BtoH')
            self.jetEff = getObjFromFile(
                os.path.expandvars(
                    '$CMSSW_BASE/src/Analysis/Tools/data/L1Prefiring/L1prefiring_jetpt_2016BtoH.root'
                ), 'L1prefiring_jetpt_2016BtoH')
        elif year == 2017:
            self.phEff = getObjFromFile(
                os.path.expandvars(
                    '$CMSSW_BASE/src/Analysis/Tools/data/L1Prefiring/L1prefiring_photonpt_2017BtoF.root'
                ), 'L1prefiring_photonpt_2017BtoF')
            self.jetEff = getObjFromFile(
                os.path.expandvars(
                    '$CMSSW_BASE/src/Analysis/Tools/data/L1Prefiring/L1prefiring_jetpt_2017BtoF.root'
                ), 'L1prefiring_jetpt_2017BtoF')
        else:
            self.phEff = None
            self.jetEff = None

        if self.phEff:
            self.maxPtG = self.phEff.GetYaxis().GetXmax()
            self.maxPtJ = self.jetEff.GetYaxis().GetXmax()
        self.rel_syst = syst
    def __init__(self, year):

        if year not in [2016, 2017, 2018]:
            raise Exception("Photon Veto SF for year %i not known" % year)

        self.year = year

        if self.year == 2016:
            g_keys = g16_keys
        elif self.year == 2017:
            g_keys = g17_keys
        elif self.year == 2018:
            g_keys = g18_keys
            g_keys_unc = g18_keys_unc

        self.dataDir = "$CMSSW_BASE/src/Analysis/Tools/data/photonSFData"
        self.g_sf = [
            getObjFromFile(
                os.path.expandvars(os.path.join(self.dataDir, file)), key)
            for (file, key) in g_keys
        ]
        if self.year == 2018:
            self.g_sf_unc = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in g_keys_unc
            ]
            for effMap in self.g_sf_unc:
                assert effMap

        for effMap in self.g_sf:
            assert effMap
Beispiel #4
0
    def __init__(self, year=2016):

        if year not in [2016, 2017, 2018]:
            raise Exception("Lepton SF for year %i not known" % year)

        self.year = year
        self.dataDir = "$CMSSW_BASE/src/Analysis/Tools/data/photonSFData/"

        if year == 2016:
            g_file = 'g2016_Fall17V2_2016_Medium_photons.root'
            g_key = "EGamma_SF2D"

        elif year == 2017:
            g_file = 'g2017_PhotonsMedium.root'
            g_key = "EGamma_SF2D"

        elif year == 2018:
            g_file = 'g2018_PhotonsMedium.root'
            g_key = "EGamma_SF2D"

        self.g_sf = getObjFromFile(
            os.path.expandvars(os.path.join(self.dataDir, g_file)), g_key)
        assert self.g_sf, "Could not load gamma SF histo %s from file %s." % (
            g_key, g_file)

        self.g_ptMax = self.g_sf.GetYaxis().GetXmax()
        self.g_ptMin = self.g_sf.GetYaxis().GetXmin()

        self.g_etaMax = self.g_sf.GetXaxis().GetXmax()
        self.g_etaMin = self.g_sf.GetXaxis().GetXmin()
Beispiel #5
0
    def __init__(self, year=2016):

        if year not in [2016, 2017, 2018]:
            raise Exception("Photon Reconstruction Eff for year %i not known" %
                            year)

        self.dataDir = "$CMSSW_BASE/src/Analysis/Tools/data/photonSFData/"
        self.year = year

        if self.year == 2016:
            ## EGamma POG, https://twiki.cern.ch/twiki/bin/viewauth/CMS/EgammaIDRecipesRun2#Cut%20based%20photon%20identification
            g_file = 'g2016_EGM2D_BtoH_GT20GeV_RecoSF_Legacy2016.root'
            g_key = "EGamma_SF2D"

        elif self.year == 2017:
            # UPDATE WHEN AVAILABLE
            g_file = 'g2016_EGM2D_BtoH_GT20GeV_RecoSF_Legacy2016.root'
            g_key = "EGamma_SF2D"

        elif self.year == 2018:
            # UPDATE WHEN AVAILABLE
            g_file = 'g2016_EGM2D_BtoH_GT20GeV_RecoSF_Legacy2016.root'
            g_key = "EGamma_SF2D"

        self.g_sf = getObjFromFile(
            os.path.expandvars(os.path.join(self.dataDir, g_file)), g_key)

        assert self.g_sf, "Could not load ele SF histo %s from file %s." % (
            g_key, g_file)

        self.g_ptMax = self.g_sf.GetYaxis().GetXmax()
        self.g_ptMin = self.g_sf.GetYaxis().GetXmin()

        self.g_etaMax = self.g_sf.GetXaxis().GetXmax()
        self.g_etaMin = self.g_sf.GetXaxis().GetXmin()
Beispiel #6
0
    def __init__(self, year=2016):

        if year not in [2016, 2017, 2018]:
            raise Exception("Lepton Reconstruction Eff for year %i not known" %
                            year)

        self.dataDir = "$CMSSW_BASE/src/Analysis/Tools/data/leptonSFData/"
        self.year = year

        if self.year == 2016:
            ## EGamma POG, https://twiki.cern.ch/twiki/bin/viewauth/CMS/EgammaIDRecipesRun2#Cut%20based%20photon%20identification
            ## 2016 Legacy re-reco recommandation - Scale factors for reccomended ID for 2016 (renamed root file)
            e_file = 'e2016_EGamma_Run2016BtoH_passingRECO_Legacy2016.root'
            e_file_lowEt = 'e2016_EGamma_Run2016BtoH_passingRECO_lowEt_Legacy2016.root'
            e_key = "EGamma_SF2D"

        elif self.year == 2017:
            ## EGamma POG, https://twiki.cern.ch/twiki/bin/viewauth/CMS/EgammaIDRecipesRun2#Cut%20based%20photon%20identification
            e_file = 'e2017_egammaEffi_EGM2D.root'
            e_file_lowEt = 'e2017_egammaEffi_EGM2D_low.root'
            e_key = "EGamma_SF2D"

        elif self.year == 2018:
            ## EGamma POG, https://twiki.cern.ch/twiki/bin/viewauth/CMS/EgammaIDRecipesRun2#Cut%20based%20photon%20identification
            e_file = 'e2018_egammaEffi_EGM2D.root'
            e_file_lowEt = 'e2018_egammaEffi_EGM2D_low.root'
            e_key = "EGamma_SF2D"

        self.e_sf = getObjFromFile(
            os.path.expandvars(os.path.join(self.dataDir, e_file)), e_key)
        self.e_sf_lowEt = getObjFromFile(
            os.path.expandvars(os.path.join(self.dataDir, e_file_lowEt)),
            e_key)

        assert self.e_sf, "Could not load ele SF histo %s from file %s." % (
            e_key, e_file)
        assert self.e_sf_lowEt, "Could not load ele SF histo %s from file %s." % (
            e_key, e_file_lowEt)

        self.e_ptMax = self.e_sf.GetYaxis().GetXmax()
        self.e_ptMin = self.e_sf.GetYaxis().GetXmin()
        self.e_ptMin_lowEt = self.e_sf_lowEt.GetYaxis().GetXmin()

        self.e_etaMax = self.e_sf.GetXaxis().GetXmax()
        self.e_etaMin = self.e_sf.GetXaxis().GetXmin()
Beispiel #7
0
    def __init__(self):
        self.dataDir = "$CMSSW_BASE/src/Analysis/Tools/data/photonSFData"
        self.g_sf = [
            getObjFromFile(
                os.path.expandvars(os.path.join(self.dataDir, file)), key)
            for (file, key) in g_keys
        ]

        for effMap in self.g_sf:
            assert effMap
Beispiel #8
0
    def __init__(self, year=2016):

        if year not in [2016, 2017, 2018]:
            raise Exception("Lepton SF for year %i not known" % year)

        self.dataDir = "$CMSSW_BASE/src/Analysis/Tools/data/leptonSFData"
        self.year = year

        if year == 2016:
            self.mu_BCDEF = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2016_BCDEF
            ]
            self.mu_GH = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2016_GH
            ]
            self.ele = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_ele2016
            ]
            for effMap in self.mu_BCDEF + self.mu_GH + self.ele:
                assert effMap

        elif year == 2017:
            self.mu = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2017
            ]
            self.ele = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_ele2017
            ]
            for effMap in self.mu + self.ele:
                assert effMap

        elif year == 2018:
            self.mu = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2018
            ]
            self.ele = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_ele2018
            ]
            for effMap in self.mu + self.ele:
                assert effMap
Beispiel #9
0
    def __init__(self, year, isTopSample, WP=ROOT.BTagEntry.OP_MEDIUM):

        if year not in [2016, 2017, 2018]:
            raise Exception("Lepton SF for year %i not known" % year)

        self.dataDir = "$CMSSW_BASE/src/TTGammaEFT/Tools/data/btagEfficiencyData/"
        self.year = year
        self.isTopSample = isTopSample

        # All btag weight names per jet
        self.btagWeightNames = [
            'MC', 'SF', 'SF_b_Down', 'SF_b_Up', 'SF_l_Down', 'SF_l_Up'
        ]

        # Input files
        if year == 2016:
            self.scaleFactorFile = os.path.expandvars(
                os.path.join(self.dataDir, sfFile2016DeepCSV))
            keys = keys_2016
        if year == 2017:
            self.scaleFactorFile = os.path.expandvars(
                os.path.join(self.dataDir, sfFile2017DeepCSV))
            keys = keys_2017
        if year == 2018:
            self.scaleFactorFile = os.path.expandvars(
                os.path.join(self.dataDir, sfFile2018DeepCSV))
            keys = keys_2018

        self.mcEff = {}
        for s in ["Top", "Other"]:
            self.mcEff[s] = {}
            for f in ["other", "c", "b"]:
                self.mcEff[s][f] = getObjFromFile(
                    os.path.expandvars(
                        os.path.join(self.dataDir, keys[s][f][0])),
                    keys[s][f][1])

        logger.info("Loading scale factors from %s", self.scaleFactorFile)
        ROOT.gSystem.Load('libCondFormatsBTauObjects')
        ROOT.gSystem.Load('libCondToolsBTau')
        self.calib = ROOT.BTagCalibration("deepcsv", self.scaleFactorFile)

        # Get readers
        #recommended measurements for different jet flavours given here: https://twiki.cern.ch/twiki/bin/viewauth/CMS/BtagRecommendation80X#Data_MC_Scale_Factors
        v_sys = getattr(ROOT, 'vector<string>')()
        v_sys.push_back('up')
        v_sys.push_back('down')
        self.reader = ROOT.BTagCalibrationReader(WP, "central", v_sys)
        self.reader.load(self.calib, 0, "comb")
        self.reader.load(self.calib, 1, "comb")
        self.reader.load(self.calib, 2, "incl")
Beispiel #10
0
def getReweightingFunction(data="PU_2100_XSecCentral", mc="Spring15"):

    # Data
    fileNameData = puDataPath + "%s.root" % data

    histoData = getObjFromFile(fileNameData, 'pileup')
    histoData.Scale(1. / histoData.Integral())
    logger.info("Loaded 'pileup' from data file %s", fileNameData)

    if isinstance(mc, basestring):
        if mc == 'Summer16':
            mcProfile = extendHistoTo(
                getObjFromFile(
                    os.path.expandvars(puDataPath + "MCProfile_Summer16.root"),
                    'pileup'), histoData)
        elif mc == 'Autumn18':
            mcProfile = extendHistoTo(
                getObjFromFile(
                    os.path.expandvars(puDataPath + "MCProfile_Autumn18.root"),
                    'pileup'), histoData)
        else:
            raise ValueError("Don't know about MC PU profile %s" % mc)
    else:
        mcProfile = extendHistoTo(mc, histoData)

    mcProfile.Scale(1. / mcProfile.Integral())

    # Create reweighting histo
    reweightingHisto = histoData.Clone('_'.join(['reweightingHisto', data]))
    reweightingHisto.Divide(mcProfile)

    # Define reweightingFunc
    def reweightingFunc(nvtx):
        return reweightingHisto.GetBinContent(reweightingHisto.FindBin(nvtx))

    return reweightingFunc
Beispiel #11
0
    def __init__(self, year=2016):

        if year not in [2016, 2017, 2018]:
            raise Exception("Trigger SF for year %i not known" % year)

        self.year = year

        if year == 2016:
            self.mu_SF = getObjFromFile(
                os.path.expandvars(mu_trigger2016BtoF_SF), "abseta_pt_ratio")
            self.muGH_SF = getObjFromFile(
                os.path.expandvars(mu_trigger2016GH_SF), "abseta_pt_ratio")
            self.e_SF = getObjFromFile(os.path.expandvars(e_trigger2016_SF),
                                       "EGamma_SF2D")
            for effMap in [self.mu_SF, self.muGH_SF, self.e_SF]:
                assert effMap

        elif year == 2017:
            self.mu_SF = getObjFromFile(os.path.expandvars(mu_trigger2017_SF),
                                        "abseta_pt_ratio")
            self.e_SF = getObjFromFile(os.path.expandvars(e_trigger2017_SF),
                                       "EGamma_SF2D")
            for effMap in [self.mu_SF, self.e_SF]:
                assert effMap

        elif year == 2018:
            self.mu_SF = getObjFromFile(os.path.expandvars(mu_trigger2018_SF),
                                        "abseta_pt_ratio")
            self.e_SF = getObjFromFile(os.path.expandvars(e_trigger2018_SF),
                                       "EGamma_SF2D")
            for effMap in [self.mu_SF, self.e_SF]:
                assert effMap

        self.e_ptMax = self.e_SF.GetYaxis().GetXmax()
        self.e_ptMin = self.e_SF.GetYaxis().GetXmin()
        self.e_etaMax = self.e_SF.GetXaxis().GetXmax()
        self.e_etaMin = self.e_SF.GetXaxis().GetXmin()

        self.mu_ptMax = self.mu_SF.GetYaxis().GetXmax()
        self.mu_ptMin = self.mu_SF.GetYaxis().GetXmin()
        self.mu_etaMax = self.mu_SF.GetXaxis().GetXmax()
        self.mu_etaMin = self.mu_SF.GetXaxis().GetXmin()

        print self.e_ptMax, self.e_ptMin, self.e_etaMax, self.e_etaMin, self.mu_ptMax, self.mu_ptMin, self.mu_etaMax, self.mu_etaMin
    def __init__(self, year):

        if year not in [2016, 2017, 2018]:
            raise Exception("Photon Veto SF for year %i not known" % year)

        self.year = year

        if self.year == 2016:
            e_keys_Scaleup = e16_keys_Scaleup
            e_keys_Scaledown = e16_keys_Scaledown
            e_keys_Resup = e16_keys_Resup
            e_keys_Resdown = e16_keys_Resdown

            g_keys_Scaleup = g16_keys_Scaleup
            g_keys_Scaledown = g16_keys_Scaledown
            g_keys_Resup = g16_keys_Resup
            g_keys_Resdown = g16_keys_Resdown

        elif self.year == 2017:
            e_keys_Scaleup = e17_keys_Scaleup
            e_keys_Scaledown = e17_keys_Scaledown
            e_keys_Resup = e17_keys_Resup
            e_keys_Resdown = e17_keys_Resdown

            g_keys_Scaleup = g17_keys_Scaleup
            g_keys_Scaledown = g17_keys_Scaledown
            g_keys_Resup = g17_keys_Resup
            g_keys_Resdown = g17_keys_Resdown

        elif self.year == 2018:
            e_keys_Scaleup = e18_keys_Scaleup
            e_keys_Scaledown = e18_keys_Scaledown
            e_keys_Resup = e18_keys_Resup
            e_keys_Resdown = e18_keys_Resdown

            g_keys_Scaleup = g18_keys_Scaleup
            g_keys_Scaledown = g18_keys_Scaledown
            g_keys_Resup = g18_keys_Resup
            g_keys_Resdown = g18_keys_Resdown

        self.dataDir = "$CMSSW_BASE/src/TTGammaEFT/Tools/data/ecalUncertainty"
        self.g_Scaleup = getObjFromFile(
            os.path.expandvars(os.path.join(self.dataDir, g_keys_Scaleup[0])),
            g_keys_Scaleup[1])
        self.g_Scaledown = getObjFromFile(
            os.path.expandvars(os.path.join(self.dataDir,
                                            g_keys_Scaledown[0])),
            g_keys_Scaledown[1])
        self.g_Resup = getObjFromFile(
            os.path.expandvars(os.path.join(self.dataDir, g_keys_Resup[0])),
            g_keys_Resup[1])
        self.g_Resdown = getObjFromFile(
            os.path.expandvars(os.path.join(self.dataDir, g_keys_Resdown[0])),
            g_keys_Resdown[1])

        self.e_Scaleup = getObjFromFile(
            os.path.expandvars(os.path.join(self.dataDir, e_keys_Scaleup[0])),
            e_keys_Scaleup[1])
        self.e_Scaledown = getObjFromFile(
            os.path.expandvars(os.path.join(self.dataDir,
                                            e_keys_Scaledown[0])),
            e_keys_Scaledown[1])
        self.e_Resup = getObjFromFile(
            os.path.expandvars(os.path.join(self.dataDir, e_keys_Resup[0])),
            e_keys_Resup[1])
        self.e_Resdown = getObjFromFile(
            os.path.expandvars(os.path.join(self.dataDir, e_keys_Resdown[0])),
            e_keys_Resdown[1])

        for gmap in [
                self.g_Scaleup, self.g_Scaledown, self.g_Resup, self.g_Resdown
        ]:
            assert gmap
        for emap in [
                self.e_Scaleup, self.e_Scaledown, self.e_Resup, self.e_Resdown
        ]:
            assert emap
Beispiel #13
0
import ROOT
import os, sys

from Analysis.Tools.helpers import getObjFromFile

year = 2017

dataDir = "$CMSSW_BASE/src/Analysis/Tools/data/photonSFData/"
if year == 2016:
    g_file = "g2016_egammaPlots_MWP_PhoSFs_2016_LegacyReReco_New_private.root"
else:
    g_file = 'g%i_PhotonsMedium_mod_private.root' % year
g_key = "EGamma_SF2D"
gAS_key = "EGamma_SF2D_altModel"

sfmap = getObjFromFile(os.path.expandvars(os.path.join(dataDir, g_file)),
                       g_key)
sfASmap = getObjFromFile(os.path.expandvars(os.path.join(dataDir, g_file)),
                         gAS_key)

#for i in range(sfmap.GetNbinsX()):
#    for j in range(sfmap.GetNbinsY()):
#        print sfmap.GetXaxis().GetBinLowEdge(i+1), sfmap.GetYaxis().GetBinLowEdge(j+1), sfmap.GetBinContent(i+1,j+1), sfmap.GetBinError(i+1,j+1)
#    print

for i in range(sfmap.GetNbinsX()):
    if abs(sfmap.GetXaxis().GetBinLowEdge(
            i + 1)) > 1.5 or sfmap.GetXaxis().GetBinLowEdge(i + 1) >= 1.444:
        continue
    for j in range(sfmap.GetNbinsY()):
        if (year == 2017 and sfmap.GetYaxis().GetBinLowEdge(j + 1) >= 100) or (
                year == 2018 and sfmap.GetYaxis().GetBinLowEdge(j + 1) >= 200
Beispiel #14
0
    def __init__(self, year=2016, ID=None):

        if year not in [2016, 2017, 2018]:
            raise Exception("Lepton SF for year %i not known" % year)

        self.dataDir = "$CMSSW_BASE/src/Analysis/Tools/data/leptonSFData"
        self.year = year

        if year == 2016:

            if not ID in keys_mu2016_BCDEF.keys():
                raise Exception("Don't know ID %s" % ID)

            if not ID in keys_mu2016_GH.keys():
                raise Exception("Don't know ID %s" % ID)

            if not ID in keys_ele2016.keys():
                raise Exception("Don't know ID %s" % ID)

            self.mu_BCDEF = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2016_BCDEF[ID]
            ]
            self.mu_GH = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2016_GH[ID]
            ]
            self.mu_BCDEF_stat = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2016_BCDEF[ID + "_stat"]
            ]
            self.mu_GH_stat = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2016_GH[ID + "_stat"]
            ]
            self.mu_BCDEF_syst = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2016_BCDEF[ID + "_syst"]
            ]
            self.mu_GH_syst = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2016_GH[ID + "_syst"]
            ]
            self.ele = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_ele2016[ID]
            ]

            for effMap in self.mu_BCDEF + self.mu_GH + self.ele + self.mu_BCDEF_stat + self.mu_BCDEF_syst + self.mu_GH_stat + self.mu_GH_syst:
                assert effMap

        elif year == 2017:

            if not ID in keys_mu2017.keys():
                raise Exception("Don't know ID %s" % ID)

            if not ID in keys_ele2017.keys():
                raise Exception("Don't know ID %s" % ID)

            self.mu = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2017[ID]
            ]
            self.mu_stat = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2017[ID + "_stat"]
            ]
            self.mu_syst = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2017[ID + "_syst"]
            ]
            self.ele = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_ele2017[ID]
            ]

            for effMap in self.mu + self.ele + self.mu_stat + self.mu_syst:
                assert effMap

        elif year == 2018:

            if not ID in keys_mu2018.keys():
                raise Exception("Don't know ID %s" % ID)

            if not ID in keys_ele2018.keys():
                raise Exception("Don't know ID %s" % ID)

            self.mu = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2018[ID]
            ]
            self.mu_stat = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2018[ID + "_stat"]
            ]
            self.mu_syst = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_mu2018[ID + "_syst"]
            ]
            self.ele = [
                getObjFromFile(
                    os.path.expandvars(os.path.join(self.dataDir, file)), key)
                for (file, key) in keys_ele2018[ID]
            ]

            for effMap in self.ele + self.mu + self.mu_stat + self.mu_syst:
                assert effMap
Beispiel #15
0
dataDir = "$CMSSW_BASE/src/Analysis/Tools/data/photonSFData/"
if args.year == 2016:
    g_file = 'g2016_egammaPlots_MWP_PhoSFs_2016_LegacyReReco_New_private.root'
    g_key = "EGamma_SF2D"
elif args.year == 2017:
    g_file = 'g2017_PhotonsMedium_mod_private_BostonAdded.root'
    g_key = "EGamma_SF2D"
elif args.year == 2018:
    g_file = 'g2018_PhotonsMedium_mod_private_BostonAdded.root'
    g_key = "EGamma_SF2D"

if args.year == 2016: lumi_scale = 35.92
elif args.year == 2017: lumi_scale = 41.53
elif args.year == 2018: lumi_scale = 59.74

sfHist = getObjFromFile(os.path.expandvars(os.path.join(dataDir, g_file)),
                        g_key)
sfHist.Scale(100)
sfHist.SetMarkerSize(1.8)
sfHist.GetZaxis().SetTitleOffset(0.9)

for i in range(sfHist.GetNbinsX()):
    for j in range(sfHist.GetNbinsY()):
        sfHist.SetBinContent(i + 1, j + 1,
                             float("%.2f" % sfHist.GetBinError(i + 1, j + 1)))

Plot2D.setDefaults()
plots = []
plots.append(
    Plot2D.fromHisto("photonIDUnc_%i" % args.year, [[sfHist]],
                     texX="SuperCluster #eta(#gamma)",
                     texY="p_{T}(#gamma) [GeV]",