// $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 testAliHLTTPCMapping.C
@author Matthias Richter
@date
@brief Test macro/program for the AliHLTTPCMapping class
*/
#ifndef __CINT__
#include "TSystem.h"
#include "AliHLTTPCMapping.h"
#include "AliHLTTPCTransform.h"
#include <ostream>
#include <istream>
#endif //__CINT__
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
//
// configuration of the test program
//
// printouts or not
const bool bVerbose=true;
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
class AliHLTTPCMapping;
bool compareMapping(int patch, AliHLTTPCMapping* mapper);
int testAliHLTTPCMapping()
{
int iResult=0;
#ifdef __CINT__
gSystem->Load("libAliHLTUtil.so");
gSystem->Load("libAliHLTRCU.so");
gSystem->Load("libAliHLTTPC.so");
#endif
//AliHLTSystem gHLT;
const int nofMappers=6;
AliHLTTPCMapping* mappers[nofMappers];
AliHLTTPCMapping* mappers2[nofMappers];
for (int i=0; i<nofMappers; i++) {
mappers[i]=NULL;
mappers2[i]=NULL;
}
// create mappers
for (int i=0; i<nofMappers; i++) {
mappers[i]=new AliHLTTPCMapping(i);
}
// check mappers
for (int i=0; i<nofMappers; i++) {
if (!compareMapping(i, mappers[i])) {
iResult=-1;
}
}
cout << "checking: 1st instance:";
if (iResult<0)
cout << " failed" << endl;
else {
cout << " ok" << endl;
// create 2nd instance
for (int i=0; i<nofMappers; i++) {
mappers2[i]=new AliHLTTPCMapping(i);
}
// check 2nd instance
for (int i=0; i<nofMappers; i++) {
if (!compareMapping(i, mappers2[i])) {
iResult=-1;
}
}
cout << "checking: 2nd instance:";
if (iResult<0)
cout << " failed" << endl;
else
cout << " ok" << endl;
}
// delete mappers
for (int i=0; i<nofMappers; i++) {
if (mappers[i]) delete mappers[i];
if (mappers2[i]) delete mappers2[i];
}
return iResult;
}
bool compareMapping(int patch, AliHLTTPCMapping* mapper)
{
bool result=true;
if (!mapper) return false;
ifstream inFile;
TString filename;
const char* basePath=getenv("ALICE_ROOT");
if (basePath) {
filename.Form("%s/TPC/mapping/Patch%d.data", basePath,patch);
}
inFile.open(filename.Data());
if (!inFile) {
cout << "Unable to open file: " << filename << endl;
return false;
}
UInt_t nHWAdd=0;
UInt_t maxHWAdd=0;
UInt_t hwAdd=0;
UInt_t row=0;
UInt_t pad=0;
Int_t dummy=0;
Int_t rowOffset=0;
result=AliHLTTPCTransform::Slice2Sector(0, AliHLTTPCTransform::GetFirstRow(patch), dummy, rowOffset);
if(inFile >> nHWAdd && inFile >> maxHWAdd) {
while(result && inFile>>hwAdd && inFile>>row && inFile>>pad){
row-=rowOffset;
if (row!=mapper->GetRow(hwAdd) || pad!=mapper->GetPad(hwAdd)) {
cout << "channel to row/pad mapping mismatch at channel " << hwAdd << ": expected " << row << "/" << pad << " got " << mapper->GetRow(hwAdd) << "/" << mapper->GetPad(hwAdd) << endl;
result=false;
break;
}
if (hwAdd!=mapper->GetHwAddress(row, pad)) {
cout << "row/pad to channel mapping mismatch for " << row << "/" << pad << ": expected channel:" << hwAdd << " got " << mapper->GetHwAddress(row,pad) << endl;
result=false;
break;
}
}
}
inFile.close();
return result;
}
int main(int /*argc*/, const char** /*argv*/)
{
return testAliHLTTPCMapping();
}
testAliHLTTPCMapping.C:10 testAliHLTTPCMapping.C:11 testAliHLTTPCMapping.C:12 testAliHLTTPCMapping.C:13 testAliHLTTPCMapping.C:14 testAliHLTTPCMapping.C:15 testAliHLTTPCMapping.C:16 testAliHLTTPCMapping.C:17 testAliHLTTPCMapping.C:18 testAliHLTTPCMapping.C:19 testAliHLTTPCMapping.C:20 testAliHLTTPCMapping.C:21 testAliHLTTPCMapping.C:22 testAliHLTTPCMapping.C:23 testAliHLTTPCMapping.C:24 testAliHLTTPCMapping.C:25 testAliHLTTPCMapping.C:26 testAliHLTTPCMapping.C:27 testAliHLTTPCMapping.C:28 testAliHLTTPCMapping.C:29 testAliHLTTPCMapping.C:30 testAliHLTTPCMapping.C:31 testAliHLTTPCMapping.C:32 testAliHLTTPCMapping.C:33 testAliHLTTPCMapping.C:34 testAliHLTTPCMapping.C:35 testAliHLTTPCMapping.C:36 testAliHLTTPCMapping.C:37 testAliHLTTPCMapping.C:38 testAliHLTTPCMapping.C:39 testAliHLTTPCMapping.C:40 testAliHLTTPCMapping.C:41 testAliHLTTPCMapping.C:42 testAliHLTTPCMapping.C:43 testAliHLTTPCMapping.C:44 testAliHLTTPCMapping.C:45 testAliHLTTPCMapping.C:46 testAliHLTTPCMapping.C:47 testAliHLTTPCMapping.C:48 testAliHLTTPCMapping.C:49 testAliHLTTPCMapping.C:50 testAliHLTTPCMapping.C:51 testAliHLTTPCMapping.C:52 testAliHLTTPCMapping.C:53 testAliHLTTPCMapping.C:54 testAliHLTTPCMapping.C:55 testAliHLTTPCMapping.C:56 testAliHLTTPCMapping.C:57 testAliHLTTPCMapping.C:58 testAliHLTTPCMapping.C:59 testAliHLTTPCMapping.C:60 testAliHLTTPCMapping.C:61 testAliHLTTPCMapping.C:62 testAliHLTTPCMapping.C:63 testAliHLTTPCMapping.C:64 testAliHLTTPCMapping.C:65 testAliHLTTPCMapping.C:66 testAliHLTTPCMapping.C:67 testAliHLTTPCMapping.C:68 testAliHLTTPCMapping.C:69 testAliHLTTPCMapping.C:70 testAliHLTTPCMapping.C:71 testAliHLTTPCMapping.C:72 testAliHLTTPCMapping.C:73 testAliHLTTPCMapping.C:74 testAliHLTTPCMapping.C:75 testAliHLTTPCMapping.C:76 testAliHLTTPCMapping.C:77 testAliHLTTPCMapping.C:78 testAliHLTTPCMapping.C:79 testAliHLTTPCMapping.C:80 testAliHLTTPCMapping.C:81 testAliHLTTPCMapping.C:82 testAliHLTTPCMapping.C:83 testAliHLTTPCMapping.C:84 testAliHLTTPCMapping.C:85 testAliHLTTPCMapping.C:86 testAliHLTTPCMapping.C:87 testAliHLTTPCMapping.C:88 testAliHLTTPCMapping.C:89 testAliHLTTPCMapping.C:90 testAliHLTTPCMapping.C:91 testAliHLTTPCMapping.C:92 testAliHLTTPCMapping.C:93 testAliHLTTPCMapping.C:94 testAliHLTTPCMapping.C:95 testAliHLTTPCMapping.C:96 testAliHLTTPCMapping.C:97 testAliHLTTPCMapping.C:98 testAliHLTTPCMapping.C:99 testAliHLTTPCMapping.C:100 testAliHLTTPCMapping.C:101 testAliHLTTPCMapping.C:102 testAliHLTTPCMapping.C:103 testAliHLTTPCMapping.C:104 testAliHLTTPCMapping.C:105 testAliHLTTPCMapping.C:106 testAliHLTTPCMapping.C:107 testAliHLTTPCMapping.C:108 testAliHLTTPCMapping.C:109 testAliHLTTPCMapping.C:110 testAliHLTTPCMapping.C:111 testAliHLTTPCMapping.C:112 testAliHLTTPCMapping.C:113 testAliHLTTPCMapping.C:114 testAliHLTTPCMapping.C:115 testAliHLTTPCMapping.C:116 testAliHLTTPCMapping.C:117 testAliHLTTPCMapping.C:118 testAliHLTTPCMapping.C:119 testAliHLTTPCMapping.C:120 testAliHLTTPCMapping.C:121 testAliHLTTPCMapping.C:122 testAliHLTTPCMapping.C:123 testAliHLTTPCMapping.C:124 testAliHLTTPCMapping.C:125 testAliHLTTPCMapping.C:126 testAliHLTTPCMapping.C:127 testAliHLTTPCMapping.C:128 testAliHLTTPCMapping.C:129 testAliHLTTPCMapping.C:130 testAliHLTTPCMapping.C:131 testAliHLTTPCMapping.C:132 testAliHLTTPCMapping.C:133 testAliHLTTPCMapping.C:134 testAliHLTTPCMapping.C:135 testAliHLTTPCMapping.C:136 testAliHLTTPCMapping.C:137 testAliHLTTPCMapping.C:138 testAliHLTTPCMapping.C:139 testAliHLTTPCMapping.C:140 testAliHLTTPCMapping.C:141 testAliHLTTPCMapping.C:142 testAliHLTTPCMapping.C:143 testAliHLTTPCMapping.C:144 testAliHLTTPCMapping.C:145 testAliHLTTPCMapping.C:146 testAliHLTTPCMapping.C:147 testAliHLTTPCMapping.C:148 testAliHLTTPCMapping.C:149 testAliHLTTPCMapping.C:150 testAliHLTTPCMapping.C:151 testAliHLTTPCMapping.C:152 testAliHLTTPCMapping.C:153 testAliHLTTPCMapping.C:154 testAliHLTTPCMapping.C:155 testAliHLTTPCMapping.C:156 testAliHLTTPCMapping.C:157 testAliHLTTPCMapping.C:158 testAliHLTTPCMapping.C:159