Re: LorentzVector BOOST-method allways returns "nan"

From: Lorenzo Moneta <Lorenzo.Moneta_at_cern.ch>
Date: Tue, 28 Oct 2008 10:03:48 +0100


Dear Stephan,

The nan you are getting are probably caused by a boost vector with module > 1.
You should use

TVector3 b = m.BoostVector();

and not assigning b using only the spatial components of m. If b is having still a module > 1, it is probably because m is a time- like vector ( E^2 < p^2 ).
You should check your vector p1 and p2.

  Best Regards

  Lorenzo
On Oct 26, 2008, at 6:42 AM, Stephan Zimmer wrote:

> Dear all,
>
> actually I'm working on a problem but I either can not the error in my
> code or I don't understand the documentation of this. I have
> actually a
> particle m which decays into two particles p1 and p2. I assume
> momentum
> conservation and want to boost p1 back into the decay frame of m.
> Therefore I assign m, p1 and p2 as TLorentzVector and try to use the
> p1.Boost(b) routine, where b is the spacial part of the TLorentzVector
> of m. I use the following code (assuming that p1 and p2 are correctly
> assigned and non-zero filled TLorentzVectors)
>
> // assuming momentum conservation:
> TLorentzVector m = p1 + p2;
> // getting the spacial components:
> TVector3 b;
> b.SetXYZ(m.X(),m.Y(),m.Z());
> // now boost p1 back into decay frame of m
> p1.Boost(b);
>
> The result is that my p1-vector has entries with NAN, thus I don't
> understand what is actually wrong. I also tried to use (instead of
> explicitly assigning of b) the following:
> // assign b as Boostvector of m
> TVector3 b;
> b = m.BoostVector();
> // boost
> p1.Boost(b);
>
> After this all my previous tests didn't worked at all, therefore I
> have
> written down a routine with the informations of the ROOT-documentation
> of that method:
>
> TLorentzVector VecBoost(TLorentzVector vboost, TLorentzVector vdecay){
> TLorentzVector vresult;
> // assign the boost-vector;
> TVector3 bprim = vboost.BoostVector();
> // back boost into decay frame
> TVector3 b = -bprim;
> TVector3 x,xprim;
> double gamma, beta2, t,tprim;
> beta2 = b.X()*b.X()+b.Y()*b.Y()+b.Z()*b.Z();
> gamma = pow(1-beta2,-0.5);
> xprim.SetXYZ(vdecay.X(),vdecay.Y(),vdecay.Z());
> tprim = vdecay.T();
> t = gamma*(tprim+b*xprim);
> x = xprim+ (gamma-1)/beta2 * (b*xprim)*b + gamma*tprim*b;
> vresult.SetXYZT(x.X(),x.Y(),x.Z(),t);
> return vresult;
> }
>
> What am I doing wrong? Why it allways return for the explicite
> elements:
> nan? Thanks a lot for helping, btw. my current ROOT-Version is: "ROOT
> 5.20/00 (trunk_at_24524, Oct 08 2008, 00:11:00 on linux)" under
> Scientific
> Linux
>
> Best Regards,
> Stephan Zimmer
Received on Tue Oct 28 2008 - 10:03:55 CET

This archive was generated by hypermail 2.2.0 : Wed Oct 29 2008 - 05:50:03 CET