Finish the move RICH to HMPID
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / AliFemtoTrack.h
CommitLineData
d0e92d9a 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///////////////////////////////////////////////////////////////////////////
67427ff7 10
d0e92d9a 11#ifndef ALIFEMTOTRACK_H
12#define ALIFEMTOTRACK_H
67427ff7 13
d0e92d9a 14#include "AliFemtoTypes.h"
67427ff7 15#include "AliFmPhysicalHelixD.h"
16#include "TBits.h"
17/* Th stuff */
d0e92d9a 18#include "AliFemtoHiddenInfo.h"
67427ff7 19/***/
20
21#ifndef __NO_STAR_DEPENDENCE_ALLOWED__
22class StEvent;
23class StTrack;
24class StMuDst;
25class StMuTrack;
26#endif
27
67427ff7 28class AliFemtoTrack{
29public:
30 AliFemtoTrack();
d0e92d9a 31 AliFemtoTrack(const AliFemtoTrack& aTrack);// copy constructor
0215f606 32 AliFemtoTrack& operator=(const AliFemtoTrack& aTrack);
67427ff7 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
d0e92d9a 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);
67427ff7 80
81 void SetP(const AliFemtoThreeVector&);
d0e92d9a 82 void SetPt(const float& x);
67427ff7 83 void SetHelix(const AliFmPhysicalHelixD&);
d0e92d9a 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);
67427ff7 92
d0e92d9a 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);
67427ff7 100
101 void SetTPCcluster(const short& aNBit, const Bool_t& aValue);
102 void SetTPCshared(const short& aNBit, const Bool_t& aValue);
103
104 /* Th stuff */
105 void SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo);
106 bool ValidHiddenInfo() const;
107 // Fab private : (official : const AliFemtoHiddenInfo* HiddenInfo() const;
d0e92d9a 108 AliFemtoHiddenInfo* GetHiddenInfo() const;
67427ff7 109 /***/
110
111 //Alice stuff
d0e92d9a 112 enum {
67427ff7 113 kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008,
114 kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,
115 kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,
116 kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,
8b1c76de 117 kHMPIDpid=0x20000,
67427ff7 118 kTRDbackup=0x80000,
119 kTRDStop=0x20000000,
120 kESDpid=0x40000000,
121 kTIME=0x80000000
122 };
d0e92d9a 123
124 private:
125 char fCharge; // track charge
126 float fPidProbElectron; // electron pid
127 float fPidProbPion; // pion pid
128 float fPidProbKaon; // kaon pid
129 float fPidProbProton; // proton pid
130 float fPidProbMuon; // muon pid
131 unsigned int fTrackId; // track unique id
67427ff7 132
133
d0e92d9a 134 AliFemtoThreeVector fP; // track momentum
135 float fPt; // transverse momenta
136 AliFmPhysicalHelixD fHelix; // track helix
67427ff7 137
138 //alice stuff
139 long int fFlags; //Reconsruction status flags
140 int fLabel; //Track label
141 float fImpactD; //impact parameter in xy plane
142 float fImpactZ;//impacct parameter in z
143 float fCdd,fCdz,fCzz;//covariance matrix of the impact parameters
144 // ITS related track information
145 float fITSchi2; // chi2 in the ITS
146 int fITSncls; // number of clusters assigned in the ITS
147 // TPC related track information
148 float fTPCchi2; // chi2 in the TPC
149 int fTPCncls; // number of clusters assigned in the TPC
150 short fTPCnclsF; // number of findable clusters in the TPC
151 short fTPCsignalN; // number of points used for dEdx
152 float fTPCsignalS; // RMS of dEdx measurement
d0e92d9a 153 TBits fClusters; // Cluster per padrow map
154 TBits fShared; // Sharing per padrow map
67427ff7 155
156 /* Th stuff */
157 // Fab private : add mutable
158 // mutable
d0e92d9a 159 AliFemtoHiddenInfo* fHiddenInfo; //! hidden info
67427ff7 160 /***/
161};
162
163//inline const float* AliFemtoTrack::NSigma() const
164//{return &mNSigmaElectron;} // Fab private
165inline float AliFemtoTrack::PidProbElectron() const {return fPidProbElectron;}
166inline float AliFemtoTrack::PidProbPion() const {return fPidProbPion;}
167inline float AliFemtoTrack::PidProbKaon() const {return fPidProbKaon;}
168inline float AliFemtoTrack::PidProbProton() const {return fPidProbProton;}
169inline float AliFemtoTrack::PidProbMuon() const {return fPidProbMuon;}
170
171#endif