]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/global/AliFlatESDTrack.h
add a few methods in the v interface
[u/mrichter/AliRoot.git] / HLT / global / AliFlatESDTrack.h
CommitLineData
251a2c81 1#ifndef ALIFLATESDTRACK_H
2#define ALIFLATESDTRACK_H
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice *
6 * Primary Authors : Sergey Gorbunov, Jochen Thaeder, Chiara Zampolli */
7
8/*
9 * See implementation file for documentation
10 */
11
12/*
13Cp - Track parameters constrained to the primary vertex
14Ip - Track parameters estimated at the inner wall of TPC
15TPCInner - Track parameters estimated at the inner wall of TPC using the TPC stand-alone
16Op - Track parameters estimated at the point of maximal radial coordinate reached during the tracking
17*/
18
19#include "Rtypes.h"
1f516476 20#include "AliVMisc.h"
120da37b 21#include "AliVParticle.h"
251a2c81 22#include "AliFlatExternalTrackParam.h"
23
24class AliESDtrack;
251a2c81 25class AliExternalTrackParam;
120da37b 26class AliFlatESDTrack;
251a2c81 27
120da37b 28class AliFlatESDTrack :public AliVTrack {
251a2c81 29 public:
30 // --------------------------------------------------------------------------------
31 // -- Constructor / Destructors
888585e5 32
33 AliFlatESDTrack();
120da37b 34 virtual ~AliFlatESDTrack() {}
251a2c81 35
c2ea967e 36 // constructor and method for reinitialisation of virtual table
1f516476 37 AliFlatESDTrack( AliVConstructorReinitialisationFlag );
38 void Reinitialize() { new (this) AliFlatESDTrack( AliVReinitialize ); }
c2ea967e 39
0d577a2c 40 // --------------------------------------------------------------------------------
41
888585e5 42 // -- Set methods
43
0d577a2c 44 Int_t SetFromESDTrack( const AliESDtrack* track );
888585e5 45
46 Int_t SetExternalTrackParam(
47 const AliExternalTrackParam* refittedParam,
48 const AliExternalTrackParam* innerParam,
49 const AliExternalTrackParam* innerTPC,
50 const AliExternalTrackParam* outerParam,
51 const AliExternalTrackParam* constrainedParam,
52 const AliExternalTrackParam* outerITSParam
53 );
251a2c81 54
c5baab86 55 void SetNumberOfTPCClusters( Int_t nCl ) { fNTPCClusters = nCl; }
251a2c81 56 void SetNumberOfITSClusters( Int_t nCl ) { fNITSClusters = nCl; }
57
251a2c81 58
59 // --------------------------------------------------------------------------------
60 // -- Getter methods
251a2c81 61
0d577a2c 62 const AliFlatExternalTrackParam* GetFlatTrackParam() const { return GetFlatParam( 0x0 ); }
63 const AliFlatExternalTrackParam* GetFlatTrackParamRefitted() const { return GetFlatParam( 0x1 ); }
64 const AliFlatExternalTrackParam* GetFlatTrackParamIp() const { return GetFlatParam( 0x2 ); }
65 const AliFlatExternalTrackParam* GetFlatTrackParamTPCInner() const { return GetFlatParam( 0x4 ); }
66 const AliFlatExternalTrackParam* GetFlatTrackParamOp() const { return GetFlatParam( 0x8 ); }
67 const AliFlatExternalTrackParam* GetFlatTrackParamCp() const { return GetFlatParam( 0x10 ); }
68 const AliFlatExternalTrackParam* GetFlatTrackParamITSOut() const { return GetFlatParam( 0x20 ); }
251a2c81 69
70 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
71
0d577a2c 72 Int_t GetNumberOfTPCClusters() const { return fNTPCClusters; }
73 Int_t GetNumberOfITSClusters() const { return fNITSClusters; }
888585e5 74
251a2c81 75 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
76
c2ea967e 77 const AliFlatESDTrack *GetNextTrack() const { return reinterpret_cast<const AliFlatESDTrack*>(fContent+fContentSize); }
78 AliFlatESDTrack *GetNextTrackNonConst() { return reinterpret_cast<AliFlatESDTrack*>(fContent+fContentSize); }
79
251a2c81 80 // --------------------------------------------------------------------------------
81 // -- Size methods
888585e5 82
83 static size_t EstimateSize(){
84 return sizeof(AliFlatESDTrack) + 6*sizeof(AliFlatExternalTrackParam);
85 }
86
48ec9ee6 87 size_t GetSize() const { return fContent - reinterpret_cast<const Byte_t*>(this) + fContentSize; }
6a33e0e9 88
f377397b 89 // -------------------------------------------------------------------------------
90 // the calibration interface methods:
91 Int_t GetTrackParam ( AliExternalTrackParam &p ) const { return GetExternalTrackParam( p, 0x0 ); }
92 Int_t GetTrackParamRefitted ( AliExternalTrackParam &p ) const { return GetExternalTrackParam( p, 0x1 ); }
93 Int_t GetTrackParamIp ( AliExternalTrackParam &p ) const { return GetExternalTrackParam( p, 0x2 ); }
94 Int_t GetTrackParamTPCInner ( AliExternalTrackParam &p ) const { return GetExternalTrackParam( p, 0x4 ); }
95 Int_t GetTrackParamOp ( AliExternalTrackParam &p ) const { return GetExternalTrackParam( p, 0x8 ); }
96 Int_t GetTrackParamCp ( AliExternalTrackParam &p ) const { return GetExternalTrackParam( p, 0x10 ); }
97 Int_t GetTrackParamITSOut ( AliExternalTrackParam &p ) const { return GetExternalTrackParam( p, 0x20 ); }
98 UShort_t GetTPCNcls() const {return GetNumberOfTPCClusters(); }
99 Double_t GetPt() const {
100 const AliFlatExternalTrackParam *f = GetFlatTrackParam();
101 return (f) ?f->GetPt() : kVeryBig;
102 }
103 // -------------------------------------------------------------------------------
104
120da37b 105 // ---------------------------------------------------------------------------------
106 // AliVParticle interface
f377397b 107 virtual Double_t Pt() const {const AliFlatExternalTrackParam* p=GetFlatTrackParam(); return (p)?p->GetPt():kVeryBig;}
3740029a 108 virtual Double_t GetTgl() const {const AliFlatExternalTrackParam* p=GetFlatTrackParam(); return (p)?p->GetTgl():kVeryBig;}
109 virtual void GetImpactParameters(Float_t &xy,Float_t &z) const {xy=0.; z=0.;}
120da37b 110 virtual Double_t Px() const {return 0.;}
111 virtual Double_t Py() const {return 0.;}
112 virtual Double_t Pz() const {return 0.;}
120da37b 113 virtual Double_t P() const {return 0.;}
114 virtual Bool_t PxPyPz(Double_t*) const {return kFALSE;}
115 virtual Double_t Xv() const {return 0.;}
116 virtual Double_t Yv() const {return 0.;}
117 virtual Double_t Zv() const {return 0.;}
118 virtual Bool_t XvYvZv(Double_t*) const {return 0.;}
119 virtual Double_t OneOverPt() const {return 0.;}
120 virtual Double_t Phi() const {return 0.;}
121 virtual Double_t Theta() const {return 0.;}
122 virtual Double_t E() const {return 0.;}
123 virtual Double_t M() const {return 0.;}
124 virtual Double_t Eta() const {return 0.;}
125 virtual Double_t Y() const {return 0.;}
126 virtual Short_t Charge() const {return 0.;}
127 virtual Int_t GetLabel() const {return 0.;}
128 virtual Int_t PdgCode() const {return 0.;}
129 virtual const Double_t* PID() const {return NULL;}
130 virtual Int_t GetID() const {return 0.;}
131 virtual UChar_t GetITSClusterMap() const {return 0.;}
132 virtual ULong_t GetStatus() const {return 0.;}
a7751eb4 133 virtual Bool_t GetCovarianceXYZPxPyPz(Double_t cv[21]) const {if (cv[0]){}; return kFALSE;}
134 virtual Bool_t PropagateToDCA(const AliVVertex* /*vtx*/, Double_t /*b*/, Double_t /*maxd*/, Double_t dz[2], Double_t covar[3]) {if (dz[0]==covar[3]){}; return kFALSE;}
120da37b 135
251a2c81 136 private:
0d577a2c 137
251a2c81 138 AliFlatESDTrack(const AliFlatESDTrack&);
6a33e0e9 139 AliFlatESDTrack& operator=(const AliFlatESDTrack&);
251a2c81 140
0d577a2c 141 const AliFlatExternalTrackParam* GetFlatParam( UShort_t flag ) const {
142 if( flag==0 ) return ( fTrackParamMask ) ? reinterpret_cast<const AliFlatExternalTrackParam*>(fContent) : NULL;
143 else return (fTrackParamMask & flag) ? reinterpret_cast<const AliFlatExternalTrackParam*>(fContent) + CountBits(fTrackParamMask, flag-1) : NULL;
144 }
145
146 Int_t GetExternalTrackParam( AliExternalTrackParam &p, UShort_t flag ) const;
147
251a2c81 148 Int_t FillExternalTrackParam(const AliExternalTrackParam* param, UShort_t flag);
149
888585e5 150 static UInt_t CountBits(Byte_t field, UInt_t mask = 0xFFFFFFFF);
251a2c81 151
152 // --------------------------------------------------------------------------------
153 // -- Fixed size member objects
154 // -> Try to align in memory
155
156 Byte_t fTrackParamMask; // Bit mask specfifying which ExternalTrackParam are present
157 Int_t fNTPCClusters; // Number of TPC clusters in track
158 Int_t fNITSClusters; // Number of ITS clusters in track
159 // Bool_t fMCLabels;
160
888585e5 161 ULong64_t fContentSize; // Size of this object
251a2c81 162
163 // --------------------------------------------------------------------------------
164 // -- Variable Size Object
165 Byte_t fContent[1]; // Variale size object, which contains all data
166
e3d1b1e2 167 ClassDef(AliFlatESDTrack,0)
168
251a2c81 169};
888585e5 170
48ec9ee6 171// _______________________________________________________________________________________________________
172inline AliFlatESDTrack::AliFlatESDTrack() :
48ec9ee6 173 fTrackParamMask(0),
174 fNTPCClusters(0),
175 fNITSClusters(0),
176 fContentSize(0)
177{
178 // Default constructor
179}
180
98ccbd37 181inline AliFlatESDTrack::AliFlatESDTrack( AliVConstructorReinitialisationFlag )
a7751eb4 182// :
183// fTrackParamMask(fTrackParamMask ),
184// fNTPCClusters( fNTPCClusters ),
185// fNITSClusters( fNITSClusters ),
186// fContentSize( fContentSize )
48ec9ee6 187{
188 // Constructor for reinitialisation of vtable
189}
190
888585e5 191inline UInt_t AliFlatESDTrack::CountBits(Byte_t field, UInt_t mask) {
192 // Count bits in field
193 UInt_t count = 0, reg = field & mask;
194 for (; reg; count++) reg &= reg - 1;
195 return count;
196}
197
0d577a2c 198inline Int_t AliFlatESDTrack::GetExternalTrackParam( AliExternalTrackParam &p, UShort_t flag) const
199{
200 // Get external track parameters
201 const AliFlatExternalTrackParam *f = GetFlatParam ( flag );
48ec9ee6 202 if( !f ) return -1;
203 f->GetExternalTrackParam( p );
0d577a2c 204 return 0;
205}
206
207
251a2c81 208#endif