Esempio n. 1
0
def HelicityAngles(Kplus_P, Kminus_P, muplus_P, muminus_P):
    """ Vasilis
    """
    from ROOT import TMath
    # Calculation based on the ANA-2012-067-v3

    # Bs, KK, mm momenta 4 vectors
    KK_P = Kplus_P + Kminus_P
    mm_P = muplus_P + muminus_P
    KKmm_P = KK_P + mm_P

    # Unit vector along mumu direction in the KK mass r.f.
    muplus_P.Boost(-KK_P.BoostVector())
    muminus_P.Boost(-KK_P.BoostVector())
    e_KK = -(muplus_P + muminus_P).Vect().Unit()

    # Boost the muons back to lab frame
    muplus_P.Boost(KK_P.BoostVector())
    muminus_P.Boost(KK_P.BoostVector())

    # Unit vector along KK direction in the mm mass r.f.
    Kplus_P.Boost(-mm_P.BoostVector())
    Kminus_P.Boost(-mm_P.BoostVector())
    e_mm = -(Kplus_P + Kminus_P).Vect().Unit()
    # Boost the Kaons back to lab frame
    Kplus_P.Boost(mm_P.BoostVector())
    Kminus_P.Boost(mm_P.BoostVector())

    # Unit vector along KK direction in the mm mass r.f.
    Kplus_P.Boost(-KKmm_P.BoostVector())
    Kminus_P.Boost(-KKmm_P.BoostVector())
    muplus_P.Boost(-KKmm_P.BoostVector())
    muminus_P.Boost(-KKmm_P.BoostVector())
    e_KKmm = (muplus_P + muminus_P).Vect().Unit()

    # Perpenticular vectors to KK and mm planes in the KKmmm r.f.
    eta_KK = (Kplus_P.Vect().Cross(Kminus_P.Vect())).Unit()
    eta_mm = (muplus_P.Vect().Cross(muminus_P.Vect())).Unit()

    Kplus_P.Boost(KKmm_P.BoostVector())
    Kminus_P.Boost(KKmm_P.BoostVector())
    muplus_P.Boost(KKmm_P.BoostVector())
    muminus_P.Boost(KKmm_P.BoostVector())

    # Helicity angles.
    Kplus_P.Boost(-KK_P.BoostVector())
    muplus_P.Boost(-mm_P.BoostVector())

    angles = 3 * [0.]
    angles[0] = (Kplus_P.Vect().Unit()).Dot(e_KK)
    angles[1] = (muplus_P.Vect().Unit()).Dot(e_mm)

    if eta_KK.Cross(eta_mm).Dot(
            e_KKmm) > 0:  # sinphi = eta_KK.Cross(eta_mm).Dot(e_KKmm);
        angles[2] = +TMath.ACos(
            eta_KK.Dot(eta_mm))  # cosphi = eta_KK.Dot(eta_mm);
    else:
        angles[2] = -TMath.ACos(eta_KK.Dot(eta_mm))

    return angles
Esempio n. 2
0
    pmu1.SetPtEtaPhiM(chain.JpsiMu_mu1_pt[selectedmu3],
                      chain.JpsiMu_mu1_eta[selectedmu3],
                      chain.JpsiMu_mu1_phi[selectedmu3], MMu)
    pmu2.SetPtEtaPhiM(chain.JpsiMu_mu2_pt[selectedmu3],
                      chain.JpsiMu_mu2_eta[selectedmu3],
                      chain.JpsiMu_mu2_phi[selectedmu3], MMu)
    pmu3.SetPtEtaPhiM(chain.JpsiMu_mu3_pt[selectedmu3],
                      chain.JpsiMu_mu3_eta[selectedmu3],
                      chain.JpsiMu_mu3_phi[selectedmu3], MMu)
    pB.SetPtEtaPhiM(chain.JpsiMu_B_pt[selectedmu3],
                    chain.JpsiMu_B_eta[selectedmu3],
                    chain.JpsiMu_B_phi[selectedmu3],
                    chain.JpsiMu_B_mass[selectedmu3])
    #pmet.SetPtEtaPhiE(chain.MET_et[0], 2, chain.MET_phi[0], -chain.MET_et[0])

    pperp = pB.P() * TMath.Sin(TMath.ACos(chain.JpsiMu_B_alpha[selectedmu3]))
    JpsiMu_B_mcorr[0] = TMath.Sqrt((chain.JpsiMu_B_mass[selectedmu3])**2 +
                                   pperp**2) + pperp

    dphi_mu1_mu3[0] = pmu1.DeltaPhi(pmu3)
    dphi_mu1_mu2[0] = pmu1.DeltaPhi(pmu2)
    dphi_mu2_mu3[0] = pmu2.DeltaPhi(pmu3)
    #dphi_Jpsi_MET[0] = pJpsi.DeltaPhi(pmet)
    #dphi_mu3_MET[0] = pmu3.DeltaPhi(pmet)
    dR_mu1_mu3[0] = pmu1.DeltaR(pmu3)
    dR_mu1_mu2[0] = pmu1.DeltaR(pmu2)
    dR_mu2_mu3[0] = pmu2.DeltaR(pmu3)
    cosdphi_mu1_mu3[0] = TMath.Cos(dphi_mu1_mu3[0])
    cosdphi_mu1_mu2[0] = TMath.Cos(dphi_mu1_mu2[0])
    cosdphi_mu2_mu3[0] = TMath.Cos(dphi_mu2_mu3[0])
    #cosdphi_Jpsi_MET[0] = TMath.Cos(dphi_Jpsi_MET[0])