예제 #1
0
    def __init__(self):
        path = os.path.join(os.path.dirname(__file__),
                            'CombinedMethod_ScaleFactors_RecoIdIsoSip.root')
        self.e_rtfile = rt.TFile(path, 'READ')
        self.e_hist = self.e_rtfile.Get("h_electronScaleFactor_RecoIdIsoSip")

        path = os.path.join(os.path.dirname(__file__),
                            'MuonScaleFactors_2011_2012.root')
        self.m_rtfile = rt.TFile(path, 'READ')
        self.m_hist = self.m_rtfile.Get("TH2D_ALL_2012")

        self.muPOGId = MuonPOGCorrections.make_muon_pog_PFTight_2012()
        self.muPOGIso = MuonPOGCorrections.make_muon_pog_PFRelIsoDB012_2012()

        m_id_file = open(os.path.join(os.path.dirname(__file__),'MuonEfficiencies_Run2012ReReco_53X.pkl'),'r')
        self.m_id_dict = pickle.load(m_id_file)
        m_iso_file = open(os.path.join(os.path.dirname(__file__),'MuonEfficiencies_ISO_Run_2012ReReco_53X.pkl'),'r')
        self.m_iso_dict = pickle.load(m_iso_file)
예제 #2
0
################################################################################
#### MC-DATA and PU corrections ################################################
################################################################################

# Determine MC-DATA corrections
is7TeV = bool('7TeV' in os.environ['jobid'])
print "Is 7TeV:", is7TeV

# Make PU corrector from expected data PU distribution
# PU corrections .root files from pileupCalc.py
pu_distributions = glob.glob(
    os.path.join('inputs', os.environ['jobid'], 'data_DoubleMu*pu.root'))
pu_corrector = PileupWeight.PileupWeight('S6' if is7TeV else 'S7',
                                         *pu_distributions)

muon_pog_PFTight_2011 = MuonPOGCorrections.make_muon_pog_PFTight_2011()
muon_pog_PFTight_2012 = MuonPOGCorrections.make_muon_pog_PFTight_2012()

muon_pog_PFRelIsoDB02_2011 = MuonPOGCorrections.make_muon_pog_PFRelIsoDB02_2011(
)
muon_pog_PFRelIsoDB02_2012 = MuonPOGCorrections.make_muon_pog_PFRelIsoDB02_2012(
)

muon_pog_Mu17Mu8_Mu17_2012 = MuonPOGCorrections.make_muon_pog_Mu17Mu8_Mu17_2012(
)
muon_pog_Mu17Mu8_Mu8_2012 = MuonPOGCorrections.make_muon_pog_Mu17Mu8_Mu8_2012()

# takes etas of muons
muon_pog_Mu17Mu8_2011 = MuonPOGCorrections.muon_pog_Mu17Mu8_eta_eta_2011

예제 #3
0
)

################################################################################
#### MC-DATA and PU corrections ################################################
################################################################################

# Determine MC-DATA corrections
is7TeV = bool("7TeV" in os.environ["jobid"])
print "Is 7TeV:", is7TeV

# Make PU corrector from expected data PU distribution
# PU corrections .root files from pileupCalc.py
pu_distributions = glob.glob(os.path.join("inputs", os.environ["jobid"], "data_DoubleMu*pu.root"))
pu_corrector = PileupWeight.PileupWeight("S6" if is7TeV else "S7", *pu_distributions)

muon_pog_PFTight_2011 = MuonPOGCorrections.make_muon_pog_PFTight_2011()
muon_pog_PFTight_2012 = MuonPOGCorrections.make_muon_pog_PFTight_2012()

muon_pog_PFRelIsoDB02_2011 = MuonPOGCorrections.make_muon_pog_PFRelIsoDB02_2011()
muon_pog_PFRelIsoDB02_2012 = MuonPOGCorrections.make_muon_pog_PFRelIsoDB02_2012()

muon_pog_Mu17Mu8_Mu17_2012 = MuonPOGCorrections.make_muon_pog_Mu17Mu8_Mu17_2012()
muon_pog_Mu17Mu8_Mu8_2012 = MuonPOGCorrections.make_muon_pog_Mu17Mu8_Mu8_2012()

# takes etas of muons
muon_pog_Mu17Mu8_2011 = MuonPOGCorrections.muon_pog_Mu17Mu8_eta_eta_2011

