ATLAS Offline Software
Loading...
Searching...
No Matches
BsJpsiPhiAngles Class Reference

#include <BsJpsiPhiAngles.h>

Collaboration diagram for BsJpsiPhiAngles:

Public Member Functions

double thetaK () const
double thetaL () const
double chi () const
double thetatr () const
double phitr () const
double thetaKfix () const
double thetaLfix () const
double chifix () const
double thetatrfix () const
double phitrfix () const
 BsJpsiPhiAngles (const CLHEP::HepLorentzVector &Kplus, const CLHEP::HepLorentzVector &Muplus, const CLHEP::HepLorentzVector &Phi, const CLHEP::HepLorentzVector &Jpsi, const CLHEP::HepLorentzVector &Bs)

Private Attributes

double m_theta1
double m_theta2
double m_chi
double m_thetatr
double m_phitr

Detailed Description

Definition at line 9 of file BsJpsiPhiAngles.h.

Constructor & Destructor Documentation

◆ BsJpsiPhiAngles()

BsJpsiPhiAngles::BsJpsiPhiAngles ( const CLHEP::HepLorentzVector & Kplus,
const CLHEP::HepLorentzVector & Muplus,
const CLHEP::HepLorentzVector & Phi,
const CLHEP::HepLorentzVector & Jpsi,
const CLHEP::HepLorentzVector & Bs )
inline

Definition at line 40 of file BsJpsiPhiAngles.h.

45 {
46 using CLHEP::HepLorentzVector;
47 using CLHEP::Hep3Vector;
48
49 m_theta1 = 0.;
50 m_theta2 = 0.;
51 m_chi = 0.;
52 m_thetatr = 0.;
53 m_phitr = 0.;
54
55
56 // 0.1 Get the Mummy1 & Mummy2 4-vectors in lab
57 HepLorentzVector Mum1QV ( Phi ) ; // this should be phi
58 HepLorentzVector Mum2QV ( Jpsi ) ; // this should be jpsi
59 // 0.2 Boost the Mummy1 & Mummy2 to the B(aBcand) rest frame
60 HepLorentzVector BQV(Bs); // this should be Bs Meson
61
62 Hep3Vector Bboost ( BQV.boostVector() );
63 Mum1QV.boost ( -( Bboost ) );
64 Mum2QV.boost ( -( Bboost ) );
65 // 1. Compute helicity angle theta1
66 // 1.1 Boost cand1 to the B rest frame (grandMa)
67 HepLorentzVector cand1QV ( Kplus );
68 cand1QV.boost ( - (Bboost) );
69 // 1.2 Boost now cand1 in his mother rest frame
70 cand1QV.boost ( - (Mum1QV.boostVector() ) );
71 // 1.3 compute the theta1 angle
72 Hep3Vector Mum1TV = Mum1QV.boostVector();
73 Hep3Vector cand1TV = cand1QV.boostVector();
74 Hep3Vector ucand1TV = cand1TV.unit();
75 m_theta1 = cand1TV.angle(Mum1TV);
76
77
78
79 // 2. Compute helicity angle theta2
80 // 2.1 Boost cand2 to the B rest frame (grandMa)
81 HepLorentzVector cand2QV ( Muplus );
82 cand2QV.boost ( - (Bboost) );
83 // 2.2 Boost now cand2 in his mother rest frame
84 cand2QV.boost ( - (Mum2QV.boostVector() ) );
85 // 2.3 compute the theta2 angle
86 Hep3Vector Mum2TV = Mum2QV.boostVector();
87 Hep3Vector cand2TV = cand2QV.boostVector();
88 Hep3Vector ucand2TV = cand2TV.unit();
89 m_theta2 = cand2TV.angle(Mum2TV);
90
91 // 3. Compute the chi angle
92 // 3.1 Define the c and d vectors (see Physbook)
93 Hep3Vector c;
94 Hep3Vector d;
95 Hep3Vector uMum1TV = Mum1TV.unit();
96 Hep3Vector uMum2TV = Mum2TV.unit();
97
98 // 3.2 Calculate these vectors
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);
103 // 3.3 Now get chi = angle between the 2 decay planes
104 m_chi = std::atan2(sinphi,cosphi);
105 // 3.4 Put chi in [0;2pi]
106 if ( m_chi < 0 )
107 {
108 m_chi = 2.*M_PI + m_chi;
109 }
110
111 // 4. Transversity angles
112 double cosThetaTr = std::sin ( m_theta2 ) * std::sin ( m_chi ) ;
113 double sinThetaTr = std::sqrt ( 1. - cosThetaTr * cosThetaTr ) ;
114 double cosPhiTr = std::cos(m_theta2) / sinThetaTr ;
115 double sinPhiTr = std::sin(m_theta2) * std::cos( m_chi ) / sinThetaTr ;
116 m_phitr = std::atan2 ( sinPhiTr, cosPhiTr ) ;
117 if (m_phitr < 0)
118 {
119 m_phitr = 2.*M_PI + m_phitr;
120 }
121 m_thetatr = std::acos(cosThetaTr) ;
122
123
124
125 }
#define M_PI
@ Phi
Definition RPCdef.h:8

