UInt_t adc;
Int_t det, smn, irow, icol;
Int_t parity;
-
+
const Int_t kMaxBus = 50;
Int_t totPatchBus, bPatchBus, ePatchBus;
Int_t ibus, totmcm, rows, cols, rowe, cole;
Int_t icolnew = col%4;
chno = kCh[irownew][icolnew];
-
-
+
+
for (Int_t ibus = beginPatchBus; ibus <= endPatchBus; ibus++)
{
Int_t srow = startRowBus[ibus];
if ((row >= srow && row <= erow) && (col >= scol && col <= ecol))
{
busno = ibus;
-
+
// Find out the MCM Number
//
-
+
if (ddlno == 0 || ddlno == 1)
{
// PRE plane, SU Mod = 0, 1
- Int_t rowdiff = endRowBus[ibus] - startRowBus[ibus];
- if(rowdiff > 16)
- {
- Int_t midrow = srow + 16;
- if(row >= srow && row < midrow)
- {
- mcmno = 12 + (col-scol)/4;
- }
- else if(row >= midrow && row < erow)
- {
- mcmno = (col-scol)/4;
- }
- }
- else
- {
- mcmno = (col-scol)/4;
- }
+ mcmno = (col-scol)/4;
+
} // end of ddl 0 and 1
- else if (ddlno == 2)
+ else if (ddlno == 2 || ddlno == 3)
{
- // PRE plane, SU Mod = 2
-
+ // PRE plane, SU Mod = 2, 3
Int_t icolnew = (col - scol)/4;
mcmno = tmcm - 1 - icolnew;
- }
- else if (ddlno == 3)
- {
- // PRE plane, SU Mod = 3
-
- Int_t icolnew = (col - scol)/4;
- mcmno = tmcm - 1 - icolnew;
- }
- else if (ddlno == 4)
+ }// end of ddl 2 and 3
+
+
+ else if (ddlno == 4 ||ddlno == 5 )
{
// CPV plane, SU Mod = 0, 3 : ddl = 4
- if(ibus <= 20)
+ if(ibus <= 17)
{
- Int_t rowdiff = endRowBus[ibus] - startRowBus[ibus];
- if(rowdiff > 16)
+ Int_t midrow = srow + 16;
+ if(row >= srow && row < midrow)
{
- Int_t midrow = srow + 16;
- if(row >= srow && row < midrow)
- {
- mcmno = 12 + (col-scol)/4;
- }
- else if(row >= midrow && row < erow)
- {
- mcmno = (col-scol)/4;
- }
+ mcmno = 12 + (col-scol)/4;
}
- else
+ else if(row >= midrow && row < erow)
{
mcmno = (col-scol)/4;
}
}
- else if (ibus > 20)
- {
- Int_t icolnew = (col - scol)/4;
- mcmno = tmcm - 1 - icolnew;
- }
- }
- else if (ddlno == 5)
- {
- // CPV plane, SU Mod = 2, 1 : ddl = 5
- if(ibus <= 20)
+ else if (ibus > 17)
{
Int_t rowdiff = endRowBus[ibus] - startRowBus[ibus];
if(rowdiff > 16)
{
Int_t midrow = srow + 16;
- if(row >= srow && row < midrow)
+ if (row >= midrow && row < erow)
{
- mcmno = 12 + (col-scol)/4;
+ Int_t icolnew = (col - scol)/4;
+ mcmno = 24 - 1 - icolnew;
+
}
- else if(row >= midrow && row < erow)
+ else if (row >= srow && row < midrow)
{
- mcmno = (col-scol)/4;
+ Int_t icolnew = (col - scol)/4;
+ mcmno = 12 - 1 - icolnew;
}
}
- else
+ else
{
- mcmno = (col-scol)/4;
- }
- }
- else if (ibus > 20)
- {
- Int_t icolnew = (col - scol)/4;
- mcmno = tmcm - 1 - icolnew;
+ Int_t icolnew = (col - scol)/4;
+ mcmno = 12 - 1 - icolnew;
+ }
}
}
- }
+
+ }
}
-
-}
+}
+
//____________________________________________________________________________
Int_t AliPMDDDLRawData::ComputeParity(UInt_t baseword)
}
//____________________________________________________________________________
-
Int_t ich = (data >> 12) & 0x003F;
Int_t imcm = (data >> 18) & 0x07FF;
Int_t ibit = (data >> 31) & 0x0001;
-
parity = ComputeParity(data);
if (ibit != parity)
{
Int_t irownew = rowcol/4;
Int_t icolnew = rowcol%4;
- if (ddlno == 0)
+ if (ddlno == 0 )
{
- if (pbusid <= 2)
- {
- if (mcmno >= 12)
- {
- row = startRowBus[pbusid] + irownew;
- col = startColBus[pbusid] + (mcmno-12)*4 + icolnew;
- }
- else
- {
- // Add 16 to skip the 1st 15 rows
- row = startRowBus[pbusid] + irownew + 16;
- col = startColBus[pbusid] + mcmno*4 + icolnew;
- }
- }
- else if (pbusid > 2)
- {
- row = startRowBus[pbusid] + irownew;
- col = startColBus[pbusid] + mcmno*4 + icolnew;
-
- }
+ row = startRowBus[pbusid] + irownew;
+ col = startColBus[pbusid] + mcmno*4 + icolnew;
}
else if (ddlno == 1)
{
- if (pbusid <= 2)
- {
- if (mcmno >= 12)
- {
- row = endRowBus[pbusid] - (15 - irownew);
- col = startColBus[pbusid] + (mcmno-12)*4 + icolnew;
- }
- else
- {
- // Subtract 16 to skip the 1st 15 rows
- row = endRowBus[pbusid] - 16 - (15 - irownew) ;
- col = startColBus[pbusid] + mcmno*4 + icolnew;
- }
- }
- else if (pbusid > 2)
- {
- row = endRowBus[pbusid] - (15 - irownew);
- col = startColBus[pbusid] + mcmno*4 + icolnew;
- }
+ row = endRowBus[pbusid] - (15 - irownew);
+ col = startColBus[pbusid] + mcmno*4 + icolnew;
+
}
- else if (ddlno == 2)
+ else if (ddlno == 2 )
{
row = startRowBus[pbusid] + irownew;
col = endColBus[pbusid] - mcmno*4 - (3 - icolnew);
}
else if (ddlno == 3)
{
- row = endRowBus[pbusid] - (15 - irownew);
- col = endColBus[pbusid] - mcmno*4 - (3 - icolnew);
+ row = endRowBus[pbusid] - (15 - irownew);
+ col = endColBus[pbusid] - mcmno*4 - (3 - icolnew);
}
- else if (ddlno == 4)
+ else if (ddlno == 4 )
{
- if (pbusid <= 16)
+ if (pbusid < 18)
{
- if (mcmno >= 12)
+ if(mcmno > 11)
{
row = startRowBus[pbusid] + irownew;
col = startColBus[pbusid] + (mcmno-12)*4 + icolnew;
{
// Add 16 to skip the 1st 15 rows
row = startRowBus[pbusid] + irownew + 16;
- col = startColBus[pbusid] + mcmno*4 + icolnew;
+ col = startColBus[pbusid] + (mcmno)*4 + icolnew;
}
}
- else if (pbusid > 16 && pbusid <= 20)
+ else if(pbusid > 17)
{
- row = startRowBus[pbusid] + irownew;
- col = startColBus[pbusid] + mcmno*4 + icolnew;
-
- }
- else if(pbusid > 20)
- {
- row = endRowBus[pbusid] - (15 - irownew);
- col = endColBus[pbusid] - mcmno*4 - (3 - icolnew);
+ if(mcmno > 11)
+ {
+ row = endRowBus[pbusid] - (15 - irownew) ;
+ col = endColBus[pbusid] - (mcmno - 12)*4 - (3 - icolnew);
+ }
+ else
+ {
+ if(endRowBus[pbusid] - startRowBus[pbusid] > 16)
+ row = endRowBus[pbusid] - (15 - irownew) - 16 ;
+ else
+ row = endRowBus[pbusid] - (15 - irownew) ;
+ col = endColBus[pbusid] - mcmno*4 - (3 - icolnew);
+ }
}
}
+
else if (ddlno == 5)
{
- if (pbusid <= 16)
+ if (pbusid <= 17)
{
- if (mcmno >= 12)
+ if (mcmno > 11)
{
- row = endRowBus[pbusid] - (15 - irownew);
+ // Subtract 16 to skip the 1st 15 rows
+ row = endRowBus[pbusid] - 16 -(15 - irownew);
col = startColBus[pbusid] + (mcmno-12)*4 + icolnew;
}
else
{
- // Subtract 16 to skip the 1st 15 rows
- row = endRowBus[pbusid] - 16 - (15 - irownew) ;
+ row = endRowBus[pbusid] - (15 - irownew) ;
col = startColBus[pbusid] + mcmno*4 + icolnew;
}
}
- else if (pbusid > 16 && pbusid <= 20)
- {
- row = endRowBus[pbusid] - (15 - irownew);
- col = startColBus[pbusid] + mcmno*4 + icolnew;
- }
- else if (pbusid > 20)
+
+ else if (pbusid > 17)
{
- row = startRowBus[pbusid] + irownew;
- col = endColBus[pbusid] - mcmno*4 - (3 - icolnew);
+ if(mcmno > 11)
+ {
+ // Add 16 to skip the 1st 15 rows
+ row = startRowBus[pbusid] + irownew + 16;
+ col = endColBus[pbusid] - (mcmno - 12)*4 - (3 - icolnew);
+ }
+ else
+ {
+ row = startRowBus[pbusid] + irownew ;
+ col = endColBus[pbusid] - mcmno*4 - (3 - icolnew);
+ }
}
}
+
}
//_____________________________________________________________________________
void AliPMDRawStream::ConvertDDL2SMN(Int_t iddl, Int_t imodule,
row = irownew;
col = icolnew;
}
-
//_____________________________________________________________________________
-
-int AliPMDRawStream::ComputeParity(Int_t data)
+Int_t AliPMDRawStream::ComputeParity(Int_t data)
{
// Calculate the parity bit