diff --git a/Reconstruction/RecTrkGlobal/src/FullLDCTracking/FullLDCTrackingAlg.cpp b/Reconstruction/RecTrkGlobal/src/FullLDCTracking/FullLDCTrackingAlg.cpp
index e1899a16ff440763d7e1b5454893837634b086c2..4672c4d60e395061ca10776281c8bf98c43c3732 100755
--- a/Reconstruction/RecTrkGlobal/src/FullLDCTracking/FullLDCTrackingAlg.cpp
+++ b/Reconstruction/RecTrkGlobal/src/FullLDCTracking/FullLDCTrackingAlg.cpp
@@ -701,6 +701,8 @@ fitstart:
float trkPz = helix.getMomentum()[2];
float trkP = sqrt(trkPx*trkPx+trkPy*trkPy+trkPz*trkPz);
+ debug() << "momentum of Track " << iTRK << ": P = " << trkP << " Px = " << trkPx << " Py = " << trkPy << " Pz = " << trkPz << endmsg;
+
eTot += trkP;
pxTot += trkPx;
pyTot += trkPy;
@@ -708,6 +710,7 @@ fitstart:
nTotTracks++;
}
}
+
if(m_tuple) m_timeKalman = stopwatch.RealTime()*1000;
// streamlog_out(DEBUG5) << endmsg;
info() << "Number of accepted " << _OutputTrackColHdl.fullKey() << " = " << nTotTracks << endmsg;
@@ -3009,9 +3012,10 @@ float FullLDCTrackingAlg::CompareTrkII(TrackExtended * first, TrackExtended * se
float qFirst = PIOVER2 - atan(tanLFirst);
float qSecond = PIOVER2 - atan(tanLSecond);
- Angle = (cos(phiFirst)*cos(phiSecond)+sin(phiFirst)*sin(phiSecond))*
- sin(qFirst)*sin(qSecond)+cos(qFirst)*cos(qSecond);
- Angle = acos(Angle);
+ Angle = (cos(phiFirst)*cos(phiSecond)+sin(phiFirst)*sin(phiSecond))*sin(qFirst)*sin(qSecond)
+ + cos(qFirst)*cos(qSecond);
+ // fucd: possible Angle > 1, because of float precision, acos(Angle) -> NaN
+ Angle = (Angle<1) ? acos(Angle) : 0;
result = deltaOmega;
@@ -3049,7 +3053,6 @@ float FullLDCTrackingAlg::CompareTrkIII(TrackExtended * first, TrackExtended * s
float phiFirst = first->getPhi();
float qFirst = PIOVER2 - atan(tanLFirst);
-
float d0Second = second->getD0();
float z0Second = second->getZ0();
float omegaSecond = second->getOmega();
@@ -3057,7 +3060,6 @@ float FullLDCTrackingAlg::CompareTrkIII(TrackExtended * first, TrackExtended * s
float phiSecond = second->getPhi();
float qSecond = PIOVER2 - atan(tanLSecond);
-
//MB 2010 03
float d0ErrFirst = sqrt(first->getCovMatrix()[0]);
float z0ErrFirst = sqrt(first->getCovMatrix()[9]);
@@ -3127,17 +3129,18 @@ float FullLDCTrackingAlg::CompareTrkIII(TrackExtended * first, TrackExtended * s
cos(phiSecond)*cos(phiSecond)*phiErrSecond*phiErrSecond*(sin(phiFirst)*sin(qFirst)*sin(qSecond))*(sin(phiFirst)*sin(qFirst)*sin(qSecond))+
cos(qFirst)*cos(qFirst)*qErrFirst*qErrFirst*(sin(phiFirst)*sin(phiSecond)*sin(qSecond))*(sin(phiFirst)*sin(phiSecond)*sin(qSecond))+
cos(qSecond)*cos(qSecond)*qErrSecond*qErrSecond*(sin(phiFirst)*sin(phiSecond)*sin(qFirst))*(sin(phiFirst)*sin(phiSecond)*sin(qFirst));
-
+
if(Angle<1.){
errorAngle = sqrt(1./(1.-Angle*Angle)*errorAngle);
}else{
errorAngle = sqrt(errorAngle);
}
-
+
if(errorAngle<1.e-6)errorAngle=1.e-6;
-
- AngleSignificance = fabs(acos(Angle)/errorAngle);
-
+
+ // fucd: possible Angle > 1, because float precision, acos(Angle)->NaN
+ AngleSignificance = (Angle<1.) ? fabs(acos(Angle)/errorAngle) : 0;
+
return significance;
}