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

/* $Id$ */

//-------------------------------------------------------------------------
//                          class AliTracker
//   that is the base for AliTPCtracker, AliITStrackerV2 and AliTRDtracker
//       Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
//-------------------------------------------------------------------------

#include "AliTrackerBase.h"

#include "AliRecoParam.h"
#include "AliPlaneEff.h"

class TTree;
class AliCluster;
class AliESDEvent;
class AliESDtrack;
class AliExternalTrackParam;
class AliTrackPoint;
class AliKalmanTrack;
class AliEventInfo;

class AliTracker : public AliTrackerBase {
public:
  AliTracker();
  virtual ~AliTracker(){}

  virtual Int_t Clusters2Tracks(AliESDEvent *event)=0;
  virtual Int_t Clusters2TracksHLT(AliESDEvent *event, const AliESDEvent */*hltEvent*/){
    return Clusters2Tracks(event);
  }
  virtual Int_t PropagateBack(AliESDEvent *event)=0;
  virtual Int_t RefitInward(AliESDEvent *event)=0;
  virtual Int_t LoadClusters(TTree *)=0;
  virtual void UnloadClusters()=0;
  virtual AliCluster *GetCluster(Int_t index) const=0;

  virtual Int_t PostProcess(AliESDEvent */*event*/) {return 0;}
  virtual void FillClusterArray(TObjArray* array) const;
  virtual AliPlaneEff *GetPlaneEff() {return NULL;}
  virtual Bool_t GetTrackPoint(Int_t /* index */ , AliTrackPoint& /* p */) const { return kFALSE;}
  virtual Bool_t GetTrackPointTrackingError(Int_t /* index */, 
  	   AliTrackPoint& /* p */, const AliESDtrack* /* t */) { return kFALSE;}
  virtual void  UseClusters(const AliKalmanTrack *t, Int_t from=0) const;
  virtual void  CookLabel(AliKalmanTrack *t,Float_t wrong) const; 

  static void FillResiduals(const AliExternalTrackParam *t,
			   Double_t *p, Double_t *cov, 
                           UShort_t id, Bool_t updated=kTRUE);
  static void FillResiduals(const AliExternalTrackParam *t,
                            const AliCluster *c, Bool_t updated=kTRUE);
  static void SetFillResiduals(AliRecoParam::EventSpecie_t es, Bool_t flag=kTRUE) { fFillResiduals=flag; fEventSpecie = es ;}
  static void SetResidualsArray(TObjArray **arr) { fResiduals=arr; }
  static TObjArray ** GetResidualsArray() { return fResiduals; }

  void                SetEventInfo(AliEventInfo *evInfo) {fEventInfo = evInfo;}
  const AliEventInfo* GetEventInfo() const {return fEventInfo;}

protected:
  AliTracker(const AliTracker &atr);
private:
  AliTracker & operator=(const AliTracker & atr);
  static Bool_t fFillResiduals;     // Fill residuals flag
  static TObjArray **fResiduals;    //! Array of histograms with residuals

  static AliRecoParam::EventSpecie_t fEventSpecie ; //! event specie, see AliRecoParam
  AliEventInfo*                      fEventInfo;    //! pointer to the event info object
  
  ClassDef(AliTracker,6) //abstract tracker
};

#endif
 AliTracker.h:1
 AliTracker.h:2
 AliTracker.h:3
 AliTracker.h:4
 AliTracker.h:5
 AliTracker.h:6
 AliTracker.h:7
 AliTracker.h:8
 AliTracker.h:9
 AliTracker.h:10
 AliTracker.h:11
 AliTracker.h:12
 AliTracker.h:13
 AliTracker.h:14
 AliTracker.h:15
 AliTracker.h:16
 AliTracker.h:17
 AliTracker.h:18
 AliTracker.h:19
 AliTracker.h:20
 AliTracker.h:21
 AliTracker.h:22
 AliTracker.h:23
 AliTracker.h:24
 AliTracker.h:25
 AliTracker.h:26
 AliTracker.h:27
 AliTracker.h:28
 AliTracker.h:29
 AliTracker.h:30
 AliTracker.h:31
 AliTracker.h:32
 AliTracker.h:33
 AliTracker.h:34
 AliTracker.h:35
 AliTracker.h:36
 AliTracker.h:37
 AliTracker.h:38
 AliTracker.h:39
 AliTracker.h:40
 AliTracker.h:41
 AliTracker.h:42
 AliTracker.h:43
 AliTracker.h:44
 AliTracker.h:45
 AliTracker.h:46
 AliTracker.h:47
 AliTracker.h:48
 AliTracker.h:49
 AliTracker.h:50
 AliTracker.h:51
 AliTracker.h:52
 AliTracker.h:53
 AliTracker.h:54
 AliTracker.h:55
 AliTracker.h:56
 AliTracker.h:57
 AliTracker.h:58
 AliTracker.h:59
 AliTracker.h:60
 AliTracker.h:61
 AliTracker.h:62
 AliTracker.h:63
 AliTracker.h:64
 AliTracker.h:65
 AliTracker.h:66
 AliTracker.h:67
 AliTracker.h:68
 AliTracker.h:69
 AliTracker.h:70
 AliTracker.h:71
 AliTracker.h:72
 AliTracker.h:73
 AliTracker.h:74
 AliTracker.h:75
 AliTracker.h:76
 AliTracker.h:77