// $Id$
/**************************************************************************
* This file is property of and copyright by the ALICE HLT Project *
* ALICE Experiment at CERN, All rights reserved. *
* *
* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no> *
* for The ALICE HLT Project. *
* *
* Permission to use, copy, modify and distribute this software and its *
* documentation strictly for non-commercial purposes is hereby granted *
* without fee, provided that the above copyright notice appears in all *
* copies and that both the copyright notice and this permission notice *
* appear in the supporting documentation. The authors make no claims *
* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
/** @file testAliHLTTPCDigitReaderDecoder.C
@author Matthias Richter
@date
@brief Test macro/program for the AliHLTTPCDigitReaderDecoder
*/
#ifndef __CINT__
#include "TSystem.h"
#include "AliHLTSystem.h"
#include "AliRawDataHeader.h"
#include "AliHLTAltroGenerator.h"
#include "AliHLTTPCDigitReaderDecoder.h"
#include <ostream>
#endif //__CINT__
#ifndef __CINT__
const int sizeofAliRawDataHeader=sizeof(AliRawDataHeader);
#else
// cint does not handle sizeof correctly
const int sizeofAliRawDataHeader=32;
#endif
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
//
// configuration of the test program
//
// printouts or not
const bool bVerbose=true;
// some defaults
const int maxChannels=10;
const int maxBunches=10;
const int maxBunchLength=10;
const int maxTimebin=1024;
const int maxSignal=1024;
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
int testAliHLTTPCDigitReaderDecoder()
{
int iResult=0;
#ifdef __CINT__
gSystem->Load("libAliHLTUtil.so");
gSystem->Load("libAliHLTRCU.so");
gSystem->Load("libAliHLTTPC.so");
#endif
AliHLTSystem gHLT;
AliHLTAltroGenerator generator(maxChannels, maxBunches, maxBunchLength, maxTimebin, maxSignal);
//generator.SetDirection(AliHLTAltroGenerator::kForwards);
if ((iResult=generator.Generate())<0) return iResult;
///////////////////////////////////////////////////////////////////////////////////////////////////
if (bVerbose) {
cout << "***************************************************************" << endl;
cout << "************** Dumping simulated Altro data *******************" << endl;
generator.Print();
cout << endl;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
AliRawDataHeader cdh;
generator.SetCDH(&cdh, 32);
UInt_t trailer=0;
generator.SetRCUTrailer((UChar_t*)&trailer, 4);
UChar_t* pBuffer=NULL;
Int_t size=generator.GetData(pBuffer);
int partition=0;
if (bVerbose) {
AliHLTTPCDigitReaderDecoder decoder;
decoder.SetUnsorted(true);
if ((iResult=decoder.InitBlock(pBuffer, size, partition, 0))>=0) {
cout << "***************************************************************" << endl;
cout << "********************** reading bunch model *******************" << endl;
while (iResult>=0 && decoder.NextChannel()) {
cout << "***************************************************************" << endl;
cout << "channel address: " << decoder.GetAltroBlockHWaddr() << endl;
while (iResult>=0 && decoder.NextBunch()) {
int bunchLength=decoder.GetBunchSize();
cout << " length " << bunchLength << " time " << decoder.GetTime() << ": ";
const UInt_t* pData=decoder.GetSignals();
while (bunchLength-->0 && pData) {
cout << " " << *pData++;
}
cout << endl;
}
}
cout << endl;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
if (bVerbose) {
AliHLTTPCDigitReaderDecoder decoder;
decoder.SetUnsorted(true);
if ((iResult=decoder.InitBlock(pBuffer, size, partition, 0))>=0) {
int lastChannel=-1;
int lastTime=-1;
cout << "***************************************************************" << endl;
cout << "********************** reading stream model *******************" << endl;
while (iResult>=0 && decoder.Next()) {
if (lastTime>=0 && lastTime!=decoder.GetTime()+1 && lastTime!=decoder.GetTime()-1)
cout << endl;
if (lastChannel<0 || lastChannel!=(int)decoder.GetAltroBlockHWaddr()) {
cout << "***************************************************************" << endl;
cout << "channel address: " << decoder.GetAltroBlockHWaddr() << endl;
}
if (lastTime<0 || (lastTime!=decoder.GetTime()+1 && lastTime!=decoder.GetTime()-1))
cout << " time " << decoder.GetTime() << ": ";
cout << " " << decoder.GetSignal();
lastChannel=decoder.GetAltroBlockHWaddr();
lastTime=decoder.GetTime();
}
cout << endl;
cout << endl;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
if (bVerbose) {
cout << "***************************************************************" << endl;
cout << "********************* comparing encoded data ******************" << endl;
cout << "***************************************************************" << endl;
}
generator.Rewind();
AliHLTTPCDigitReaderDecoder decoder;
decoder.SetUnsorted(true);
if (iResult>=0) iResult=decoder.InitBlock(pBuffer, size, partition, 0);
while (iResult>=0 && decoder.NextChannel()) {
if (!generator.NextChannel()) {
cout << "error getting next simulated channel" << endl;
iResult=-1;
break;
}
int hwadd=decoder.GetAltroBlockHWaddr();
if (hwadd!=generator.GetHwAddress()) {
cout << "channel address missmatch: simulated " << generator.GetHwAddress() << " encoded " << hwadd << endl;
iResult=-1;
break;
}
if (bVerbose) cout << "comparing channel " << hwadd << endl;
while (iResult>=0 && decoder.NextBunch()) {
if (!generator.NextBunch()) {
cout << "error getting bunch in simulated data" <<endl;
iResult=-1;
break;
}
int bunchLength=decoder.GetBunchSize();
if (bunchLength!=(int)generator.GetBunchSize()) {
cout << "bunch length missmatch: simulated " << generator.GetBunchSize() << " encoded " << bunchLength << hex << " (" << bunchLength << ")" << dec << endl;
iResult=-1;
break;
}
int bunchStartTime=decoder.GetTime();
if (bunchStartTime!=(int)generator.GetStartTime()) {
cout << "bunch end time missmatch: simulated " << generator.GetStartTime() << " encoded " << bunchStartTime << endl;
iResult=-1;
break;
}
if (bVerbose) cout << " bunch length " << bunchLength << ", end time " << bunchStartTime << endl;
const UInt_t* bunchData=decoder.GetSignals();
const Short_t* simData=generator.GetSignals();
for (int bin=0; bin<bunchLength; bin++) {
if ((Short_t)bunchData[bin]!=simData[bin]) {
cout << "data missmatch at bunch position " << bin << " : simulated " << simData[bin] << " encoded " << bunchData[bin] << endl;
iResult=-1;
break;
}
}
}
}
return 0;
}
int main(int /*argc*/, const char** /*argv*/)
{
int iResult=0;
int iCount=1;
for (int i=0; i<iCount; i++) {
if ((iResult=testAliHLTTPCDigitReaderDecoder())<0) {
cout << "missmatch in cycle no " << i << endl;
return iResult;
}
}
cout << "checking: "<< iCount << " encoding cycle(s) successfully tested" << endl;
return 0;
}
testAliHLTTPCDigitReaderDecoder.C:1 testAliHLTTPCDigitReaderDecoder.C:2 testAliHLTTPCDigitReaderDecoder.C:3 testAliHLTTPCDigitReaderDecoder.C:4 testAliHLTTPCDigitReaderDecoder.C:5 testAliHLTTPCDigitReaderDecoder.C:6 testAliHLTTPCDigitReaderDecoder.C:7 testAliHLTTPCDigitReaderDecoder.C:8 testAliHLTTPCDigitReaderDecoder.C:9 testAliHLTTPCDigitReaderDecoder.C:10 testAliHLTTPCDigitReaderDecoder.C:11 testAliHLTTPCDigitReaderDecoder.C:12 testAliHLTTPCDigitReaderDecoder.C:13 testAliHLTTPCDigitReaderDecoder.C:14 testAliHLTTPCDigitReaderDecoder.C:15 testAliHLTTPCDigitReaderDecoder.C:16 testAliHLTTPCDigitReaderDecoder.C:17 testAliHLTTPCDigitReaderDecoder.C:18 testAliHLTTPCDigitReaderDecoder.C:19 testAliHLTTPCDigitReaderDecoder.C:20 testAliHLTTPCDigitReaderDecoder.C:21 testAliHLTTPCDigitReaderDecoder.C:22 testAliHLTTPCDigitReaderDecoder.C:23 testAliHLTTPCDigitReaderDecoder.C:24 testAliHLTTPCDigitReaderDecoder.C:25 testAliHLTTPCDigitReaderDecoder.C:26 testAliHLTTPCDigitReaderDecoder.C:27 testAliHLTTPCDigitReaderDecoder.C:28 testAliHLTTPCDigitReaderDecoder.C:29 testAliHLTTPCDigitReaderDecoder.C:30 testAliHLTTPCDigitReaderDecoder.C:31 testAliHLTTPCDigitReaderDecoder.C:32 testAliHLTTPCDigitReaderDecoder.C:33 testAliHLTTPCDigitReaderDecoder.C:34 testAliHLTTPCDigitReaderDecoder.C:35 testAliHLTTPCDigitReaderDecoder.C:36 testAliHLTTPCDigitReaderDecoder.C:37 testAliHLTTPCDigitReaderDecoder.C:38 testAliHLTTPCDigitReaderDecoder.C:39 testAliHLTTPCDigitReaderDecoder.C:40 testAliHLTTPCDigitReaderDecoder.C:41 testAliHLTTPCDigitReaderDecoder.C:42 testAliHLTTPCDigitReaderDecoder.C:43 testAliHLTTPCDigitReaderDecoder.C:44 testAliHLTTPCDigitReaderDecoder.C:45 testAliHLTTPCDigitReaderDecoder.C:46 testAliHLTTPCDigitReaderDecoder.C:47 testAliHLTTPCDigitReaderDecoder.C:48 testAliHLTTPCDigitReaderDecoder.C:49 testAliHLTTPCDigitReaderDecoder.C:50 testAliHLTTPCDigitReaderDecoder.C:51 testAliHLTTPCDigitReaderDecoder.C:52 testAliHLTTPCDigitReaderDecoder.C:53 testAliHLTTPCDigitReaderDecoder.C:54 testAliHLTTPCDigitReaderDecoder.C:55 testAliHLTTPCDigitReaderDecoder.C:56 testAliHLTTPCDigitReaderDecoder.C:57 testAliHLTTPCDigitReaderDecoder.C:58 testAliHLTTPCDigitReaderDecoder.C:59 testAliHLTTPCDigitReaderDecoder.C:60 testAliHLTTPCDigitReaderDecoder.C:61 testAliHLTTPCDigitReaderDecoder.C:62 testAliHLTTPCDigitReaderDecoder.C:63 testAliHLTTPCDigitReaderDecoder.C:64 testAliHLTTPCDigitReaderDecoder.C:65 testAliHLTTPCDigitReaderDecoder.C:66 testAliHLTTPCDigitReaderDecoder.C:67 testAliHLTTPCDigitReaderDecoder.C:68 testAliHLTTPCDigitReaderDecoder.C:69 testAliHLTTPCDigitReaderDecoder.C:70 testAliHLTTPCDigitReaderDecoder.C:71 testAliHLTTPCDigitReaderDecoder.C:72 testAliHLTTPCDigitReaderDecoder.C:73 testAliHLTTPCDigitReaderDecoder.C:74 testAliHLTTPCDigitReaderDecoder.C:75 testAliHLTTPCDigitReaderDecoder.C:76 testAliHLTTPCDigitReaderDecoder.C:77 testAliHLTTPCDigitReaderDecoder.C:78 testAliHLTTPCDigitReaderDecoder.C:79 testAliHLTTPCDigitReaderDecoder.C:80 testAliHLTTPCDigitReaderDecoder.C:81 testAliHLTTPCDigitReaderDecoder.C:82 testAliHLTTPCDigitReaderDecoder.C:83 testAliHLTTPCDigitReaderDecoder.C:84 testAliHLTTPCDigitReaderDecoder.C:85 testAliHLTTPCDigitReaderDecoder.C:86 testAliHLTTPCDigitReaderDecoder.C:87 testAliHLTTPCDigitReaderDecoder.C:88 testAliHLTTPCDigitReaderDecoder.C:89 testAliHLTTPCDigitReaderDecoder.C:90 testAliHLTTPCDigitReaderDecoder.C:91 testAliHLTTPCDigitReaderDecoder.C:92 testAliHLTTPCDigitReaderDecoder.C:93 testAliHLTTPCDigitReaderDecoder.C:94 testAliHLTTPCDigitReaderDecoder.C:95 testAliHLTTPCDigitReaderDecoder.C:96 testAliHLTTPCDigitReaderDecoder.C:97 testAliHLTTPCDigitReaderDecoder.C:98 testAliHLTTPCDigitReaderDecoder.C:99 testAliHLTTPCDigitReaderDecoder.C:100 testAliHLTTPCDigitReaderDecoder.C:101 testAliHLTTPCDigitReaderDecoder.C:102 testAliHLTTPCDigitReaderDecoder.C:103 testAliHLTTPCDigitReaderDecoder.C:104 testAliHLTTPCDigitReaderDecoder.C:105 testAliHLTTPCDigitReaderDecoder.C:106 testAliHLTTPCDigitReaderDecoder.C:107 testAliHLTTPCDigitReaderDecoder.C:108 testAliHLTTPCDigitReaderDecoder.C:109 testAliHLTTPCDigitReaderDecoder.C:110 testAliHLTTPCDigitReaderDecoder.C:111 testAliHLTTPCDigitReaderDecoder.C:112 testAliHLTTPCDigitReaderDecoder.C:113 testAliHLTTPCDigitReaderDecoder.C:114 testAliHLTTPCDigitReaderDecoder.C:115 testAliHLTTPCDigitReaderDecoder.C:116 testAliHLTTPCDigitReaderDecoder.C:117 testAliHLTTPCDigitReaderDecoder.C:118 testAliHLTTPCDigitReaderDecoder.C:119 testAliHLTTPCDigitReaderDecoder.C:120 testAliHLTTPCDigitReaderDecoder.C:121 testAliHLTTPCDigitReaderDecoder.C:122 testAliHLTTPCDigitReaderDecoder.C:123 testAliHLTTPCDigitReaderDecoder.C:124 testAliHLTTPCDigitReaderDecoder.C:125 testAliHLTTPCDigitReaderDecoder.C:126 testAliHLTTPCDigitReaderDecoder.C:127 testAliHLTTPCDigitReaderDecoder.C:128 testAliHLTTPCDigitReaderDecoder.C:129 testAliHLTTPCDigitReaderDecoder.C:130 testAliHLTTPCDigitReaderDecoder.C:131 testAliHLTTPCDigitReaderDecoder.C:132 testAliHLTTPCDigitReaderDecoder.C:133 testAliHLTTPCDigitReaderDecoder.C:134 testAliHLTTPCDigitReaderDecoder.C:135 testAliHLTTPCDigitReaderDecoder.C:136 testAliHLTTPCDigitReaderDecoder.C:137 testAliHLTTPCDigitReaderDecoder.C:138 testAliHLTTPCDigitReaderDecoder.C:139 testAliHLTTPCDigitReaderDecoder.C:140 testAliHLTTPCDigitReaderDecoder.C:141 testAliHLTTPCDigitReaderDecoder.C:142 testAliHLTTPCDigitReaderDecoder.C:143 testAliHLTTPCDigitReaderDecoder.C:144 testAliHLTTPCDigitReaderDecoder.C:145 testAliHLTTPCDigitReaderDecoder.C:146 testAliHLTTPCDigitReaderDecoder.C:147 testAliHLTTPCDigitReaderDecoder.C:148 testAliHLTTPCDigitReaderDecoder.C:149 testAliHLTTPCDigitReaderDecoder.C:150 testAliHLTTPCDigitReaderDecoder.C:151 testAliHLTTPCDigitReaderDecoder.C:152 testAliHLTTPCDigitReaderDecoder.C:153 testAliHLTTPCDigitReaderDecoder.C:154 testAliHLTTPCDigitReaderDecoder.C:155 testAliHLTTPCDigitReaderDecoder.C:156 testAliHLTTPCDigitReaderDecoder.C:157 testAliHLTTPCDigitReaderDecoder.C:158 testAliHLTTPCDigitReaderDecoder.C:159 testAliHLTTPCDigitReaderDecoder.C:160 testAliHLTTPCDigitReaderDecoder.C:161 testAliHLTTPCDigitReaderDecoder.C:162 testAliHLTTPCDigitReaderDecoder.C:163 testAliHLTTPCDigitReaderDecoder.C:164 testAliHLTTPCDigitReaderDecoder.C:165 testAliHLTTPCDigitReaderDecoder.C:166 testAliHLTTPCDigitReaderDecoder.C:167 testAliHLTTPCDigitReaderDecoder.C:168 testAliHLTTPCDigitReaderDecoder.C:169 testAliHLTTPCDigitReaderDecoder.C:170 testAliHLTTPCDigitReaderDecoder.C:171 testAliHLTTPCDigitReaderDecoder.C:172 testAliHLTTPCDigitReaderDecoder.C:173 testAliHLTTPCDigitReaderDecoder.C:174 testAliHLTTPCDigitReaderDecoder.C:175 testAliHLTTPCDigitReaderDecoder.C:176 testAliHLTTPCDigitReaderDecoder.C:177 testAliHLTTPCDigitReaderDecoder.C:178 testAliHLTTPCDigitReaderDecoder.C:179 testAliHLTTPCDigitReaderDecoder.C:180 testAliHLTTPCDigitReaderDecoder.C:181 testAliHLTTPCDigitReaderDecoder.C:182 testAliHLTTPCDigitReaderDecoder.C:183 testAliHLTTPCDigitReaderDecoder.C:184 testAliHLTTPCDigitReaderDecoder.C:185 testAliHLTTPCDigitReaderDecoder.C:186 testAliHLTTPCDigitReaderDecoder.C:187 testAliHLTTPCDigitReaderDecoder.C:188 testAliHLTTPCDigitReaderDecoder.C:189 testAliHLTTPCDigitReaderDecoder.C:190 testAliHLTTPCDigitReaderDecoder.C:191 testAliHLTTPCDigitReaderDecoder.C:192 testAliHLTTPCDigitReaderDecoder.C:193 testAliHLTTPCDigitReaderDecoder.C:194 testAliHLTTPCDigitReaderDecoder.C:195 testAliHLTTPCDigitReaderDecoder.C:196 testAliHLTTPCDigitReaderDecoder.C:197 testAliHLTTPCDigitReaderDecoder.C:198 testAliHLTTPCDigitReaderDecoder.C:199 testAliHLTTPCDigitReaderDecoder.C:200 testAliHLTTPCDigitReaderDecoder.C:201 testAliHLTTPCDigitReaderDecoder.C:202 testAliHLTTPCDigitReaderDecoder.C:203 testAliHLTTPCDigitReaderDecoder.C:204 testAliHLTTPCDigitReaderDecoder.C:205 testAliHLTTPCDigitReaderDecoder.C:206 testAliHLTTPCDigitReaderDecoder.C:207 testAliHLTTPCDigitReaderDecoder.C:208 testAliHLTTPCDigitReaderDecoder.C:209 testAliHLTTPCDigitReaderDecoder.C:210 testAliHLTTPCDigitReaderDecoder.C:211 testAliHLTTPCDigitReaderDecoder.C:212 testAliHLTTPCDigitReaderDecoder.C:213 testAliHLTTPCDigitReaderDecoder.C:214 testAliHLTTPCDigitReaderDecoder.C:215 testAliHLTTPCDigitReaderDecoder.C:216 testAliHLTTPCDigitReaderDecoder.C:217 testAliHLTTPCDigitReaderDecoder.C:218 testAliHLTTPCDigitReaderDecoder.C:219 testAliHLTTPCDigitReaderDecoder.C:220 testAliHLTTPCDigitReaderDecoder.C:221 testAliHLTTPCDigitReaderDecoder.C:222 testAliHLTTPCDigitReaderDecoder.C:223