Home | News | Documentation | Download

How to use boost() in TLorentzVector


#1

Hi,

I have just a simple question concerning how to use the boost-routine for a TLorentzVector?
I tried something like for boosting a particle out my center-of-mass system into the system of a combined particle but it does not seem to work right:

TLorentzVector MyParticle1;
MyParticle1_CMS.SetPxPyPzE(P1_PX_CMS,P1_PY_CMS,P1_PZ_CMS,P1_Energy_CMS);
TLorentzVector MyParticle2;
MyParticle2_CMS.SetPxPyPzE(P2_PX_CMS,P2_PY_CMS,P2_PZ_CMS,P2_Energy_CMS);

TLorentzVector MyParticleCombi;
MyParticleCombi_CMS.SetPxPyPzE(P1_PX_CMS+P2_PX_CMS,P1_PY_CMS+P2_PY_CMS,P1_PZ_CMS+P2_PZ_CMS,P1_Energy_CMS+P2_Energy_CMS);

TVector3 MyParticleCombi_BoostVector = MyParticleCombi_CMS.BoostVector();
	TLorentzVector MyParticle1_newSys = MyParticle1_CMS;
	MyParticle1_newSys.Boost(MyParticleComb_BoostVector);

	TLorentzVector MyParticleCombi_newSys = MyParticleCombi_CMS;
	MyParticleCombi_newSys.Boost(MyParticleComb_BoostVector);

I would expect that the momentum for “MyParticleCombi_newSys” to be 0 but apparently I use the boost wrong. Maybe somebody can give me a hint.

Cheers,
Thomas


#2

OK,

I boosted into the wrong direction…

MyParticleCombi_newSys.Boost(-MyParticleComb_BoostVector);

does it. :smiley:

Cheers,
Thomas


#3

I’m a bit confused about why this is the case. I can see in the source code that ROOT does +gamma*bx*T(), hence the above solution, but the usual definition is -gamma*bx*T(), which gives the more intuitive behavior that boosting into a vector’s own reference frame gives (Px, Py, Pz) = (0, 0, 0). (See, e.g., here.)

The documentation explains this as a boost “from the rod frame into the original frame”, but I think some elaboration, as well as an explicit statement about the need for a - to reproduce the (in many cases) expected behavior, would be useful.