# Get object ID and trigger corrector functions
def mc_corrector_2011(row):
    if row.run > 2:
        return 1
예제 #4
0
#### MC-DATA and PU corrections ################################################
################################################################################

# Determine MC-DATA corrections
is7TeV = bool('7TeV' in os.environ['jobid'])
if is7TeV: 
  print "This code is not setup for 7TeV!:", is7TeV

# Make PU corrector from expected data PU distribution
# PU corrections .root files from pileupCalc.py
pu_distributions = glob.glob(os.path.join(
        'inputs', os.environ['jobidPU'], 'data_SingleMu*pu.root'))
pu_corrector = PileupWeight.PileupWeight(
    'S6' if is7TeV else 'S10', *pu_distributions)

muon_pog_PFTight_2012 = MuonPOGCorrections.make_muon_pog_PFTight_2012ABCD()
muon_pog_PFRelIsoDB012_2012 = MuonPOGCorrections.make_muon_pog_PFRelIsoDB012_2012ABCD()
muon_pog_IsoMu24eta2p1_2012 = MuonPOGCorrections.make_muon_pog_IsoMu24eta2p1_2012()
# Note: This should be updated, we are using the prompt-reco corrections

def mc_corrector_2012(row):
    if row.run > 2:
        return 1
    pu = pu_corrector(row.nTruePU)
    m1id = muon_pog_PFTight_2012(row.mPt, row.mEta)
    m1iso = muon_pog_PFRelIsoDB012_2012(row.mPt, row.mEta)
    m_trg =  muon_pog_IsoMu24eta2p1_2012(row.mPt, row.mAbsEta) 
    return pu*m1id*m1iso*m_trg

mc_corrector = mc_corrector_2012
# Determine MC-DATA corrections
is7TeV = bool('7TeV' in os.environ['jobid'])
print "Is 7TeV:", is7TeV

# Make PU corrector from expected data PU distribution
# PU corrections .root files from pileupCalc.py
pu_distributions  = {
    'singlemu' : glob.glob(os.path.join( 'inputs', os.environ['jobid'], 'data_SingleMu*pu.root')),
    }
mc_pu_tag                  = 'S6' if is7TeV else 'S10'

####################
#2012 Corrections
###################
muon_pog_IsoMu24eta2p1_2012 = MuonPOGCorrections.make_muon_pog_IsoMu24eta2p1_2012() #trigger
muon_pog_PFTight_2012       = MuonPOGCorrections.make_muon_pog_PFTight_2012()  #ID
muon_pog_Iso_2012           = MuonPOGCorrections.make_muon_pog_PFRelIsoDB012_2012() #Iso


muon_pog_IsoMu24eta2p1 = muon_pog_IsoMu24eta2p1_2012
muon_pog_PFTight       = muon_pog_PFTight_2012      
muon_pog_Iso           = muon_pog_Iso_2012          

#####################
#  PU Corrections
#####################
def make_puCorrector(dataset, kind=None):
    'makes PU reweighting according to the pu distribution of the reference data and the MC, MC distribution can be forced'
    if not kind:
        kind = mc_pu_tag
예제 #6
0
correct_double_electron    = H2TauCorrections.correct_double_electron_trg_2011 if is7TeV else H2TauCorrections.correct_double_electron_trg_2012

def double_electron_trigger(row):
    return correct_double_electron( row.e1Pt, row.e1Eta, row.e2Pt, row.e2Eta )



########################################################################
##
##                              ID/ISO
##
########################################################################


#Makes appropriate correction function for electrons or muons according to run period
mu_pog_2011_id             = MuonPOGCorrections.make_muon_pog_PFTight_2011()
mu_pog_2011_iso            = MuonPOGCorrections.make_muon_pog_PFRelIsoDB02_2011()
muon_pog_IsoID             = (lambda pt, eta: mu_pog_2011_id(pt,eta)*mu_pog_2011_iso(pt,eta)) if is7TeV else H2TauCorrections.correct_mu_idiso_2012
electron_corrections       = H2TauCorrections.correct_e_idiso_2011 if is7TeV else H2TauCorrections.correct_e_idiso_2012
electron_tight_corrections = H2TauCorrections.correct_e_TIGHTidiso_2011 if is7TeV else H2TauCorrections.correct_e_TIGHTidiso_2012


