ROOT logo
#ifndef ALITPCTRACK_H
#define ALITPCTRACK_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
/* $Id$ */

//-------------------------------------------------------
//                    TPC Track Class
//
//   Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
//
// The track parameterization is fixed in the following way:                   
//      param0:   local Y-coordinate of a track (cm)                
//      param1:   local Z-coordinate of a track (cm)                
//      param2:   local sine of the track momentum azimuth angle    
//      param3:   tangent of the track momentum dip angle           
//      param4:   1/pt (1/(GeV/c))                                  
//
//-------------------------------------------------------

#include <AliKalmanTrack.h>
#include <TMath.h>

#include "AliTPCreco.h"
#include "AliExternalTrackParam.h"
class AliESDtrack;
class AliESDVertex;
class TTreeSRedirector;
//_____________________________________________________________________________
class AliTPCtrack : public AliKalmanTrack {
public:
  AliTPCtrack();
  AliTPCtrack(Double_t x, Double_t alpha, const Double_t p[5], 
              const Double_t cov[15], Int_t index); 
  AliTPCtrack(const AliESDtrack& t, TTreeSRedirector *pcstream=0);
  AliTPCtrack(const AliTPCtrack& t);
  AliTPCtrack& operator=(const AliTPCtrack& o);
  virtual ~AliTPCtrack() {}

  Int_t Compare(const TObject *o) const;

  void SetdEdx(Double_t dedx) {fdEdx=dedx;}
  Double_t GetdEdx()  const {return fdEdx;}
  Double_t GetPIDsignal()  const {return GetdEdx();}

  Int_t GetClusterIndex(Int_t i) const {return fIndex[i];}
  void  SetClusterIndex(Int_t i, Int_t idx) {fIndex[i]=idx;}

  Double_t GetC()           const {return AliExternalTrackParam::GetC(GetBz());}
  Double_t GetC(Double_t b) const {return AliExternalTrackParam::GetC(b);}

  Double_t GetPredictedChi2(const AliCluster *cluster) const;
  Bool_t PropagateTo(Double_t xr, Double_t rho=0.9e-3, Double_t x0=28.94);
  Bool_t Update(const AliCluster *c, Double_t chi2, Int_t i);
  Bool_t Rotate(Double_t alpha) {
    return AliExternalTrackParam::Rotate(GetAlpha()+alpha);
  }
  
  Bool_t PropagateToVertex(const AliESDVertex *v, 
                           Double_t rho=1.2e-3, Double_t x0=36.66);
  void ResetClusters() {SetNumberOfClusters(0); SetChi2(0.);}
  void UpdatePoints();//update points 
  Float_t* GetPoints() {return fPoints;}

  Float_t Density(Int_t row0, Int_t row1); //calculate cluster density
  Float_t Density2(Int_t row0, Int_t row1); //calculate cluster density
  Double_t GetD(Double_t x=0, Double_t y=0) const {
     return AliExternalTrackParam::GetD(x,y,GetBz());
  }
  AliExternalTrackParam & GetReference(){ return fReference;}
  void UpdateReference(){ new (&fReference) AliExternalTrackParam(*this);}
  Int_t   GetKinkIndex(Int_t i) const{ return fKinkIndexes[i];}
  Int_t*  GetKinkIndexes() { return fKinkIndexes;}
  Int_t   GetV0Index(Int_t i) const{ return fV0Indexes[i];}
  Int_t*  GetV0Indexes() { return fV0Indexes;}

  void SetFirstPoint(Int_t f) {fFirstPoint=f;}
  void SetLastPoint(Int_t f) {fLastPoint=f;}
  void SetRemoval(Int_t f) {fRemoval=f;}
  void SetLab2(Int_t f) {fLab2=f;}
  void SetKinkIndex(Int_t i, Int_t idx) {fKinkIndexes[i]=idx;}
  void SetBConstrain(Bool_t b) {fBConstrain=b;}
  void SetNFoundable(Int_t n) {fNFoundable=n;}
  void SetNShared(Int_t s) {fNShared=s;}

  Int_t GetFirstPoint() const {return fFirstPoint;}
  Int_t GetLastPoint() const {return fLastPoint;}
  Int_t GetRemoval() const {return fRemoval;}
  Int_t GetLab2() const {return fLab2;}
  Bool_t GetBConstrain() const {return fBConstrain;}
  Int_t GetNShared() const {return fNShared;}
  Int_t GetNFoundable() const {return fNFoundable;}

protected: 
  Double_t fdEdx;           // dE/dx

