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