#include "AliTPCAltroMapping.h"
#include "AliLog.h"
#include <Riostream.h>
ClassImp(AliTPCAltroMapping)
AliTPCAltroMapping::AliTPCAltroMapping():
AliAltroMapping(),
fMinPadRow(0),
fMaxPadRow(0),
fMaxPad(0),
fInvMapping(NULL)
{
}
AliTPCAltroMapping::AliTPCAltroMapping(const char *mappingFile):
AliAltroMapping(mappingFile),
fMinPadRow(0),
fMaxPadRow(0),
fMaxPad(0),
fInvMapping(NULL)
{
ReadMapping();
CloseMappingFile();
}
AliTPCAltroMapping::~AliTPCAltroMapping()
{
if (fInvMapping) delete [] fInvMapping;
}
Bool_t AliTPCAltroMapping::ReadMapping()
{
if (!fIn) {
AliFatal("Mapping file has not been opened !");
return kFALSE;
}
fMinPadRow = 0x7fffffff;
fMaxPadRow = 0;
fMaxPad = 0;
fMappingSize = 2*(fMaxHWAddress+1);
fMapping = new Short_t[fMappingSize];
for (Int_t i = 0; i <= fMaxHWAddress; i++) {
fMapping[2*i] = fMapping[2*i+1] = -1;
}
for(Int_t i = 0; i < fNumberOfChannels ; i++) {
Int_t hwAddress;
if (!(*fIn >> hwAddress)) {
AliFatal("Syntax of the mapping file is wrong !");
return kFALSE;
}
if (hwAddress > fMaxHWAddress) {
AliFatal(Form("Hardware (ALTRO) adress (%d) outside the range (0 -> %d) !",hwAddress,fMaxHWAddress));
return kFALSE;
}
Int_t padrow,pad;
if (!(*fIn >> padrow >> pad)) {
AliFatal("Syntax of the mapping file is wrong !");
return kFALSE;
}
fMapping[2*hwAddress] = padrow;
fMapping[2*hwAddress+1] = pad;
if (padrow > fMaxPadRow) fMaxPadRow = padrow;
if (padrow < fMinPadRow) fMinPadRow = padrow;
if (pad > fMaxPad) fMaxPad = pad;
}
return kTRUE;
}
Bool_t AliTPCAltroMapping::CreateInvMapping()
{
if (fInvMapping) return kTRUE;
if (!fMapping) {
AliWarning("Mapping array was not initalized correctly ! Impossible to create the inverse mapping !");
return kFALSE;
}
Int_t nRows = fMaxPadRow - fMinPadRow + 1;
Int_t nPads = fMaxPad + 1;
Int_t invMappingSize = nRows*nPads;
fInvMapping = new Short_t[invMappingSize];
for (Int_t i = 0; i <= (fMaxPadRow - fMinPadRow); i++) {
for (Int_t j = 0; j <= fMaxPad; j++) fInvMapping[nPads*i+j] = -1;
}
for(Int_t i = 0; i <= fMaxHWAddress; i++) {
Int_t padrow = fMapping[2*i];
Int_t pad = fMapping[2*i+1];
if(padrow != -1 && pad != -1)
fInvMapping[nPads*(padrow-fMinPadRow)+pad] = i;
}
return kTRUE;
}
Int_t AliTPCAltroMapping::GetHWAddress(Int_t padrow, Int_t pad, Int_t )
{
if (!fInvMapping) {
if (!CreateInvMapping()) return -1;
}
if (padrow < fMinPadRow || padrow > fMaxPadRow) {
AliWarning(Form("Index of pad-row (%d) outside the range (%d -> %d) !",padrow,fMinPadRow,fMaxPadRow));
return -1;
}
if (pad > fMaxPad) {
AliWarning(Form("Index of pad (%d) outside the range (0 -> %d) !",pad,fMaxPad));
return -1;
}
Int_t hwAddress = fInvMapping[(fMaxPad+1)*(padrow-fMinPadRow)+pad];
if (hwAddress == -1)
AliWarning(Form("Hardware (ALTRO) adress is not defined for these pad-row (%d) and pad (%d) !",padrow,pad));
return hwAddress;
}
Int_t AliTPCAltroMapping::GetPadRow(Int_t hwAddress) const
{
if (!fMapping) {
AliWarning("Mapping array was not initalized correctly !");
return -1;
}
if (hwAddress > fMaxHWAddress) {
AliWarning(Form("Hardware (ALTRO) adress (%d) outside the range (0 -> %d) !",hwAddress,fMaxHWAddress));
return -1;
}
Int_t padrow = fMapping[2*hwAddress];
if (padrow == -1)
AliWarning(Form("Hardware (ALTRO) adress (%d) is not defined !",hwAddress));
return padrow;
}
Int_t AliTPCAltroMapping::GetPad(Int_t hwAddress) const
{
if (!fMapping) {
AliWarning("Mapping array was not initalized correctly !");
return -1;
}
if (hwAddress > fMaxHWAddress) {
AliWarning(Form("Hardware (ALTRO) adress (%d) outside the range (0 -> %d) !",hwAddress,fMaxHWAddress));
return -1;
}
Int_t pad = fMapping[2*hwAddress+1];
if (pad == -1)
AliWarning(Form("Hardware (ALTRO) adress (%d) is not defined !",hwAddress));
return pad;
}
Int_t AliTPCAltroMapping::GetSector(Int_t ) const
{
AliWarning("Sector index is not contained in the TPC altro mapping !");
return -1;
}
AliTPCAltroMapping.cxx:10 AliTPCAltroMapping.cxx:11 AliTPCAltroMapping.cxx:12 AliTPCAltroMapping.cxx:13 AliTPCAltroMapping.cxx:14 AliTPCAltroMapping.cxx:15 AliTPCAltroMapping.cxx:16 AliTPCAltroMapping.cxx:17 AliTPCAltroMapping.cxx:18 AliTPCAltroMapping.cxx:19 AliTPCAltroMapping.cxx:20 AliTPCAltroMapping.cxx:21 AliTPCAltroMapping.cxx:22 AliTPCAltroMapping.cxx:23 AliTPCAltroMapping.cxx:24 AliTPCAltroMapping.cxx:25 AliTPCAltroMapping.cxx:26 AliTPCAltroMapping.cxx:27 AliTPCAltroMapping.cxx:28 AliTPCAltroMapping.cxx:29 AliTPCAltroMapping.cxx:30 AliTPCAltroMapping.cxx:31 AliTPCAltroMapping.cxx:32 AliTPCAltroMapping.cxx:33 AliTPCAltroMapping.cxx:34 AliTPCAltroMapping.cxx:35 AliTPCAltroMapping.cxx:36 AliTPCAltroMapping.cxx:37 AliTPCAltroMapping.cxx:38 AliTPCAltroMapping.cxx:39 AliTPCAltroMapping.cxx:40 AliTPCAltroMapping.cxx:41 AliTPCAltroMapping.cxx:42 AliTPCAltroMapping.cxx:43 AliTPCAltroMapping.cxx:44 AliTPCAltroMapping.cxx:45 AliTPCAltroMapping.cxx:46 AliTPCAltroMapping.cxx:47 AliTPCAltroMapping.cxx:48 AliTPCAltroMapping.cxx:49 AliTPCAltroMapping.cxx:50 AliTPCAltroMapping.cxx:51 AliTPCAltroMapping.cxx:52 AliTPCAltroMapping.cxx:53 AliTPCAltroMapping.cxx:54 AliTPCAltroMapping.cxx:55 AliTPCAltroMapping.cxx:56 AliTPCAltroMapping.cxx:57 AliTPCAltroMapping.cxx:58 AliTPCAltroMapping.cxx:59 AliTPCAltroMapping.cxx:60 AliTPCAltroMapping.cxx:61 AliTPCAltroMapping.cxx:62 AliTPCAltroMapping.cxx:63 AliTPCAltroMapping.cxx:64 AliTPCAltroMapping.cxx:65 AliTPCAltroMapping.cxx:66 AliTPCAltroMapping.cxx:67 AliTPCAltroMapping.cxx:68 AliTPCAltroMapping.cxx:69 AliTPCAltroMapping.cxx:70 AliTPCAltroMapping.cxx:71 AliTPCAltroMapping.cxx:72 AliTPCAltroMapping.cxx:73 AliTPCAltroMapping.cxx:74 AliTPCAltroMapping.cxx:75 AliTPCAltroMapping.cxx:76 AliTPCAltroMapping.cxx:77 AliTPCAltroMapping.cxx:78 AliTPCAltroMapping.cxx:79 AliTPCAltroMapping.cxx:80 AliTPCAltroMapping.cxx:81 AliTPCAltroMapping.cxx:82 AliTPCAltroMapping.cxx:83 AliTPCAltroMapping.cxx:84 AliTPCAltroMapping.cxx:85 AliTPCAltroMapping.cxx:86 AliTPCAltroMapping.cxx:87 AliTPCAltroMapping.cxx:88 AliTPCAltroMapping.cxx:89 AliTPCAltroMapping.cxx:90 AliTPCAltroMapping.cxx:91 AliTPCAltroMapping.cxx:92 AliTPCAltroMapping.cxx:93 AliTPCAltroMapping.cxx:94 AliTPCAltroMapping.cxx:95 AliTPCAltroMapping.cxx:96 AliTPCAltroMapping.cxx:97 AliTPCAltroMapping.cxx:98 AliTPCAltroMapping.cxx:99 AliTPCAltroMapping.cxx:100 AliTPCAltroMapping.cxx:101 AliTPCAltroMapping.cxx:102 AliTPCAltroMapping.cxx:103 AliTPCAltroMapping.cxx:104 AliTPCAltroMapping.cxx:105 AliTPCAltroMapping.cxx:106 AliTPCAltroMapping.cxx:107 AliTPCAltroMapping.cxx:108 AliTPCAltroMapping.cxx:109 AliTPCAltroMapping.cxx:110 AliTPCAltroMapping.cxx:111 AliTPCAltroMapping.cxx:112 AliTPCAltroMapping.cxx:113 AliTPCAltroMapping.cxx:114 AliTPCAltroMapping.cxx:115 AliTPCAltroMapping.cxx:116 AliTPCAltroMapping.cxx:117 AliTPCAltroMapping.cxx:118 AliTPCAltroMapping.cxx:119 AliTPCAltroMapping.cxx:120 AliTPCAltroMapping.cxx:121 AliTPCAltroMapping.cxx:122 AliTPCAltroMapping.cxx:123 AliTPCAltroMapping.cxx:124 AliTPCAltroMapping.cxx:125 AliTPCAltroMapping.cxx:126 AliTPCAltroMapping.cxx:127 AliTPCAltroMapping.cxx:128 AliTPCAltroMapping.cxx:129 AliTPCAltroMapping.cxx:130 AliTPCAltroMapping.cxx:131 AliTPCAltroMapping.cxx:132 AliTPCAltroMapping.cxx:133 AliTPCAltroMapping.cxx:134 AliTPCAltroMapping.cxx:135 AliTPCAltroMapping.cxx:136 AliTPCAltroMapping.cxx:137 AliTPCAltroMapping.cxx:138 AliTPCAltroMapping.cxx:139 AliTPCAltroMapping.cxx:140 AliTPCAltroMapping.cxx:141 AliTPCAltroMapping.cxx:142 AliTPCAltroMapping.cxx:143 AliTPCAltroMapping.cxx:144 AliTPCAltroMapping.cxx:145 AliTPCAltroMapping.cxx:146 AliTPCAltroMapping.cxx:147 AliTPCAltroMapping.cxx:148 AliTPCAltroMapping.cxx:149 AliTPCAltroMapping.cxx:150 AliTPCAltroMapping.cxx:151 AliTPCAltroMapping.cxx:152 AliTPCAltroMapping.cxx:153 AliTPCAltroMapping.cxx:154 AliTPCAltroMapping.cxx:155 AliTPCAltroMapping.cxx:156 AliTPCAltroMapping.cxx:157 AliTPCAltroMapping.cxx:158 AliTPCAltroMapping.cxx:159 AliTPCAltroMapping.cxx:160 AliTPCAltroMapping.cxx:161 AliTPCAltroMapping.cxx:162 AliTPCAltroMapping.cxx:163 AliTPCAltroMapping.cxx:164 AliTPCAltroMapping.cxx:165 AliTPCAltroMapping.cxx:166 AliTPCAltroMapping.cxx:167 AliTPCAltroMapping.cxx:168 AliTPCAltroMapping.cxx:169 AliTPCAltroMapping.cxx:170 AliTPCAltroMapping.cxx:171 AliTPCAltroMapping.cxx:172 AliTPCAltroMapping.cxx:173 AliTPCAltroMapping.cxx:174 AliTPCAltroMapping.cxx:175 AliTPCAltroMapping.cxx:176 AliTPCAltroMapping.cxx:177 AliTPCAltroMapping.cxx:178 AliTPCAltroMapping.cxx:179 AliTPCAltroMapping.cxx:180 AliTPCAltroMapping.cxx:181 AliTPCAltroMapping.cxx:182 AliTPCAltroMapping.cxx:183 AliTPCAltroMapping.cxx:184 AliTPCAltroMapping.cxx:185 AliTPCAltroMapping.cxx:186 AliTPCAltroMapping.cxx:187 AliTPCAltroMapping.cxx:188 AliTPCAltroMapping.cxx:189 AliTPCAltroMapping.cxx:190 AliTPCAltroMapping.cxx:191 AliTPCAltroMapping.cxx:192 AliTPCAltroMapping.cxx:193 AliTPCAltroMapping.cxx:194 AliTPCAltroMapping.cxx:195 AliTPCAltroMapping.cxx:196 AliTPCAltroMapping.cxx:197 AliTPCAltroMapping.cxx:198 AliTPCAltroMapping.cxx:199 AliTPCAltroMapping.cxx:200 AliTPCAltroMapping.cxx:201 AliTPCAltroMapping.cxx:202 AliTPCAltroMapping.cxx:203