def __init__(self, cfg_ana, cfg_comp, looperName): super(JetWeighter, self).__init__(cfg_ana, cfg_comp, looperName) self.jet1 = None self.weight = None # self.weightFactor = 1. self.trigEff = None if self.cfg_comp.isMC or self.cfg_comp.isEmbed: self.trigEff = TriggerEfficiency() self.trigEff.lepEff = getattr(self.trigEff, self.cfg_ana.effWeight) self.trigEff.lepEffMC = None if hasattr(self.cfg_ana, 'effWeightMC'): self.trigEff.lepEffMC = getattr(self.trigEff, self.cfg_ana.effWeightMC)
def __init__(self, cfg_ana, cfg_comp, looperName): super(LeptonWeighter,self).__init__(cfg_ana, cfg_comp, looperName) self.leptonName = self.cfg_ana.lepton # self.lepton = None self.weight = None # self.weightFactor = 1. self.trigEff = None if (self.cfg_comp.isMC or self.cfg_comp.isEmbed) and \ not ( hasattr(self.cfg_ana,'disable') and self.cfg_ana.disable is True ): self.trigEff = TriggerEfficiency() self.trigEff.lepEff = getattr( self.trigEff, self.cfg_ana.effWeight ) self.trigEff.lepEffMC = None if hasattr( self.cfg_ana, 'effWeightMC'): self.trigEff.lepEffMC = getattr( self.trigEff, self.cfg_ana.effWeightMC )
def __init__(self, cfg_ana, cfg_comp, looperName): super(JetWeighter,self).__init__(cfg_ana, cfg_comp, looperName) self.jet1 = None self.weight = None # self.weightFactor = 1. self.trigEff = None if self.cfg_comp.isMC or self.cfg_comp.isEmbed: self.trigEff = TriggerEfficiency() self.trigEff.lepEff = getattr( self.trigEff, self.cfg_ana.effWeight ) self.trigEff.lepEffMC = None if hasattr( self.cfg_ana, 'effWeightMC'): self.trigEff.lepEffMC = getattr( self.trigEff, self.cfg_ana.effWeightMC )
def __init__(self, cfg_ana, cfg_comp, looperName): super(LeptonWeighter, self).__init__(cfg_ana, cfg_comp, looperName) self.leptonName = self.cfg_ana.lepton # self.lepton = None self.weight = None # self.weightFactor = 1. self.trigEff = None if (self.cfg_comp.isMC or self.cfg_comp.isEmbed) and not ( hasattr(self.cfg_ana, "disable") and self.cfg_ana.disable is True ): self.trigEff = TriggerEfficiency() self.trigEff.lepEff = getattr(self.trigEff, self.cfg_ana.effWeight) self.trigEff.lepEffMC = None if hasattr(self.cfg_ana, "effWeightMC"): self.trigEff.lepEffMC = getattr(self.trigEff, self.cfg_ana.effWeightMC)
class JetWeighter( Analyzer ): '''Gets jet1 efficiency weight and puts it in the event''' def __init__(self, cfg_ana, cfg_comp, looperName): super(JetWeighter,self).__init__(cfg_ana, cfg_comp, looperName) self.jet1 = None self.weight = None # self.weightFactor = 1. self.trigEff = None if self.cfg_comp.isMC or self.cfg_comp.isEmbed: self.trigEff = TriggerEfficiency() self.trigEff.lepEff = getattr( self.trigEff, self.cfg_ana.effWeight ) self.trigEff.lepEffMC = None if hasattr( self.cfg_ana, 'effWeightMC'): self.trigEff.lepEffMC = getattr( self.trigEff, self.cfg_ana.effWeightMC ) def beginLoop(self): print self, self.__class__ super(JetWeighter,self).beginLoop() self.averages.add('weight', Average('weight') ) self.averages.add('triggerWeight', Average('triggerWeight') ) self.averages.add('eff_data', Average('eff_data') ) self.averages.add('eff_MC', Average('eff_MC') ) self.averages.add('recEffWeight', Average('recEffWeight') ) def process(self, iEvent, event): self.readCollections( iEvent ) if len(event.cleanJets)<1: return self.jet1 = event.cleanJets[0] self.jet1.weight = 1 self.jet1.triggerWeight = 1 self.jet1.triggerEffData = 1 self.jet1.triggerEffMC = 1 if self.cfg_comp.isMC or self.cfg_comp.isEmbed: assert( self.trigEff is not None ) self.jet1.triggerEffData = self.trigEff.lepEff( self.jet1.pt(), self.jet1.eta() ) self.jet1.triggerWeight = self.jet1.triggerEffData if self.trigEff.lepEffMC is not None and \ len(self.cfg_comp.triggers)>0: self.jet1.triggerEffMC = self.trigEff.lepEffMC( self.jet1.pt(), self.jet1.eta() ) if self.jet1.triggerEffMC>0: self.jet1.triggerWeight /= self.jet1.triggerEffMC else: self.jet1.triggerWeight = 1. self.jet1.weight = self.jet1.triggerWeight ## varName = '_'.join([self.jet1Name, 'eff']) ## setattr( event, varName, self.jet1.triggerEffData ) ## varName = '_'.join([self.jet1Name, 'effMC']) ## setattr( event, varName, self.triggerEffMC ) ## varName = '_'.join([self.jet1Name, 'triggerWeight']) ## setattr( event, varName, self.jet1.triggerWeight ) ## varName = '_'.join([self.jet1Name, 'weight']) ## setattr( event, varName, self.jet1.weight ) event.eventWeight *= self.jet1.weight if not hasattr(event,"triggerWeight"): event.triggerWeight=1.0 event.triggerWeight *= self.jet1.triggerWeight self.averages['weight'].add( self.jet1.weight ) self.averages['triggerWeight'].add( self.jet1.triggerWeight ) self.averages['eff_data'].add( self.jet1.triggerEffData ) self.averages['eff_MC'].add( self.jet1.triggerEffMC )
class LeptonWeighter(Analyzer): """Gets lepton efficiency weight and puts it in the event""" def __init__(self, cfg_ana, cfg_comp, looperName): super(LeptonWeighter, self).__init__(cfg_ana, cfg_comp, looperName) self.leptonName = self.cfg_ana.lepton # self.lepton = None self.weight = None # self.weightFactor = 1. self.trigEff = None if (self.cfg_comp.isMC or self.cfg_comp.isEmbed) and not ( hasattr(self.cfg_ana, "disable") and self.cfg_ana.disable is True ): self.trigEff = TriggerEfficiency() self.trigEff.lepEff = getattr(self.trigEff, self.cfg_ana.effWeight) self.trigEff.lepEffMC = None if hasattr(self.cfg_ana, "effWeightMC"): self.trigEff.lepEffMC = getattr(self.trigEff, self.cfg_ana.effWeightMC) def beginLoop(self): print self, self.__class__ super(LeptonWeighter, self).beginLoop() self.averages.add("weight", Average("weight")) self.averages.add("triggerWeight", Average("triggerWeight")) self.averages.add("eff_data", Average("eff_data")) self.averages.add("eff_MC", Average("eff_MC")) self.averages.add("recEffWeight", Average("recEffWeight")) self.averages.add("idWeight", Average("idWeight")) self.averages.add("isoWeight", Average("isoWeight")) def process(self, iEvent, event): self.readCollections(iEvent) lep = getattr(event, self.leptonName) lep.weight = 1 lep.triggerWeight = 1 lep.triggerEffData = 1 lep.triggerEffMC = 1 lep.recEffWeight = 1 lep.idWeight = 1 lep.isoWeight = 1 if (self.cfg_comp.isMC or self.cfg_comp.isEmbed) and not ( hasattr(self.cfg_ana, "disable") and self.cfg_ana.disable is True ): assert self.trigEff is not None lep.triggerEffData = self.trigEff.lepEff(lep.pt(), lep.eta()) lep.triggerWeight = lep.triggerEffData if self.trigEff.lepEffMC is not None and len(self.cfg_comp.triggers) > 0: lep.triggerEffMC = self.trigEff.lepEffMC(lep.pt(), lep.eta()) if lep.triggerEffMC > 0: lep.triggerWeight /= lep.triggerEffMC else: lep.triggerWeight = 1.0 def getWeight(weightMap, lepton): try: weight = weightMap.weight(pt=lep.pt(), eta=abs(lep.eta())).weight.value except AttributeError: print "cannot find weight!" print weightMap print lep.pt(), lep.eta() raise #### these are == 1. for tautau if hasattr(self.cfg_ana, "idWeight"): lep.idWeight = self.cfg_ana.idWeight.weight(lep.pt(), abs(lep.eta())).weight.value if hasattr(self.cfg_ana, "isoWeight"): lep.isoWeight = self.cfg_ana.isoWeight.weight(lep.pt(), abs(lep.eta())).weight.value lep.recEffWeight = lep.idWeight * lep.isoWeight lep.weight = lep.triggerWeight * lep.recEffWeight #### fill variables for diTauJet if self.cfg_ana.effWeightMC == "eff2012IsoTau19fbMC_Simone": if not hasattr(event, "triggerWeight_diTauJet"): event.triggerWeight_diTauJet = 1.0 if not hasattr(event, "triggerEffMC_diTauJet"): event.triggerEffMC_diTauJet = 1.0 if not hasattr(event, "triggerEffData_diTauJet"): event.triggerEffData_diTauJet = 1.0 event.eventWeight *= lep.weight event.triggerWeight_diTauJet *= lep.triggerWeight event.triggerEffMC_diTauJet *= lep.triggerEffMC event.triggerEffData_diTauJet *= lep.triggerEffData #### fill variables for diTau if self.cfg_ana.effWeightMC == "eff2012IsoParkedTau19fbMC_Simone": if not hasattr(event, "triggerWeight_diTau"): event.triggerWeight_diTau = 1.0 if not hasattr(event, "triggerEffMC_diTau"): event.triggerEffMC_diTau = 1.0 if not hasattr(event, "triggerEffData_diTau"): event.triggerEffData_diTau = 1.0 event.eventWeight *= lep.weight event.triggerWeight_diTau *= lep.triggerWeight event.triggerEffMC_diTau *= lep.triggerEffMC event.triggerEffData_diTau *= lep.triggerEffData self.averages["weight"].add(lep.weight) self.averages["triggerWeight"].add(lep.triggerWeight) self.averages["eff_data"].add(lep.triggerEffData) self.averages["eff_MC"].add(lep.triggerEffMC) self.averages["recEffWeight"].add(lep.recEffWeight) self.averages["idWeight"].add(lep.idWeight) self.averages["isoWeight"].add(lep.isoWeight)
class LeptonWeighter( Analyzer ): '''Gets lepton efficiency weight and puts it in the event''' def __init__(self, cfg_ana, cfg_comp, looperName): super(LeptonWeighter,self).__init__(cfg_ana, cfg_comp, looperName) self.leptonName = self.cfg_ana.lepton # self.lepton = None self.weight = None # self.weightFactor = 1. self.trigEff = None if (self.cfg_comp.isMC or self.cfg_comp.isEmbed) and \ not ( hasattr(self.cfg_ana,'disable') and self.cfg_ana.disable is True ): self.trigEff = TriggerEfficiency() self.trigEff.lepEff = getattr( self.trigEff, self.cfg_ana.effWeight ) self.trigEff.lepEffMC = None if hasattr( self.cfg_ana, 'effWeightMC'): self.trigEff.lepEffMC = getattr( self.trigEff, self.cfg_ana.effWeightMC ) def beginLoop(self): print self, self.__class__ super(LeptonWeighter,self).beginLoop() self.averages.add('weight', Average('weight') ) self.averages.add('triggerWeight', Average('triggerWeight') ) self.averages.add('eff_data', Average('eff_data') ) self.averages.add('eff_MC', Average('eff_MC') ) self.averages.add('recEffWeight', Average('recEffWeight') ) self.averages.add('idWeight', Average('idWeight') ) self.averages.add('isoWeight', Average('isoWeight') ) def process(self, iEvent, event): self.readCollections( iEvent ) lep = getattr( event, self.leptonName ) lep.weight = 1 lep.triggerWeight = 1 lep.triggerEffData = 1 lep.triggerEffMC = 1 lep.recEffWeight = 1 lep.idWeight = 1 lep.isoWeight = 1 if (self.cfg_comp.isMC or self.cfg_comp.isEmbed) and \ not ( hasattr(self.cfg_ana,'disable') and self.cfg_ana.disable is True ) and lep.pt() < 9999.: assert( self.trigEff is not None ) lep.triggerEffData = self.trigEff.lepEff( lep.pt(), lep.eta() ) lep.triggerWeight = lep.triggerEffData # JAN: Don't apply MC trigger efficiency for embedded samples if not self.cfg_comp.isEmbed and self.trigEff.lepEffMC is not None and \ len(self.cfg_comp.triggers)>0: lep.triggerEffMC = self.trigEff.lepEffMC( lep.pt(), lep.eta() ) if lep.triggerEffMC>0: lep.triggerWeight /= lep.triggerEffMC else: lep.triggerWeight = 1. def getWeight(weightMap, lepton): try: weight = weightMap.weight( pt=lep.pt(), eta=abs(lep.eta()) ).weight.value except AttributeError: print 'cannot find weight!' print weightMap print lep.pt(), lep.eta() raise if hasattr( self.cfg_ana, 'idWeight'): lep.idWeight = self.cfg_ana.idWeight.weight(lep.pt(), abs(lep.eta()) ).weight.value # JAN: Do not apply iso weight for embedded sample if hasattr( self.cfg_ana, 'isoWeight') and not self.cfg_comp.isEmbed: lep.isoWeight = self.cfg_ana.isoWeight.weight(lep.pt(), abs(lep.eta()) ).weight.value lep.recEffWeight = lep.idWeight * lep.isoWeight lep.weight = lep.triggerWeight * lep.recEffWeight event.eventWeight *= lep.weight if not hasattr(event,"triggerWeight"): event.triggerWeight=1.0 event.triggerWeight *= lep.triggerWeight self.averages['weight'].add( lep.weight ) self.averages['triggerWeight'].add( lep.triggerWeight ) self.averages['eff_data'].add( lep.triggerEffData ) self.averages['eff_MC'].add( lep.triggerEffMC ) self.averages['recEffWeight'].add( lep.recEffWeight ) self.averages['idWeight'].add( lep.idWeight ) self.averages['isoWeight'].add( lep.isoWeight )
class JetWeighter(Analyzer): '''Gets jet1 efficiency weight and puts it in the event''' def __init__(self, cfg_ana, cfg_comp, looperName): super(JetWeighter, self).__init__(cfg_ana, cfg_comp, looperName) self.jet1 = None self.weight = None # self.weightFactor = 1. self.trigEff = None if self.cfg_comp.isMC or self.cfg_comp.isEmbed: self.trigEff = TriggerEfficiency() self.trigEff.lepEff = getattr(self.trigEff, self.cfg_ana.effWeight) self.trigEff.lepEffMC = None if hasattr(self.cfg_ana, 'effWeightMC'): self.trigEff.lepEffMC = getattr(self.trigEff, self.cfg_ana.effWeightMC) def beginLoop(self): print self, self.__class__ super(JetWeighter, self).beginLoop() self.averages.add('weight', Average('weight')) self.averages.add('triggerWeight', Average('triggerWeight')) self.averages.add('eff_data', Average('eff_data')) self.averages.add('eff_MC', Average('eff_MC')) self.averages.add('recEffWeight', Average('recEffWeight')) def process(self, iEvent, event): self.readCollections(iEvent) if len(event.cleanJets) < 1: return self.jet1 = event.cleanJets[0] self.jet1.weight = 1 self.jet1.triggerWeight = 1 self.jet1.triggerEffData = 1 self.jet1.triggerEffMC = 1 if self.cfg_comp.isMC or self.cfg_comp.isEmbed: assert (self.trigEff is not None) self.jet1.triggerEffData = self.trigEff.lepEff( self.jet1.pt(), self.jet1.eta()) self.jet1.triggerWeight = self.jet1.triggerEffData if self.trigEff.lepEffMC is not None and \ len(self.cfg_comp.triggers)>0: self.jet1.triggerEffMC = self.trigEff.lepEffMC( self.jet1.pt(), self.jet1.eta()) if self.jet1.triggerEffMC > 0: self.jet1.triggerWeight /= self.jet1.triggerEffMC else: self.jet1.triggerWeight = 1. self.jet1.weight = self.jet1.triggerWeight ## varName = '_'.join([self.jet1Name, 'eff']) ## setattr( event, varName, self.jet1.triggerEffData ) ## varName = '_'.join([self.jet1Name, 'effMC']) ## setattr( event, varName, self.triggerEffMC ) ## varName = '_'.join([self.jet1Name, 'triggerWeight']) ## setattr( event, varName, self.jet1.triggerWeight ) ## varName = '_'.join([self.jet1Name, 'weight']) ## setattr( event, varName, self.jet1.weight ) event.eventWeight *= self.jet1.weight if not hasattr(event, "triggerWeight"): event.triggerWeight = 1.0 event.triggerWeight *= self.jet1.triggerWeight self.averages['weight'].add(self.jet1.weight) self.averages['triggerWeight'].add(self.jet1.triggerWeight) self.averages['eff_data'].add(self.jet1.triggerEffData) self.averages['eff_MC'].add(self.jet1.triggerEffMC)
class JetWeighter(Analyzer): '''Gets jet1 efficiency weight and puts it in the event''' def __init__(self, cfg_ana, cfg_comp, looperName): super(JetWeighter, self).__init__(cfg_ana, cfg_comp, looperName) self.jet1 = None self.weight = None # self.weightFactor = 1. self.trigEff = None if self.cfg_comp.isMC or self.cfg_comp.isEmbed: self.trigEff = TriggerEfficiency() self.trigEff.lepEff = getattr(self.trigEff, self.cfg_ana.effWeight) self.trigEff.lepEffMC = None if hasattr(self.cfg_ana, 'effWeightMC'): self.trigEff.lepEffMC = getattr(self.trigEff, self.cfg_ana.effWeightMC) def beginLoop(self, setup): print self, self.__class__ super(JetWeighter, self).beginLoop(setup) self.averages.add('weight', Average('weight')) self.averages.add('triggerWeight', Average('triggerWeight')) self.averages.add('eff_data', Average('eff_data')) self.averages.add('eff_MC', Average('eff_MC')) self.averages.add('recEffWeight', Average('recEffWeight')) def process(self, event): self.readCollections(event.input) if len(event.cleanJets) < 1: return #import pdb ; pdb.set_trace() self.jet1 = event.cleanJets[0] self.jet1.weight = 1 self.jet1.triggerWeight = 1 self.jet1.triggerEffData = 1 self.jet1.triggerEffMC = 1 if self.cfg_comp.isMC or self.cfg_comp.isEmbed: assert (self.trigEff is not None) #import pdb ; pdb.set_trace() self.jet1.triggerEffData = self.trigEff.lepEff( self.jet1.pt(), self.jet1.eta()) self.jet1.triggerWeight = self.jet1.triggerEffData #import pdb ; pdb.set_trace() if self.trigEff.lepEffMC is not None and len( self.cfg_comp.triggers) > 0: self.jet1.triggerEffMC = self.trigEff.lepEffMC( self.jet1.pt(), self.jet1.eta()) if self.jet1.triggerEffMC > 0: self.jet1.triggerWeight /= self.jet1.triggerEffMC else: self.jet1.triggerWeight = 1. #import pdb ; pdb.set_trace() self.jet1.weight = self.jet1.triggerWeight ## varName = '_'.join([self.jet1Name, 'eff']) ## setattr( event, varName, self.jet1.triggerEffData ) ## varName = '_'.join([self.jet1Name, 'effMC']) ## setattr( event, varName, self.triggerEffMC ) ## varName = '_'.join([self.jet1Name, 'triggerWeight']) ## setattr( event, varName, self.jet1.triggerWeight ) ## varName = '_'.join([self.jet1Name, 'weight']) ## setattr( event, varName, self.jet1.weight ) ######## commented for now, need to change the variables names # event.eventWeight *= self.jet1.weight # if not hasattr(event,"triggerWeight") : event.triggerWeight = 1.0 # event.triggerWeight *= self.jet1.triggerWeight # if not hasattr(event,"triggerEffMC") : event.triggerEffMC = 1.0 # event.triggerEffMC *= self.jet1.triggerEffMC # if not hasattr(event,"triggerEffData"): event.triggerEffData = 1.0 # event.triggerEffData *= self.jet1.triggerEffData event.eventWeight *= self.jet1.weight if not hasattr(event, "triggerWeight_diTauJet"): event.triggerWeight_diTauJet = 1.0 event.triggerWeight_diTauJet *= self.jet1.triggerWeight if not hasattr(event, "triggerEffMC_diTauJet"): event.triggerEffMC_diTauJet = 1.0 event.triggerEffMC_diTauJet *= self.jet1.triggerEffMC if not hasattr(event, "triggerEffData_diTauJet"): event.triggerEffData_diTauJet = 1.0 event.triggerEffData_diTauJet *= self.jet1.triggerEffData self.averages['weight'].add(self.jet1.weight) self.averages['triggerWeight'].add(self.jet1.triggerWeight) self.averages['eff_data'].add(self.jet1.triggerEffData) self.averages['eff_MC'].add(self.jet1.triggerEffMC)