ROOT logo
#ifndef ALIESDMUONTRACK_H
#define ALIESDMUONTRACK_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

/* $Id$ */

/// \class AliESDMuonTrack
/// \brief Class to describe the MUON tracks in the Event Summary Data class
//  Author: G.Martinez


#include <TMath.h>
#include <TMatrixD.h>
#include <TDatabasePDG.h>
#include <TArrayI.h>

#include "AliVParticle.h"

class AliESDEvent;
class TClonesArray;
class TLorentzVector;

class AliESDMuonTrack : public AliVParticle {
public:
  AliESDMuonTrack(); //Constructor
  virtual ~AliESDMuonTrack(); // Destructor
  AliESDMuonTrack(const AliESDMuonTrack& esdm);
  AliESDMuonTrack& operator=(const AliESDMuonTrack& esdm);
  virtual void Copy(TObject &obj) const;

  virtual void Clear(Option_t* opt = "");
  
  void Reset();
  
  // Return kTRUE if the track contain tracker data
  Bool_t ContainTrackerData() const {return (fMuonClusterMap>0) ? kTRUE : kFALSE;}
  // Return kTRUE if the track contain trigger data
  Bool_t ContainTriggerData() const {return (LoCircuit()>0) ? kTRUE : kFALSE;}
  
  // Get and Set methods for data at vertex
  Double_t GetInverseBendingMomentum(void) const {return fInverseBendingMomentum;}
  void     SetInverseBendingMomentum(Double_t InverseBendingMomentum) 
		{fInverseBendingMomentum = InverseBendingMomentum;}
  Double_t GetThetaX(void) const {return fThetaX;}
  void     SetThetaX(Double_t ThetaX) {fThetaX = ThetaX;}
  Double_t GetThetaY(void) const {return fThetaY;}
  void     SetThetaY(Double_t ThetaY) {fThetaY = ThetaY;}
  Double_t GetZ(void) const {return fZ;}
  void     SetZ(Double_t Z) {fZ = Z;}
  Double_t GetBendingCoor(void) const {return fBendingCoor;}
  void     SetBendingCoor(Double_t BendingCoor) {fBendingCoor = BendingCoor;}
  Double_t GetNonBendingCoor(void) const {return fNonBendingCoor;}
  void     SetNonBendingCoor(Double_t NonBendingCoor) {fNonBendingCoor = NonBendingCoor;}
  
  // Get and Set methods for data at Distance of Closest Approach in the vertex plane
  Double_t GetInverseBendingMomentumAtDCA(void) const {return fInverseBendingMomentumAtDCA;}
  void     SetInverseBendingMomentumAtDCA(Double_t InverseBendingMomentum) 
		{fInverseBendingMomentumAtDCA = InverseBendingMomentum;}
  Double_t GetThetaXAtDCA(void) const {return fThetaXAtDCA;}
  void     SetThetaXAtDCA(Double_t ThetaX) {fThetaXAtDCA = ThetaX;}
  Double_t GetThetaYAtDCA(void) const {return fThetaYAtDCA;}
  void     SetThetaYAtDCA(Double_t ThetaY) {fThetaYAtDCA = ThetaY;}
  Double_t GetBendingCoorAtDCA(void) const {return fBendingCoorAtDCA;}
  void     SetBendingCoorAtDCA(Double_t BendingCoor) {fBendingCoorAtDCA = BendingCoor;}
  Double_t GetNonBendingCoorAtDCA(void) const {return fNonBendingCoorAtDCA;}
  void     SetNonBendingCoorAtDCA(Double_t NonBendingCoor) {fNonBendingCoorAtDCA = NonBendingCoor;}
  Double_t GetDCA(void) const {return TMath::Sqrt(fNonBendingCoorAtDCA*fNonBendingCoorAtDCA +
						  fBendingCoorAtDCA*fBendingCoorAtDCA);}
  
