ROOT logo
#ifndef ALIESDFRIENDTRACK_H
#define ALIESDFRIENDTRACK_H

//-------------------------------------------------------------------------
//                     Class AliESDfriendTrack
//               This class contains ESD track additions
//       Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
//-------------------------------------------------------------------------

#include <TClonesArray.h>
#include <AliExternalTrackParam.h>
#include "AliVfriendTrack.h"
#include "AliTrackPointArray.h"

class AliKalmanTrack;
class TObjArrray;
class AliTPCseed;


//_____________________________________________________________________________
class AliESDfriendTrack : public AliVfriendTrack {
public:
  enum {
    kMaxITScluster=12,
    kMaxTPCcluster=160,
    kMaxTRDcluster=180
  };
  AliESDfriendTrack();
  AliESDfriendTrack(const AliESDfriendTrack &t);
  virtual ~AliESDfriendTrack();

  void Set1P(Float_t p) {f1P=p;}
  void SetTrackPointArray(AliTrackPointArray *points) {
    fPoints=points;
  }
  Float_t Get1P() const  {return f1P;}
  Int_t *GetITSindices() {return fITSindex;}
  Int_t *GetTPCindices() {return fTPCindex;}
  Int_t *GetTRDindices() {return fTRDindex;}
  const AliTrackPointArray *GetTrackPointArray() const {return fPoints;}

  void SetITStrack(AliKalmanTrack *t) {fITStrack=t;}
  void SetTRDtrack(AliKalmanTrack *t) {fTRDtrack=t;}
  AliKalmanTrack *GetTRDtrack() {return fTRDtrack;}
  AliKalmanTrack *GetITStrack() {return fITStrack;}
  void AddCalibObject(TObject * calibObject); 
  TObject * GetCalibObject(Int_t index) const;

  //
  // parameters backup
  void SetTPCOut(const AliExternalTrackParam &param);
  void SetITSOut(const AliExternalTrackParam &param);
  void SetTRDIn(const AliExternalTrackParam  &param);
  //
  
  const AliExternalTrackParam * GetTPCOut() const {return  fTPCOut;} 
  const AliExternalTrackParam * GetITSOut() const {return fITSOut;} 
  const AliExternalTrackParam * GetTRDIn()  const {return fTRDIn;} 

  //used in calibration
  Int_t GetTrackParamTPCOut( AliExternalTrackParam &p ) const {
      if(!GetTPCOut()) return -1;
      p=*GetTPCOut();
      return 0;}

  Int_t GetTrackParamITSOut( AliExternalTrackParam &p ) const {
      if(!GetITSOut()) return -1;
      p=*GetITSOut();
      return 0;}

  void SetITSIndices(Int_t* indices, Int_t n);
  void SetTPCIndices(Int_t* indices, Int_t n);
  void SetTRDIndices(Int_t* indices, Int_t n);

  Int_t GetMaxITScluster() {return fnMaxITScluster;}
  Int_t GetMaxTPCcluster() {return fnMaxTPCcluster;}
  Int_t GetMaxTRDcluster() {return fnMaxTRDcluster;}
  
  // bit manipulation for filtering
  void SetSkipBit(Bool_t skip){SetBit(23,skip);}
  Bool_t TestSkipBit() const {return TestBit(23);}

  // VfriendTrack interface

  Int_t GetTPCseed( AliTPCseed &) const;

protected:
  Float_t f1P;                     // 1/P (1/(GeV/c))
  Int_t fnMaxITScluster; // Max number of ITS clusters
  Int_t fnMaxTPCcluster; // Max number of TPC clusters
  Int_t fnMaxTRDcluster; // Max number of TRD clusters
  Int_t* fITSindex; //[fnMaxITScluster] indices of the ITS clusters 
  Int_t* fTPCindex; //[fnMaxTPCcluster] indices of the TPC clusters
  Int_t* fTRDindex; //[fnMaxTRDcluster] indices of the TRD clusters

  AliTrackPointArray *fPoints;//Array of track space points in the global frame
  TObjArray      *fCalibContainer; //Array of objects for calibration    
  AliKalmanTrack *fITStrack; //! pointer to the ITS track (debug purposes) 
  AliKalmanTrack *fTRDtrack; //! pointer to the TRD track (debug purposes) 
  //
  //
  AliExternalTrackParam * fTPCOut; // tpc outer parameters
  AliExternalTrackParam * fITSOut; // its outer parameters
  AliExternalTrackParam * fTRDIn;  // trd inner parameters

private:
  AliESDfriendTrack &operator=(const AliESDfriendTrack & /* t */) {return *this;}

  ClassDef(AliESDfriendTrack,8) //ESD friend track
};

#endif


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