def analyze(self, event): """process event, return True (go to next module) or False (fail, go to next event)""" HLT = Object(event, "HLT") run = Object(event, "run") if self.year == '2016' and self.runP != 'H': if run.__getattr__('') > 274954: good_HLT = HLT.PFHT800 or HLT.PFHT900 or HLT.Mu50 or HLT.TkMu50 or HLT.Ele115_CaloIdVT_GsfTrkIdT or HLT.Photon175 or HLT.Ele27_WPTight_Gsf return good_HLT
def analyze(self, event): """process event, return True (go to next module) or False (fail, go to next event)""" HLT = Object(event, "HLT") run = Object(event, "run") if self.year == '2016' and self.runP != 'H': if run.__getattr__('') > 274954: good_HLT = HLT.PFHT800 or HLT.PFHT900 or HLT.Mu50 or HLT.TkMu50 or HLT.Ele115_CaloIdVT_GsfTrkIdT or HLT.Photon175 or HLT.Ele27_WPTight_Gsf else: good_HLT = HLT.PFHT800 or HLT.PFHT900 or HLT.Mu50 or HLT.Ele115_CaloIdVT_GsfTrkIdT or HLT.Photon175 or HLT.Ele27_WPTight_Gsf elif self.year == '2016' and self.runP == 'H': good_HLT = HLT.PFHT900 or HLT.Mu50 or HLT.TkMu50 or HLT.Ele115_CaloIdVT_GsfTrkIdT or HLT.Photon175 or HLT.Ele27_WPTight_Gsf elif self.year == '2017' and self.runP != 'B': good_HLT = HLT.PFHT780 or HLT.PFHT890 or HLT.Mu50 or HLT.OldMu100 or HLT.TkMu100 or HLT.Ele115_CaloIdVT_GsfTrkIdT or HLT.Photon200 or HLT.Ele35_WPTight_Gsf elif self.year == '2017' and self.runP == 'B': good_HLT = HLT.PFHT780 or HLT.PFHT890 or HLT.Mu50 or HLT.Ele35_WPTight_Gsf elif self.year == '2018': good_HLT = HLT.PFHT780 or HLT.PFHT890 or HLT.Mu50 or HLT.OldMu100 or HLT.TkMu100 or HLT.Ele115_CaloIdVT_GsfTrkIdT or HLT.Photon200 or HLT.Ele35_WPTight_Gsf else: print "Please specify the year: possible choices are 2016, 2017 or 2018" return good_HLT
def __getattr__(self, attr): if self.replaceMap and attr in self.replaceMap: return Object.__getattr__(self, self.replaceMap[attr]) else: return Object.__getattr__(self, attr)
def analyze(self, event): """process event, return True (go to next module) or False (fail, go to next event)""" objs = Collection(event, self.collectionName) #print 'Length of objs %s: %s'%(self.collectionName,len(objs)) eventSelW = 1.0 eventVetoW = 1.0 eventSelW_err = [1.0] * 2 * len(self.SFerr) eventVetoW_err = [1.0] * 2 * len(self.SFerr) cleanObjs_idx = [] cleanObjs_pt = [] cleanObjs_eta = [] cleanObjs_phi = [] cleanObjs_mass = [] objIdx = 0 #brojac = -1 for obj in objs: # brojac=brojac+1 if not (eval(self.selection)): #print ' ---- Loop: obj idx %d failed'%objIdx objIdx += 1 #print " Jet ", str(brojac)," fails the Obj selection -- no crossCleaning" continue #print ' ---- Loop: obj idx %d passed'%objIdx #crossCleaning xCleaned = True if len(self.xcleaningCollectionNames) > 0: #print "Cleaning of Jet ", str(brojac) for xCleaningName in self.xcleaningCollectionNames: if not xCleaned: break xCleaningCollection = Collection(event, xCleaningName) #print "Cleaning of "+self.collectionName+" against "+xCleaningName, "size = ", len(xCleaningCollection) for xCleaningObj in xCleaningCollection: xCleaned = CrossCleaning(obj.eta, obj.phi, xCleaningObj.eta, xCleaningObj.phi, xCleaningName) if not xCleaned: #print "Object should fail" break if not xCleaned: continue #print "Object is clean" cleanObjs_idx.append(objIdx) cleanObjs_pt.append(obj.pt) cleanObjs_eta.append(obj.eta) cleanObjs_phi.append(obj.phi) cleanObjs_mass.append(obj.mass) #get scale factors if (self.doW): #for w in SFweights: #print ' ------ loop weight value: %3.3f'%w.effSF_Loose werr = [1.0] * 2 * len(self.SFerr) if (self.SFnamePrefix is not None): ret = Object(event, self.collectionName, index=objIdx) #wobj = obj[objIdx].effSF_Loose wobj = ret.__getattr__(self.SFname) for i in range(len(self.SFerr)): if ("syst" not in self.SFerr[i]): werr[2 * i] = ret.__getattr__(self.SFname + "_up") - wobj werr[2 * i + 1] = ret.__getattr__(self.SFname + "_down") - wobj else: werr[2 * i] = ret.__getattr__(self.SFname + self.SFerr[i]) werr[2 * i + 1] = -1. * ret.__getattr__(self.SFname + self.SFerr[i]) else: #werr = [1.0]*2 wobj = self.SFval[0] if (len(self.SFerr) > 0): werr[0] = self.SFval[1] werr[1] = -1. * self.SFval[1] #print ' ------ loop weight value: %3.3f'%wobj eventSelW *= wobj eventVetoW *= (1 - wobj) for i in range(len(eventSelW_err)): eventSelW_err[i] *= (wobj + werr[i]) eventVetoW_err[i] *= (1 - (wobj + werr[i])) objIdx += 1 self.out.fillBranch(self.outCollectionName + "_idx", cleanObjs_idx) self.out.fillBranch(self.outCollectionName + "_pt", cleanObjs_pt) self.out.fillBranch(self.outCollectionName + "_eta", cleanObjs_eta) self.out.fillBranch(self.outCollectionName + "_phi", cleanObjs_phi) self.out.fillBranch(self.outCollectionName + "_mass", cleanObjs_mass) if (self.doW): self.out.fillBranch(self.outCollectionName + "_eventSelW", eventSelW) self.out.fillBranch(self.outCollectionName + "_eventVetoW", eventVetoW) for i in range(len(self.SFerr)): self.out.fillBranch( self.outCollectionName + "_eventSelW" + self.SFerr[i] + "_up", eventSelW_err[2 * i]) self.out.fillBranch( self.outCollectionName + "_eventVetoW" + self.SFerr[i] + "_up", eventVetoW_err[2 * i]) self.out.fillBranch( self.outCollectionName + "_eventSelW" + self.SFerr[i] + "_down", eventSelW_err[2 * i + 1]) self.out.fillBranch( self.outCollectionName + "_eventVetoW" + self.SFerr[i] + "_down", eventVetoW_err[2 * i + 1]) return True