Hello ROOT talkers,

I am doing a little soft to perform analytical calculations of the track parameters resolution doing vertex detector stand-alone tracking. I am having a problem of matrix inversion. For the moment I have to invert matrices no bigger than 12x12 (6 layers with 2 measurements). I was using the TDecompLU ROOT class by doing as follows,

TDecompLU lu_meas(A);

lu.SetTol(1.0e-20);

int nr = 0;

while(!lu.Invert(InvA) && nr < 10) {

lu.SetMatrix(A);

lu.SetTol(0.1*lu_meas.GetTol());

nr++;

}

where A is the matrix to invert and InvA is the inverted matrix. Both, A and InvA are TMatrixD objects.

I noticed the problem by checking the product A*InvA which is sometimes significantly different from the unit matrix: diagonal (non-diagonal) elements significantly different from 1 (0).

I was wondering if anyone know something about matrix inversion either in ROOT and/or C++.

Thanks in advance,

Alejandro