]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/global/AliFlatESDFriendTrack.h
*** V interface for TPCCalibTasks ***
[u/mrichter/AliRoot.git] / HLT / global / AliFlatESDFriendTrack.h
1 #ifndef ALIFLATESDFRIENDTRACK_H
2 #define ALIFLATESDFRIENDTRACK_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
13 #include "Rtypes.h"
14
15 #include "AliFlatTPCCluster.h"
16 #include "AliVfriendTrack.h"
17 #include "AliVMisc.h"
18 #include "AliFlatExternalTrackParam.h"
19 #include "AliFlatTPCseed.h"
20
21 class AliESDtrack;
22 class AliESDfriendTrack;
23 class AliExternalTrackParam;
24 class AliTrackPointArray;
25 class AliTPCseed;
26
27 class AliFlatESDFriendTrack :public AliVfriendTrack 
28 {
29  public:
30
31   // --------------------------------------------------------------------------------
32   // -- Constructor / Destructors
33   AliFlatESDFriendTrack();
34   ~AliFlatESDFriendTrack() {}
35  
36   // constructor and method for reinitialisation of virtual table  
37   AliFlatESDFriendTrack( AliVConstructorReinitialisationFlag );
38   void Reinitialize() { new (this) AliFlatESDFriendTrack( AliVReinitialize ); }
39
40   // --------------------   AliVfriendTrack interface    ---------------------------------
41
42   Int_t GetTPCseed( AliTPCseed &) const {return -1;}
43  
44   Int_t GetTrackParamTPCOut( AliExternalTrackParam &p ) const { return GetTrackParam( fTPCOutPointer, p ); }
45   Int_t GetTrackParamITSOut( AliExternalTrackParam &p ) const { return GetTrackParam( fITSOutPointer, p ); }
46   Int_t GetTrackParamTRDIn( AliExternalTrackParam &p )  const { return GetTrackParam( fTRDInPointer,  p ); }
47
48   //virtual const AliVtrackPointArray *GetTrackPointArray() const {return NULL;}
49
50   TObject* GetCalibObject(Int_t) const {return NULL;}
51   const AliExternalTrackParam* GetTPCOut() const {return NULL;}
52   const AliExternalTrackParam* GetITSOut() const {return NULL;}
53
54   
55   // bit manipulation for filtering
56
57   void SetSkipBit(Bool_t skip){ fBitFlags = skip; }
58   Bool_t TestSkipBit() const { return (fBitFlags!=0); }
59   
60   // ------------------- Own methods  ---------------------------------------------------------
61
62   // -- Set methods
63  
64   void Reset();
65
66   Int_t SetFromESDfriendTrack( const AliESDfriendTrack* track, size_t allocatedMemory );
67
68   void SetTrackParamTPCOut( const AliExternalTrackParam *p ){ SetTrackParam( fTPCOutPointer, p ); }
69   void SetTrackParamITSOut( const AliExternalTrackParam *p ){ SetTrackParam( fITSOutPointer, p ); }
70   void SetTrackParamTRDIn ( const AliExternalTrackParam *p ){ SetTrackParam( fTRDInPointer,  p );  }
71   void SetTPCseed         ( const AliTPCseed *p );
72
73   // -- 
74   
75   const AliFlatESDFriendTrack *GetNextTrack() const { return reinterpret_cast<const AliFlatESDFriendTrack*>(fContent+fContentSize); }
76   AliFlatESDFriendTrack *GetNextTrackNonConst() { return reinterpret_cast<AliFlatESDFriendTrack*>(fContent+fContentSize); }
77  
78   // --------------------------------------------------------------------------------
79   // -- Size methods
80
81   static size_t EstimateSize(){
82     return sizeof(AliFlatESDFriendTrack) + 3*sizeof(AliFlatExternalTrackParam) + AliFlatTPCseed::EstimateSize();
83   }
84
85   size_t GetSize() const { return fContent -  reinterpret_cast<const Byte_t*>(this) + fContentSize; }
86
87  private: 
88
89   AliFlatESDFriendTrack(const AliFlatESDFriendTrack &);
90   AliFlatESDFriendTrack& operator=(const AliFlatESDFriendTrack& ); 
91
92   Int_t GetTrackParam( Long64_t ptr, AliExternalTrackParam &param ) const;
93   void  SetTrackParam( Long64_t &ptr, const AliExternalTrackParam *p );
94
95   // --------------------------------------------------------------------------------
96
97   ULong64_t fContentSize;                      // Size of this object
98   Long64_t  fTPCOutPointer;        // pointer to TPCOut track param in fContent
99   Long64_t  fITSOutPointer;        // pointer to ITSOut track param in fContent
100   Long64_t  fTRDInPointer;        // pointer to TRDIn track param in fContent
101   Long64_t  fTPCseedPointer;       // pointer to TPCseed in fContent
102   Bool_t    fBitFlags; // bit flags
103
104   // --------------------------------------------------------------------------------
105   
106   Byte_t fContent[1];                  // Variale size object, which contains all data
107
108   ClassDef(AliFlatESDFriendTrack, 0)
109
110 };
111
112 inline Int_t AliFlatESDFriendTrack::GetTrackParam( Long64_t ptr, AliExternalTrackParam &param ) const
113 {
114   if( ptr<0 ) return -1;
115   const AliFlatExternalTrackParam *fp = reinterpret_cast< const AliFlatExternalTrackParam* >( fContent + ptr );
116   fp->GetExternalTrackParam( param );
117 }
118
119 inline void AliFlatESDFriendTrack::SetTrackParam( Long64_t &ptr, const AliExternalTrackParam *p )
120 {
121   if(!p ) return;
122   if( ptr<0 ){
123     ptr = fContentSize;
124     fContentSize += sizeof(AliFlatExternalTrackParam);
125   }
126   AliFlatExternalTrackParam *fp = reinterpret_cast< AliFlatExternalTrackParam* >( fContent + ptr );
127   fp->SetExternalTrackParam( p );
128 }
129
130 inline void AliFlatESDFriendTrack::SetTPCseed( const AliTPCseed *p )
131 {
132   fTPCseedPointer = -1;
133   if(!p ) return;
134   fTPCseedPointer = fContentSize;
135   AliFlatTPCseed *fp = reinterpret_cast< AliFlatTPCseed* >( fContent + fTPCseedPointer );
136   fp->SetFromTPCseed( p );
137   fContentSize += fp->GetSize();  
138 }
139
140 #endif