  Int_t fIndex[kMaxRow];       // indices of associated clusters 
  Float_t fPoints[4];            //first, max dens row  end points of the track and max density
  // MI addition
  Float_t fSdEdx;           // sigma of dedx 
  //
  Int_t   fNFoundable;      //number of foundable clusters - dead zone taken to the account
  Bool_t  fBConstrain;   // indicate seeding with vertex constrain
  Int_t   fLastPoint;     // last  cluster position     
  Int_t   fFirstPoint;    // first cluster position
  Int_t fRemoval;         // removal factor
  Int_t fTrackType;       // track type - 0 - normal - 1 - kink -  2 -V0  3- double found
  Int_t fLab2;            // index of corresponding track (kink, V0, double)
  Int_t   fNShared;       // number of shared points 
  AliExternalTrackParam   fReference; // track parameters at the middle of the chamber
  Float_t  fKinkPoint[12];      //radius, of kink,  dfi and dtheta
  Int_t    fKinkIndexes[3];     // kink indexes - minus = mother + daughter
  Int_t    fV0Indexes[3];     // kink indexes - minus = mother + daughter

  ClassDef(AliTPCtrack,4)   // Time Projection Chamber reconstructed tracks
};

#endif

 AliTPCtrack.h:1
 AliTPCtrack.h:2
 AliTPCtrack.h:3
 AliTPCtrack.h:4
 AliTPCtrack.h:5
 AliTPCtrack.h:6
 AliTPCtrack.h:7
 AliTPCtrack.h:8
 AliTPCtrack.h:9
 AliTPCtrack.h:10
 AliTPCtrack.h:11
 AliTPCtrack.h:12
 AliTPCtrack.h:13
 AliTPCtrack.h:14
 AliTPCtrack.h:15
 AliTPCtrack.h:16
 AliTPCtrack.h:17
 AliTPCtrack.h:18
 AliTPCtrack.h:19
 AliTPCtrack.h:20
 AliTPCtrack.h:21
 AliTPCtrack.h:22
 AliTPCtrack.h:23
 AliTPCtrack.h:24
 AliTPCtrack.h:25
 AliTPCtrack.h:26
 AliTPCtrack.h:27
 AliTPCtrack.h:28
 AliTPCtrack.h:29
 AliTPCtrack.h:30
 AliTPCtrack.h:31
 AliTPCtrack.h:32
 AliTPCtrack.h:33
 AliTPCtrack.h:34
 AliTPCtrack.h:35
 AliTPCtrack.h:36
 AliTPCtrack.h:37
 AliTPCtrack.h:38
 AliTPCtrack.h:39
 AliTPCtrack.h:40
 AliTPCtrack.h:41
 AliTPCtrack.h:42
 AliTPCtrack.h:43
 AliTPCtrack.h:44
 AliTPCtrack.h:45
 AliTPCtrack.h:46
 AliTPCtrack.h:47
 AliTPCtrack.h:48
 AliTPCtrack.h:49
 AliTPCtrack.h:50
 AliTPCtrack.h:51
 AliTPCtrack.h:52
 AliTPCtrack.h:53
 AliTPCtrack.h:54
 AliTPCtrack.h:55
 AliTPCtrack.h:56
 AliTPCtrack.h:57
 AliTPCtrack.h:58
 AliTPCtrack.h:59
 AliTPCtrack.h:60
 AliTPCtrack.h:61
 AliTPCtrack.h:62
 AliTPCtrack.h:63
 AliTPCtrack.h:64
 AliTPCtrack.h:65
 AliTPCtrack.h:66
 AliTPCtrack.h:67
 AliTPCtrack.h:68
 AliTPCtrack.h:69
 AliTPCtrack.h:70
 AliTPCtrack.h:71
 AliTPCtrack.h:72
 AliTPCtrack.h:73
 AliTPCtrack.h:74
 AliTPCtrack.h:75
 AliTPCtrack.h:76
 AliTPCtrack.h:77
 AliTPCtrack.h:78
 AliTPCtrack.h:79
 AliTPCtrack.h:80
 AliTPCtrack.h:81
 AliTPCtrack.h:82
 AliTPCtrack.h:83
 AliTPCtrack.h:84
 AliTPCtrack.h:85
 AliTPCtrack.h:86
 AliTPCtrack.h:87
 AliTPCtrack.h:88
 AliTPCtrack.h:89
 AliTPCtrack.h:90
 AliTPCtrack.h:91
 AliTPCtrack.h:92
 AliTPCtrack.h:93
 AliTPCtrack.h:94
 AliTPCtrack.h:95
 AliTPCtrack.h:96
 AliTPCtrack.h:97
 AliTPCtrack.h:98
 AliTPCtrack.h:99
 AliTPCtrack.h:100
 AliTPCtrack.h:101
 AliTPCtrack.h:102
 AliTPCtrack.h:103
 AliTPCtrack.h:104
 AliTPCtrack.h:105
 AliTPCtrack.h:106
 AliTPCtrack.h:107
 AliTPCtrack.h:108
 AliTPCtrack.h:109
 AliTPCtrack.h:110
 AliTPCtrack.h:111
 AliTPCtrack.h:112
 AliTPCtrack.h:113
 AliTPCtrack.h:114
 AliTPCtrack.h:115
 AliTPCtrack.h:116
 AliTPCtrack.h:117
 AliTPCtrack.h:118
 AliTPCtrack.h:119