  // Get and Set methods for data at first station
  Double_t GetInverseBendingMomentumUncorrected(void) const {return fInverseBendingMomentumUncorrected;}
  void     SetInverseBendingMomentumUncorrected(Double_t InverseBendingMomentum) 
		{fInverseBendingMomentumUncorrected = InverseBendingMomentum;}
  Double_t GetThetaXUncorrected(void) const {return fThetaXUncorrected;}
  void     SetThetaXUncorrected(Double_t ThetaX) {fThetaXUncorrected = ThetaX;}
  Double_t GetThetaYUncorrected(void) const {return fThetaYUncorrected;}
  void     SetThetaYUncorrected(Double_t ThetaY) {fThetaYUncorrected = ThetaY;}
  Double_t GetZUncorrected(void) const {return fZUncorrected;}
  void     SetZUncorrected(Double_t Z) {fZUncorrected = Z;}
  Double_t GetBendingCoorUncorrected(void) const {return fBendingCoorUncorrected;}
  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 the transverse position r of the track at the end of the absorber
  Double_t GetRAtAbsorberEnd() const { return fRAtAbsorberEnd; }
  void     SetRAtAbsorberEnd(Double_t r) { fRAtAbsorberEnd = r; }
  
  // Get and Set methods for global tracking info
  Double_t GetChi2(void) const {return fChi2;}
  void     SetChi2(Double_t Chi2) {fChi2 = Chi2;}
  UChar_t  GetNHit(void) const {return fNHit;}
  Int_t    GetNDF() const;
  Double_t GetNormalizedChi2() const;
  
  // Get and Set methods for trigger matching
  Int_t    GetMatchTrigger() const;
  Bool_t   MatchTriggerDigits(Bool_t fromTrack) const;
  Double_t GetChi2MatchTrigger() const {return fChi2MatchTrigger;}
  void     SetChi2MatchTrigger(Double_t Chi2MatchTrigger) {fChi2MatchTrigger = Chi2MatchTrigger;}
  UShort_t GetHitsPatternInTrigCh() const {return fHitsPatternInTrigCh;}
  void     SetHitsPatternInTrigCh(UShort_t hitsPatternInTrigCh) {fHitsPatternInTrigCh = hitsPatternInTrigCh;}
  UInt_t   GetHitsPatternInTrigChTrk() const {return fHitsPatternInTrigChTrk;}
  void     SetHitsPatternInTrigChTrk(UInt_t hitsPatternInTrigChTrk) {fHitsPatternInTrigChTrk = hitsPatternInTrigChTrk;}
  void     SetLocalTrigger(Int_t locTrig) { fLocalTrigger = locTrig; }
  Int_t    LoCircuit(void) const { return fLocalTrigger & 0xFF;       }
  Int_t    LoStripX(void) const  { return fLocalTrigger >>  8 & 0x1F; }
  Int_t    LoStripY(void) const  { return fLocalTrigger >> 13 & 0x0F; }
  Int_t    LoDev(void)    const  { return fLocalTrigger >> 17 & 0x1F; }
  Int_t    LoLpt(void)    const  { return fLocalTrigger >> 22 & 0x03; }
  Int_t    LoHpt(void)    const  { return fLocalTrigger >> 24 & 0x03; }
  Int_t    GetTriggerWithoutChamber(void) const { return fLocalTrigger >> 26 & 0xF; }
  Bool_t TriggerFiredWithoutChamber(Int_t ich) const { return GetTriggerWithoutChamber() >> (3 - ich) & 0x1; }
  Int_t GetMuonTrigDevSign() const;

  // Get and Set methods for the hit strips pattern in the trigger chambers
  UShort_t GetTriggerX1Pattern() const { return fX1Pattern; }
  UShort_t GetTriggerY1Pattern() const { return fY1Pattern; }
  UShort_t GetTriggerX2Pattern() const { return fX2Pattern; }
  UShort_t GetTriggerY2Pattern() const { return fY2Pattern; }
  UShort_t GetTriggerX3Pattern() const { return fX3Pattern; }
  UShort_t GetTriggerY3Pattern() const { return fY3Pattern; }
  UShort_t GetTriggerX4Pattern() const { return fX4Pattern; }
  UShort_t GetTriggerY4Pattern() const { return fY4Pattern; }
  void     SetTriggerX1Pattern(UShort_t pat) { fX1Pattern = pat; }
  void     SetTriggerY1Pattern(UShort_t pat) { fY1Pattern = pat; }
  void     SetTriggerX2Pattern(UShort_t pat) { fX2Pattern = pat; }
  void     SetTriggerY2Pattern(UShort_t pat) { fY2Pattern = pat; }
  void     SetTriggerX3Pattern(UShort_t pat) { fX3Pattern = pat; }
  void     SetTriggerY3Pattern(UShort_t pat) { fY3Pattern = pat; }
  void     SetTriggerX4Pattern(UShort_t pat) { fX4Pattern = pat; }
  void     SetTriggerY4Pattern(UShort_t pat) { fY4Pattern = pat; }

