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