#include "AliCaloAltroMapping.h"
#include "AliLog.h"
#include <Riostream.h>
ClassImp(AliCaloAltroMapping)
AliCaloAltroMapping::AliCaloAltroMapping():
AliAltroMapping(),
fMinRow(0),
fMaxRow(0),
fMinCol(0),
fMaxCol(0),
fInvMappingLow(NULL),
fInvMappingHigh(NULL)
{
}
AliCaloAltroMapping::AliCaloAltroMapping(const char *mappingFile):
AliAltroMapping(mappingFile),
fMinRow(0),
fMaxRow(0),
fMinCol(0),
fMaxCol(0),
fInvMappingLow(NULL),
fInvMappingHigh(NULL)
{
ReadMapping();
CloseMappingFile();
}
AliCaloAltroMapping::~AliCaloAltroMapping()
{
if (fInvMappingLow) delete [] fInvMappingLow;
if (fInvMappingHigh) delete [] fInvMappingHigh;
}
Bool_t AliCaloAltroMapping::ReadMapping()
{
if (!fIn) {
AliFatal("Mapping file has not been opened !");
return kFALSE;
}
fMinRow = 0x7fffffff;
fMaxRow = 0;
fMinCol = 0x7fffffff;
fMaxCol = 0;
fMappingSize = 3*(fMaxHWAddress+1);
fMapping = new Short_t[fMappingSize];
for (Int_t i = 0; i <= fMaxHWAddress; i++) {
fMapping[3*i] = fMapping[3*i+1] = fMapping[3*i+2] = -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 row,col,caloFlag;
if (!(*fIn >> row >> col >> caloFlag)) {
AliFatal("Syntax of the mapping file is wrong !");
return kFALSE;
}
if (caloFlag < 0 || caloFlag > 3) {
AliFatal(Form("Wrong CaloFlag value found (%d)! Should be 0 ,1, 2 or 3 !",caloFlag));
return kFALSE;
}
fMapping[3*hwAddress] = row;
fMapping[3*hwAddress+1] = col;
fMapping[3*hwAddress+2] = caloFlag;
if (row > fMaxRow) fMaxRow = row;
if (row < fMinRow) fMinRow = row;
if (col > fMaxCol) fMaxCol = col;
if (col < fMinCol) fMinCol = col;
}
return kTRUE;
}
Bool_t AliCaloAltroMapping::CreateInvMapping()
{
if (fInvMappingLow) return kTRUE;
if (!fMapping) {
AliWarning("Mapping array was not initalized correctly ! Impossible to create the inverse mapping !");
return kFALSE;
}
Int_t nRows = fMaxRow - fMinRow + 1;
Int_t nCols = fMaxCol - fMinCol + 1;
Int_t invMappingSize = nRows*nCols;
fInvMappingLow = new Short_t[invMappingSize];
fInvMappingHigh = new Short_t[invMappingSize];
for (Int_t i = 0; i < nRows; i++) {
for (Int_t j = 0; j < nCols; j++) {
fInvMappingLow[nCols*i+j] = -1;
fInvMappingHigh[nCols*i+j] = -1;
}
}
for(Int_t i = 0; i <= fMaxHWAddress; i++) {
Int_t row = fMapping[3*i];
Int_t col = fMapping[3*i+1];
Int_t caloFlag = fMapping[3*i+2];
if(row != -1 && col != -1) {
if (caloFlag == 0)
fInvMappingLow[nCols*(row-fMinRow)+(col-fMinCol)] = i;
if (caloFlag == 1)
fInvMappingHigh[nCols*(row-fMinRow)+(col-fMinCol)] = i;
}
}
return kTRUE;
}
Int_t AliCaloAltroMapping::GetHWAddress(Int_t row, Int_t col, Int_t caloFlag)
{
if (!fInvMappingLow || !fInvMappingHigh) {
if (!CreateInvMapping()) return -1;
}
if (row < fMinRow || row > fMaxRow) {
AliWarning(Form("Index of row (%d) outside the range (%d -> %d) !",row,fMinRow,fMaxRow));
return -1;
}
if (col < fMinCol || col > fMaxCol) {
AliWarning(Form("Index of column (%d) outside the range (%d -> %d) !",col,fMinCol,fMaxCol));
return -1;
}
if (caloFlag < 0 || caloFlag > 3) {
AliWarning(Form("Invalid caloFlag (%d)! Should be 0, 1, 2 or 3 !",caloFlag));
return -1;
}
Int_t hwAddress = -1;
if (caloFlag == 0)
hwAddress = fInvMappingLow[(fMaxCol - fMinCol + 1)*(row-fMinRow)+(col-fMinCol)];
if (caloFlag == 1)
hwAddress = fInvMappingHigh[(fMaxCol - fMinCol + 1)*(row-fMinRow)+(col-fMinCol)];
if (hwAddress == -1)
AliWarning(Form("Hardware (ALTRO) adress is not defined for these row (%d), column (%d) and caloFlag (%d) !",row,col,caloFlag));
return hwAddress;
}
Int_t AliCaloAltroMapping::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 row = fMapping[3*hwAddress];
if (row == -1)
AliWarning(Form("Hardware (ALTRO) adress (%d) is not defined !",hwAddress));
return row;
}
Int_t AliCaloAltroMapping::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 col = fMapping[3*hwAddress+1];
if (col == -1)
AliWarning(Form("Hardware (ALTRO) adress (%d) is not defined !",hwAddress));
return col;
}
Int_t AliCaloAltroMapping::GetSector(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 caloFlag = fMapping[3*hwAddress+2];
if (caloFlag == -1)
AliWarning(Form("Hardware (ALTRO) adress (%d) is not defined !",hwAddress));
return caloFlag;
}
AliCaloAltroMapping.cxx:1 AliCaloAltroMapping.cxx:2 AliCaloAltroMapping.cxx:3 AliCaloAltroMapping.cxx:4 AliCaloAltroMapping.cxx:5 AliCaloAltroMapping.cxx:6 AliCaloAltroMapping.cxx:7 AliCaloAltroMapping.cxx:8 AliCaloAltroMapping.cxx:9 AliCaloAltroMapping.cxx:10 AliCaloAltroMapping.cxx:11 AliCaloAltroMapping.cxx:12 AliCaloAltroMapping.cxx:13 AliCaloAltroMapping.cxx:14 AliCaloAltroMapping.cxx:15 AliCaloAltroMapping.cxx:16 AliCaloAltroMapping.cxx:17 AliCaloAltroMapping.cxx:18 AliCaloAltroMapping.cxx:19 AliCaloAltroMapping.cxx:20 AliCaloAltroMapping.cxx:21 AliCaloAltroMapping.cxx:22 AliCaloAltroMapping.cxx:23 AliCaloAltroMapping.cxx:24 AliCaloAltroMapping.cxx:25 AliCaloAltroMapping.cxx:26 AliCaloAltroMapping.cxx:27 AliCaloAltroMapping.cxx:28 AliCaloAltroMapping.cxx:29 AliCaloAltroMapping.cxx:30 AliCaloAltroMapping.cxx:31 AliCaloAltroMapping.cxx:32 AliCaloAltroMapping.cxx:33 AliCaloAltroMapping.cxx:34 AliCaloAltroMapping.cxx:35 AliCaloAltroMapping.cxx:36 AliCaloAltroMapping.cxx:37 AliCaloAltroMapping.cxx:38 AliCaloAltroMapping.cxx:39 AliCaloAltroMapping.cxx:40 AliCaloAltroMapping.cxx:41 AliCaloAltroMapping.cxx:42 AliCaloAltroMapping.cxx:43 AliCaloAltroMapping.cxx:44 AliCaloAltroMapping.cxx:45 AliCaloAltroMapping.cxx:46 AliCaloAltroMapping.cxx:47 AliCaloAltroMapping.cxx:48 AliCaloAltroMapping.cxx:49 AliCaloAltroMapping.cxx:50 AliCaloAltroMapping.cxx:51 AliCaloAltroMapping.cxx:52 AliCaloAltroMapping.cxx:53 AliCaloAltroMapping.cxx:54 AliCaloAltroMapping.cxx:55 AliCaloAltroMapping.cxx:56 AliCaloAltroMapping.cxx:57 AliCaloAltroMapping.cxx:58 AliCaloAltroMapping.cxx:59 AliCaloAltroMapping.cxx:60 AliCaloAltroMapping.cxx:61 AliCaloAltroMapping.cxx:62 AliCaloAltroMapping.cxx:63 AliCaloAltroMapping.cxx:64 AliCaloAltroMapping.cxx:65 AliCaloAltroMapping.cxx:66 AliCaloAltroMapping.cxx:67 AliCaloAltroMapping.cxx:68 AliCaloAltroMapping.cxx:69 AliCaloAltroMapping.cxx:70 AliCaloAltroMapping.cxx:71 AliCaloAltroMapping.cxx:72 AliCaloAltroMapping.cxx:73 AliCaloAltroMapping.cxx:74 AliCaloAltroMapping.cxx:75 AliCaloAltroMapping.cxx:76 AliCaloAltroMapping.cxx:77 AliCaloAltroMapping.cxx:78 AliCaloAltroMapping.cxx:79 AliCaloAltroMapping.cxx:80 AliCaloAltroMapping.cxx:81 AliCaloAltroMapping.cxx:82 AliCaloAltroMapping.cxx:83 AliCaloAltroMapping.cxx:84 AliCaloAltroMapping.cxx:85 AliCaloAltroMapping.cxx:86 AliCaloAltroMapping.cxx:87 AliCaloAltroMapping.cxx:88 AliCaloAltroMapping.cxx:89 AliCaloAltroMapping.cxx:90 AliCaloAltroMapping.cxx:91 AliCaloAltroMapping.cxx:92 AliCaloAltroMapping.cxx:93 AliCaloAltroMapping.cxx:94 AliCaloAltroMapping.cxx:95 AliCaloAltroMapping.cxx:96 AliCaloAltroMapping.cxx:97 AliCaloAltroMapping.cxx:98 AliCaloAltroMapping.cxx:99 AliCaloAltroMapping.cxx:100 AliCaloAltroMapping.cxx:101 AliCaloAltroMapping.cxx:102 AliCaloAltroMapping.cxx:103 AliCaloAltroMapping.cxx:104 AliCaloAltroMapping.cxx:105 AliCaloAltroMapping.cxx:106 AliCaloAltroMapping.cxx:107 AliCaloAltroMapping.cxx:108 AliCaloAltroMapping.cxx:109 AliCaloAltroMapping.cxx:110 AliCaloAltroMapping.cxx:111 AliCaloAltroMapping.cxx:112 AliCaloAltroMapping.cxx:113 AliCaloAltroMapping.cxx:114 AliCaloAltroMapping.cxx:115 AliCaloAltroMapping.cxx:116 AliCaloAltroMapping.cxx:117 AliCaloAltroMapping.cxx:118 AliCaloAltroMapping.cxx:119 AliCaloAltroMapping.cxx:120 AliCaloAltroMapping.cxx:121 AliCaloAltroMapping.cxx:122 AliCaloAltroMapping.cxx:123 AliCaloAltroMapping.cxx:124 AliCaloAltroMapping.cxx:125 AliCaloAltroMapping.cxx:126 AliCaloAltroMapping.cxx:127 AliCaloAltroMapping.cxx:128 AliCaloAltroMapping.cxx:129 AliCaloAltroMapping.cxx:130 AliCaloAltroMapping.cxx:131 AliCaloAltroMapping.cxx:132 AliCaloAltroMapping.cxx:133 AliCaloAltroMapping.cxx:134 AliCaloAltroMapping.cxx:135 AliCaloAltroMapping.cxx:136 AliCaloAltroMapping.cxx:137 AliCaloAltroMapping.cxx:138 AliCaloAltroMapping.cxx:139 AliCaloAltroMapping.cxx:140 AliCaloAltroMapping.cxx:141 AliCaloAltroMapping.cxx:142 AliCaloAltroMapping.cxx:143 AliCaloAltroMapping.cxx:144 AliCaloAltroMapping.cxx:145 AliCaloAltroMapping.cxx:146 AliCaloAltroMapping.cxx:147 AliCaloAltroMapping.cxx:148 AliCaloAltroMapping.cxx:149 AliCaloAltroMapping.cxx:150 AliCaloAltroMapping.cxx:151 AliCaloAltroMapping.cxx:152 AliCaloAltroMapping.cxx:153 AliCaloAltroMapping.cxx:154 AliCaloAltroMapping.cxx:155 AliCaloAltroMapping.cxx:156 AliCaloAltroMapping.cxx:157 AliCaloAltroMapping.cxx:158 AliCaloAltroMapping.cxx:159 AliCaloAltroMapping.cxx:160 AliCaloAltroMapping.cxx:161 AliCaloAltroMapping.cxx:162 AliCaloAltroMapping.cxx:163 AliCaloAltroMapping.cxx:164 AliCaloAltroMapping.cxx:165 AliCaloAltroMapping.cxx:166 AliCaloAltroMapping.cxx:167 AliCaloAltroMapping.cxx:168 AliCaloAltroMapping.cxx:169 AliCaloAltroMapping.cxx:170 AliCaloAltroMapping.cxx:171 AliCaloAltroMapping.cxx:172 AliCaloAltroMapping.cxx:173 AliCaloAltroMapping.cxx:174 AliCaloAltroMapping.cxx:175 AliCaloAltroMapping.cxx:176 AliCaloAltroMapping.cxx:177 AliCaloAltroMapping.cxx:178 AliCaloAltroMapping.cxx:179 AliCaloAltroMapping.cxx:180 AliCaloAltroMapping.cxx:181 AliCaloAltroMapping.cxx:182 AliCaloAltroMapping.cxx:183 AliCaloAltroMapping.cxx:184 AliCaloAltroMapping.cxx:185 AliCaloAltroMapping.cxx:186 AliCaloAltroMapping.cxx:187 AliCaloAltroMapping.cxx:188 AliCaloAltroMapping.cxx:189 AliCaloAltroMapping.cxx:190 AliCaloAltroMapping.cxx:191 AliCaloAltroMapping.cxx:192 AliCaloAltroMapping.cxx:193 AliCaloAltroMapping.cxx:194 AliCaloAltroMapping.cxx:195 AliCaloAltroMapping.cxx:196 AliCaloAltroMapping.cxx:197 AliCaloAltroMapping.cxx:198 AliCaloAltroMapping.cxx:199 AliCaloAltroMapping.cxx:200 AliCaloAltroMapping.cxx:201 AliCaloAltroMapping.cxx:202 AliCaloAltroMapping.cxx:203 AliCaloAltroMapping.cxx:204 AliCaloAltroMapping.cxx:205 AliCaloAltroMapping.cxx:206 AliCaloAltroMapping.cxx:207 AliCaloAltroMapping.cxx:208 AliCaloAltroMapping.cxx:209 AliCaloAltroMapping.cxx:210 AliCaloAltroMapping.cxx:211 AliCaloAltroMapping.cxx:212 AliCaloAltroMapping.cxx:213 AliCaloAltroMapping.cxx:214 AliCaloAltroMapping.cxx:215 AliCaloAltroMapping.cxx:216 AliCaloAltroMapping.cxx:217 AliCaloAltroMapping.cxx:218 AliCaloAltroMapping.cxx:219 AliCaloAltroMapping.cxx:220 AliCaloAltroMapping.cxx:221 AliCaloAltroMapping.cxx:222 AliCaloAltroMapping.cxx:223 AliCaloAltroMapping.cxx:224 AliCaloAltroMapping.cxx:225 AliCaloAltroMapping.cxx:226 AliCaloAltroMapping.cxx:227 AliCaloAltroMapping.cxx:228 AliCaloAltroMapping.cxx:229 AliCaloAltroMapping.cxx:230 AliCaloAltroMapping.cxx:231 AliCaloAltroMapping.cxx:232 AliCaloAltroMapping.cxx:233 AliCaloAltroMapping.cxx:234 AliCaloAltroMapping.cxx:235 AliCaloAltroMapping.cxx:236 AliCaloAltroMapping.cxx:237 AliCaloAltroMapping.cxx:238 AliCaloAltroMapping.cxx:239 AliCaloAltroMapping.cxx:240 AliCaloAltroMapping.cxx:241 AliCaloAltroMapping.cxx:242 AliCaloAltroMapping.cxx:243 AliCaloAltroMapping.cxx:244 AliCaloAltroMapping.cxx:245 AliCaloAltroMapping.cxx:246 AliCaloAltroMapping.cxx:247 AliCaloAltroMapping.cxx:248 AliCaloAltroMapping.cxx:249 AliCaloAltroMapping.cxx:250 AliCaloAltroMapping.cxx:251 AliCaloAltroMapping.cxx:252 AliCaloAltroMapping.cxx:253 AliCaloAltroMapping.cxx:254 AliCaloAltroMapping.cxx:255 AliCaloAltroMapping.cxx:256 AliCaloAltroMapping.cxx:257 AliCaloAltroMapping.cxx:258 AliCaloAltroMapping.cxx:259