  // 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) {fMuonClusterMap |= BIT(chamber);}
  Bool_t   IsInMuonClusterMap(Int_t chamber) const {return (Bool_t) ((fMuonClusterMap & BIT(chamber)) != 0);}
  
  // Identify the tracks sharing cluster(s) with another (use the last bit of fMuonClusterMap)
  void     Connected(Bool_t flag = kTRUE) {flag ? SETBIT(fMuonClusterMap,31) : CLRBIT(fMuonClusterMap,31);}
  Bool_t   IsConnected() const {return TESTBIT(fMuonClusterMap,31);}
  
  // Methods to fill and get the Id of associated clusters
  void     AddClusterId(UInt_t clusterId);
  Int_t    GetNClusters() const {return static_cast<Int_t>(fNHit);}
  UInt_t   GetClusterId(Int_t i) const {return (fClustersId && i >= 0 && i < fNHit) ? static_cast<UInt_t>(fClustersId->At(i)) : 0;}
  
  // Method to transfer clusters to the new ESD structure
  Bool_t   IsOldTrack() {return (fClusters);}
  void     MoveClustersToESD(AliESDEvent &esd);
  
  // Methods to compute track momentum
  Double_t Px() const;
  Double_t Py() const;
  Double_t Pz() const;
  Double_t P() const;
  Bool_t   PxPyPz(Double_t p[3]) const { p[0] = Px(); p[1] = Py(); p[2] = Pz(); return kTRUE; }
  void     LorentzP(TLorentzVector& vP) const;
  Double_t PxAtDCA() const;
  Double_t PyAtDCA() const;
  Double_t PzAtDCA() const;
  Double_t PAtDCA() const;
  Bool_t   PxPyPzAtDCA(Double_t p[3]) const { p[0] = Px(); p[1] = Py(); p[2] = Pz(); return kTRUE; }
  void     LorentzPAtDCA(TLorentzVector& vP) const;
  Double_t PxUncorrected() const;
  Double_t PyUncorrected() const;
  Double_t PzUncorrected() const;
  Double_t PUncorrected() const;
  Bool_t   PxPyPzUncorrected(Double_t p[3]) const { p[0] = Px(); p[1] = Py(); p[2] = Pz(); return kTRUE; }
  void     LorentzPUncorrected(TLorentzVector& vP) const;
  
