#include <Riostream.h>
+using std::setw;
+using std::setprecision;
+using std::endl;
+using std::cout;
/// \cond CLASSIMP
ClassImp(AliMUONTrackParam) // Class implementation in ROOT context
/// \endcond
fLocalChi2(0.)
{
/// Constructor
+ fParameters.Zero();
}
//_________________________________________________________________________
Double_t AliMUONTrackParam::Px() const
{
/// return p_x from track parameters
- Double_t pYZ, pZ, pX;
- pYZ = 0;
- if ( TMath::Abs(fParameters(4,0)) > 0 )
- pYZ = TMath::Abs(1.0 / fParameters(4,0));
- pZ = -pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0))); // spectro. (z<0)
- pX = pZ * fParameters(1,0);
- return pX;
+ Double_t pZ;
+ if (TMath::Abs(fParameters(4,0)) > 0) {
+ Double_t pYZ = (TMath::Abs(fParameters(4,0)) > 0) ? TMath::Abs(1.0 / fParameters(4,0)) : FLT_MAX;
+ pZ = - pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0))); // spectro. (z<0)
+ } else {
+ pZ = - FLT_MAX / TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0) + fParameters(1,0) * fParameters(1,0));
+ }
+ return pZ * fParameters(1,0);
}
//__________________________________________________________________________
Double_t AliMUONTrackParam::Py() const
{
/// return p_y from track parameters
- Double_t pYZ, pZ, pY;
- pYZ = 0;
- if ( TMath::Abs(fParameters(4,0)) > 0 )
- pYZ = TMath::Abs(1.0 / fParameters(4,0));
- pZ = -pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0))); // spectro. (z<0)
- pY = pZ * fParameters(3,0);
- return pY;
+ Double_t pZ;
+ if (TMath::Abs(fParameters(4,0)) > 0) {
+ Double_t pYZ = (TMath::Abs(fParameters(4,0)) > 0) ? TMath::Abs(1.0 / fParameters(4,0)) : FLT_MAX;
+ pZ = - pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0))); // spectro. (z<0)
+ } else {
+ pZ = - FLT_MAX / TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0) + fParameters(1,0) * fParameters(1,0));
+ }
+ return pZ * fParameters(3,0);
}
//__________________________________________________________________________
Double_t AliMUONTrackParam::Pz() const
{
/// return p_z from track parameters
- Double_t pYZ, pZ;
- pYZ = 0;
- if ( TMath::Abs(fParameters(4,0)) > 0 )
- pYZ = TMath::Abs(1.0 / fParameters(4,0));
- pZ = -pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0))); // spectro. (z<0)
- return pZ;
+ if (TMath::Abs(fParameters(4,0)) > 0) {
+ Double_t pYZ = TMath::Abs(1.0 / fParameters(4,0));
+ return - pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0))); // spectro. (z<0)
+ } else return - FLT_MAX / TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0) + fParameters(1,0) * fParameters(1,0));
}
//__________________________________________________________________________
Double_t AliMUONTrackParam::P() const
{
/// return p from track parameters
- Double_t pYZ, pZ, p;
- pYZ = 0;
- if ( TMath::Abs(fParameters(4,0)) > 0 )
- pYZ = TMath::Abs(1.0 / fParameters(4,0));
- pZ = -pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0))); // spectro. (z<0)
- p = TMath::Abs(pZ) *
- TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0) + fParameters(1,0) * fParameters(1,0));
- return p;
-
+ if (TMath::Abs(fParameters(4,0)) > 0) {
+ Double_t pYZ = TMath::Abs(1.0 / fParameters(4,0));
+ Double_t pZ = - pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0))); // spectro. (z<0)
+ return - pZ * TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0) + fParameters(1,0) * fParameters(1,0));
+ } else return FLT_MAX;
}
//__________________________________________________________________________
// check Z parameters
if (fZ != trackParam.fZ)
- AliWarning(Form("Parameters are given at different Z position (%le : %le): results are meaningless", fZ, trackParam.fZ));
+ AliWarning(Form("Parameters are given at different Z position (%e : %e): results are meaningless", fZ, trackParam.fZ));
// compute the parameter residuals
TMatrixD deltaParam(fParameters, TMatrixD::kMinus, trackParam.fParameters);
"," << setw(5) << setprecision(3) << fZ <<
") cm, (px,py,pz)=(" << setw(5) << setprecision(3) << Px() <<
"," << setw(5) << setprecision(3) << Py() <<
- "," << setw(5) << setprecision(3) << Pz() << ") GeV/c" << endl;
+ "," << setw(5) << setprecision(3) << Pz() << ") GeV/c"
+ "," << "local chi2=" << GetLocalChi2() << endl;
}
else {
cout << "<AliMUONTrackParam>" << endl;