def get_muon_corrections(row,*args):
    'makes corrections to iso and id of muons'
    ret = 1.
    for arg in args:
        eta = getattr(row, '%sEta' % arg)
        pt  = getattr(row, '%sPt'  % arg)
        #print muon_pog_IsoID.__name__
        ret *= muon_pog_IsoID( pt, eta)
    return ret
예제 #7
0
# Determine MC-DATA corrections
is7TeV = bool('7TeV' in os.environ['jobid'])
print "Is 7TeV:", is7TeV

# Make PU corrector from expected data PU distribution
# PU corrections .root files from pileupCalc.py
pu_distributions_doublemu  = glob.glob(os.path.join( 'inputs', os.environ['jobid'], 'data_DoubleMu*pu.root'))
pu_distributions_doublee   = glob.glob(os.path.join( 'inputs', os.environ['jobid'], 'data_DoubleElectron*pu.root'))
#pu_corrector               = PileupWeight.PileupWeight( 'S6' if is7TeV else 'S10', *pu_distributions)

#mu_pog_2011_id             = MuonPOGCorrections.make_muon_pog_PFTight_2011()
#mu_pog_2011_iso            = MuonPOGCorrections.make_muon_pog_PFRelIsoDB02_2011()
#muon_pog_IsoID             = (lambda pt, eta: mu_pog_2011_id(pt,eta)*mu_pog_2011_iso(pt,eta)) if is7TeV else H2TauCorrections.correct_mu_idiso_2012
#electron_corrections       = H2TauCorrections.correct_e_idiso_2011 if is7TeV else H2TauCorrections.correct_e_idiso_2012

muon_pog_Mu17Mu8_Mu17_2012 = MuonPOGCorrections.make_muon_pog_Mu17Mu8_Mu17_2012()
muon_pog_Mu17Mu8_Mu8_2012  = MuonPOGCorrections.make_muon_pog_Mu17Mu8_Mu8_2012()
#muon_pog_Mu17Mu8_2011      = MuonPOGCorrections.muon_pog_Mu17Mu8_eta_eta_2011 # takes etas of muons

def make_puCorrector(dataset, kind=None):
    if not kind:
        kind = 'S6' if is7TeV else 'S10'
    if dataset is 'doublemu':
        return PileupWeight.PileupWeight( 'S6' if is7TeV else 'S10', *pu_distributions_doublemu)
    elif dataset is 'doublee':
        return PileupWeight.PileupWeight( 'S6' if is7TeV else 'S10', *pu_distributions_doublee)
    return None
## def force_pu_distribution(kind):
##     pu_corrector = PileupWeight.PileupWeight( kind, *pu_distributions)
    
예제 #8
0
#Double electrons scale factors
correct_double_electron = H2TauCorrections.correct_double_electron_trg_2011 if is7TeV else H2TauCorrections.correct_double_electron_trg_2012


def double_electron_trigger(row):
    return correct_double_electron(row.e1Pt, row.e1Eta, row.e2Pt, row.e2Eta)


########################################################################
##
##                              ID/ISO
##
########################################################################

#Makes appropriate correction function for electrons or muons according to run period
mu_pog_2011_id = MuonPOGCorrections.make_muon_pog_PFTight_2011()
mu_pog_2011_iso = MuonPOGCorrections.make_muon_pog_PFRelIsoDB02_2011()
muon_pog_IsoID = (lambda pt, eta: mu_pog_2011_id(pt, eta) * mu_pog_2011_iso(
    pt, eta)) if is7TeV else H2TauCorrections.correct_mu_idiso_2012
electron_corrections = H2TauCorrections.correct_e_idiso_2011 if is7TeV else H2TauCorrections.correct_e_idiso_2012
electron_tight_corrections = H2TauCorrections.correct_e_TIGHTidiso_2011 if is7TeV else H2TauCorrections.correct_e_TIGHTidiso_2012


def get_muon_corrections(row, *args):
    'makes corrections to iso and id of muons'
    ret = 1.
    for arg in args:
        eta = getattr(row, '%sEta' % arg)
        pt = getattr(row, '%sPt' % arg)
        #print muon_pog_IsoID.__name__
        ret *= muon_pog_IsoID(pt, eta)