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()
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
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()
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()
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()
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
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
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")
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
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
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
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
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]",