]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - HLT/global/AliFlatESDFriendTrack.h
Update master to aliroot
[u/mrichter/AliRoot.git] / HLT / global / AliFlatESDFriendTrack.h
... / ...
CommitLineData
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
19class AliESDtrack;
20class AliESDfriendTrack;
21class AliExternalTrackParam;
22class AliTrackPointArray;
23class AliTPCseed;
24
25class 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 AliFlatTPCseed* SetTPCseedStart();
74 void SetTPCseedEnd( size_t tpcSeedSize );
75
76
77
78 const AliFlatTPCseed* GetFlatTPCseed( ) const{return reinterpret_cast<const AliFlatTPCseed*>(fContent+fTPCseedPointer); };
79
80 const AliFlatESDFriendTrack *GetNextTrack() const { return reinterpret_cast<const AliFlatESDFriendTrack*>(fContent+fContentSize); }
81 AliFlatESDFriendTrack *GetNextTrackNonConst() { return reinterpret_cast<AliFlatESDFriendTrack*>(fContent+fContentSize); }
82
83 // --------------------------------------------------------------------------------
84 // -- Size methods
85
86 static size_t EstimateSize(){
87 return sizeof(AliFlatESDFriendTrack) + 3*sizeof(AliFlatExternalTrackParam) + AliFlatTPCseed::EstimateSize();
88 }
89
90 size_t GetSize() const { return fContent - reinterpret_cast<const Byte_t*>(this) + fContentSize; }
91
92 private:
93
94 AliFlatESDFriendTrack(const AliFlatESDFriendTrack &);
95 AliFlatESDFriendTrack& operator=(const AliFlatESDFriendTrack& );
96
97 Int_t GetTrackParam( Long64_t ptr, AliExternalTrackParam &param ) const;
98 void SetTrackParam( Long64_t &ptr, const AliExternalTrackParam *p );
99
100 // --------------------------------------------------------------------------------
101
102 ULong64_t fContentSize; // Size of this object
103 Long64_t fTPCOutPointer; // pointer to TPCOut track param in fContent
104 Long64_t fITSOutPointer; // pointer to ITSOut track param in fContent
105 Long64_t fTRDInPointer; // pointer to TRDIn track param in fContent
106 Long64_t fTPCseedPointer; // pointer to TPCseed in fContent
107 Bool_t fBitFlags; // bit flags
108
109 // --------------------------------------------------------------------------------
110
111 Byte_t fContent[1]; // Variale size object, which contains all data
112
113 ClassDef(AliFlatESDFriendTrack, 0)
114
115};
116
117inline Int_t AliFlatESDFriendTrack::GetTrackParam( Long64_t ptr, AliExternalTrackParam &param ) const
118{
119 if( ptr<0 ) return -1;
120 const AliFlatExternalTrackParam *fp = reinterpret_cast< const AliFlatExternalTrackParam* >( fContent + ptr );
121 fp->GetExternalTrackParam( param );
122 return 0;
123}
124
125inline void AliFlatESDFriendTrack::SetTrackParam( Long64_t &ptr, const AliExternalTrackParam *p )
126{
127 if(!p ) return;
128 if( ptr<0 ){
129 ptr = fContentSize;
130 fContentSize += sizeof(AliFlatExternalTrackParam);
131 }
132 AliFlatExternalTrackParam *fp = reinterpret_cast< AliFlatExternalTrackParam* >( fContent + ptr );
133 fp->SetExternalTrackParam( p );
134}
135
136inline void AliFlatESDFriendTrack::SetTPCseed( const AliTPCseed *p )
137{
138 fTPCseedPointer = -1;
139 if(!p ) return;
140 fTPCseedPointer = fContentSize;
141 AliFlatTPCseed *fp = reinterpret_cast< AliFlatTPCseed* >( fContent + fTPCseedPointer );
142 fp->SetFromTPCseed( p );
143 fContentSize += fp->GetSize();
144}
145
146inline Int_t AliFlatESDFriendTrack::GetTPCseed( AliTPCseed &s ) const
147{
148 if( fTPCseedPointer<0 ) return -1;
149 const AliFlatTPCseed *fp = reinterpret_cast< const AliFlatTPCseed* >( fContent + fTPCseedPointer );
150 fp->GetTPCseed( &s );
151 return 0;
152}
153
154inline AliFlatTPCseed* AliFlatESDFriendTrack::SetTPCseedStart()
155{
156 fTPCseedPointer = fContentSize;
157 return reinterpret_cast< AliFlatTPCseed* >( fContent + fTPCseedPointer );
158}
159
160inline void AliFlatESDFriendTrack::SetTPCseedEnd( size_t tpcSeedSize ){
161 fContentSize += tpcSeedSize;
162}
163
164#endif