5 #ifndef BsJpsiPhiAngles_H
6 #define BsJpsiPhiAngles_H
8 #include "CLHEP/Vector/LorentzVector.h"
41 const CLHEP::HepLorentzVector &Muplus,
42 const CLHEP::HepLorentzVector &
Phi,
43 const CLHEP::HepLorentzVector &Jpsi,
44 const CLHEP::HepLorentzVector &Bs)
46 using CLHEP::HepLorentzVector;
47 using CLHEP::Hep3Vector;
57 HepLorentzVector Mum1QV (
Phi ) ;
58 HepLorentzVector Mum2QV ( Jpsi ) ;
60 HepLorentzVector BQV(Bs);
62 Hep3Vector Bboost ( BQV.boostVector() );
63 Mum1QV.boost ( -( Bboost ) );
64 Mum2QV.boost ( -( Bboost ) );
67 HepLorentzVector cand1QV ( Kplus );
68 cand1QV.boost ( - (Bboost) );
70 cand1QV.boost ( - (Mum1QV.boostVector() ) );
72 Hep3Vector Mum1TV = Mum1QV.boostVector();
73 Hep3Vector cand1TV = cand1QV.boostVector();
74 Hep3Vector ucand1TV = cand1TV.unit();
81 HepLorentzVector cand2QV ( Muplus );
82 cand2QV.boost ( - (Bboost) );
84 cand2QV.boost ( - (Mum2QV.boostVector() ) );
86 Hep3Vector Mum2TV = Mum2QV.boostVector();
87 Hep3Vector cand2TV = cand2QV.boostVector();
88 Hep3Vector ucand2TV = cand2TV.unit();
95 Hep3Vector uMum1TV = Mum1TV.unit();
96 Hep3Vector uMum2TV = Mum2TV.unit();
99 c = (uMum1TV.cross(ucand1TV)).cross(uMum1TV);
100 d = (uMum2TV.cross(ucand2TV)).cross(uMum2TV);
101 double sinphi = (
c.cross(uMum1TV)).
dot(
d);
102 double cosphi =
c.dot(
d);
104 m_chi = std::atan2(sinphi,cosphi);
113 double sinThetaTr = std::sqrt ( 1. - cosThetaTr * cosThetaTr ) ;
116 m_phitr = std::atan2 ( sinPhiTr, cosPhiTr ) ;