Hi,
Looking at TLorentzVector class, I wish to find the cosine of the angle
between the vector and the z axis. For this I would expect to use
CosTheta() method which is defined in TLorentzVector.h as follows:
inline Double_t TLorentzVector::CosTheta() const {
Double_t ptot = Mag();
return ptot == 0.0 ? 1.0 : fZ/ptot;
}
If I check the definition of Mag() I find that it is the invariant mass
NOT the Magnitude of the three vector:
inline Double_t TLorentzVector::Mag2() const {
return T()*T() - Vect().Mag2();
}
inline Double_t TLorentzVector::Mag() const {
Double_t mm = Mag2();
return mm < 0.0 ? -TMath::Sqrt(-mm) : TMath::Sqrt(mm);
}
As example:
root [49] v = new TLorentzVector(1,1,1,1.75)
(class TLorentzVector*)0x8723668
root [50] v.Vect().CosTheta()
(Double_t)5.77350269189625731e-01
root [51] v.Mag()
(Double_t)2.50000000000000000e-01
root [52] v.CosTheta()
(Double_t)4.00000000000000000e+00
(Root V2.22 Redhat linux 5.1)
So v.Vect().CosTheta() gives the expected value but
v.CosTheta() gives a non-physical cosine > 1.
Have I misuderstood the meaning of CosTheta? It seems intuitive to me that
TLorentzVector::Mag() would call TVector3::Mag() and likewise for
TLorentzVector::CosTheta().
~Matt
_________________________________________________________________________
Matt D O B B S
CERN EP Division, ATLAS Experiment Office Tel: 41.22.76.71272 (Swiss)
Office: 40-1-C15, ATLAS Bldg. Home Tel: 0450 282544 (France)
Email: Matthew.Adam.Dobbs@Cern.CH http://wwwhep.phys.uvic.ca/~mdobbs/
Department of Physics and Astronomy, University of Victoria, Canada
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:39 MET