Пример #1
0
 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
Пример #2
0
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())
Пример #3
0
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()
Пример #4
0
        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()