]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - HLT/TPCLib/AliHLTTPCDigitReader.cxx
loading beam type from GRP and read configuration object according to it
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCDigitReader.cxx
... / ...
CommitLineData
1// $Id$
2
3/**************************************************************************
4 * This file is property of and copyright by the ALICE HLT Project *
5 * ALICE Experiment at CERN, All rights reserved. *
6 * *
7 * Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no> *
8 * Timm Steinbeck <timm@kip.uni-heidelberg.de> *
9 * Jochen Thaeder <thaeder@kip.uni-heidelberg.de> *
10 * for The ALICE HLT Project. *
11 * *
12 * Permission to use, copy, modify and distribute this software and its *
13 * documentation strictly for non-commercial purposes is hereby granted *
14 * without fee, provided that the above copyright notice appears in all *
15 * copies and that both the copyright notice and this permission notice *
16 * appear in the supporting documentation. The authors make no claims *
17 * about the suitability of this software for any purpose. It is *
18 * provided "as is" without express or implied warranty. *
19 **************************************************************************/
20
21/** @file AliHLTTPCDigitReader.cxx
22 @author Timm Steinbeck, Jochen Thaeder, Matthias Richter, Kenneth Aamodt
23 @date
24 @brief An abstract reader class for TPC data.
25*/
26
27// see header file for class documentation
28// or
29// refer to README to build package
30// or
31// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
32
33#if __GNUC__>= 3
34using namespace std;
35#endif
36
37#include "AliHLTTPCDigitReader.h"
38#include "AliHLTTPCTransform.h"
39#include "AliHLTStdIncludes.h"
40
41ClassImp(AliHLTTPCDigitReader)
42
43AliHLTTPCDigitReader::AliHLTTPCDigitReader()
44 :
45 fFlags(0),
46 fLckRow(-1),
47 fLckPad(-1)
48{
49 // see header file for class documentation
50 // or
51 // refer to README to build package
52 // or
53 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
54}
55
56AliHLTTPCDigitReader::~AliHLTTPCDigitReader()
57{
58 // see header file for class documentation
59}
60
61int AliHLTTPCDigitReader::InitBlock(void* ptr,unsigned long size,Int_t firstrow,Int_t lastrow, Int_t patch, Int_t slice)
62{
63 // see header file for class documentation
64 if (patch<0 || patch>=AliHLTTPCTransform::GetNumberOfPatches()) {
65 HLTError("invalid readout partition number %d", patch);
66 return -EINVAL;
67 }
68 if (firstrow!=AliHLTTPCTransform::GetFirstRow(patch)) {
69 HLTWarning("The firstrow parameter does not match the layout of the readout partition %d "
70 "(firstrow=%d). Parameter is ignored", patch, AliHLTTPCTransform::GetFirstRow(patch));
71 }
72 if (lastrow!=AliHLTTPCTransform::GetLastRow(patch)) {
73 HLTWarning("The lastrow parameter does not match the layout of the readout partition %d "
74 "(lastrow=%d). Parameter is ignored", patch, AliHLTTPCTransform::GetLastRow(patch));
75 }
76 return InitBlock(ptr, size, patch, slice);
77}
78
79void AliHLTTPCDigitReader::SetOldRCUFormat(Bool_t /*oldrcuformat*/)
80{
81 // default method of the base class
82}
83
84void AliHLTTPCDigitReader::SetUnsorted(Bool_t /*unsorted*/)
85{
86 // default method of the base class
87 HLTWarning("common sorting functionality has not yet been implemented");
88}
89
90bool AliHLTTPCDigitReader::Next(int /*type*/)
91{
92 // see header file for class documentation
93 if (!CheckFlag(kLocked)) return NextSignal();
94
95 bool haveData=false;
96 if (!CheckFlag(kChannelOverwrap))
97 haveData=NextSignal();
98
99 if (haveData && (fLckRow!=GetRow() || fLckPad!=GetPad())) {
100 SetFlag(kChannelOverwrap);
101 haveData=false;
102 }
103
104 return haveData;
105}
106
107bool AliHLTTPCDigitReader::NextChannel()
108{
109 // see header file for class documentation
110 PrintWarningOnce(kWarnMissFastAccess,"\n"
111 " !!! This digit reader does not implement the methods for !!!\n"
112 " !!! fast data access on channel/bunch basis. Data is discarded !!!");
113 return false;
114}
115
116int AliHLTTPCDigitReader::NextBunch()
117{
118 // see header file for class documentation
119 PrintWarningOnce(kWarnMissFastAccess,"\n"
120 " !!! This digit reader does not implement the methods for !!!\n"
121 " !!! fast data access on channel/bunch basis. Data is discarded !!!");
122 return false;
123}
124
125const UInt_t* AliHLTTPCDigitReader::GetSignals()
126{
127 // see header file for class documentation
128 PrintWarningOnce(kWarnMissFastAccess,"\n"
129 " !!! This digit reader does not implement the methods for !!!\n"
130 " !!! fast data access on channel/bunch basis. Data is discarded !!!");
131 return 0;
132}
133
134const UShort_t* AliHLTTPCDigitReader::GetSignalsShort()
135{
136 // see header file for class documentation
137 PrintWarningOnce(kWarnMissFastAccess,"\n"
138 " !!! This digit reader does not implement the methods for !!!\n"
139 " !!! fast data access on channel/bunch basis. Data is discarded !!!");
140 return 0;
141}
142
143void AliHLTTPCDigitReader::EnableCaching(bool bCache)
144{
145 // see header file for class documentation
146 if (bCache) SetFlag(kChannelCaching);
147 else ClearFlag(kChannelCaching);
148}
149
150int AliHLTTPCDigitReader::RewindChannel()
151{
152 // see header file for class documentation
153 int iResult=0;
154
155 return iResult;
156}
157
158unsigned int AliHLTTPCDigitReader::SetFlag(unsigned int flag)
159{
160 // see header file for class documentation
161 return fFlags|=flag;
162}
163
164unsigned int AliHLTTPCDigitReader::ClearFlag(unsigned int flag)
165{
166 // see header file for class documentation
167 return fFlags&=~flag;
168}
169
170// int operator[](int timebin)
171// {
172// return -1;
173// }
174
175int AliHLTTPCDigitReader::RewindCurrentChannel()
176{
177 // see header file for class documentation
178 SetFlag(kNoRewind);
179 if (!CheckFlag(kChannelCaching)) return -ENODATA;
180 return -ENOSYS;
181}
182
183int AliHLTTPCDigitReader::RewindToPrevChannel()
184{
185 // see header file for class documentation
186 SetFlag(kNoRewind);
187 if (!CheckFlag(kChannelCaching)) return -ENODATA;
188 return -ENOSYS;
189}
190
191int AliHLTTPCDigitReader::GetBunchSize()
192{
193 // see header file for class documentation
194 PrintWarningOnce(kWarnMissFastAccess,"\n"
195 " !!! This digit reader does not implement the methods for !!!\n"
196 " !!! fast data access on channel/bunch basis. Data is discarded !!!");
197 return 0;
198}
199
200int AliHLTTPCDigitReader::GetRowOffset() const
201{
202 // see header file for class documentation
203 return 0;
204}
205
206AliHLTUInt32_t AliHLTTPCDigitReader::GetAltroBlockHWaddr() const
207{
208 // see header file for class documentation
209 return 0;
210}
211
212AliHLTUInt32_t AliHLTTPCDigitReader::GetAltroBlockHWaddr(Int_t /*row*/, Int_t /*pad*/) const
213{
214 // see header file for class documentation
215 return 0;
216}
217
218int AliHLTTPCDigitReader::GetRCUTrailerSize()
219{
220 // see header file for class documentation
221 PrintWarningOnce(kWarnMissTrailerGetters,"\n"
222 " !!! This digit reader does not implement the Getters !!!\n"
223 " !!! for RCU trailer. Ignoring call. !!!");
224 return 0;
225}
226
227bool AliHLTTPCDigitReader::GetRCUTrailerData(UChar_t*& trData)
228{
229 // see header file for class documentation
230 PrintWarningOnce(kWarnMissTrailerGetters,"\n"
231 " !!! This digit reader does not implement the Getters !!!\n"
232 " !!! for RCU trailer. Ignoring call. !!!");
233 if (trData) trData=NULL;
234 return 0;
235}
236
237
238void AliHLTTPCDigitReader::PrintWarningOnce(int type, const char* message)
239{
240 // see header file for class documentation
241 if (CheckFlag(type)) return;
242 SetFlag(type);
243 HLTWarning(message);
244}
245