A weird problem with TLorentzVector masses

_ROOT Version:6.28
_Platform:Windows 11
_Compiler:Cling or I think MS Visual c++

Weird problem with consent masses from virtually the same TLorentzVector. The problem occurs whether I compile or not.

Here are the two 4 vectors. They present different calculations of the same missing momentum vector. That should be a neutrino so that mass should be very small.

It is small for ‘p4AllTooMiss’ but the ‘p4Miss’ mass is absurdly large.

The three vectors and the energy are very close, how can the masses be different?

twoB::p4AllTooMiss: px:-611.468 py:43.8495 pz:-1227.02 E:1371.64 M:1.52588e-05

twoB::p4Miss: px:-611.468 py:43.8499 pz:-1227.02 E:1371.64 M:1.94998

It gets weirder. I decided to extract the components and calculate the masses myself

Here are the results. They agree with the result from TLorentzVector::M();

twoB: MMissSq3.75 MTooMissSq:0

twoB::MMiss:1.93649 MTooMiss:0

The extract 4-vector components are (px,py,pz,E);

twoB:: PMiss:-611.468, 43.8499, -1227.02, 1371.64

twoB:: PTooMiss:-611.468, 43.8495, -1227.02, 1371.64

Here’s the code:

float PxMiss=p4Miss[0];

float PyMiss=p4Miss[1];

float PzMiss=p4Miss[2];

float EMiss=p4Miss[3];

float EPMiss=p4Miss.T();

float PxTooMiss=p4AllTooMiss[0];

float PyTooMiss=p4AllTooMiss[1];

float PzTooMiss=p4AllTooMiss[2];

float ETooMiss=p4AllTooMiss[3];

float EPTooMiss=p4AllTooMiss.T();

float MMissSq=EMissEMiss-PxMissPxMiss-PyMissPyMiss-PzMissPzMiss;

float MMiss=sqrt(MMissSq);

float MTooMissSq

=ETooMissETooMiss-PxTooMissPxTooMiss-PyTooMissPyTooMiss-PzTooMissPzTooMiss

I tried converting to ‘double’. It didn’t help.

twoB::dp4Nu: px:-0.000386937 py:0.000218813 pz:-0.000424162 E:-0.00105851 M:0.000861929
twoB::p4NuB14S: px:-1560.66 py:1051.24 pz:-354.08 E:1914.72 M:0
twoB::p4Miss: px:-1560.66 py:1051.24 pz:-354.08 E:1914.72 M:2.45391

This is the difference between two TLorentzVectors that should be the ‘missing’ neutrino. At double precision the combonents are identical, but the masses different.

This makes nosense!

Well, before anybody had a chance to respond, I found two bugs in my code. Numerical was a read herring.

While nobody repsponded (it was the weekend), it was still useful to try to ‘explain’ it!

Thanks!

1 Like

Well one was kind of a numerical bug. I used a numerical unstable method of calculating energy of a decay product. I might not have found this, but for the other bug which was an outright blunder.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.