fMaxRow(0),
fMinCol(0),
fMaxCol(0),
- fMapping(NULL),
fInvMappingLow(NULL),
fInvMappingHigh(NULL)
{
fMaxRow(0),
fMinCol(0),
fMaxCol(0),
- fMapping(NULL),
fInvMappingLow(NULL),
fInvMappingHigh(NULL)
{
AliCaloAltroMapping::~AliCaloAltroMapping()
{
// destructor
- DeleteMappingArrays();
+ // Deletes the arrays which have been
+ // allocated during the reading of the
+ // mapping file
+ if (fInvMappingLow) delete [] fInvMappingLow;
+
+ if (fInvMappingHigh) delete [] fInvMappingHigh;
}
//_____________________________________________________________________________
AliFatal(Form("Hardware (ALTRO) adress (%d) outside the range (0 -> %d) !",hwAddress,fMaxHWAddress));
return kFALSE;
}
- Int_t row,col,gain;
- if (!(*fIn >> row >> col >> gain)) {
+ Int_t row,col,caloFlag;
+ if (!(*fIn >> row >> col >> caloFlag)) {
AliFatal("Syntax of the mapping file is wrong !");
return kFALSE;
}
- if (gain < 0 || gain > 1) {
- AliFatal(Form("Wrong gain value found (%d)! Should be 0 or 1 !",gain));
+ 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] = gain;
+ fMapping[3*hwAddress+2] = caloFlag;
if (row > fMaxRow) fMaxRow = row;
if (row < fMinRow) fMinRow = row;
}
+ return kTRUE;
+}
+
+//_____________________________________________________________________________
+Bool_t AliCaloAltroMapping::CreateInvMapping()
+{
+ // Create the inverse mapping
+ // needed for the simulation of
+ // raw data
+ 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;
- fInvMappingSize = nRows*nCols;
+ Int_t invMappingSize = nRows*nCols;
-
- fInvMappingLow = new Short_t[fInvMappingSize];
- fInvMappingHigh = new Short_t[fInvMappingSize];
+ 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 gain = fMapping[3*i+2];
+ Int_t caloFlag = fMapping[3*i+2];
if(row != -1 && col != -1) {
- if (gain == 0)
+ if (caloFlag == 0)
fInvMappingLow[nCols*(row-fMinRow)+(col-fMinCol)] = i;
- if (gain == 1)
+ if (caloFlag == 1)
fInvMappingHigh[nCols*(row-fMinRow)+(col-fMinCol)] = i;
}
}
}
//_____________________________________________________________________________
-Int_t AliCaloAltroMapping::GetHWAddress(Int_t row, Int_t col, Int_t gain) const
+Int_t AliCaloAltroMapping::GetHWAddress(Int_t row, Int_t col, Int_t caloFlag)
{
// Get the content of the mapping array
// return -1 in case there is no hardware
- // adress defined for these row-column-gain
+ // adress defined for these row-column-caloFlag
if (!fInvMappingLow || !fInvMappingHigh) {
- AliWarning("Mapping array was not initalized correctly !");
- return -1;
+ 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 (0 -> %d) !",col,fMinCol,fMaxCol));
+ AliWarning(Form("Index of column (%d) outside the range (%d -> %d) !",col,fMinCol,fMaxCol));
return -1;
}
- if (gain < 0 || gain > 1) {
- AliWarning(Form("Invalid gain (%d)! Should be 0 or 1 !",gain));
+ 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 (gain == 0)
+ if (caloFlag == 0)
hwAddress = fInvMappingLow[(fMaxCol - fMinCol + 1)*(row-fMinRow)+(col-fMinCol)];
- if (gain == 1)
+ 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 gain (%d) !",row,col,gain));
+ 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::GetSector(Int_t hwAddress) const
{
- // Return the gain factor (0/1)
+ // Return the caloFlag factor (0/1)
// Note the difference w.r.t to the base class notation
if (!fMapping) {
AliWarning("Mapping array was not initalized correctly !");
AliWarning(Form("Hardware (ALTRO) adress (%d) outside the range (0 -> %d) !",hwAddress,fMaxHWAddress));
return -1;
}
- Int_t gain = fMapping[3*hwAddress+2];
- if (gain == -1)
+ Int_t caloFlag = fMapping[3*hwAddress+2];
+ if (caloFlag == -1)
AliWarning(Form("Hardware (ALTRO) adress (%d) is not defined !",hwAddress));
- return gain;
-}
-
-//_____________________________________________________________________________
-void AliCaloAltroMapping::DeleteMappingArrays()
-{
- // Deletes the arrays which have been
- // allocated during the reading of the
- // mapping file
- if (fMapping) delete [] fMapping;
-
- if (fInvMappingLow) delete [] fInvMappingLow;
-
- if (fInvMappingHigh) delete [] fInvMappingHigh;
+ return caloFlag;
}