  // additional methods to comply with AliVParticle
  Double_t Xv() const {return -999.;} // put reasonable values here
  Double_t Yv() const {return -999.;} //
  Double_t Zv() const {return -999.;} //
  Bool_t   XvYvZv(Double_t x[3]) const { x[0] = Xv(); x[1] = Yv(); x[2] = Zv(); return kTRUE; }  
  Double_t Pt() const { return TMath::Sqrt(Px()*Px() + Py()*Py()); }
  Double_t OneOverPt() const { return (Pt() != 0.) ? 1./Pt() : FLT_MAX; }
  Double_t Phi() const { return TMath::Pi()+TMath::ATan2(-Py(), -Px()); }
  Double_t Theta() const { return TMath::ATan2(Pt(), Pz()); }
  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 (Pz()/E() != 1.) ? TMath::ATanH(Pz()/E()) : FLT_MAX; }
  Short_t  Charge() const { return (Short_t)TMath::Sign(1., GetInverseBendingMomentum()); }


  // Dummy
  const Double_t *PID() const { return (Double_t*)0x0; }
  Int_t    PdgCode() const {return 0;}
  
  /// Set the corresponding MC track number
  void  SetLabel(Int_t label) {fLabel = label;}
  /// Return the corresponding MC track number
  Int_t GetLabel() const {return fLabel;}

  /// Additional methods to decode hit pattern
  /// The hit pattern is a UShort_t with:
  /// <pre>
  ///   0    |   1 0 0 0 1  |  1 1  |   1  1  0  1  |   1  1  0  1   
  ///        |              |       |               | 
  /// unused |  RPC (0-17)  |  flag |  Bend plane   | Non-bend plane
  ///        |      or      |       | Match chamber | Match chamber
  ///        | further info |       |  11 12 13 14  |  11 12 13 14
  ///        |    (20-24)   |       |               |
  /// </pre>
  enum EAliTriggerChPatternFlag {
    kNoEff,    ///< Track is not good for chamber efficiency evaluation
    kChEff,    ///< Track crosses different RPCs
    kSlatEff,  ///< Track crosses the same RPC in all planes
    kBoardEff  ///< Track crosses the same board in all planes
  };
  enum EAliTriggerChPatternInfo {
    kCrossDifferentSlats  = 20, ///< The RPC cannot be univoquely determined
    kTrackMatchesManyPads = 21, ///< Track not good for effciency calculation since it matches many pads
    kTrackMatchesFewPads  = 22, ///< Track not good for effciency calculation since it matches pads in less than 3/4 chambers
    kTrackOutsideGeometry = 23, ///< Problems in pattern determination since track extrapolation is outside trigger chambers
    kTrackerTrackPattern  = 24, ///< The pattern was calculated from a tracker track not matching trigger track
    kTrackMatchesMasks    = 25  ///< Track not good for effciency calculation since it matches masked pads
  };
  /// Set hits pattern
  static void SetFiredChamber(UInt_t& pattern, Int_t cathode, Int_t chamber);
  /// Add efficiency flag and crossed RPC or info on rejected track
  static void AddEffInfo(UInt_t& pattern, Int_t slatOrInfo, Int_t board = 0, EAliTriggerChPatternFlag effType = kNoEff);
  /// Chamber was hit
  static Bool_t IsChamberHit(UInt_t pattern, Int_t cathode, Int_t chamber);
  /// Get Efficiency flag
  static Int_t GetEffFlag(UInt_t pattern);
  /// Getting crossed slat or info
  static Int_t GetSlatOrInfo(UInt_t pattern);
  /// Getting crossed board
  static Int_t GetCrossedBoard(UInt_t pattern);

  void AddMuonTrigDevSignInfo(UInt_t& pattern) const;

  AliESDEvent* GetESDEvent() const {return fESDEvent;}
  void         SetESDEvent(AliESDEvent* evt) {fESDEvent = evt;}  
  
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)
  
  // parameters at Distance of Closest Approach in the vertex plane
  Double32_t fInverseBendingMomentumAtDCA; ///< Inverse bending momentum (GeV/c ** -1) times the charge 
  Double32_t fThetaXAtDCA;                 ///< Angle of track at vertex in X direction (rad)
  Double32_t fThetaYAtDCA;                 ///< Angle of track at vertex in Y direction (rad)
  Double32_t fBendingCoorAtDCA;            ///< bending coordinate (cm)
  Double32_t fNonBendingCoorAtDCA;         ///< 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)
  
  /// 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 fRAtAbsorberEnd; ///< transverse position r of the track at the end of the absorber
  
  // global tracking info
  Double32_t fChi2;                ///< chi2 in the MUON track fit
  Double32_t fChi2MatchTrigger;    ///< chi2 of trigger/track matching
  Int_t      fLocalTrigger;        ///< packed local trigger information

  // hit strips pattern in the trigger chambers
  UShort_t fX1Pattern;             ///< x-strips pattern in st6/ch1
  UShort_t fY1Pattern;             ///< y-strips pattern in st6/ch1
  UShort_t fX2Pattern;             ///< x-strips pattern in st6/ch2
  UShort_t fY2Pattern;             ///< y-strips pattern in st6/ch2
  UShort_t fX3Pattern;             ///< x-strips pattern in st7/ch1
  UShort_t fY3Pattern;             ///< y-strips pattern in st7/ch1
  UShort_t fX4Pattern;             ///< x-strips pattern in st7/ch2
  UShort_t fY4Pattern;             ///< y-strips pattern in st7/ch2
  
  UInt_t   fMuonClusterMap;        ///< Map of clusters in tracking chambers
  UShort_t fHitsPatternInTrigCh;   ///< Word containing info on the hits left in trigger chambers
  UInt_t  fHitsPatternInTrigChTrk; ///< Trigger hit map from tracker track extrapolation
  UChar_t  fNHit;                  ///< number of clusters attached to the track
  
  mutable TClonesArray* fClusters; ///< Array of clusters attached to the track -- deprecated
  
  TArrayI* fClustersId;            ///< Array of clusters'Id attached to the track
  
  Int_t fLabel;                    ///< point to the corresponding MC track

  AliESDEvent*   fESDEvent; //!Pointer back to event to which the track belongs
  
  ClassDef(AliESDMuonTrack,15) // MUON ESD track class 
};

