744e724c22144e3ade05fdb8a2c9725db1e41494
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / AliFemtoTrack.h
1 ///////////////////////////////////////////////////////////////////////////
2 //                                                                       //
3 // AliFemtoTrack: main class holding all the necessary information       //
4 // about a track (before the identification) that is required during     //
5 // femtoscopic analysis. This class is filled with information from the  //
6 // input stream by the reader. A particle has a link back to the Track   //
7 // it was created from, so we do not copy the information.               //
8 //                                                                       //
9 ///////////////////////////////////////////////////////////////////////////
10
11 #ifndef ALIFEMTOTRACK_H
12 #define ALIFEMTOTRACK_H
13
14 #include "AliFemtoTypes.h"
15 #include "AliFmPhysicalHelixD.h"
16 #include "TBits.h"
17 /* Th stuff */
18 #include "AliFemtoHiddenInfo.h"
19 /***/
20
21 #ifndef __NO_STAR_DEPENDENCE_ALLOWED__
22 class StEvent;
23 class StTrack;
24 class StMuDst;
25 class StMuTrack;
26 #endif
27
28 class AliFemtoTrack{
29 public:
30   AliFemtoTrack();
31   AliFemtoTrack(const AliFemtoTrack& aTrack);// copy constructor
32   AliFemtoTrack& operator=(const AliFemtoTrack& aTrack);
33 #ifndef __NO_STAR_DEPENDENCE_ALLOWED__
34 #ifdef __ROOT__
35  //AliFemtoTrack(const StTrack*, AliFemtoThreeVector);   // c-tor from StTrack of STAR DSTs
36   //AliFemtoTrack(const StMuDst* dst, const StMuTrack* t);
37 #endif
38   //AliFemtoTrack(const StEvent*, const StTrack*);
39 #endif
40
41   ~AliFemtoTrack();
42 //    ~AliFemtoTrack(){/* no-op*/};
43
44   short Charge() const;
45   float PidProbElectron() const;
46   float PidProbPion() const;
47   float PidProbKaon() const;
48   float PidProbProton() const;
49   float PidProbMuon() const;
50   
51   AliFemtoThreeVector P() const;
52   float Pt() const;
53   const AliFmPhysicalHelixD& Helix() const;
54   short TrackId() const;
55   long int Flags() const;
56   int Label()const;
57   float ImpactD()const;
58   float ImpactZ()const;
59   float Cdd() const;
60   float Cdz() const;
61   float Czz() const; 
62   
63   float ITSchi2() const;    
64   int   ITSncls() const;     
65   float TPCchi2() const;       
66   int   TPCncls() const;       
67   short TPCnclsF() const;      
68   short TPCsignalN() const;    
69   float TPCsignalS() const;   
70
71   const TBits& TPCclusters() const;
72   const TBits& TPCsharing()  const;
73   
74   void SetCharge(const short& s);
75   void SetPidProbElectron(const float& x);
76   void SetPidProbPion(const float& x);
77   void SetPidProbKaon(const float& x);
78   void SetPidProbProton(const float& x);
79   void SetPidProbMuon(const float& x);
80    
81   void SetP(const AliFemtoThreeVector&);
82   void SetPt(const float& x);
83   void SetHelix(const AliFmPhysicalHelixD&);
84   void SetTrackId(const short& s);
85   void SetFlags(const long int& i);
86   void SetLabel(const int& i);
87   void SetImpactD(const float& x);
88   void SetImpactZ(const float& x);
89   void SetCdd(const float& x);
90   void SetCdz(const float& x);
91   void SetCzz(const float& x);
92   
93   void SetITSchi2(const float& x);    
94   void SetITSncls(const int& i);     
95   void SetTPCchi2(const float& x);       
96   void SetTPCncls(const int& i);       
97   void SetTPCnclsF(const short& s);      
98   void SetTPCsignalN(const short& s);    
99   void SetTPCsignalS(const float& x);   
100
101   void SetTPCcluster(const short& aNBit, const Bool_t& aValue);
102   void SetTPCshared(const short& aNBit, const Bool_t& aValue);
103
104   void SetTPCClusterMap(const TBits& aBits);
105   void SetTPCSharedMap(const TBits& aBits);
106
107   void SetKinkIndexes(int points[3]);
108   int  KinkIndex(int aIndex) const;
109
110   /* Th stuff */
111   void SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo);
112   bool ValidHiddenInfo() const;
113   // Fab private : (official : const AliFemtoHiddenInfo* HiddenInfo() const;
114   AliFemtoHiddenInfo* GetHiddenInfo() const;
115   /***/
116   
117   //Alice stuff
118   enum {
119     kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008,
120     kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,
121     kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,
122     kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,
123     kRICHpid=0x20000,
124     kTRDbackup=0x80000,
125     kTRDStop=0x20000000,
126     kESDpid=0x40000000,
127     kTIME=0x80000000
128   };
129   
130  private:
131   char fCharge;           // track charge
132   float fPidProbElectron; // electron pid
133   float fPidProbPion;     // pion pid 
134   float fPidProbKaon;     // kaon pid 
135   float fPidProbProton;   // proton pid
136   float fPidProbMuon;     // muon pid
137   unsigned int fTrackId;  // track unique id
138
139
140   AliFemtoThreeVector fP; // track momentum
141   float fPt;              // transverse momenta
142   AliFmPhysicalHelixD fHelix; // track helix
143
144   //alice stuff
145   long int fFlags; //Reconsruction status flags
146   int fLabel; //Track label  
147   float fImpactD; //impact parameter in xy plane
148   float fImpactZ;//impacct parameter in z
149   float fCdd,fCdz,fCzz;//covariance matrix of the impact parameters
150   // ITS related track information
151   float fITSchi2;        // chi2 in the ITS
152   int   fITSncls;        // number of clusters assigned in the ITS
153   // TPC related track information
154   float  fTPCchi2;       // chi2 in the TPC
155   int    fTPCncls;       // number of clusters assigned in the TPC
156   short fTPCnclsF;       // number of findable clusters in the TPC
157   short fTPCsignalN;     // number of points used for dEdx
158   float fTPCsignalS;     // RMS of dEdx measurement
159   TBits fClusters;       // Cluster per padrow map
160   TBits fShared;         // Sharing per padrow map
161
162   int   fKinkIndexes[3]; // Kink Index list
163   /* Th stuff */
164   // Fab private : add mutable
165   //  mutable 
166   AliFemtoHiddenInfo* fHiddenInfo; //! hidden info
167   /***/
168 };
169
170 //inline const float* AliFemtoTrack::NSigma() const 
171 //{return &mNSigmaElectron;} // Fab private 
172 inline float AliFemtoTrack::PidProbElectron() const {return fPidProbElectron;}
173 inline float AliFemtoTrack::PidProbPion() const {return fPidProbPion;}
174 inline float AliFemtoTrack::PidProbKaon() const {return fPidProbKaon;}
175 inline float AliFemtoTrack::PidProbProton() const {return fPidProbProton;}
176 inline float AliFemtoTrack::PidProbMuon() const {return fPidProbMuon;}
177
178 #endif