Member Function Documentation

◆ chi()

double BsJpsiPhiAngles::chi ( ) const
inline

Definition at line 24 of file BsJpsiPhiAngles.h.

24{ return m_chi; }

◆ chifix()

double BsJpsiPhiAngles::chifix ( ) const
inline

Definition at line 30 of file BsJpsiPhiAngles.h.

30{ return -(m_chi - M_PI) ; }

◆ phitr()

double BsJpsiPhiAngles::phitr ( ) const
inline

Definition at line 26 of file BsJpsiPhiAngles.h.

26{ return m_phitr; }

◆ phitrfix()

double BsJpsiPhiAngles::phitrfix ( ) const
inline

Definition at line 32 of file BsJpsiPhiAngles.h.

32{ return -(m_phitr - M_PI); }

◆ thetaK()

double BsJpsiPhiAngles::thetaK ( ) const
inline

Definition at line 22 of file BsJpsiPhiAngles.h.

22{ return m_theta1; }

◆ thetaKfix()

double BsJpsiPhiAngles::thetaKfix ( ) const
inline

Definition at line 28 of file BsJpsiPhiAngles.h.

28{ return cos(m_theta1); }

◆ thetaL()

double BsJpsiPhiAngles::thetaL ( ) const
inline

Definition at line 23 of file BsJpsiPhiAngles.h.

23{ return m_theta2; }

◆ thetaLfix()

double BsJpsiPhiAngles::thetaLfix ( ) const
inline

Definition at line 29 of file BsJpsiPhiAngles.h.

29{ return cos(m_theta2); }

◆ thetatr()

double BsJpsiPhiAngles::thetatr ( ) const
inline

Definition at line 25 of file BsJpsiPhiAngles.h.

25{ return m_thetatr; }

◆ thetatrfix()

double BsJpsiPhiAngles::thetatrfix ( ) const
inline

Definition at line 31 of file BsJpsiPhiAngles.h.

31{ return -cos(m_thetatr); }

Member Data Documentation

◆ m_chi

double BsJpsiPhiAngles::m_chi
private

Definition at line 17 of file BsJpsiPhiAngles.h.

◆ m_phitr

double BsJpsiPhiAngles::m_phitr
private

Definition at line 19 of file BsJpsiPhiAngles.h.

◆ m_theta1

double BsJpsiPhiAngles::m_theta1
private

Definition at line 15 of file BsJpsiPhiAngles.h.

◆ m_theta2

double BsJpsiPhiAngles::m_theta2
private

Definition at line 16 of file BsJpsiPhiAngles.h.

◆ m_thetatr

double BsJpsiPhiAngles::m_thetatr
private

Definition at line 18 of file BsJpsiPhiAngles.h.


The documentation for this class was generated from the following file: