*** V interface for TPCCalibTasks ***
[u/mrichter/AliRoot.git] / STEER / ESD / AliESDfriendTrack.h
1 #ifndef ALIESDFRIENDTRACK_H
2 #define ALIESDFRIENDTRACK_H
3
4 //-------------------------------------------------------------------------
5 //                     Class AliESDfriendTrack
6 //               This class contains ESD track additions
7 //       Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
8 //-------------------------------------------------------------------------
9
10 #include <TObject.h>
11 #include <TClonesArray.h>
12 #include <AliExternalTrackParam.h>
13 #include "AliVfriendTrack.h"
14 #include "AliTrackPointArray.h"
15
16 class AliKalmanTrack;
17 class TObjArrray;
18 class AliTPCseed;
19
20
21 //_____________________________________________________________________________
22 class AliESDfriendTrack : public TObject, public AliVfriendTrack {
23 public:
24   enum {
25     kMaxITScluster=12,
26     kMaxTPCcluster=160,
27     kMaxTRDcluster=180
28   };
29   AliESDfriendTrack();
30   AliESDfriendTrack(const AliESDfriendTrack &t);
31   virtual ~AliESDfriendTrack();
32
33   void Set1P(Float_t p) {f1P=p;}
34   void SetTrackPointArray(AliTrackPointArray *points) {
35     fPoints=points;
36   }
37   Float_t Get1P() const  {return f1P;}
38   Int_t *GetITSindices() {return fITSindex;}
39   Int_t *GetTPCindices() {return fTPCindex;}
40   Int_t *GetTRDindices() {return fTRDindex;}
41   const AliTrackPointArray *GetTrackPointArray() const {return fPoints;}
42
43   void SetITStrack(AliKalmanTrack *t) {fITStrack=t;}
44   void SetTRDtrack(AliKalmanTrack *t) {fTRDtrack=t;}
45   AliKalmanTrack *GetTRDtrack() {return fTRDtrack;}
46   AliKalmanTrack *GetITStrack() {return fITStrack;}
47   void AddCalibObject(TObject * calibObject); 
48   TObject * GetCalibObject(Int_t index) const;
49
50   //
51   // parameters backup
52   void SetTPCOut(const AliExternalTrackParam &param);
53   void SetITSOut(const AliExternalTrackParam &param);
54   void SetTRDIn(const AliExternalTrackParam  &param);
55   //
56   
57   const AliExternalTrackParam * GetTPCOut() const {return  fTPCOut;} 
58   const AliExternalTrackParam * GetITSOut() const {return fITSOut;} 
59   const AliExternalTrackParam * GetTRDIn()  const {return fTRDIn;} 
60
61   void SetITSIndices(Int_t* indices, Int_t n);
62   void SetTPCIndices(Int_t* indices, Int_t n);
63   void SetTRDIndices(Int_t* indices, Int_t n);
64
65   Int_t GetMaxITScluster() {return fnMaxITScluster;}
66   Int_t GetMaxTPCcluster() {return fnMaxTPCcluster;}
67   Int_t GetMaxTRDcluster() {return fnMaxTRDcluster;}
68   
69   // bit manipulation for filtering
70   void SetSkipBit(Bool_t skip){SetBit(23,skip);}
71   Bool_t TestSkipBit() const {return TestBit(23);}
72
73   // VfriendTrack interface
74
75   Int_t GetTPCseed( AliTPCseed &) const;
76
77 protected:
78   Float_t f1P;                     // 1/P (1/(GeV/c))
79   Int_t fnMaxITScluster; // Max number of ITS clusters
80   Int_t fnMaxTPCcluster; // Max number of TPC clusters
81   Int_t fnMaxTRDcluster; // Max number of TRD clusters
82   Int_t* fITSindex; //[fnMaxITScluster] indices of the ITS clusters 
83   Int_t* fTPCindex; //[fnMaxTPCcluster] indices of the TPC clusters
84   Int_t* fTRDindex; //[fnMaxTRDcluster] indices of the TRD clusters
85
86   AliTrackPointArray *fPoints;//Array of track space points in the global frame
87   TObjArray      *fCalibContainer; //Array of objects for calibration    
88   AliKalmanTrack *fITStrack; //! pointer to the ITS track (debug purposes) 
89   AliKalmanTrack *fTRDtrack; //! pointer to the TRD track (debug purposes) 
90   //
91   //
92   AliExternalTrackParam * fTPCOut; // tpc outer parameters
93   AliExternalTrackParam * fITSOut; // its outer parameters
94   AliExternalTrackParam * fTRDIn;  // trd inner parameters
95
96 private:
97   AliESDfriendTrack &operator=(const AliESDfriendTrack & /* t */) {return *this;}
98
99   ClassDef(AliESDfriendTrack,7) //ESD friend track
100 };
101
102 #endif
103
104