root [0] TLorentzVector *v1 = new TLorentzVector(1,2,3,4); root [1] printf("%f %f %f %f \n", v1->X(), v1->Y(), v1->Z(), v1->T() ); 1.000000 2.000000 3.000000 4.000000 root [2] printf("%f %f %f %f \n", v1->Px(), v1->Py(), v1->Pz(), v1->E() ); 1.000000 2.000000 3.000000 4.000000
root [3] TVector3 v3 = v1->Vect(); root [4] printf("%f %f %f \n", v3.x(), v3.y(), v3.z() ); 1.000000 2.000000 3.000000
root [5] TVector3 v4 = v1->BoostVector(); root [6] printf("%f %f %f \n", v4.x(), v4.y(), v4.z() ); 0.250000 0.500000 0.750000ここでは、(px/E, py/E, pz/E)が計算された。
root [0] TLorentzVector p1(1,0,0,3); root [1] TLorentzVector p2(2,0,0,3); root [2] TLorentzVector p12 = p1 + p2; root [3] printf("%f %f %f %f \n", p12.Px(), p12.Py(), p12.Pz(), p12.E() ); 3.000000 0.000000 0.000000 6.000000TLorentzVector同士は + を使って足し合わせが可能。
root [4] TVector3 b12 = p12.BoostVector(); root [5] printf("%f %f %f \n", b12.x(), b12.y(), b12.z() ); 0.500000 0.000000 0.000000
root [6] p1.Boost(-b12); root [7] p2.Boost(-b12); root [8] printf("%f %f %f %f \n", p1.Px(), p1.Py(), p1.Pz(), p1.E() ); -0.577350 0.000000 0.000000 2.886751 root [9] printf("%f %f %f %f \n", p2.Px(), p2.Py(), p2.Pz(), p2.E() ); 0.577350 0.000000 0.000000 2.309401