#endif 
 AliESDMuonTrack.h:1
 AliESDMuonTrack.h:2
 AliESDMuonTrack.h:3
 AliESDMuonTrack.h:4
 AliESDMuonTrack.h:5
 AliESDMuonTrack.h:6
 AliESDMuonTrack.h:7
 AliESDMuonTrack.h:8
 AliESDMuonTrack.h:9
 AliESDMuonTrack.h:10
 AliESDMuonTrack.h:11
 AliESDMuonTrack.h:12
 AliESDMuonTrack.h:13
 AliESDMuonTrack.h:14
 AliESDMuonTrack.h:15
 AliESDMuonTrack.h:16
 AliESDMuonTrack.h:17
 AliESDMuonTrack.h:18
 AliESDMuonTrack.h:19
 AliESDMuonTrack.h:20
 AliESDMuonTrack.h:21
 AliESDMuonTrack.h:22
 AliESDMuonTrack.h:23
 AliESDMuonTrack.h:24
 AliESDMuonTrack.h:25
 AliESDMuonTrack.h:26
 AliESDMuonTrack.h:27
 AliESDMuonTrack.h:28
 AliESDMuonTrack.h:29
 AliESDMuonTrack.h:30
 AliESDMuonTrack.h:31
 AliESDMuonTrack.h:32
 AliESDMuonTrack.h:33
 AliESDMuonTrack.h:34
 AliESDMuonTrack.h:35
 AliESDMuonTrack.h:36
 AliESDMuonTrack.h:37
 AliESDMuonTrack.h:38
 AliESDMuonTrack.h:39
 AliESDMuonTrack.h:40
 AliESDMuonTrack.h:41
 AliESDMuonTrack.h:42
 AliESDMuonTrack.h:43
 AliESDMuonTrack.h:44
 AliESDMuonTrack.h:45
 AliESDMuonTrack.h:46
 AliESDMuonTrack.h:47
 AliESDMuonTrack.h:48
 AliESDMuonTrack.h:49
 AliESDMuonTrack.h:50
 AliESDMuonTrack.h:51
 AliESDMuonTrack.h:52
 AliESDMuonTrack.h:53
 AliESDMuonTrack.h:54
 AliESDMuonTrack.h:55
 AliESDMuonTrack.h:56
 AliESDMuonTrack.h:57
 AliESDMuonTrack.h:58
 AliESDMuonTrack.h:59
 AliESDMuonTrack.h:60
 AliESDMuonTrack.h:61
 AliESDMuonTrack.h:62
 AliESDMuonTrack.h:63
 AliESDMuonTrack.h:64
 AliESDMuonTrack.h:65
 AliESDMuonTrack.h:66
 AliESDMuonTrack.h:67
 AliESDMuonTrack.h:68
 AliESDMuonTrack.h:69
 AliESDMuonTrack.h:70
 AliESDMuonTrack.h:71
 AliESDMuonTrack.h:72
 AliESDMuonTrack.h:73
 AliESDMuonTrack.h:74
 AliESDMuonTrack.h:75
 AliESDMuonTrack.h:76
 AliESDMuonTrack.h:77
 AliESDMuonTrack.h:78
 AliESDMuonTrack.h:79
 AliESDMuonTrack.h:80
 AliESDMuonTrack.h:81
 AliESDMuonTrack.h:82
 AliESDMuonTrack.h:83
 AliESDMuonTrack.h:84
 AliESDMuonTrack.h:85
 AliESDMuonTrack.h:86
 AliESDMuonTrack.h:87
 AliESDMuonTrack.h:88
 AliESDMuonTrack.h:89
 AliESDMuonTrack.h:90
 AliESDMuonTrack.h:91
 AliESDMuonTrack.h:92
 AliESDMuonTrack.h:93
 AliESDMuonTrack.h:94
 AliESDMuonTrack.h:95
 AliESDMuonTrack.h:96
 AliESDMuonTrack.h:97
 AliESDMuonTrack.h:98
 AliESDMuonTrack.h:99
 AliESDMuonTrack.h:100
 AliESDMuonTrack.h:101
 AliESDMuonTrack.h:102
 AliESDMuonTrack.h:103
 AliESDMuonTrack.h:104
 AliESDMuonTrack.h:105
 AliESDMuonTrack.h:106
 AliESDMuonTrack.h:107
 AliESDMuonTrack.h:108
 AliESDMuonTrack.h:109
 AliESDMuonTrack.h:110
 AliESDMuonTrack.h:111
 AliESDMuonTrack.h:112
 AliESDMuonTrack.h:113
 AliESDMuonTrack.h:114
 AliESDMuonTrack.h:115
 AliESDMuonTrack.h:116
 AliESDMuonTrack.h:117
 AliESDMuonTrack.h:118
 AliESDMuonTrack.h:119
 AliESDMuonTrack.h:120
 AliESDMuonTrack.h:121
 AliESDMuonTrack.h:122
 AliESDMuonTrack.h:123
 AliESDMuonTrack.h:124
 AliESDMuonTrack.h:125
 AliESDMuonTrack.h:126
 AliESDMuonTrack.h:127
 AliESDMuonTrack.h:128
 AliESDMuonTrack.h:129
 AliESDMuonTrack.h:130
 AliESDMuonTrack.h:131
 AliESDMuonTrack.h:132
 AliESDMuonTrack.h:133
 AliESDMuonTrack.h:134
 AliESDMuonTrack.h:135
 AliESDMuonTrack.h:136
 AliESDMuonTrack.h:137
 AliESDMuonTrack.h:138
 AliESDMuonTrack.h:139
 AliESDMuonTrack.h:140
 AliESDMuonTrack.h:141
 AliESDMuonTrack.h:142
 AliESDMuonTrack.h:143
 AliESDMuonTrack.h:144
 AliESDMuonTrack.h:145
 AliESDMuonTrack.h:146
 AliESDMuonTrack.h:147
 AliESDMuonTrack.h:148
 AliESDMuonTrack.h:149
 AliESDMuonTrack.h:150
 AliESDMuonTrack.h:151
 AliESDMuonTrack.h:152
 AliESDMuonTrack.h:153
 AliESDMuonTrack.h:154
 AliESDMuonTrack.h:155
 AliESDMuonTrack.h:156
 AliESDMuonTrack.h:157
 AliESDMuonTrack.h:158
 AliESDMuonTrack.h:159
 AliESDMuonTrack.h:160
 AliESDMuonTrack.h:161
 AliESDMuonTrack.h:162
 AliESDMuonTrack.h:163
 AliESDMuonTrack.h:164
 AliESDMuonTrack.h:165
 AliESDMuonTrack.h:166
 AliESDMuonTrack.h:167
 AliESDMuonTrack.h:168
 AliESDMuonTrack.h:169
 AliESDMuonTrack.h:170
 AliESDMuonTrack.h:171
 AliESDMuonTrack.h:172
 AliESDMuonTrack.h:173
 AliESDMuonTrack.h:174
 AliESDMuonTrack.h:175
 AliESDMuonTrack.h:176
 AliESDMuonTrack.h:177
 AliESDMuonTrack.h:178
 AliESDMuonTrack.h:179
 AliESDMuonTrack.h:180
 AliESDMuonTrack.h:181
 AliESDMuonTrack.h:182
 AliESDMuonTrack.h:183
 AliESDMuonTrack.h:184
 AliESDMuonTrack.h:185
 AliESDMuonTrack.h:186
 AliESDMuonTrack.h:187
 AliESDMuonTrack.h:188
 AliESDMuonTrack.h:189
 AliESDMuonTrack.h:190
 AliESDMuonTrack.h:191
 AliESDMuonTrack.h:192
 AliESDMuonTrack.h:193
 AliESDMuonTrack.h:194
 AliESDMuonTrack.h:195
 AliESDMuonTrack.h:196
 AliESDMuonTrack.h:197
 AliESDMuonTrack.h:198
 AliESDMuonTrack.h:199
 AliESDMuonTrack.h:200
 AliESDMuonTrack.h:201
 AliESDMuonTrack.h:202
 AliESDMuonTrack.h:203
 AliESDMuonTrack.h:204
 AliESDMuonTrack.h:205
 AliESDMuonTrack.h:206
 AliESDMuonTrack.h:207
 AliESDMuonTrack.h:208
 AliESDMuonTrack.h:209
 AliESDMuonTrack.h:210
 AliESDMuonTrack.h:211
 AliESDMuonTrack.h:212
 AliESDMuonTrack.h:213
 AliESDMuonTrack.h:214
 AliESDMuonTrack.h:215
 AliESDMuonTrack.h:216
 AliESDMuonTrack.h:217
 AliESDMuonTrack.h:218
 AliESDMuonTrack.h:219
 AliESDMuonTrack.h:220
 AliESDMuonTrack.h:221
 AliESDMuonTrack.h:222
 AliESDMuonTrack.h:223
 AliESDMuonTrack.h:224
 AliESDMuonTrack.h:225
 AliESDMuonTrack.h:226
 AliESDMuonTrack.h:227
 AliESDMuonTrack.h:228
 AliESDMuonTrack.h:229
 AliESDMuonTrack.h:230
 AliESDMuonTrack.h:231
 AliESDMuonTrack.h:232
 AliESDMuonTrack.h:233
 AliESDMuonTrack.h:234
 AliESDMuonTrack.h:235
 AliESDMuonTrack.h:236
 AliESDMuonTrack.h:237
 AliESDMuonTrack.h:238
 AliESDMuonTrack.h:239
 AliESDMuonTrack.h:240
 AliESDMuonTrack.h:241
 AliESDMuonTrack.h:242
 AliESDMuonTrack.h:243
 AliESDMuonTrack.h:244
 AliESDMuonTrack.h:245
 AliESDMuonTrack.h:246
 AliESDMuonTrack.h:247
 AliESDMuonTrack.h:248
 AliESDMuonTrack.h:249
 AliESDMuonTrack.h:250
 AliESDMuonTrack.h:251
 AliESDMuonTrack.h:252
 AliESDMuonTrack.h:253
 AliESDMuonTrack.h:254
 AliESDMuonTrack.h:255
 AliESDMuonTrack.h:256
 AliESDMuonTrack.h:257
 AliESDMuonTrack.h:258
 AliESDMuonTrack.h:259
 AliESDMuonTrack.h:260
 AliESDMuonTrack.h:261
 AliESDMuonTrack.h:262
 AliESDMuonTrack.h:263
 AliESDMuonTrack.h:264
 AliESDMuonTrack.h:265
 AliESDMuonTrack.h:266
 AliESDMuonTrack.h:267
 AliESDMuonTrack.h:268
 AliESDMuonTrack.h:269
 AliESDMuonTrack.h:270
 AliESDMuonTrack.h:271
 AliESDMuonTrack.h:272
 AliESDMuonTrack.h:273
 AliESDMuonTrack.h:274
 AliESDMuonTrack.h:275
 AliESDMuonTrack.h:276
 AliESDMuonTrack.h:277
 AliESDMuonTrack.h:278
 AliESDMuonTrack.h:279
 AliESDMuonTrack.h:280
 AliESDMuonTrack.h:281
 AliESDMuonTrack.h:282
 AliESDMuonTrack.h:283
 AliESDMuonTrack.h:284
 AliESDMuonTrack.h:285
 AliESDMuonTrack.h:286
 AliESDMuonTrack.h:287
 AliESDMuonTrack.h:288
 AliESDMuonTrack.h:289
 AliESDMuonTrack.h:290
 AliESDMuonTrack.h:291
 AliESDMuonTrack.h:292
 AliESDMuonTrack.h:293
 AliESDMuonTrack.h:294
 AliESDMuonTrack.h:295
 AliESDMuonTrack.h:296
 AliESDMuonTrack.h:297
 AliESDMuonTrack.h:298
 AliESDMuonTrack.h:299
 AliESDMuonTrack.h:300
 AliESDMuonTrack.h:301
 AliESDMuonTrack.h:302
 AliESDMuonTrack.h:303
 AliESDMuonTrack.h:304
 AliESDMuonTrack.h:305
 AliESDMuonTrack.h:306
 AliESDMuonTrack.h:307
 AliESDMuonTrack.h:308
 AliESDMuonTrack.h:309
 AliESDMuonTrack.h:310
 AliESDMuonTrack.h:311
 AliESDMuonTrack.h:312