]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Modifications in AliESDMuonTrack:
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 20 Sep 2007 19:09:39 +0000 (19:09 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 20 Sep 2007 19:09:39 +0000 (19:09 +0000)
- Added MUON cluster map
- Added reduced covariance matrix of 'uncorrected' track parameters
- Implemented methods to get mass, energy and rapidity of muon

Modification in AliMUONTracker:
- Fill MUON cluster map and reduced covariance matrix of 'uncorrected' track
  parameters into AliESDMuonTrack

Philippe Pillot

MUON/AliMUONTrackParam.cxx
MUON/AliMUONTrackParam.h
MUON/AliMUONTracker.cxx
STEER/AliESDMuonTrack.cxx
STEER/AliESDMuonTrack.h

index e3365d525abfd9f1faebf89587761b1bef49d1be..9506d704d9b4319caa21883fc97a5217242ba311 100644 (file)
@@ -188,7 +188,7 @@ AliMUONHitForRec* AliMUONTrackParam::GetHitForRecPtr(void) const
   //_________________________________________________________________________
 void AliMUONTrackParam::GetParamFrom(const AliESDMuonTrack& esdMuonTrack)
 {
-  /// assigned value form ESD track.
+  /// Get parameters from ESD track
   fZ = esdMuonTrack.GetZ(); 
   fParameters(0,0) = esdMuonTrack.GetNonBendingCoor();
   fParameters(1,0) = TMath::Tan(esdMuonTrack.GetThetaX());
@@ -200,7 +200,7 @@ void AliMUONTrackParam::GetParamFrom(const AliESDMuonTrack& esdMuonTrack)
   //_________________________________________________________________________
 void AliMUONTrackParam::SetParamFor(AliESDMuonTrack& esdMuonTrack) const
 {
-  /// assigned value form ESD track.
+  /// Set parameters in ESD track
   esdMuonTrack.SetZ(fZ);
   esdMuonTrack.SetNonBendingCoor(fParameters(0,0));
   esdMuonTrack.SetThetaX(TMath::ATan(fParameters(1,0)));
@@ -212,7 +212,7 @@ void AliMUONTrackParam::SetParamFor(AliESDMuonTrack& esdMuonTrack) const
   //_________________________________________________________________________
 void AliMUONTrackParam::GetParamFromUncorrected(const AliESDMuonTrack& esdMuonTrack)
 {
-  /// assigned value form ESD track.
+  /// Get parameters from ESD track
   fZ = esdMuonTrack.GetZUncorrected(); 
   fParameters(0,0) = esdMuonTrack.GetNonBendingCoorUncorrected();
   fParameters(1,0) = TMath::Tan(esdMuonTrack.GetThetaXUncorrected());
@@ -224,13 +224,72 @@ void AliMUONTrackParam::GetParamFromUncorrected(const AliESDMuonTrack& esdMuonTr
   //_________________________________________________________________________
 void AliMUONTrackParam::SetParamForUncorrected(AliESDMuonTrack& esdMuonTrack) const
 {
-  /// assigned value form ESD track.
+  /// Set parameters in ESD track
   esdMuonTrack.SetZUncorrected(fZ);
   esdMuonTrack.SetNonBendingCoorUncorrected(fParameters(0,0));
   esdMuonTrack.SetThetaXUncorrected(TMath::ATan(fParameters(1,0)));
   esdMuonTrack.SetBendingCoorUncorrected(fParameters(2,0)); 
   esdMuonTrack.SetThetaYUncorrected(TMath::ATan(fParameters(3,0)));
   esdMuonTrack.SetInverseBendingMomentumUncorrected(fParameters(4,0));
+}
+
+  //_________________________________________________________________________
+void AliMUONTrackParam::GetCovFrom(const AliESDMuonTrack& esdMuonTrack)
+{
+  /// Get parameters covariances from ESD track
+  
+  // Get ESD covariance matrix
+  if (!fCovariances) fCovariances = new TMatrixD(5,5);
+  esdMuonTrack.GetCovariances(*fCovariances);
+
+  // compute Jacobian to change the coordinate system
+  // from (X,thetaX,Y,thetaY,c/pYZ) to (X,slopeX,Y,slopeY,c/pYZ)
+  Double_t cosThetaX = TMath::Cos(TMath::ATan(fParameters(1,0)));
+  Double_t cosThetaY = TMath::Cos(TMath::ATan(fParameters(3,0)));
+  TMatrixD jacob(5,5);
+  jacob.Zero();
+  jacob(0,0) = 1.;
+  jacob(1,1) = 1. / cosThetaX / cosThetaX;
+  jacob(2,2) = 1.;
+  jacob(3,3) = 1. / cosThetaY / cosThetaY;
+  jacob(4,4) = 1.;
+  
+  // compute covariance matrix in ESD coordinate system
+  TMatrixD tmp(*fCovariances,TMatrixD::kMultTranspose,jacob);
+  *fCovariances = TMatrixD(jacob,TMatrixD::kMult,tmp);
+  
+}
+
+  //_________________________________________________________________________
+void AliMUONTrackParam::SetCovFor(AliESDMuonTrack& esdMuonTrack) const
+{
+  /// Set parameters covariances in ESD track
+  
+  // set null matrix if covariances does not exist
+  if (!fCovariances) {
+    TMatrixD tmp(5,5);
+    tmp.Zero();
+    esdMuonTrack.SetCovariances(tmp);
+    return;
+  }
+  
+  // compute Jacobian to change the coordinate system
+  // from (X,slopeX,Y,slopeY,c/pYZ) to (X,thetaX,Y,thetaY,c/pYZ)
+  Double_t cosThetaX = TMath::Cos(TMath::ATan(fParameters(1,0)));
+  Double_t cosThetaY = TMath::Cos(TMath::ATan(fParameters(3,0)));
+  TMatrixD jacob(5,5);
+  jacob.Zero();
+  jacob(0,0) = 1.;
+  jacob(1,1) = cosThetaX * cosThetaX;
+  jacob(2,2) = 1.;
+  jacob(3,3) = cosThetaY * cosThetaY;
+  jacob(4,4) = 1.;
+  
+  // compute covariance matrix in ESD coordinate system
+  TMatrixD tmp(*fCovariances,TMatrixD::kMultTranspose,jacob);
+  TMatrixD tmp2(jacob,TMatrixD::kMult,tmp);
+  esdMuonTrack.SetCovariances(tmp2);
+
 }
 
   //__________________________________________________________________________
index c40e6d6283ff80dfc9f2d6c6cd3891b8e86bbe14..5e811e8cf9f1ee4b329f6427d47f9cfdf664ba61 100644 (file)
@@ -33,6 +33,9 @@ class AliMUONTrackParam : public TObject
   void SetParamFor(AliESDMuonTrack& esdMuonTrack) const;
   void GetParamFromUncorrected(const AliESDMuonTrack& esdMuonTrack);
   void SetParamForUncorrected(AliESDMuonTrack& esdMuonTrack) const;
+  
+  void GetCovFrom(const AliESDMuonTrack& esdMuonTrack);
+  void SetCovFor(AliESDMuonTrack& esdMuonTrack) const;
 
   // Get and Set methods for data
        /// return Z coordinate (cm)
index fba0ab5c418ed34097bb1d86b2ad965a3b57dc50..5937010baabbb0c3e3a15334e49836c75f130011 100644 (file)
@@ -32,6 +32,7 @@
 #include "AliMUONTrackExtrap.h"
 #include "AliMUONTrackHitPattern.h"
 #include "AliMUONTrackParam.h"
+#include "AliMUONHitForRec.h"
 #include "AliMUONTrackReconstructor.h"
 #include "AliMUONTrackReconstructorK.h"
 #include "AliMUONTrackStoreV1.h"
@@ -234,25 +235,22 @@ AliMUONTracker::FillESD(AliMUONVTrackStore& trackStore, AliESDEvent* esd) const
     // setting data member of ESD MUON
     
     // at first station
-    esdTrack.SetInverseBendingMomentumUncorrected(trackParam->GetInverseBendingMomentum());
-    esdTrack.SetThetaXUncorrected(TMath::ATan(trackParam->GetNonBendingSlope()));
-    esdTrack.SetThetaYUncorrected(TMath::ATan(trackParam->GetBendingSlope()));
-    esdTrack.SetZUncorrected(trackParam->GetZ());
-    esdTrack.SetBendingCoorUncorrected(trackParam->GetBendingCoor());
-    esdTrack.SetNonBendingCoorUncorrected(trackParam->GetNonBendingCoor());
+    trackParam->SetParamForUncorrected(esdTrack);
+    trackParam->SetCovFor(esdTrack);
     // at vertex
-    esdTrack.SetInverseBendingMomentum(trackParamAtVtx.GetInverseBendingMomentum());
-    esdTrack.SetThetaX(TMath::ATan(trackParamAtVtx.GetNonBendingSlope()));
-    esdTrack.SetThetaY(TMath::ATan(trackParamAtVtx.GetBendingSlope()));
-    esdTrack.SetZ(trackParamAtVtx.GetZ());
-    esdTrack.SetBendingCoor(trackParamAtVtx.GetBendingCoor());
-    esdTrack.SetNonBendingCoor(trackParamAtVtx.GetNonBendingCoor());
+    trackParamAtVtx.SetParamFor(esdTrack);
     // global info
     esdTrack.SetChi2(track->GetFitFMin());
     esdTrack.SetNHit(track->GetNTrackHits());
     esdTrack.SetLocalTrigger(track->GetLocalTrigger());
     esdTrack.SetChi2MatchTrigger(track->GetChi2MatchTrigger());
     esdTrack.SetHitsPatternInTrigCh(track->GetHitsPatternInTrigCh());
+    // muon cluster map
+    AliMUONHitForRec* cluster = static_cast<AliMUONHitForRec*>((track->GetHitForRecAtHit())->First());
+    while (cluster) {
+      esdTrack.AddInMuonClusterMap(cluster->GetChamberNumber());
+      cluster = static_cast<AliMUONHitForRec*>((track->GetHitForRecAtHit())->After(cluster));
+    }
     
     // storing ESD MUON Track into ESD Event 
     esd->AddMuonTrack(&esdTrack);
index 287aea169c99ce95917f8245f8e44d14048991a4..16c418ad22e9dc7a03996c421855b01ee9f401dc 100644 (file)
@@ -51,9 +51,13 @@ AliESDMuonTrack::AliESDMuonTrack ():
   fNHit(0),
   fLocalTrigger(234),
   fChi2MatchTrigger(0),
-  fHitsPatternInTrigCh(0)
+  fHitsPatternInTrigCh(0),
+  fMuonClusterMap(0)
 {
+  //
   // Default constructor
+  //
+  for (Int_t i = 0; i < 15; i++) fCovariances[i] = 0;
 }
 
 
@@ -76,12 +80,14 @@ AliESDMuonTrack::AliESDMuonTrack (const AliESDMuonTrack& MUONTrack):
   fNHit(MUONTrack.fNHit),
   fLocalTrigger(MUONTrack.fLocalTrigger),
   fChi2MatchTrigger(MUONTrack.fChi2MatchTrigger),
-  fHitsPatternInTrigCh(MUONTrack.fHitsPatternInTrigCh)
+  fHitsPatternInTrigCh(MUONTrack.fHitsPatternInTrigCh),
+  fMuonClusterMap(MUONTrack.fMuonClusterMap)
 {
   //
   // Copy constructor
   // Deep copy implemented
   //
+  for (Int_t i = 0; i < 15; i++) fCovariances[i] = MUONTrack.fCovariances[i];
 }
 
 //_____________________________________________________________________________
@@ -109,6 +115,8 @@ AliESDMuonTrack& AliESDMuonTrack::operator=(const AliESDMuonTrack& MUONTrack)
   fBendingCoorUncorrected            = MUONTrack.fBendingCoorUncorrected;      
   fNonBendingCoorUncorrected         = MUONTrack.fNonBendingCoorUncorrected;   
   
+  for (Int_t i = 0; i < 15; i++) fCovariances[i] = MUONTrack.fCovariances[i];
+  
   fChi2                   = MUONTrack.fChi2;             
   fNHit                   = MUONTrack.fNHit; 
 
@@ -117,9 +125,80 @@ AliESDMuonTrack& AliESDMuonTrack::operator=(const AliESDMuonTrack& MUONTrack)
 
   fHitsPatternInTrigCh    = MUONTrack.fHitsPatternInTrigCh;
  
+  fMuonClusterMap        = MUONTrack.fMuonClusterMap;
+  
   return *this;
 }
 
+//_____________________________________________________________________________
+void AliESDMuonTrack::GetCovariances(TMatrixD& cov) const
+{
+  // return covariance matrix of uncorrected parameters
+  cov.ResizeTo(5,5);
+  for (Int_t i = 0; i < 5; i++)
+    for (Int_t j = 0; j <= i; j++)
+      cov(i,j) = cov (j,i) = fCovariances[i*(i+1)/2 + j];
+}
+
+//_____________________________________________________________________________
+void AliESDMuonTrack::SetCovariances(const TMatrixD& cov)
+{
+  // set reduced covariance matrix of uncorrected parameters
+  for (Int_t i = 0; i < 5; i++)
+    for (Int_t j = 0; j <= i; j++)
+      fCovariances[i*(i+1)/2 + j] = cov(i,j);
+
+}
+
+//_____________________________________________________________________________
+void AliESDMuonTrack::GetCovarianceXYZPxPyPz(Double_t cov[21]) const
+{
+  // return reduced covariance matrix of uncorrected parameters in (X,Y,Z,Px,Py,Pz) coordinate system
+  // 
+  // Cov(x,x) ... :   cov[0]
+  // Cov(y,x) ... :   cov[1]  cov[2]
+  // Cov(z,x) ... :   cov[3]  cov[4]  cov[5]
+  // Cov(px,x)... :   cov[6]  cov[7]  cov[8]  cov[9]
+  // Cov(py,x)... :   cov[10] cov[11] cov[12] cov[13] cov[14]
+  // Cov(pz,x)... :   cov[15] cov[16] cov[17] cov[18] cov[19] cov[20]
+  //
+  // Get ESD covariance matrix into a TMatrixD
+  TMatrixD covESD(5,5);
+  GetCovariances(covESD);
+
+  // compute Jacobian to change the coordinate system
+  // from (X,thetaX,Y,thetaY,c/pYZ) to (X,Y,Z,pX,pY,pZ)
+  Double_t tanThetaX = TMath::Tan(fThetaXUncorrected);
+  Double_t tanThetaY = TMath::Tan(fThetaYUncorrected);
+  Double_t cosThetaX2 = TMath::Cos(fThetaXUncorrected) * TMath::Cos(fThetaXUncorrected);
+  Double_t cosThetaY2 = TMath::Cos(fThetaYUncorrected) * TMath::Cos(fThetaYUncorrected);
+  Double_t pZ = PzUncorrected();
+  Double_t dpZdthetaY = - fInverseBendingMomentumUncorrected * fInverseBendingMomentumUncorrected *
+                         pZ * pZ * pZ * tanThetaY / cosThetaY2;
+  Double_t dpZdinvpYZ = - pZ / fInverseBendingMomentumUncorrected;
+  TMatrixD jacob(6,5);
+  jacob.Zero();
+  jacob(0,0) = 1.;
+  jacob(1,2) = 1.;
+  jacob(3,1) = pZ / cosThetaX2;
+  jacob(3,3) = dpZdthetaY * tanThetaX;
+  jacob(3,4) = dpZdinvpYZ * tanThetaX;
+  jacob(4,3) = dpZdthetaY * tanThetaY + pZ / cosThetaY2;
+  jacob(4,4) = dpZdinvpYZ * tanThetaY;
+  jacob(5,3) = dpZdthetaY;
+  jacob(5,4) = dpZdinvpYZ;
+  
+  // compute covariance matrix in AOD coordinate system
+  TMatrixD tmp(covESD,TMatrixD::kMultTranspose,jacob);
+  TMatrixD covAOD(jacob,TMatrixD::kMult,tmp);
+  
+  // Get AOD covariance matrix into co[21]
+  for (Int_t i = 0; i < 6; i++)
+    for (Int_t j = 0; j <= i; j++)
+      cov[i*(i+1)/2 + j] = covAOD(i,j);
+  
+}
+
 //_____________________________________________________________________________
 Double_t AliESDMuonTrack::Px() const
 {
@@ -165,7 +244,7 @@ Double_t AliESDMuonTrack::P() const
 void AliESDMuonTrack::LorentzP(TLorentzVector& vP) const
 {
   // return Lorentz momentum vector from track parameters
-  Double_t muonMass = 0.105658369;
+  Double_t muonMass = M();
   Double_t nonBendingSlope = TMath::Tan(fThetaX);
   Double_t bendingSlope    = TMath::Tan(fThetaY);
   Double_t pYZ = (fInverseBendingMomentum != 0.) ? TMath::Abs(1. / fInverseBendingMomentum) : 0.;
@@ -221,7 +300,7 @@ Double_t AliESDMuonTrack::PUncorrected() const
 void AliESDMuonTrack::LorentzPUncorrected(TLorentzVector& vP) const
 {
   // return Lorentz momentum vector from track parameters
-  Double_t muonMass = 0.105658369;
+  Double_t muonMass = M();
   Double_t nonBendingSlope = TMath::Tan(fThetaXUncorrected);
   Double_t bendingSlope    = TMath::Tan(fThetaYUncorrected);
   Double_t pYZ = (fInverseBendingMomentumUncorrected != 0.) ? TMath::Abs(1. / fInverseBendingMomentumUncorrected) : 0.;
@@ -253,3 +332,25 @@ Int_t AliESDMuonTrack::GetMatchTrigger() const
 
 }
 
+//_____________________________________________________________________________
+void AliESDMuonTrack::AddInMuonClusterMap(Int_t chamber)
+{
+  // Update the muon cluster map by adding this chamber(0..)
+  
+  static const UInt_t kMask[10] = {0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x100, 0x200};
+  
+  fMuonClusterMap |= kMask[chamber];
+  
+}
+
+//_____________________________________________________________________________
+Bool_t AliESDMuonTrack::IsInMuonClusterMap(Int_t chamber) const
+{
+  // return kTRUE if this chamber(0..) is in the muon cluster map
+  
+  static const UInt_t kMask[10] = {0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x100, 0x200};
+  
+  return ((fMuonClusterMap | kMask[chamber]) == fMuonClusterMap) ? kTRUE : kFALSE;
+  
+}
+
index 78cae9743c35e47a136b8421e588fffb84f91656..1c4d7198729b768ac3a8a633c1bd6a03b1fee233 100644 (file)
@@ -12,6 +12,8 @@
 
 
 #include <TMath.h>
+#include <TMatrixD.h>
+#include <TDatabasePDG.h>
 
 #include "AliVParticle.h"
 
@@ -54,7 +56,12 @@ public:
   void     SetBendingCoorUncorrected(Double_t BendingCoor) {fBendingCoorUncorrected = BendingCoor;}
   Double_t GetNonBendingCoorUncorrected(void) const {return fNonBendingCoorUncorrected;}
   void     SetNonBendingCoorUncorrected(Double_t NonBendingCoor) {fNonBendingCoorUncorrected = NonBendingCoor;}
-  
+
+ // Get and Set methods for covariance matrix of data at first station
+  void     GetCovariances(TMatrixD& cov) const;
+  void     SetCovariances(const TMatrixD& cov);
+  void     GetCovarianceXYZPxPyPz(Double_t cov[21]) const;
+
  // Get and Set methods for global tracking info
   Double_t GetChi2(void) const {return fChi2;}
   void     SetChi2(Double_t Chi2) {fChi2 = Chi2;}
@@ -76,6 +83,12 @@ public:
   Int_t    LoLpt(void)    const  { return fLocalTrigger >> 22 & 0x03; }
   Int_t    LoHpt(void)    const  { return fLocalTrigger >> 24 & 0x03; }
   
+ // Get and Set methods for muon cluster map
+  UInt_t   GetMuonClusterMap() const {return fMuonClusterMap;}
+  void     SetMuonClusterMap(UInt_t muonClusterMap) {fMuonClusterMap = muonClusterMap;}
+  void     AddInMuonClusterMap(Int_t chamber);
+  Bool_t   IsInMuonClusterMap(Int_t chamber) const;
+  
  // Methods to compute track momentum
   Double_t Px() const;
   Double_t Py() const;
@@ -93,43 +106,49 @@ public:
   Double_t OneOverPt() const { return 1./Pt(); }
   Double_t Phi() const { return TMath::ATan2(Py(), Px()); }
   Double_t Theta() const { return TMath::ATan2(Pt(), Pz()); }
-  Double_t E() const { return -999.; }
-  Double_t M() const { return -999.; }
+  Double_t E() const { return TMath::Sqrt(M()*M() + P()*P()); }
+  Double_t M() const { return TDatabasePDG::Instance()->GetParticle("mu-")->Mass(); }
   Double_t Eta() const { return -TMath::Log(TMath::Tan(0.5 * Theta()));}
-  Double_t Y() const { return -999.; }
-  Short_t Charge() const { return (Short_t)TMath::Sign(1., GetInverseBendingMomentum()); }
+  Double_t Y() const { return TMath::ATanH(Pz()/E()); }
+  Short_t  Charge() const { return (Short_t)TMath::Sign(1., GetInverseBendingMomentum()); }
   const Double_t *PID() const { return (Double_t*)0x0; }
     
   
 protected:
  // parameters at vertex
-  Double32_t fInverseBendingMomentum; // Inverse bending momentum (GeV/c ** -1) times the charge 
-  Double32_t fThetaX;              // Angle of track at vertex in X direction (rad)
-  Double32_t fThetaY;              // Angle of track at vertex in Y direction (rad)
-  Double32_t fZ;                           // Z coordinate (cm)
-  Double32_t fBendingCoor;         // bending coordinate (cm)
-  Double32_t fNonBendingCoor;      // non bending coordinate (cm)
+  Double32_t fInverseBendingMomentum; ///< Inverse bending momentum (GeV/c ** -1) times the charge 
+  Double32_t fThetaX;                 ///< Angle of track at vertex in X direction (rad)
+  Double32_t fThetaY;                 ///< Angle of track at vertex in Y direction (rad)
+  Double32_t fZ;                      ///< Z coordinate (cm)
+  Double32_t fBendingCoor;            ///< bending coordinate (cm)
+  Double32_t fNonBendingCoor;         ///< non bending coordinate (cm)
   
  // parameters at first tracking station
-  Double32_t fInverseBendingMomentumUncorrected; // Inverse bending momentum (GeV/c ** -1) times the charge 
-  Double32_t fThetaXUncorrected;                      // Angle of track at vertex in X direction (rad)
-  Double32_t fThetaYUncorrected;                      // Angle of track at vertex in Y direction (rad)
-  Double32_t fZUncorrected;                   // Z coordinate (cm)
-  Double32_t fBendingCoorUncorrected;         // bending coordinate (cm)
-  Double32_t fNonBendingCoorUncorrected;              // non bending coordinate (cm)
+  Double32_t fInverseBendingMomentumUncorrected; ///< Inverse bending momentum (GeV/c ** -1) times the charge 
+  Double32_t fThetaXUncorrected;                 ///< Angle of track at vertex in X direction (rad)
+  Double32_t fThetaYUncorrected;                 ///< Angle of track at vertex in Y direction (rad)
+  Double32_t fZUncorrected;                      ///< Z coordinate (cm)
+  Double32_t fBendingCoorUncorrected;            ///< bending coordinate (cm)
+  Double32_t fNonBendingCoorUncorrected;         ///< non bending coordinate (cm)
   
- // global tracking info
-  Double32_t fChi2; // chi2 in the MUON track fit
-  UInt_t   fNHit; // number of hit in the track
-
-  Int_t fLocalTrigger;    ///< packed local trigger information
+ /// reduced covariance matrix of UNCORRECTED track parameters, ordered as follow:      <pre>
+ /// [0] =  <X,X>
+ /// [1] =<X,ThetaX>  [2] =<ThetaX,ThetaX>
+ /// [3] =  <X,Y>     [4] =  <Y,ThetaX>     [5] =  <Y,Y>
+ /// [6] =<X,ThetaY>  [7] =<ThetaX,ThetaY>  [8] =<Y,ThetaY>  [9] =<ThetaY,ThetaY>
+ /// [10]=<X,InvP_yz> [11]=<ThetaX,InvP_yz> [12]=<Y,InvP_yz> [13]=<ThetaY,InvP_yz> [14]=<InvP_yz,InvP_yz>  </pre>
+  Double32_t fCovariances[15]; ///< \brief reduced covariance matrix of parameters AT FIRST CHAMBER
   
-  Double32_t fChi2MatchTrigger; // chi2 of trigger/track matching
-  
-  UShort_t fHitsPatternInTrigCh; ///< Word containing info on the hits left in trigger chambers
+ // global tracking info
+  Double32_t fChi2;                ///< chi2 in the MUON track fit
+  UInt_t     fNHit;                ///< number of hit in the track
+  Int_t      fLocalTrigger;        ///< packed local trigger information
+  Double32_t fChi2MatchTrigger;    ///< chi2 of trigger/track matching
+  UShort_t   fHitsPatternInTrigCh; ///< Word containing info on the hits left in trigger chambers
+  UInt_t     fMuonClusterMap;      ///< Map of clusters in tracking chambers
 
 
-  ClassDef(AliESDMuonTrack,6)  //MUON ESD track class 
+  ClassDef(AliESDMuonTrack,7) // MUON ESD track class 
 };
 
 #endif