// $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 testAliHLTTPCDigitReaderPacked.C
@author Matthias Richter
@date
@brief Test macro/program for the AliHLTTPCDigitReaderPacked
*/
#ifndef __CINT__
#include "TSystem.h"
#include "AliHLTSystem.h"
#include "AliRawDataHeader.h"
#include "AliHLTAltroGenerator.h"
#include "AliHLTTPCDigitReaderPacked.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 testAliHLTTPCDigitReaderPacked()
{
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) {
AliHLTTPCDigitReaderPacked decoder;
decoder.SetOldRCUFormat(true);
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) {
AliHLTTPCDigitReaderPacked decoder;
decoder.SetOldRCUFormat(true);
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();
AliHLTTPCDigitReaderPacked 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=testAliHLTTPCDigitReaderPacked())<0) {
cout << "missmatch in cycle no " << i << endl;
return iResult;
}
}
cout << "checking: "<< iCount << " encoding cycle(s) successfully tested" << endl;
return 0;
}
testAliHLTTPCDigitReaderPacked.C:1 testAliHLTTPCDigitReaderPacked.C:2 testAliHLTTPCDigitReaderPacked.C:3 testAliHLTTPCDigitReaderPacked.C:4 testAliHLTTPCDigitReaderPacked.C:5 testAliHLTTPCDigitReaderPacked.C:6 testAliHLTTPCDigitReaderPacked.C:7 testAliHLTTPCDigitReaderPacked.C:8 testAliHLTTPCDigitReaderPacked.C:9 testAliHLTTPCDigitReaderPacked.C:10 testAliHLTTPCDigitReaderPacked.C:11 testAliHLTTPCDigitReaderPacked.C:12 testAliHLTTPCDigitReaderPacked.C:13 testAliHLTTPCDigitReaderPacked.C:14 testAliHLTTPCDigitReaderPacked.C:15 testAliHLTTPCDigitReaderPacked.C:16 testAliHLTTPCDigitReaderPacked.C:17 testAliHLTTPCDigitReaderPacked.C:18 testAliHLTTPCDigitReaderPacked.C:19 testAliHLTTPCDigitReaderPacked.C:20 testAliHLTTPCDigitReaderPacked.C:21 testAliHLTTPCDigitReaderPacked.C:22 testAliHLTTPCDigitReaderPacked.C:23 testAliHLTTPCDigitReaderPacked.C:24 testAliHLTTPCDigitReaderPacked.C:25 testAliHLTTPCDigitReaderPacked.C:26 testAliHLTTPCDigitReaderPacked.C:27 testAliHLTTPCDigitReaderPacked.C:28 testAliHLTTPCDigitReaderPacked.C:29 testAliHLTTPCDigitReaderPacked.C:30 testAliHLTTPCDigitReaderPacked.C:31 testAliHLTTPCDigitReaderPacked.C:32 testAliHLTTPCDigitReaderPacked.C:33 testAliHLTTPCDigitReaderPacked.C:34 testAliHLTTPCDigitReaderPacked.C:35 testAliHLTTPCDigitReaderPacked.C:36 testAliHLTTPCDigitReaderPacked.C:37 testAliHLTTPCDigitReaderPacked.C:38 testAliHLTTPCDigitReaderPacked.C:39 testAliHLTTPCDigitReaderPacked.C:40 testAliHLTTPCDigitReaderPacked.C:41 testAliHLTTPCDigitReaderPacked.C:42 testAliHLTTPCDigitReaderPacked.C:43 testAliHLTTPCDigitReaderPacked.C:44 testAliHLTTPCDigitReaderPacked.C:45 testAliHLTTPCDigitReaderPacked.C:46 testAliHLTTPCDigitReaderPacked.C:47 testAliHLTTPCDigitReaderPacked.C:48 testAliHLTTPCDigitReaderPacked.C:49 testAliHLTTPCDigitReaderPacked.C:50 testAliHLTTPCDigitReaderPacked.C:51 testAliHLTTPCDigitReaderPacked.C:52 testAliHLTTPCDigitReaderPacked.C:53 testAliHLTTPCDigitReaderPacked.C:54 testAliHLTTPCDigitReaderPacked.C:55 testAliHLTTPCDigitReaderPacked.C:56 testAliHLTTPCDigitReaderPacked.C:57 testAliHLTTPCDigitReaderPacked.C:58 testAliHLTTPCDigitReaderPacked.C:59 testAliHLTTPCDigitReaderPacked.C:60 testAliHLTTPCDigitReaderPacked.C:61 testAliHLTTPCDigitReaderPacked.C:62 testAliHLTTPCDigitReaderPacked.C:63 testAliHLTTPCDigitReaderPacked.C:64 testAliHLTTPCDigitReaderPacked.C:65 testAliHLTTPCDigitReaderPacked.C:66 testAliHLTTPCDigitReaderPacked.C:67 testAliHLTTPCDigitReaderPacked.C:68 testAliHLTTPCDigitReaderPacked.C:69 testAliHLTTPCDigitReaderPacked.C:70 testAliHLTTPCDigitReaderPacked.C:71 testAliHLTTPCDigitReaderPacked.C:72 testAliHLTTPCDigitReaderPacked.C:73 testAliHLTTPCDigitReaderPacked.C:74 testAliHLTTPCDigitReaderPacked.C:75 testAliHLTTPCDigitReaderPacked.C:76 testAliHLTTPCDigitReaderPacked.C:77 testAliHLTTPCDigitReaderPacked.C:78 testAliHLTTPCDigitReaderPacked.C:79 testAliHLTTPCDigitReaderPacked.C:80 testAliHLTTPCDigitReaderPacked.C:81 testAliHLTTPCDigitReaderPacked.C:82 testAliHLTTPCDigitReaderPacked.C:83 testAliHLTTPCDigitReaderPacked.C:84 testAliHLTTPCDigitReaderPacked.C:85 testAliHLTTPCDigitReaderPacked.C:86 testAliHLTTPCDigitReaderPacked.C:87 testAliHLTTPCDigitReaderPacked.C:88 testAliHLTTPCDigitReaderPacked.C:89 testAliHLTTPCDigitReaderPacked.C:90 testAliHLTTPCDigitReaderPacked.C:91 testAliHLTTPCDigitReaderPacked.C:92 testAliHLTTPCDigitReaderPacked.C:93 testAliHLTTPCDigitReaderPacked.C:94 testAliHLTTPCDigitReaderPacked.C:95 testAliHLTTPCDigitReaderPacked.C:96 testAliHLTTPCDigitReaderPacked.C:97 testAliHLTTPCDigitReaderPacked.C:98 testAliHLTTPCDigitReaderPacked.C:99 testAliHLTTPCDigitReaderPacked.C:100 testAliHLTTPCDigitReaderPacked.C:101 testAliHLTTPCDigitReaderPacked.C:102 testAliHLTTPCDigitReaderPacked.C:103 testAliHLTTPCDigitReaderPacked.C:104 testAliHLTTPCDigitReaderPacked.C:105 testAliHLTTPCDigitReaderPacked.C:106 testAliHLTTPCDigitReaderPacked.C:107 testAliHLTTPCDigitReaderPacked.C:108 testAliHLTTPCDigitReaderPacked.C:109 testAliHLTTPCDigitReaderPacked.C:110 testAliHLTTPCDigitReaderPacked.C:111 testAliHLTTPCDigitReaderPacked.C:112 testAliHLTTPCDigitReaderPacked.C:113 testAliHLTTPCDigitReaderPacked.C:114 testAliHLTTPCDigitReaderPacked.C:115 testAliHLTTPCDigitReaderPacked.C:116 testAliHLTTPCDigitReaderPacked.C:117 testAliHLTTPCDigitReaderPacked.C:118 testAliHLTTPCDigitReaderPacked.C:119 testAliHLTTPCDigitReaderPacked.C:120 testAliHLTTPCDigitReaderPacked.C:121 testAliHLTTPCDigitReaderPacked.C:122 testAliHLTTPCDigitReaderPacked.C:123 testAliHLTTPCDigitReaderPacked.C:124 testAliHLTTPCDigitReaderPacked.C:125 testAliHLTTPCDigitReaderPacked.C:126 testAliHLTTPCDigitReaderPacked.C:127 testAliHLTTPCDigitReaderPacked.C:128 testAliHLTTPCDigitReaderPacked.C:129 testAliHLTTPCDigitReaderPacked.C:130 testAliHLTTPCDigitReaderPacked.C:131 testAliHLTTPCDigitReaderPacked.C:132 testAliHLTTPCDigitReaderPacked.C:133 testAliHLTTPCDigitReaderPacked.C:134 testAliHLTTPCDigitReaderPacked.C:135 testAliHLTTPCDigitReaderPacked.C:136 testAliHLTTPCDigitReaderPacked.C:137 testAliHLTTPCDigitReaderPacked.C:138 testAliHLTTPCDigitReaderPacked.C:139 testAliHLTTPCDigitReaderPacked.C:140 testAliHLTTPCDigitReaderPacked.C:141 testAliHLTTPCDigitReaderPacked.C:142 testAliHLTTPCDigitReaderPacked.C:143 testAliHLTTPCDigitReaderPacked.C:144 testAliHLTTPCDigitReaderPacked.C:145 testAliHLTTPCDigitReaderPacked.C:146 testAliHLTTPCDigitReaderPacked.C:147 testAliHLTTPCDigitReaderPacked.C:148 testAliHLTTPCDigitReaderPacked.C:149 testAliHLTTPCDigitReaderPacked.C:150 testAliHLTTPCDigitReaderPacked.C:151 testAliHLTTPCDigitReaderPacked.C:152 testAliHLTTPCDigitReaderPacked.C:153 testAliHLTTPCDigitReaderPacked.C:154 testAliHLTTPCDigitReaderPacked.C:155 testAliHLTTPCDigitReaderPacked.C:156 testAliHLTTPCDigitReaderPacked.C:157 testAliHLTTPCDigitReaderPacked.C:158 testAliHLTTPCDigitReaderPacked.C:159 testAliHLTTPCDigitReaderPacked.C:160 testAliHLTTPCDigitReaderPacked.C:161 testAliHLTTPCDigitReaderPacked.C:162 testAliHLTTPCDigitReaderPacked.C:163 testAliHLTTPCDigitReaderPacked.C:164 testAliHLTTPCDigitReaderPacked.C:165 testAliHLTTPCDigitReaderPacked.C:166 testAliHLTTPCDigitReaderPacked.C:167 testAliHLTTPCDigitReaderPacked.C:168 testAliHLTTPCDigitReaderPacked.C:169 testAliHLTTPCDigitReaderPacked.C:170 testAliHLTTPCDigitReaderPacked.C:171 testAliHLTTPCDigitReaderPacked.C:172 testAliHLTTPCDigitReaderPacked.C:173 testAliHLTTPCDigitReaderPacked.C:174 testAliHLTTPCDigitReaderPacked.C:175 testAliHLTTPCDigitReaderPacked.C:176 testAliHLTTPCDigitReaderPacked.C:177 testAliHLTTPCDigitReaderPacked.C:178 testAliHLTTPCDigitReaderPacked.C:179 testAliHLTTPCDigitReaderPacked.C:180 testAliHLTTPCDigitReaderPacked.C:181 testAliHLTTPCDigitReaderPacked.C:182 testAliHLTTPCDigitReaderPacked.C:183 testAliHLTTPCDigitReaderPacked.C:184 testAliHLTTPCDigitReaderPacked.C:185 testAliHLTTPCDigitReaderPacked.C:186 testAliHLTTPCDigitReaderPacked.C:187 testAliHLTTPCDigitReaderPacked.C:188 testAliHLTTPCDigitReaderPacked.C:189 testAliHLTTPCDigitReaderPacked.C:190 testAliHLTTPCDigitReaderPacked.C:191 testAliHLTTPCDigitReaderPacked.C:192 testAliHLTTPCDigitReaderPacked.C:193 testAliHLTTPCDigitReaderPacked.C:194 testAliHLTTPCDigitReaderPacked.C:195 testAliHLTTPCDigitReaderPacked.C:196 testAliHLTTPCDigitReaderPacked.C:197 testAliHLTTPCDigitReaderPacked.C:198 testAliHLTTPCDigitReaderPacked.C:199 testAliHLTTPCDigitReaderPacked.C:200 testAliHLTTPCDigitReaderPacked.C:201 testAliHLTTPCDigitReaderPacked.C:202 testAliHLTTPCDigitReaderPacked.C:203 testAliHLTTPCDigitReaderPacked.C:204 testAliHLTTPCDigitReaderPacked.C:205 testAliHLTTPCDigitReaderPacked.C:206 testAliHLTTPCDigitReaderPacked.C:207 testAliHLTTPCDigitReaderPacked.C:208 testAliHLTTPCDigitReaderPacked.C:209 testAliHLTTPCDigitReaderPacked.C:210 testAliHLTTPCDigitReaderPacked.C:211 testAliHLTTPCDigitReaderPacked.C:212 testAliHLTTPCDigitReaderPacked.C:213 testAliHLTTPCDigitReaderPacked.C:214 testAliHLTTPCDigitReaderPacked.C:215 testAliHLTTPCDigitReaderPacked.C:216 testAliHLTTPCDigitReaderPacked.C:217 testAliHLTTPCDigitReaderPacked.C:218 testAliHLTTPCDigitReaderPacked.C:219 testAliHLTTPCDigitReaderPacked.C:220 testAliHLTTPCDigitReaderPacked.C:221 testAliHLTTPCDigitReaderPacked.C:222 testAliHLTTPCDigitReaderPacked.C:223 testAliHLTTPCDigitReaderPacked.C:224 testAliHLTTPCDigitReaderPacked.C:225