#include "AliPMDPatchBusHeader.h"
#include "AliPMDddldata.h"
#include "AliPMDRawStream.h"
+#include "AliPMDMappingData.h"
#include "AliRawReader.h"
+#include "AliCDBManager.h"
+#include "AliCDBStorage.h"
+#include "AliCDBEntry.h"
ClassImp(AliPMDRawStream)
AliPMDRawStream::AliPMDRawStream(AliRawReader* rawReader) :
fRawReader(rawReader),
fData(NULL),
- fPosition(-1)
+ fPosition(-1),
+ fMapData(GetMappingData())
{
// create an object to read PMD raw digits
TObject(stream),
fRawReader(NULL),
fData(NULL),
- fPosition(-1)
+ fPosition(-1),
+ fMapData(GetMappingData())
{
// copy constructor
Int_t AliPMDRawStream::DdlData(TObjArray *pmdddlcont)
{
-// read the next raw digit
-// returns kFALSE if there is no digit left
-
-
-
+ // read the next raw digit
+ // returns kFALSE if there is no digit left
+
Int_t iddl = -1;
AliPMDddldata *pmdddldata;
- if (!fRawReader->ReadHeader()) return iddl;
+ if (!fRawReader->ReadHeader()) return -1;
iddl = fRawReader->GetDDLID();
Int_t dataSize = fRawReader->GetDataSize();
Int_t totaldataword = dataSize/4;
- if (dataSize <= 0) return iddl;
- UInt_t data;
+ if (dataSize <= 0) return -1;
- fRawReader->ReadNextData(fData);
+ UInt_t data = 0;
- fPosition = 0;
+ // PMD raw data does not contain CDH
+ if (!fRawReader->ReadNextData(fData))
+ {
+ return kFALSE;
+ }
+
+
+ fPosition = 0;
- Int_t ibus;
+ Int_t ibus = 0;
const Int_t kNPatchBus = 51;
startColBus[ibus] = -1;
endColBus[ibus] = -1;
}
-
- // Call the Mapping methods - hard coded
-
-
+
if (iddl == 0)
- {
+ {
Ddl0Mapping(moduleNo, mcmperBus, startRowBus,
endRowBus, startColBus, endColBus);
- }
+
+ }
else if (iddl == 1)
- {
+ {
Ddl1Mapping(moduleNo, mcmperBus, startRowBus,
endRowBus, startColBus, endColBus);
- }
+
+ }
else if (iddl == 2)
- {
+ {
Ddl2Mapping(moduleNo, mcmperBus, startRowBus,
endRowBus, startColBus, endColBus);
- }
+ }
else if (iddl == 3)
- {
+ {
Ddl3Mapping(moduleNo, mcmperBus, startRowBus,
endRowBus, startColBus, endColBus);
- }
+ }
else if (iddl == 4)
- {
+ {
Ddl4Mapping(moduleNo, mcmperBus, startRowBus,
endRowBus, startColBus, endColBus);
- }
+ }
else if (iddl == 5)
- {
+ {
Ddl5Mapping(moduleNo, mcmperBus, startRowBus,
endRowBus, startColBus, endColBus);
}
const Int_t kdspHLen = dspHeader.GetHeaderLength();
const Int_t kpbusHLen = pbusHeader.GetHeaderLength();
- Int_t parity;
- Int_t idet, ismn;
+ Int_t parity = 0;
+ Int_t idet = 0, ismn = 0;
Int_t irow = -1;
Int_t icol = -1;
Int_t dspHeaderWord[10];
Int_t pbusHeaderWord[4];
- Int_t ilowLimit = 0;
- Int_t iuppLimit = 0;
Int_t blRawDataLength = 0;
Int_t dspRawDataLength = 0;
Int_t iwordddl = 2;
for (Int_t iblock = 0; iblock < 2; iblock++)
{
- ilowLimit = iuppLimit;
- iuppLimit = ilowLimit + kblHLen;
-
- for (Int_t i = ilowLimit; i < iuppLimit; i++)
+ for (Int_t i = 0; i < kblHLen; i++)
{
iwordddl++;
- blHeaderWord[i-ilowLimit] = (Int_t) GetNextWord();
+ blHeaderWord[i] = (Int_t) GetNextWord();
}
blockHeader.SetHeader(blHeaderWord);
blRawDataLength = blockHeader.GetRawDataLength();
- if (iwordddl == totaldataword) continue;
+ if (iwordddl == totaldataword) break;
Int_t iwordblk = 0;
for (Int_t idsp = 0; idsp < 5; idsp++)
{
-
-
- ilowLimit = iuppLimit;
- iuppLimit = ilowLimit + kdspHLen;
-
- for (Int_t i = ilowLimit; i < iuppLimit; i++)
+ for (Int_t i = 0; i < kdspHLen; i++)
{
iwordddl++;
iwordblk++;
- dspHeaderWord[i-ilowLimit] = (Int_t) GetNextWord();
+ dspHeaderWord[i] = (Int_t) GetNextWord();
}
dspHeader.SetHeader(dspHeaderWord);
dspRawDataLength = dspHeader.GetRawDataLength();
- if (iwordddl == totaldataword) continue;
+ if (iwordddl == totaldataword) break;
Int_t iworddsp = 0;
for (ibus = 0; ibus < 5; ibus++)
{
- ilowLimit = iuppLimit;
- iuppLimit = ilowLimit + kpbusHLen;
-
- for (Int_t i = ilowLimit; i < iuppLimit; i++)
+ for (Int_t i = 0; i < kpbusHLen; i++)
{
iwordddl++;
iwordblk++;
iworddsp++;
- pbusHeaderWord[i-ilowLimit] = (Int_t) GetNextWord();
+ pbusHeaderWord[i] = (Int_t) GetNextWord();
}
pbusHeader.SetHeader(pbusHeaderWord);
Int_t rawdatalength = pbusHeader.GetRawDataLength();
Int_t pbusid = pbusHeader.GetPatchBusId();
- if (pbusid < 0 || pbusid > 50) return iddl;
-
-
- ilowLimit = iuppLimit;
- iuppLimit = ilowLimit + rawdatalength;
+ if (pbusid < 0 || pbusid > 50) return -1;
Int_t imodule = moduleNo[pbusid];
- if (iwordddl == totaldataword) continue;
+ if (iwordddl == totaldataword) break;
- for (Int_t iword = ilowLimit; iword < iuppLimit; iword++)
+ for (Int_t iword = 0; iword < rawdatalength; iword++)
{
iwordddl++;
iwordblk++;
Int_t ich = (data >> 12) & 0x003F;
Int_t imcm = (data >> 18) & 0x07FF;
Int_t ibit = (data >> 31) & 0x0001;
+
+ if (imcm == 0)
+ {
+ AliWarning(Form("FEE address WRONG:: Module %d Patch Bus %d MCM %d",imodule,pbusid,imcm));
+ return -1;
+ }
+
parity = ComputeParity(data);
+
if (ibit != parity)
{
AliWarning(Form("Parity Error:: Patch Bus %d Module %d",pbusid,imodule));
fRawReader->AddMajorErrorLog(kParityError);
- return iddl;
+ return -1;
}
ConvertDDL2SMN(iddl, imodule, ismn, idet);
- GetRowCol(iddl, ismn, pbusid, imcm, ich,
+ GetRowCol(imodule, pbusid, imcm, ich,
startRowBus, endRowBus,
startColBus, endColBus,
irow, icol);
+
TransformH2S(ismn, irow, icol);
pmdddldata = new AliPMDddldata();
pmdddldata->SetParityBit(ibit);
pmdddlcont->Add(pmdddldata);
-
+
} // data word loop
+
if (iwordddl == totaldataword) break;
- if (iworddsp == dspRawDataLength) break; // raw data
+ if (dspHeader.GetPaddingWord() == 1)
+ {
+ if (iworddsp == dspRawDataLength-1) break; // raw data
+ }
+ else
+ {
+ if (iworddsp == dspRawDataLength) break; // raw data
+ }
+
} // patch bus loop
+
if (dspHeader.GetPaddingWord() == 1)
{
- iuppLimit++;
iwordddl++;
iwordblk++;
iworddsp++;
data = GetNextWord();
}
+ if (iwordddl == totaldataword) break;
if (iwordblk == blRawDataLength) break; // for raw data
- } // end of DSP
-
+ } // end of DSP
} // end of BLOCK
return iddl;
}
//_____________________________________________________________________________
-void AliPMDRawStream::GetRowCol(Int_t ddlno, Int_t smn, Int_t pbusid,
+void AliPMDRawStream::GetRowCol(Int_t imodule, Int_t pbusid,
UInt_t mcmno, UInt_t chno,
Int_t startRowBus[], Int_t endRowBus[],
Int_t startColBus[], Int_t endColBus[],
Int_t &row, Int_t &col) const
{
-// decode: ddlno, patchbusid, mcmno, chno -> um, row, col
+ // decode: ddlno, patchbusid, mcmno, chno -> um, row, col
UInt_t iCh[64];
0, 3, 1, 2, 9, 6, 5, 10 };
for (Int_t i = 0; i < 64; i++)
- {
- if (ddlno == 0 || ddlno == 1) iCh[i] = kChDdl01[i];
- if (ddlno == 2 || ddlno == 3) iCh[i] = kChDdl23[i];
-
- if (ddlno == 4 && smn < 6) iCh[i] = kChDdl41[i];
- if (ddlno == 4 && (smn >= 18 && smn < 24))iCh[i] = kChDdl42[i];
- if (ddlno == 5 && (smn >= 12 && smn < 18))iCh[i] = kChDdl51[i];
- if (ddlno == 5 && (smn >= 6 && smn < 12))iCh[i] = kChDdl52[i];
- }
+ {
+ if(imodule < 6) iCh[i] = kChDdl01[i];
+ if(imodule >= 6 && imodule <= 11) iCh[i] = kChDdl01[i];
+ if(imodule >= 12 && imodule <= 17) iCh[i] = kChDdl23[i];
+ if(imodule >= 18 && imodule <= 23) iCh[i] = kChDdl23[i];
+ if(imodule >= 24 && imodule <= 29) iCh[i] = kChDdl41[i];
+ if(imodule >= 42 && imodule <= 47) iCh[i] = kChDdl42[i];
+ if(imodule >= 36 && imodule <= 41) iCh[i] = kChDdl51[i];
+ if(imodule >= 30 && imodule <= 35) iCh[i] = kChDdl52[i];
+ }
Int_t rowcol = iCh[chno];
Int_t irownew = rowcol/4;
Int_t icolnew = rowcol%4;
- if (ddlno == 0 )
+
+ if (imodule < 6 )
{
row = startRowBus[pbusid] + irownew;
col = startColBus[pbusid] + (mcmno-1)*4 + icolnew;
}
- else if (ddlno == 1)
+ else if (imodule >= 6 && imodule < 12)
{
- row = endRowBus[pbusid] - (15 - irownew);
- col = startColBus[pbusid] + (mcmno-1)*4 + icolnew;
-
+ row = endRowBus[pbusid] - (15 - irownew);
+ col = startColBus[pbusid] + (mcmno-1)*4 + icolnew;
+
}
- else if (ddlno == 2 )
+ else if (imodule >= 12 && imodule < 18 )
{
row = startRowBus[pbusid] + irownew;
col = endColBus[pbusid] - (mcmno-1)*4 - (3 - icolnew);
}
- else if (ddlno == 3)
+ else if (imodule >= 18 && imodule < 24)
{
- row = endRowBus[pbusid] - (15 - irownew);
- col = endColBus[pbusid] - (mcmno-1)*4 - (3 - icolnew);
+ row = endRowBus[pbusid] - (15 - irownew);
+ col = endColBus[pbusid] - (mcmno-1)*4 - (3 - icolnew);
}
- else if (ddlno == 4 )
+ else if (imodule >= 24 && imodule < 30)
{
- if (pbusid < 19)
+ Int_t rowdiff = endRowBus[pbusid] - startRowBus[pbusid];
+ if(rowdiff > 16)
{
if (mcmno <= 12)
{
col = startColBus[pbusid] + (mcmno-12-1)*4 + icolnew;
}
}
- else if(pbusid > 18)
+ else if (rowdiff < 16)
{
- if (mcmno <= 12)
- {
- col = endColBus[pbusid] - (mcmno-1)*4 - (3 - icolnew);
-
- if(endRowBus[pbusid] - startRowBus[pbusid] > 16)
- row = endRowBus[pbusid] - (15 - irownew) - 16 ;
- else
- row = endRowBus[pbusid] - (15 - irownew) ;
- }
- else if(mcmno > 12)
- {
- row = endRowBus[pbusid] - (15 - irownew) ;
- col = endColBus[pbusid] - (mcmno - 12 - 1)*4 - (3 - icolnew);
- }
+ row = startRowBus[pbusid] + irownew;
+ col = startColBus[pbusid] + (mcmno-1)*4 + icolnew;
}
}
- else if (ddlno == 5)
+ else if (imodule >= 42 && imodule < 48)
{
- if (pbusid <= 18)
+ Int_t rowdiff = endRowBus[pbusid] - startRowBus[pbusid];
+
+ if (mcmno <= 12)
{
- if (mcmno > 12)
- {
- // Subtract 16 to skip the 1st 15 rows
- row = endRowBus[pbusid] - 16 -(15 - irownew);
- col = startColBus[pbusid] + (mcmno-12 -1)*4 + icolnew;
- }
+ col = endColBus[pbusid] - (mcmno-1)*4 - (3 - icolnew);
+
+ if(rowdiff > 16)
+ row = endRowBus[pbusid] - (15 - irownew) - 16 ;
else
- {
- row = endRowBus[pbusid] - (15 - irownew) ;
- col = startColBus[pbusid] + (mcmno -1)*4 + icolnew;
- }
+ row = endRowBus[pbusid] - (15 - irownew) ;
+ }
+ else if(mcmno > 12)
+ {
+ row = endRowBus[pbusid] - (15 - irownew) ;
+ col = endColBus[pbusid] - (mcmno - 12 - 1)*4 - (3 - icolnew);
+ }
+ }
+
+
+ else if (imodule >= 30 && imodule < 36)
+ {
+ if (mcmno > 12)
+ {
+ // Subtract 16 to skip the 1st 15 rows
+ row = endRowBus[pbusid] - 16 -(15 - irownew);
+ col = startColBus[pbusid] + (mcmno-12 -1)*4 + icolnew;
+ }
+ else
+ {
+ row = endRowBus[pbusid] - (15 - irownew) ;
+ col = startColBus[pbusid] + (mcmno -1)*4 + icolnew;
}
+
+ }
- else if (pbusid > 18)
+ else if (imodule >= 36 && imodule < 42)
+ {
+ if(mcmno > 12)
{
- if(mcmno > 12)
- {
- // Add 16 to skip the 1st 15 rows
- row = startRowBus[pbusid] + irownew + 16;
- col = endColBus[pbusid] - (mcmno - 12 - 1)*4 - (3 - icolnew);
- }
- else
- {
- row = startRowBus[pbusid] + irownew ;
- col = endColBus[pbusid] - (mcmno - 1)*4 - (3 - icolnew);
- }
+ // Add 16 to skip the 1st 15 rows
+ row = startRowBus[pbusid] + irownew + 16;
+ col = endColBus[pbusid] - (mcmno - 12 - 1)*4 - (3 - icolnew);
+ }
+ else
+ {
+ row = startRowBus[pbusid] + irownew ;
+ col = endColBus[pbusid] - (mcmno - 1)*4 - (3 - icolnew);
}
}
-
+
+
}
//_____________________________________________________________________________
void AliPMDRawStream::ConvertDDL2SMN(Int_t iddl, Int_t imodule,
Int_t startRowBus[], Int_t endRowBus[],
Int_t startColBus[], Int_t endColBus[])
{
-// DDL0 Mapping
-
- const Int_t ktotpbus = 36;
- static const Int_t modno0[ktotpbus] = {0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 1, 1,
- 2, 2, 2, 2, 2, 2,
- 3, 3, 3, 3, 3, 3,
- 4, 4, 4, 4, 4, 4,
- 5, 5, 5, 5, 5, 5,};
+ // DDL0 Mapping
+ Int_t iddl = 0;
-
- static const Int_t srbus0[ktotpbus] = {0, 16, 32, 48, 64, 80,
- 0, 16, 32, 48, 64, 80,
- 0, 16, 32, 48, 64, 80,
- 0, 16, 32, 48, 64, 80,
- 0, 16, 32, 48, 64, 80,
- 0, 16, 32, 48, 64, 80};
-
-
-
- static const Int_t erbus0[ktotpbus] = {15, 31, 47, 63, 79, 95,
- 15, 31, 47, 63, 79, 95,
- 15, 31, 47, 63, 79, 95,
- 15, 31, 47, 63, 79, 95,
- 15, 31, 47, 63, 79, 95,
- 15, 31, 47, 63, 79, 95};
-
-
- for (Int_t ibus = 1; ibus <= ktotpbus; ibus++)
+ for(Int_t ibus = 1; ibus < 51; ibus++)
{
- moduleNo[ibus] = modno0[ibus-1];
- mcmperBus[ibus] = 12;
- startRowBus[ibus] = srbus0[ibus-1];
- endRowBus[ibus] = erbus0[ibus-1];
- startColBus[ibus] = 0;
- endColBus[ibus] = 47;
+ moduleNo[ibus] = fMapData->GetModuleNo(iddl,ibus);
+ mcmperBus[ibus] = fMapData->GetMcmperBus(iddl,ibus);
+ startRowBus[ibus] = fMapData->GetStartRowBus(iddl,ibus);
+ startColBus[ibus] = fMapData->GetStartColBus(iddl,ibus);
+ endRowBus[ibus] = fMapData->GetEndRowBus(iddl,ibus);
+ endColBus[ibus] = fMapData->GetEndColBus(iddl,ibus);
}
-
+
}
//_____________________________________________________________________________
Int_t startRowBus[], Int_t endRowBus[],
Int_t startColBus[], Int_t endColBus[])
{
-// DDL1 Mapping
-
- const Int_t ktotpbus = 36;
- static const Int_t kmodno1[ktotpbus] = {6, 6, 6, 6, 6, 6,
- 7, 7, 7, 7, 7, 7,
- 8, 8, 8, 8, 8, 8,
- 9, 9, 9, 9, 9, 9,
- 10, 10, 10, 10, 10, 10,
- 11, 11, 11, 11, 11, 11};
-
-
- static const Int_t ksrbus1[ktotpbus] = {0, 16, 32, 48, 64, 80,
- 0, 16, 32, 48, 64, 80,
- 0, 16, 32, 48, 64, 80,
- 0, 16, 32, 48, 64, 80,
- 0, 16, 32, 48, 64, 80,
- 0, 16, 32, 48, 64, 80};
-
-
-
- static const Int_t kerbus1[ktotpbus] = {15, 31, 47, 63, 79, 95,
- 15, 31, 47, 63, 79, 95,
- 15, 31, 47, 63, 79, 95,
- 15, 31, 47, 63, 79, 95,
- 15, 31, 47, 63, 79, 95,
- 15, 31, 47, 63, 79, 95};
-
-
- for (Int_t ibus = 1; ibus <= ktotpbus; ibus++)
+ // DDL1 Mapping
+
+ Int_t iddl = 1;
+
+ for(Int_t ibus = 1; ibus < 51; ibus++)
{
- moduleNo[ibus] = kmodno1[ibus-1];
- mcmperBus[ibus] = 12;
- startRowBus[ibus] = ksrbus1[ibus-1];
- endRowBus[ibus] = kerbus1[ibus-1];
- startColBus[ibus] = 0;
- endColBus[ibus] = 47;
+ moduleNo[ibus] = fMapData->GetModuleNo(iddl,ibus);
+ mcmperBus[ibus] = fMapData->GetMcmperBus(iddl,ibus);
+ startRowBus[ibus] = fMapData->GetStartRowBus(iddl,ibus);
+ startColBus[ibus] = fMapData->GetStartColBus(iddl,ibus);
+ endRowBus[ibus] = fMapData->GetEndRowBus(iddl,ibus);
+ endColBus[ibus] = fMapData->GetEndColBus(iddl,ibus);
+
}
-
+
+
}
//_____________________________________________________________________________
Int_t startRowBus[], Int_t endRowBus[],
Int_t startColBus[], Int_t endColBus[])
{
-// DDL2 Mapping
-
- const Int_t ktotpbus = 36;
- static const Int_t kmodno2[ktotpbus] = {12, 12, 12, 12, 12, 12,
- 13, 13, 13, 13, 13, 13,
- 14, 14, 14, 14, 14, 14,
- 15, 15, 15, 15, 15, 15,
- 16, 16, 16, 16, 16, 16,
- 17, 17, 17, 17, 17, 17};
-
- static const Int_t ksrbus2[ktotpbus] = {32, 32, 16, 16, 0, 0,
- 32, 32, 16, 16, 0, 0,
- 32, 32, 16, 16, 0, 0,
- 32, 32, 16, 16, 0, 0,
- 32, 32, 16, 16, 0, 0,
- 32, 32, 16, 16, 0, 0};
-
-
- static const Int_t kerbus2[ktotpbus] = {47, 47, 31, 31, 15, 15,
- 47, 47, 31, 31, 15, 15,
- 47, 47, 31, 31, 15, 15,
- 47, 47, 31, 31, 15, 15,
- 47, 47, 31, 31, 15, 15,
- 47, 47, 31, 31, 15, 15};
-
- static const Int_t kscbus2[ktotpbus] = {48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0};
-
- static const Int_t kecbus2[ktotpbus] = {95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47};
-
-
-
- for (Int_t ibus = 1; ibus <= ktotpbus; ibus++)
+ // DDL2 Mapping
+
+ Int_t iddl = 2;
+
+ for(Int_t ibus = 1; ibus < 51; ibus++)
{
- moduleNo[ibus] = kmodno2[ibus-1];
- mcmperBus[ibus] = 12;
- startRowBus[ibus] = ksrbus2[ibus-1];
- endRowBus[ibus] = kerbus2[ibus-1];
- startColBus[ibus] = kscbus2[ibus-1];
- endColBus[ibus] = kecbus2[ibus-1];
+ moduleNo[ibus] = fMapData->GetModuleNo(iddl,ibus);
+ mcmperBus[ibus] = fMapData->GetMcmperBus(iddl,ibus);
+ startRowBus[ibus] = fMapData->GetStartRowBus(iddl,ibus);
+ startColBus[ibus] = fMapData->GetStartColBus(iddl,ibus);
+ endRowBus[ibus] = fMapData->GetEndRowBus(iddl,ibus);
+ endColBus[ibus] = fMapData->GetEndColBus(iddl,ibus);
+
}
-
+
}
//_____________________________________________________________________________
Int_t startRowBus[], Int_t endRowBus[],
Int_t startColBus[], Int_t endColBus[])
{
-// DDL3 Mapping
-
- const Int_t ktotpbus = 36;
- static const Int_t kmodno3[ktotpbus] = {18, 18, 18, 18, 18, 18,
- 19, 19, 19, 19, 19, 19,
- 20, 20, 20, 20, 20, 20,
- 21, 21, 21, 21, 21, 21,
- 22, 22, 22, 22, 22, 22,
- 23, 23, 23, 23, 23, 23};
-
+ // DDL3 Mapping
+ Int_t iddl = 3;
- static const Int_t ksrbus3[ktotpbus] = {32, 32, 16, 16, 0, 0,
- 32, 32, 16, 16, 0, 0,
- 32, 32, 16, 16, 0, 0,
- 32, 32, 16, 16, 0, 0,
- 32, 32, 16, 16, 0, 0,
- 32, 32, 16, 16, 0, 0};
-
-
- static const Int_t kerbus3[ktotpbus] = {47, 47, 31, 31, 15, 15,
- 47, 47, 31, 31, 15, 15,
- 47, 47, 31, 31, 15, 15,
- 47, 47, 31, 31, 15, 15,
- 47, 47, 31, 31, 15, 15,
- 47, 47, 31, 31, 15, 15};
-
- static const Int_t kscbus3[ktotpbus] = {48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0};
-
- static const Int_t kecbus3[ktotpbus] = {95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47};
-
- for (Int_t ibus = 1; ibus <= ktotpbus; ibus++)
+ for(Int_t ibus = 1; ibus < 51; ibus++)
{
- moduleNo[ibus] = kmodno3[ibus-1];
- mcmperBus[ibus] = 12;
- startRowBus[ibus] = ksrbus3[ibus-1];
- endRowBus[ibus] = kerbus3[ibus-1];
- startColBus[ibus] = kscbus3[ibus-1];
- endColBus[ibus] = kecbus3[ibus-1];
+ moduleNo[ibus] = fMapData->GetModuleNo(iddl,ibus);
+ mcmperBus[ibus] = fMapData->GetMcmperBus(iddl,ibus);
+ startRowBus[ibus] = fMapData->GetStartRowBus(iddl,ibus);
+ startColBus[ibus] = fMapData->GetStartColBus(iddl,ibus);
+ endRowBus[ibus] = fMapData->GetEndRowBus(iddl,ibus);
+ endColBus[ibus] = fMapData->GetEndColBus(iddl,ibus);
+
}
-
+
}
//_____________________________________________________________________________
Int_t startRowBus[], Int_t endRowBus[],
Int_t startColBus[], Int_t endColBus[])
{
-// DDL4 Mapping
-
- const Int_t ktotpbus = 42;
- static const Int_t kmodno4[ktotpbus] = {24, 24, 24, 25, 25, 25,
- 26, 26, 26, 27, 27, 27,
- 28, 28, 28, 29, 29, 29,
- 42, 42, 42, 42, 43, 43, 43, 43,
- 44, 44, 44, 44, 45, 45, 45, 45,
- 46, 46, 46, 46, 47, 47, 47, 47};
-
-
- static const Int_t kmcbus4[ktotpbus] = {24, 24, 24, 24, 24, 24,
- 24, 24, 24, 24, 24, 24,
- 24, 24, 24, 24, 24, 24,
- 12, 12, 24, 24, 12, 12, 24, 24,
- 12, 12, 24, 24, 12, 12, 24, 24,
- 12, 12, 24, 24, 12, 12, 24, 24};
-
-
- static const Int_t ksrbus4[ktotpbus] = {0, 32, 64, 0, 32, 64,
- 0, 32, 64, 0, 32, 64,
- 0, 32, 64, 0, 32, 64,
- 32, 32, 0, 0, 32, 32, 0, 0,
- 32, 32, 0, 0, 32, 32, 0, 0,
- 32, 32, 0, 0, 32, 32, 0, 0};
-
-
-
-
- static const Int_t kerbus4[ktotpbus] = {31, 63, 95, 31, 63, 95,
- 31, 63, 95, 31, 63, 95,
- 31, 63, 95, 31, 63, 95,
- 47, 47, 31, 31, 47, 47, 31, 31,
- 47, 47, 31, 31, 47, 47, 31, 31,
- 47, 47, 31, 31, 47, 47, 31, 31};
-
-
-
- static const Int_t kscbus4[ktotpbus] = {0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 48, 0, 48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0, 48, 0};
+ // DDL4 Mapping
+ Int_t iddl = 4;
-
- static const Int_t kecbus4[ktotpbus] = {47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47,
- 95, 47, 95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47, 95, 47};
-
-
- for (Int_t ibus = 1; ibus <= ktotpbus; ibus++)
+ for(Int_t ibus = 1; ibus < 51; ibus++)
{
- moduleNo[ibus] = kmodno4[ibus-1];
- mcmperBus[ibus] = kmcbus4[ibus-1];
- startRowBus[ibus] = ksrbus4[ibus-1];
- endRowBus[ibus] = kerbus4[ibus-1];
- startColBus[ibus] = kscbus4[ibus-1];
- endColBus[ibus] = kecbus4[ibus-1];
+ moduleNo[ibus] = fMapData->GetModuleNo(iddl,ibus);
+ mcmperBus[ibus] = fMapData->GetMcmperBus(iddl,ibus);
+ startRowBus[ibus] = fMapData->GetStartRowBus(iddl,ibus);
+ startColBus[ibus] = fMapData->GetStartColBus(iddl,ibus);
+ endRowBus[ibus] = fMapData->GetEndRowBus(iddl,ibus);
+ endColBus[ibus] = fMapData->GetEndColBus(iddl,ibus);
+
}
-
+
+
}
//_____________________________________________________________________________
Int_t startRowBus[], Int_t endRowBus[],
Int_t startColBus[], Int_t endColBus[])
{
-// DDL5 Mapping
-
- const Int_t ktotpbus = 42;
- static const Int_t kmodno5[ktotpbus] = {30, 30, 30, 31, 31, 31,
- 32, 32, 32, 33, 33, 33,
- 34, 34, 34, 35, 35, 35,
- 36, 36, 36, 36, 37, 37, 37, 37,
- 38, 38, 38, 38, 39, 39, 39, 39,
- 40, 40, 40, 40, 41, 41, 41, 41};
-
-
- static const Int_t kmcbus5[ktotpbus] = {24, 24, 24, 24, 24, 24,
- 24, 24, 24, 24, 24, 24,
- 24, 24, 24, 24, 24, 24,
- 12, 12, 24, 24, 12, 12, 24, 24,
- 12, 12, 24, 24, 12, 12, 24, 24,
- 12, 12, 24, 24, 12, 12, 24, 24};
-
-
-
- static const Int_t ksrbus5[ktotpbus] = {0, 32, 64, 0, 32, 64,
- 0, 32, 64, 0, 32, 64,
- 0, 32, 64, 0, 32, 64,
- 32, 32, 0, 0, 32, 32, 0, 0,
- 32, 32, 0, 0, 32, 32, 0, 0,
- 32, 32, 0, 0, 32, 32, 0, 0};
-
-
-
-
- static const Int_t kerbus5[ktotpbus] = {31, 63, 95, 31, 63, 95,
- 31, 63, 95, 31, 63, 95,
- 31, 63, 95, 31, 63, 95,
- 47, 47, 31, 31, 47, 47, 31, 31,
- 47, 47, 31, 31, 47, 47, 31, 31,
- 47, 47, 31, 31, 47, 47, 31, 31};
-
-
-
- static const Int_t kscbus5[ktotpbus] = {0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 48, 0, 48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0, 48, 0,
- 48, 0, 48, 0, 48, 0, 48, 0};
-
-
-
- static const Int_t kecbus5[ktotpbus] = {47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47,
- 95, 47, 95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47, 95, 47,
- 95, 47, 95, 47, 95, 47, 95, 47};
-
-
- for (Int_t ibus = 1; ibus <= ktotpbus; ibus++)
+ // DDL5 Mapping
+
+ Int_t iddl = 5;
+
+ for(Int_t ibus = 1; ibus < 51; ibus++)
{
- moduleNo[ibus] = kmodno5[ibus-1];
- mcmperBus[ibus] = kmcbus5[ibus-1];
- startRowBus[ibus] = ksrbus5[ibus-1];
- endRowBus[ibus] = kerbus5[ibus-1];
- startColBus[ibus] = kscbus5[ibus-1];
- endColBus[ibus] = kecbus5[ibus-1];
+ moduleNo[ibus] = fMapData->GetModuleNo(iddl,ibus);
+ mcmperBus[ibus] = fMapData->GetMcmperBus(iddl,ibus);
+ startRowBus[ibus] = fMapData->GetStartRowBus(iddl,ibus);
+ startColBus[ibus] = fMapData->GetStartColBus(iddl,ibus);
+ endRowBus[ibus] = fMapData->GetEndRowBus(iddl,ibus);
+ endColBus[ibus] = fMapData->GetEndColBus(iddl,ibus);
+
}
-
+
+}
+//_____________________________________________________________________________
+
+AliPMDMappingData* AliPMDRawStream::GetMappingData() const
+{
+ // Fetching the mapping data from CDB
+
+ AliCDBEntry *entry = AliCDBManager::Instance()->Get("PMD/Calib/Mapping");
+
+ if(!entry) AliFatal("Mapping object retrieval failed!");
+
+ AliPMDMappingData *mapdata=0;
+ if (entry) mapdata = (AliPMDMappingData*) entry->GetObject();
+
+ if (!mapdata) AliFatal("No Mapping data from CDB !");
+
+ return mapdata;
}
+
+//_____________________________________________________________________________
+