ROOT logo
#ifndef ALIKALMANTRACK_H
#define ALIKALMANTRACK_H

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

/* $Id$ */

//-------------------------------------------------------------------------
//                          Class AliKalmanTrack
//      fixed the interface for the derived reconstructed track classes 
//            Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
//-------------------------------------------------------------------------

#include "AliExternalTrackParam.h"
#include "AliLog.h"
#include "AliPID.h"

class AliCluster;

class AliKalmanTrack : public AliExternalTrackParam {
public:
  AliKalmanTrack();
  AliKalmanTrack(const AliKalmanTrack &t);
  virtual ~AliKalmanTrack(){};
  AliKalmanTrack& operator=(const AliKalmanTrack &o);
  void SetLabel(Int_t lab) {fLab=lab;}

  virtual Double_t GetPredictedChi2(const AliCluster *c) const = 0;
  virtual Bool_t PropagateTo(Double_t xr, Double_t x0, Double_t rho) = 0;
  virtual Bool_t Update(const AliCluster* c, Double_t chi2, Int_t index) = 0;

  Bool_t   IsSortable() const {return kTRUE;}
  Int_t    GetLabel()   const {return fLab;}
  Double_t GetChi2()    const {return fChi2;}
  Double_t GetMass()    const {return fMass;}
  Int_t    GetNumberOfClusters() const {return fN;}
  virtual Int_t GetClusterIndex(Int_t) const { //reserved for AliTracker
    AliWarning("Method must be overloaded !\n");
    return 0;
  } 
  virtual Int_t GetNumberOfTracklets() const {
    AliWarning("Method must be overloaded !");
    return 0;
  }
  virtual Int_t GetTrackletIndex(Int_t) const { //reserved for AliTracker
    AliWarning("Method must be overloaded !");
    return -1;
  } 
  virtual Double_t GetPIDsignal() const {
    AliWarning("Method must be overloaded !\n");
    return 0.;
  }

  virtual Int_t Compare(const TObject *) const {return 0;} 

  void GetExternalParameters(Double_t &xr,Double_t p[5]) const {
    xr=GetX();
    for (Int_t i=0; i<5; i++) p[i]=GetParameter()[i];
  }
  void GetExternalCovariance(Double_t cov[15]) const {
    for (Int_t i=0; i<15; i++) cov[i]=GetCovariance()[i];
  }

  // Time integration (S.Radomski@gsi.de)
  void StartTimeIntegral();
  void SetIntegratedLength(Double_t l) {fIntegratedLength=l;}
  void SetIntegratedTimes(const Double_t *times);

  virtual Bool_t IsStartedTimeIntegral() const {return fStartTimeIntegral;}
  virtual void AddTimeStep(Double_t length);
  void GetIntegratedTimes(Double_t *times, Int_t nspec=AliPID::kSPECIESC) const;
  Double_t GetIntegratedTime(Int_t pdg) const;
  Double_t GetIntegratedLength() const {return fIntegratedLength;}

  void SetNumberOfClusters(Int_t n) {fN=n;} 

  void SetFakeRatio(Float_t ratio) {fFakeRatio=ratio;}
  Float_t  GetFakeRatio()   const {return fFakeRatio;}
  void SetMass(Double_t mass) {fMass=mass;}
  void SetChi2(Double_t chi2) {fChi2=chi2;} 

protected:

  Double32_t fFakeRatio;  // fake ratio
  Double32_t fChi2;       // total chi2 value for this track
  Double32_t fMass;       // mass hypothesis
  Int_t fLab;             // track label
  Int_t fN;               // number of associated clusters

private:
  Bool_t  fStartTimeIntegral;       // indicator wether integrate time
  // variables for time integration (S.Radomski@gsi.de)
  Double32_t fIntegratedTime[AliPID::kSPECIESC];       // integrated time
  Double32_t fIntegratedLength;        // integrated length
  
  ClassDef(AliKalmanTrack,8)    // Reconstructed track
};

#endif


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