def fourvect_clbased(self): vect = LorentzVector() tau_numTrack = self.numTrack tau_nPi0s = self.pi0_n if tau_nPi0s == 0: if self.track_n > 0: sumTrk = LorentzVector() for trk_ind in xrange(0, self.track_n): curTrk = LorentzVector() curTrk.SetPtEtaPhiM(self.track_atTJVA_pt[trk_ind], self.track_atTJVA_eta[trk_ind], self.track_atTJVA_phi[trk_ind], 139.8) sumTrk += curTrk vect.SetPtEtaPhiM(sumTrk.Pt(), sumTrk.Eta(), sumTrk.Phi(), sumTrk.M()) else: vect.SetPtEtaPhiM(self.pt, self.eta, self.phi, self.m) elif tau_nPi0s == 1 or tau_nPi0s == 2: if self.pi0_vistau_pt == 0: vect.SetPtEtaPhiM(self.pt, self.eta, self.phi, self.m) else: vect.SetPtEtaPhiM(self.pi0_vistau_pt, self.pi0_vistau_eta, self.pi0_vistau_phi, self.pi0_vistau_m) else: vect.SetPtEtaPhiM(self.pi0_vistau_pt, self.pi0_vistau_eta, self.pi0_vistau_phi, self.pi0_vistau_m) return vect
def calcTopMass(nom, topMasses): current = 0 for e in nom: current += 1 if current % 10000 == 0: print(current) #if current==200000: # break if e.nJets_OR != 1: continue if e.nJets_OR_DL1_70 != 1: continue if abs(e.Mll01 - 91.2e3) > 10e3 and abs(e.Mll02 - 91.2e3) > 10e3: continue if e.trilep_type == 0: continue lep = LorentzVector() if abs(e.Mll02 - 91.2e3) < abs(e.Mll01 - 91.2e3): lep.SetPtEtaPhiE(e.lep_Pt_1, e.lep_Eta_1, e.lep_Phi_1, e.lep_E_1) else: lep.SetPtEtaPhiE(e.lep_Pt_2, e.lep_Eta_2, e.lep_Phi_2, e.lep_E_2) met = neutrinoPz(lep, e.met_met, e.met_phi) w = lep + met #w_eta = np.arccosh( abs( np.sqrt(wt.E()**2 - 80e3**2)/ wt.Pt() ) ) #w = LorentzVector() #w.SetPtEtaPhiE(wt.Pt(), w_eta, wt.Phi(), wt.E()) #print('M', w.M()) jet = LorentzVector() jet.SetPtEtaPhiE(e.jets_Pt_0, e.jets_Eta_0, e.jets_Phi_0, e.jets_E_0) top = LorentzVector() top = w + jet topMasses.append(top.M()) if top.M() < 0: print(top.M(), w.M())
def run_top_mass(inputPath): topMassesWZ = [] topMassestZ = [] topMassReco = [] f = TFile(inputPath, "READ") dsid = inputPath.split('/')[-1] dsid = dsid.replace('.root', '') #print(inputPath) nom = f.Get('nominal') try: nom.GetEntries() except: print('failed for ' + inputPath) return 0 try: nom.Mll01 except: print('failed for ' + inputPath) return 0 if nom.GetEntries() == 0: return 0 if hasattr(nom, "topMassReco"): print('already there', inputPath) return 0 nEntries = nom.GetEntries() for idx in range(nEntries): if idx % 10000 == 0: print(str(idx) + '/' + str(nEntries)) nom.GetEntry(idx) lep = LorentzVector() if abs(nom.Mll02 - 91.2e3) < abs(nom.Mll01 - 91.2e3): lep.SetPtEtaPhiE(nom.lep_Pt_1, nom.lep_Eta_1, nom.lep_Phi_1, nom.lep_E_1) else: lep.SetPtEtaPhiE(nom.lep_Pt_2, nom.lep_Eta_2, nom.lep_Phi_2, nom.lep_E_2) met = neutrinoPz(lep, nom.met_met, nom.met_phi) w = lep + met jet = LorentzVector() #jet.SetPtEtaPhiE( nom.jet_Pt_0, nom.jet_Eta_0, nom.jet_Phi_0, nom.jet_E_0 ) if len(nom.jet_pt): jet.SetPtEtaPhiE(nom.jet_pt[0], nom.jet_eta[0], nom.jet_phi[0], nom.jet_e[0]) else: jet.SetPtEtaPhiE(0, 0, 0, 0) top = LorentzVector() top = w + jet topMassReco.append(top.M()) f.Close() with root_open(inputPath, mode='a') as myfile: topMassReco = np.asarray(topMassReco) topMassReco.dtype = [('topMassReco', 'float64')] topMassReco.dtype.names = ['topMassReco'] root_numpy.array2tree(topMassReco, tree=myfile.nominal) myfile.write() myfile.Close()
lep.SetPtEtaPhiE( e.lep_Pt_1, e.lep_Eta_1, e.lep_Phi_1, e.lep_E_1 ) else: lep.SetPtEtaPhiE( e.lep_Pt_2, e.lep_Eta_2, e.lep_Phi_2, e.lep_E_2 ) met = neutrinoPz(lep, e.met_met, e.met_phi) w = lep+met jet = LorentzVector() jet.SetPtEtaPhiE( e.jets_Pt_0, e.jets_Eta_0, e.jets_Phi_0, e.jets_E_0 ) top = LorentzVector() top = w+jet topMassReco.append(top.M()) #print(top.M()) #topMassReco = top.M() #newNom.topMassReco = top.M() #newNom.Fill() inFile.Close() with root_open(inName, mode='a') as myfile: topMassReco = np.asarray(topMassReco) topMassReco.dtype = [('topMassReco', 'float64')] topMassReco.dtype.names = ['topMassReco'] root_numpy.array2tree(topMassReco, tree=myfile.nominal) myfile.write() myfile.Close()