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