ROOT logo
/***************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

#include <Riostream.h>
#include <TClonesArray.h>
#include <TTree.h>
#include <TBranch.h>
#include <TMath.h>
#include <TString.h>
#include <TSystem.h>

#include "AliLog.h"
#include "AliRawDataHeaderSim.h"
#include "AliBitPacking.h"
#include "AliPMDdigit.h"
#include "AliPMDBlockHeader.h"
#include "AliPMDDspHeader.h"
#include "AliPMDPatchBusHeader.h"
#include "AliPMDRawStream.h"
#include "AliPMDddlinfoData.h"
#include "AliPMDMappingData.h"
#include "AliPMDDDLRawData.h"
#include "AliDAQ.h"
#include "AliFstream.h"
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#include "AliCDBEntry.h"

ClassImp(AliPMDDDLRawData)

AliPMDDDLRawData::AliPMDDDLRawData():
  fDdlinfo(GetDdlinfoData()),
  fMapData(GetMappingData()),
  fDigits(new TClonesArray("AliPMDdigit", 1000))
{
  // Default Constructor
  //

}
//____________________________________________________________________________
AliPMDDDLRawData::AliPMDDDLRawData(const AliPMDDDLRawData& ddlraw):
  TObject(ddlraw),
  fDdlinfo(ddlraw.fDdlinfo),
  fMapData(ddlraw.fMapData),
  fDigits(ddlraw.fDigits)
{
  //Copy Constructor 
}
//____________________________________________________________________________
AliPMDDDLRawData & AliPMDDDLRawData::operator=(const AliPMDDDLRawData& ddlraw)
{
  //Assignment operator 
  if(this != &ddlraw)
    {
      fDdlinfo = ddlraw.fDdlinfo;
      fMapData = ddlraw.fMapData;
      fDigits  = ddlraw.fDigits;
    }
  return *this;
}
//____________________________________________________________________________

AliPMDDDLRawData::~AliPMDDDLRawData()
{
  // Default Destructor
  //

}

//____________________________________________________________________________
void AliPMDDDLRawData::WritePMDRawData(TTree *treeD)
{
  // write digits into raw data format

  AliFstream *outfile;

  TBranch *branch = treeD->GetBranch("PMDDigit");
  if (!branch)
    {
      AliError("PMD Digit branch not found");
      return;
    }
  branch->SetAddress(&fDigits);  
  
  Int_t   nmodules = (Int_t) treeD->GetEntries();
  AliDebug(1,Form("Number of modules inside treeD = %d",nmodules));

  const Int_t kDDL          = AliDAQ::NumberOfDdls("PMD");


  AliRawDataHeaderSim header;
 // UInt_t sizeRawData = 0;  //coverity (8443) fix satya (1/9/2014) 
  
  const Int_t kbusSize = 51;
  const Int_t kSize = 1536;
  UInt_t buffer[kSize];

  UInt_t busPatch[kbusSize][1536];

  Int_t contentsBus[kbusSize];

  Char_t filename[80];

  Int_t modulePerDDL        = 0;
  Int_t mmodule = 0;
  Int_t ddlno;
  Int_t modulenoddl[12] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};

  for(Int_t iddl = 0; iddl < kDDL; iddl++)
    {
      ddlno = iddl;
      modulePerDDL = fDdlinfo->GetNoOfModulePerDdl(iddl);
      if (modulePerDDL == 0) continue;
      for (Int_t im = 0; im < 12; im++)
	{
	  modulenoddl[im] = fDdlinfo->GetModulesPerDdl(iddl,im);;
	}

      strncpy(filename,AliDAQ::DdlFileName("PMD",iddl),79);
      
      outfile = new AliFstream(filename);
      
      // Write the Dummy Data Header into the file
      Int_t bHPosition = outfile->Tellp();
      outfile->WriteBuffer((char*)(&header),sizeof(header));

      for (Int_t ibus = 0; ibus < kbusSize; ibus++)
	{
	  contentsBus[ibus] = 0;
	  for (Int_t ich = 0; ich < kSize; ich++)
	    {
	      busPatch[ibus][ich] = 0;
	    }
	}

      for(Int_t ium = 0; ium < 12; ium++)
	{
	  // Extract energy deposition per cell and pack it
	  // in a 32-bit word and returns all the total words
	  // per one unit-module
	  
	  mmodule = modulenoddl[ium];
	  if(mmodule == -1) continue;
	  GetUMDigitsData(treeD, mmodule, iddl, contentsBus, busPatch);
	}

      Int_t ij = 0;
      Int_t dsp[10];
      Int_t dspBus[10];
      for (Int_t i = 0; i < 10; i++)
	{
	  dsp[i] = 0;
	  dspBus[i] = 0;
	  for (Int_t ibus=0; ibus < 5; ibus++)
	    {
	      ij++;
	      if (contentsBus[ij] > 0)
		{
		  dsp[i] += contentsBus[ij];
		}
	      dspBus[i]++;
	    }
	  // Add the patch Bus header to the DSP contents
	  dsp[i] += 4*dspBus[i];
	}

      Int_t dspBlockARDL    = 0;
      Int_t dspBlockBRDL    = 0;
      Int_t remainder       = 0;


      for (Int_t i = 0; i < 5; i++)
	{
	  Int_t ieven = 2*i;
	  Int_t iodd  = 2*i + 1;
	  if (dsp[ieven] > 0)
	    {
	      dspBlockARDL += dsp[ieven];
	      remainder = dsp[ieven]%2;
	      if (remainder == 1)
		{
		  dspBlockARDL++;
		}
	    }
	  if (dsp[iodd] > 0)
	    {
	      dspBlockBRDL += dsp[iodd];
	      remainder = dsp[iodd]%2;
	      if (remainder == 1)
		{
		  dspBlockBRDL++;
		}
	    }
	}

      dspBlockARDL += 50;
      dspBlockBRDL += 50;

      // Start writing the DDL file

      AliPMDBlockHeader blHeader;
      AliPMDDspHeader   dspHeader;
      AliPMDPatchBusHeader pbusHeader;

      const Int_t kblHLen   = blHeader.GetHeaderLength();
      const Int_t kdspHLen  = dspHeader.GetHeaderLength();
      const Int_t kpbusHLen = pbusHeader.GetHeaderLength();

      UInt_t dspRDL = 0;
      UInt_t dspBlockHeaderWord[8];
      UInt_t dspHeaderWord[10];
      UInt_t patchBusHeaderWord[4];
      Int_t  iskip[5];
      UInt_t ddlEndWord[2] = {0xDEADFACE, 0xDEADFACE};

      for (Int_t iblock = 0; iblock < 2; iblock++)
	{
	  // DSP Block Header
	  
	  for (Int_t i=0; i<kblHLen; i++)
	    {
	      dspBlockHeaderWord[i] = 0;
	    }
	  if (iblock == 0)
	    {
	      dspBlockHeaderWord[1] = (UInt_t) (dspBlockARDL + kblHLen);
	      dspBlockHeaderWord[2] = (UInt_t) dspBlockARDL;
	    }
	  else if (iblock == 1)
	    {
	      dspBlockHeaderWord[1] = (UInt_t) (dspBlockBRDL + kblHLen);
	      dspBlockHeaderWord[2] = (UInt_t) dspBlockBRDL;
	    }

	  outfile->WriteBuffer((char*)dspBlockHeaderWord,kblHLen*sizeof(UInt_t));

	  if (iblock == 0)
	    {
	      iskip[0] = 0;
	      iskip[1] = 10;
	      iskip[2] = 20;
	      iskip[3] = 30;
	      iskip[4] = 40;
	    }
	  else if (iblock == 1)
	    {
	      iskip[0] = 5;
	      iskip[1] = 15;
	      iskip[2] = 25;
	      iskip[3] = 35;
	      iskip[4] = 45;
	    }

	  for (Int_t idsp = 0; idsp < 5; idsp++)
	    {
	      // DSP Header
	      Int_t dspno = 0;
	      if (iblock == 0)
		{
		  dspno = 2*idsp;
		  dspRDL = (UInt_t) dsp[dspno];
		}
	      else if (iblock == 1)
		{
		  dspno = 2*idsp + 1;
		  dspRDL = (UInt_t) dsp[dspno];
		}

	      for (Int_t i=0; i<kdspHLen; i++)
		{
		  dspHeaderWord[i] = 0;
		}
	      remainder = dspRDL%2;
	      if (remainder == 1) dspRDL++;

	      dspHeaderWord[1] = dspRDL + kdspHLen;
	      dspHeaderWord[2] = dspRDL;
	      dspHeaderWord[3] = dspno;
	      if (remainder == 1) dspHeaderWord[8] = 1; // setting the padding word


	      outfile->WriteBuffer((char*)dspHeaderWord,kdspHLen*sizeof(UInt_t));

	      for (Int_t ibus = 0; ibus < 5; ibus++)
		{
		  // Patch Bus Header

		  Int_t busno = iskip[idsp] + ibus + 1;
		  Int_t patchbusRDL = contentsBus[busno];

		  if (patchbusRDL > 0)
		    {
		      patchBusHeaderWord[0] = 0;
		      patchBusHeaderWord[1] = (UInt_t) (patchbusRDL + kpbusHLen);
		      patchBusHeaderWord[2] = (UInt_t) patchbusRDL;
		      patchBusHeaderWord[3] = (UInt_t) busno;
		    }
		  else if (patchbusRDL == 0)
		    {
		      patchBusHeaderWord[0] = 0;
		      patchBusHeaderWord[1] = (UInt_t) kpbusHLen;
		      patchBusHeaderWord[2] = (UInt_t) 0;
		      patchBusHeaderWord[3] = (UInt_t) busno;
		    }


		  outfile->WriteBuffer((char*)patchBusHeaderWord,4*sizeof(UInt_t));

		  for (Int_t iword = 0; iword < patchbusRDL; iword++)
		    {
		      buffer[iword] = busPatch[busno][iword];
		    }
		  
		  outfile->WriteBuffer((char*)buffer,patchbusRDL*sizeof(UInt_t));

		} // End of patch bus loop


	      // Adding a padding word if the total words odd
	      if (remainder == 1)
		{
		  UInt_t paddingWord = dspHeader.GetDefaultPaddingWord();
		  outfile->WriteBuffer((char*)(&paddingWord),sizeof(UInt_t));
		}
	    }
	}

      // Write two extra word at the end of each DDL file
      outfile->WriteBuffer((char*)ddlEndWord,2*sizeof(UInt_t));

      // Write real data header
      // take the pointer to the beginning of the data header
      // write the total number of words per ddl and bring the
      // pointer to the current file position and close it
      UInt_t cFPosition = outfile->Tellp();
      //sizeRawData = cFPosition - bHPosition - sizeof(header); // coverity (8443) fix satya (1/9/2014) 

      header.fSize = cFPosition - bHPosition;
      header.SetAttribute(0);  // valid data
      outfile->Seekp(bHPosition);
      outfile->WriteBuffer((char*)(&header),sizeof(header));
      outfile->Seekp(cFPosition);

      delete outfile;
    } // DDL Loop over

}
//____________________________________________________________________________

void AliPMDDDLRawData::GetUMDigitsData(TTree *treeD, Int_t imodule,
				       Int_t ddlno,  Int_t *contentsBus,
				       UInt_t busPatch[][1536])
{
  // Retrieves digits data UnitModule by UnitModule

  const Int_t kMaxBus = 51;

  UInt_t baseword = 0;
  UInt_t mcmno = 0, chno = 0;
  UInt_t adc = 0;
  Int_t  det = 0, smn = 0, irow = 0, icol = 0;
  UInt_t  parity = 0;
  
  Int_t busno = 0;
  Int_t patchBusNo[kMaxBus], mcmperBus[kMaxBus];
  Int_t startRowBus[kMaxBus], startColBus[kMaxBus];
  Int_t endRowBus[kMaxBus], endColBus[kMaxBus];

  Int_t beginPatchBus = -1;
  Int_t endPatchBus   = -1;
  for(Int_t i = 0; i < kMaxBus; i++)
    {
      patchBusNo[i]  = -1;
      mcmperBus[i]   = -1;
      startRowBus[i] = -1;
      startColBus[i] = -1;
      endRowBus[i]   = -1;
      endColBus[i]   = -1;
    }

  // Fetch the DDL mapping info from the mapping database

  DdlMapping(ddlno, imodule, beginPatchBus, endPatchBus,
	     patchBusNo, mcmperBus, startRowBus, endRowBus,
	     startColBus, endColBus);

  // Read if some chains are off from the ddlinfo database

  Int_t srowoff1[2][24], erowoff1[2][24];
  Int_t scoloff1[2][24], ecoloff1[2][24];
  Int_t srowoff2[2][24], erowoff2[2][24];
  Int_t scoloff2[2][24], ecoloff2[2][24];

  for (Int_t idet = 0; idet < 2; idet++)
    {
      for (Int_t im = 0; im < 24; im++)
	{
	  srowoff1[idet][im] = fDdlinfo->GetStartRowA(idet,im);
	  erowoff1[idet][im] = fDdlinfo->GetEndRowA(idet,im);
	  scoloff1[idet][im] = fDdlinfo->GetStartColA(idet,im);
	  ecoloff1[idet][im] = fDdlinfo->GetEndColA(idet,im);
	  srowoff2[idet][im] = fDdlinfo->GetStartRowB(idet,im);
	  erowoff2[idet][im] = fDdlinfo->GetEndRowB(idet,im);
	  scoloff2[idet][im] = fDdlinfo->GetStartColB(idet,im);
	  ecoloff2[idet][im] = fDdlinfo->GetEndColB(idet,im);
	}
    }

  treeD->GetEntry(imodule); 
  Int_t nentries = fDigits->GetLast();
  Int_t totword = nentries+1;

  AliPMDdigit *pmddigit = 0x0;

  for (Int_t ient = 0; ient < totword; ient++)
    {
      pmddigit = (AliPMDdigit*)fDigits->UncheckedAt(ient);
      
      det    = pmddigit->GetDetector();
      smn    = pmddigit->GetSMNumber();
      irow   = pmddigit->GetRow();
      icol   = pmddigit->GetColumn();
      Float_t aadc = pmddigit->GetADC();
      if (aadc < 0.) aadc = 0.;
      adc    = (UInt_t) aadc;

      TransformS2H(smn,irow,icol);
      
      // remove the non-existence channels

      //printf("%d %d %d %d\n",det,smn,irow,icol);
      //printf("--- %d   %d   %d   %d\n",srowoff[det][smn],erowoff[det][smn],
      //     scoloff[det][smn],ecoloff[det][smn]);

      if (irow >= srowoff1[det][smn] && irow <= erowoff1[det][smn])
	{
	  if (icol >= scoloff1[det][smn] && icol <= ecoloff1[det][smn])
	    {
	      continue;
	    }
	}
      if (irow >= srowoff2[det][smn] && irow <= erowoff2[det][smn])
	{
	  if (icol >= scoloff2[det][smn] && icol <= ecoloff2[det][smn])
	    {
	      continue;
	    }
	}


      GetMCMCh(imodule, irow, icol, beginPatchBus, endPatchBus,
	       mcmperBus, startRowBus, startColBus,
	       endRowBus, endColBus, busno, mcmno, chno);

      baseword = 0;
      AliBitPacking::PackWord(adc,baseword,0,11);
      AliBitPacking::PackWord(chno,baseword,12,17);
      AliBitPacking::PackWord(mcmno,baseword,18,28);
      AliBitPacking::PackWord(0,baseword,29,30);
      parity = ComputeParity(baseword);      // generate the parity bit
      AliBitPacking::PackWord(parity,baseword,31,31);

      Int_t jj = contentsBus[busno];
      busPatch[busno][jj] = baseword;

      contentsBus[busno]++;
    }

}

//____________________________________________________________________________
void AliPMDDDLRawData::TransformS2H(Int_t smn, Int_t &irow, Int_t &icol)
{
  // Does the Software to Hardware coordinate transformation
  //

  Int_t  irownew = 0;
  Int_t  icolnew = 0;

  // First in digits we have all dimension 48x96
  // Transform into the realistic one, i.e, For SM 0&1 96(row)x48(col)
  // and for SM 2&3 48(row)x96(col)
  // 
  if(smn < 12)
    {
      irownew = icol;
      icolnew = irow;
    }
  else if( smn >= 12 && smn < 24)
    {
      irownew = irow;
      icolnew = icol;
    }

  irow = irownew;
  icol = icolnew;

}


//____________________________________________________________________________

void AliPMDDDLRawData::GetMCMCh(Int_t imodule, Int_t row, Int_t col,
				Int_t beginPatchBus, Int_t endPatchBus,
				Int_t *mcmperBus,
				Int_t *startRowBus, Int_t *startColBus,
				Int_t *endRowBus, Int_t *endColBus,
				Int_t & busno, UInt_t &mcmno, UInt_t &chno)
{
  // This converts row col to hardware channel number
  // This is the final version of mapping supplied by Mriganka

    UInt_t iCh[16][4];

    static const UInt_t kChDdl01[16][4] = { {6, 4, 5, 7},
					   {10, 2, 1, 9},
					   {12, 0, 3, 11},
					   {14, 8, 13, 15},
					   {16, 18, 23, 17},
					   {20, 28, 31, 19},
					   {22, 30, 29, 21},
					   {24, 26, 27, 25},
					   {38, 36, 37, 39},
					   {42, 34, 33, 41},
					   {44, 32, 35, 43},
					   {46, 40, 45, 47},
					   {48, 50, 55, 49},
					   {52, 60, 63, 51},
					   {54, 62, 61, 53},
					   {56, 58, 59, 57} };


    static const UInt_t kChDdl23[16][4] = { {57, 59, 58, 56},
					    {53, 61, 62, 54},
					    {51, 63, 60, 52},
					    {49, 55, 50, 48},
					    {47, 45, 40, 46},
					    {43, 35, 32, 44},
					    {41, 33, 34, 42},
					    {39, 37, 36, 38},
					    {25, 27, 26, 24},
					    {21, 29, 30, 22},
					    {19, 31, 28, 20},
					    {17, 23, 18, 16},
					    {15, 13, 8, 14},
					    {11, 3, 0, 12},
					    {9, 1, 2, 10},
					    {7, 5, 4, 6} };
    
    
    static const UInt_t kChDdl41[16][4] = { {56, 58, 59, 57},
					   {54, 62, 61, 53},
					   {52, 60, 63, 51},
					   {48, 50, 55, 49},
					   {46, 40, 45, 47},
					   {44, 32, 35, 43},
					   {42, 34, 33, 41},
					   {38, 36, 37, 39},
					   {24, 26, 27, 25},
					   {22, 30, 29, 21},
					   {20, 28, 31, 19},
					   {16, 18, 23, 17},
					   {14, 8, 13, 15},
					   {12, 0, 3, 11},
					   {10, 2, 1, 9},
					   {6, 4, 5, 7} };


    static const UInt_t kChDdl42[16][4] = { {7, 5, 4, 6},
					    {9, 1, 2, 10},
					    {11, 3, 0, 12},
					    {15, 13, 8, 14},
					    {17, 23, 18, 16},
					    {19, 31, 28, 20},
					    {21, 29, 30, 22},
					    {25, 27, 26, 24},
					    {39, 37, 36, 38},
					    {41, 33, 34, 42},
					    {43, 35, 32, 44},
					    {47, 45, 40, 46},
					    {49, 55, 50, 48},
					    {51, 63, 60, 52},
					    {53, 61, 62, 54},
					    {57, 59, 58, 56} };


    static const UInt_t kChDdl51[16][4] = { {7, 5, 4, 6},
					    {9, 1, 2, 10},
					    {11, 3, 0, 12},
					    {15, 13, 8, 14},
					    {17, 23, 18, 16},
					    {19, 31, 28, 20},
					    {21, 29, 30, 22},
					    {25, 27, 26, 24},
					    {39, 37, 36, 38},
					    {41, 33, 34, 42},
					    {43, 35, 32, 44},
					    {47, 45, 40, 46},
					    {49, 55, 50, 48},
					    {51, 63, 60, 52},
					    {53, 61, 62, 54},
					    {57, 59, 58, 56} };
    


    static const UInt_t kChDdl52[16][4] = { {56, 58, 59, 57},
					    {54, 62, 61, 53},
					    {52, 60, 63, 51},
					    {48, 50, 55, 49},
					    {46, 40, 45, 47},
					    {44, 32, 35, 43},
					    {42, 34, 33, 41},
					    {38, 36, 37, 39},
					    {24, 26, 27, 25},
					    {22, 30, 29, 21},
					    {20, 28, 31, 19},
					    {16, 18, 23, 17},
					    {14, 8, 13, 15},
					    {12, 0, 3, 11},
					    {10, 2, 1, 9},
					    {6, 4, 5, 7} };
    
    
    for (Int_t i = 0; i < 16; i++)
      {
	for (Int_t j = 0; j < 4; j++)
	  {
	    
	    if(imodule < 6)                    iCh[i][j] = kChDdl01[i][j];
	    if(imodule >= 6 && imodule <= 11)  iCh[i][j] = kChDdl01[i][j];
	    if(imodule >= 12 && imodule <= 17) iCh[i][j] = kChDdl23[i][j];
	    if(imodule >= 18 && imodule <= 23) iCh[i][j] = kChDdl23[i][j];

	    if(imodule >= 24 && imodule <= 29) iCh[i][j] = kChDdl41[i][j];
	    if(imodule >= 42 && imodule <= 47) iCh[i][j] = kChDdl42[i][j];
	    if(imodule >= 36 && imodule <= 41) iCh[i][j] = kChDdl51[i][j];
	    if(imodule >= 30 && imodule <= 35) iCh[i][j] = kChDdl52[i][j];
	    
	  }
      }


  Int_t irownew = row%16;
  Int_t icolnew = col%4;
  
  chno  = iCh[irownew][icolnew];
  
  
  for (Int_t ibus = beginPatchBus; ibus <= endPatchBus; ibus++)
    {
      Int_t srow = startRowBus[ibus];
      Int_t erow = endRowBus[ibus];
      Int_t scol = startColBus[ibus];
      Int_t ecol = endColBus[ibus];
      Int_t tmcm = mcmperBus[ibus];

      if ((row >= srow && row <= erow) && (col >= scol && col <= ecol))
	{
	  busno = ibus;
	  
	  // Find out the MCM Number
	  //

	  if (imodule < 6)                  mcmno = (col-scol)/4 + 1;
	  if (imodule >= 6 && imodule < 12) mcmno = (col-scol)/4 + 1;

	  if (imodule >= 12 && imodule < 18)
	    {
	      icolnew = (col - scol)/4;
	      mcmno = tmcm - icolnew;
	    }	      
	  if (imodule >= 18 && imodule < 24)
	    {
	      icolnew = (col - scol)/4;
	      mcmno = tmcm - icolnew;
	    }	      

	  // DDL = 4
	  if (imodule >= 24 && imodule < 30)
	    {

	      //if (tmcm == 24)
	      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 + 1;
		    }
		  else if(row >= midrow && row <= erow)
		    
		    {
		      mcmno = (col-scol)/4 + 1;
		    }
		}
	      else if (rowdiff < 16)
		{
		  mcmno = (col-scol)/4 + 1;
		}
	    
	    }	      
	  if (imodule >= 42 && imodule < 48)
	    {
	      Int_t rowdiff = endRowBus[ibus] - startRowBus[ibus];
	      if(rowdiff > 16)
		{
		  Int_t midrow = srow + 16;
		  if (row >= midrow && row <= erow)
		    {
		      mcmno = 12 + (ecol -col)/4 + 1;
		    }
		  else if (row >= srow && row < midrow)
		    {
		      mcmno = (ecol - col)/4 + 1;
		    }
		}
	      else if (rowdiff < 16)
		{
		  mcmno = (ecol - col)/4 + 1;
		}
	    }	      

	  // DDL = 5
	  if (imodule >= 30 && imodule < 36)
	    {
	      // CPV plane,  SU Mod = 1, 2 : ddl = 5
	      
	      //if(tmcm == 24)
	      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 + 1;
		    }
		  else if(row >= midrow && row <= erow)
		    {
		      mcmno = (col-scol)/4 + 1;
		    }
		}
	      else if(rowdiff < 16)
		{
		  mcmno = (col-scol)/4 + 1;
		}
	      
	    }
	  if (imodule >= 36 && imodule < 42)
	    {
	      Int_t rowdiff = endRowBus[ibus] - startRowBus[ibus];
	      if(rowdiff > 16)
		{
		  Int_t midrow = srow + 16;
		  if (row >= midrow && row <= erow)
		    {
		      mcmno = 12 + (ecol - col)/4 + 1;
		    }
		  else if (row >= srow && row < midrow)
		    {
		      mcmno = (ecol - col)/4 + 1;
		    }
		}
	      else if (rowdiff < 16)
		{
		  mcmno = (ecol - col)/4 + 1;
		}
	    }

	}
    }
} 

//____________________________________________________________________________

UInt_t AliPMDDDLRawData::ComputeParity(UInt_t baseword)
{
  // Generate the parity bit

  UInt_t count = 0;
  for(Int_t j=0; j<29; j++)
    {
      if (baseword & 0x01 ) count++;
      baseword >>= 1;
    }
  UInt_t parity = count%2;
  return parity;
}
//____________________________________________________________________________
void AliPMDDDLRawData::DdlMapping(Int_t iddl, Int_t imodule,
				  Int_t &beginPatchBus, Int_t &endPatchBus,
				  Int_t patchBusNo[], Int_t mcmperBus[],
				  Int_t startRowBus[], Int_t endRowBus[],
				  Int_t startColBus[], Int_t endColBus[])
{
  // DDL Mapping fetching from mapping database

  beginPatchBus = fMapData->GetBeginPatchBus(iddl,imodule);
  endPatchBus   = fMapData->GetEndPatchBus(iddl,imodule);

  for(Int_t ibus = beginPatchBus; ibus < endPatchBus+1; ibus++)
    {
      patchBusNo[ibus]   = 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);
    }

}
//____________________________________________________________________________

AliPMDddlinfoData* AliPMDDDLRawData::GetDdlinfoData() const
{
  // The run number will be centralized in AliCDBManager,
  // you don't need to set it here!
  AliCDBEntry  *entry = AliCDBManager::Instance()->Get("PMD/Calib/Ddlinfo");
  
  if(!entry) AliFatal("ddlinfo object retrieval failed!");
  
  AliPMDddlinfoData *ddlinfo = 0;
  if (entry) ddlinfo = (AliPMDddlinfoData*) entry->GetObject();
  
  if (!ddlinfo)  AliFatal("No ddl info data from  database !");
  
  return ddlinfo;
}
//____________________________________________________________________________
AliPMDMappingData* AliPMDDDLRawData::GetMappingData() const
{
  // The run number will be centralized in AliCDBManager,
  // you don't need to set it here!
  AliCDBEntry  *entry = AliCDBManager::Instance()->Get("PMD/Calib/Mapping");
  
  if(!entry) AliFatal("Mapping object retrieval failed!");
  
  AliPMDMappingData *mapda = 0;
  if (entry) mapda = (AliPMDMappingData*) entry->GetObject();
  
  if (!mapda)  AliFatal("No mapping data from  database !");
  
  return mapda;
}
//____________________________________________________________________________
 AliPMDDDLRawData.cxx:1
 AliPMDDDLRawData.cxx:2
 AliPMDDDLRawData.cxx:3
 AliPMDDDLRawData.cxx:4
 AliPMDDDLRawData.cxx:5
 AliPMDDDLRawData.cxx:6
 AliPMDDDLRawData.cxx:7
 AliPMDDDLRawData.cxx:8
 AliPMDDDLRawData.cxx:9
 AliPMDDDLRawData.cxx:10
 AliPMDDDLRawData.cxx:11
 AliPMDDDLRawData.cxx:12
 AliPMDDDLRawData.cxx:13
 AliPMDDDLRawData.cxx:14
 AliPMDDDLRawData.cxx:15
 AliPMDDDLRawData.cxx:16
 AliPMDDDLRawData.cxx:17
 AliPMDDDLRawData.cxx:18
 AliPMDDDLRawData.cxx:19
 AliPMDDDLRawData.cxx:20
 AliPMDDDLRawData.cxx:21
 AliPMDDDLRawData.cxx:22
 AliPMDDDLRawData.cxx:23
 AliPMDDDLRawData.cxx:24
 AliPMDDDLRawData.cxx:25
 AliPMDDDLRawData.cxx:26
 AliPMDDDLRawData.cxx:27
 AliPMDDDLRawData.cxx:28
 AliPMDDDLRawData.cxx:29
 AliPMDDDLRawData.cxx:30
 AliPMDDDLRawData.cxx:31
 AliPMDDDLRawData.cxx:32
 AliPMDDDLRawData.cxx:33
 AliPMDDDLRawData.cxx:34
 AliPMDDDLRawData.cxx:35
 AliPMDDDLRawData.cxx:36
 AliPMDDDLRawData.cxx:37
 AliPMDDDLRawData.cxx:38
 AliPMDDDLRawData.cxx:39
 AliPMDDDLRawData.cxx:40
 AliPMDDDLRawData.cxx:41
 AliPMDDDLRawData.cxx:42
 AliPMDDDLRawData.cxx:43
 AliPMDDDLRawData.cxx:44
 AliPMDDDLRawData.cxx:45
 AliPMDDDLRawData.cxx:46
 AliPMDDDLRawData.cxx:47
 AliPMDDDLRawData.cxx:48
 AliPMDDDLRawData.cxx:49
 AliPMDDDLRawData.cxx:50
 AliPMDDDLRawData.cxx:51
 AliPMDDDLRawData.cxx:52
 AliPMDDDLRawData.cxx:53
 AliPMDDDLRawData.cxx:54
 AliPMDDDLRawData.cxx:55
 AliPMDDDLRawData.cxx:56
 AliPMDDDLRawData.cxx:57
 AliPMDDDLRawData.cxx:58
 AliPMDDDLRawData.cxx:59
 AliPMDDDLRawData.cxx:60
 AliPMDDDLRawData.cxx:61
 AliPMDDDLRawData.cxx:62
 AliPMDDDLRawData.cxx:63
 AliPMDDDLRawData.cxx:64
 AliPMDDDLRawData.cxx:65
 AliPMDDDLRawData.cxx:66
 AliPMDDDLRawData.cxx:67
 AliPMDDDLRawData.cxx:68
 AliPMDDDLRawData.cxx:69
 AliPMDDDLRawData.cxx:70
 AliPMDDDLRawData.cxx:71
 AliPMDDDLRawData.cxx:72
 AliPMDDDLRawData.cxx:73
 AliPMDDDLRawData.cxx:74
 AliPMDDDLRawData.cxx:75
 AliPMDDDLRawData.cxx:76
 AliPMDDDLRawData.cxx:77
 AliPMDDDLRawData.cxx:78
 AliPMDDDLRawData.cxx:79
 AliPMDDDLRawData.cxx:80
 AliPMDDDLRawData.cxx:81
 AliPMDDDLRawData.cxx:82
 AliPMDDDLRawData.cxx:83
 AliPMDDDLRawData.cxx:84
 AliPMDDDLRawData.cxx:85
 AliPMDDDLRawData.cxx:86
 AliPMDDDLRawData.cxx:87
 AliPMDDDLRawData.cxx:88
 AliPMDDDLRawData.cxx:89
 AliPMDDDLRawData.cxx:90
 AliPMDDDLRawData.cxx:91
 AliPMDDDLRawData.cxx:92
 AliPMDDDLRawData.cxx:93
 AliPMDDDLRawData.cxx:94
 AliPMDDDLRawData.cxx:95
 AliPMDDDLRawData.cxx:96
 AliPMDDDLRawData.cxx:97
 AliPMDDDLRawData.cxx:98
 AliPMDDDLRawData.cxx:99
 AliPMDDDLRawData.cxx:100
 AliPMDDDLRawData.cxx:101
 AliPMDDDLRawData.cxx:102
 AliPMDDDLRawData.cxx:103
 AliPMDDDLRawData.cxx:104
 AliPMDDDLRawData.cxx:105
 AliPMDDDLRawData.cxx:106
 AliPMDDDLRawData.cxx:107
 AliPMDDDLRawData.cxx:108
 AliPMDDDLRawData.cxx:109
 AliPMDDDLRawData.cxx:110
 AliPMDDDLRawData.cxx:111
 AliPMDDDLRawData.cxx:112
 AliPMDDDLRawData.cxx:113
 AliPMDDDLRawData.cxx:114
 AliPMDDDLRawData.cxx:115
 AliPMDDDLRawData.cxx:116
 AliPMDDDLRawData.cxx:117
 AliPMDDDLRawData.cxx:118
 AliPMDDDLRawData.cxx:119
 AliPMDDDLRawData.cxx:120
 AliPMDDDLRawData.cxx:121
 AliPMDDDLRawData.cxx:122
 AliPMDDDLRawData.cxx:123
 AliPMDDDLRawData.cxx:124
 AliPMDDDLRawData.cxx:125
 AliPMDDDLRawData.cxx:126
 AliPMDDDLRawData.cxx:127
 AliPMDDDLRawData.cxx:128
 AliPMDDDLRawData.cxx:129
 AliPMDDDLRawData.cxx:130
 AliPMDDDLRawData.cxx:131
 AliPMDDDLRawData.cxx:132
 AliPMDDDLRawData.cxx:133
 AliPMDDDLRawData.cxx:134
 AliPMDDDLRawData.cxx:135
 AliPMDDDLRawData.cxx:136
 AliPMDDDLRawData.cxx:137
 AliPMDDDLRawData.cxx:138
 AliPMDDDLRawData.cxx:139
 AliPMDDDLRawData.cxx:140
 AliPMDDDLRawData.cxx:141
 AliPMDDDLRawData.cxx:142
 AliPMDDDLRawData.cxx:143
 AliPMDDDLRawData.cxx:144
 AliPMDDDLRawData.cxx:145
 AliPMDDDLRawData.cxx:146
 AliPMDDDLRawData.cxx:147
 AliPMDDDLRawData.cxx:148
 AliPMDDDLRawData.cxx:149
 AliPMDDDLRawData.cxx:150
 AliPMDDDLRawData.cxx:151
 AliPMDDDLRawData.cxx:152
 AliPMDDDLRawData.cxx:153
 AliPMDDDLRawData.cxx:154
 AliPMDDDLRawData.cxx:155
 AliPMDDDLRawData.cxx:156
 AliPMDDDLRawData.cxx:157
 AliPMDDDLRawData.cxx:158
 AliPMDDDLRawData.cxx:159
 AliPMDDDLRawData.cxx:160
 AliPMDDDLRawData.cxx:161
 AliPMDDDLRawData.cxx:162
 AliPMDDDLRawData.cxx:163
 AliPMDDDLRawData.cxx:164
 AliPMDDDLRawData.cxx:165
 AliPMDDDLRawData.cxx:166
 AliPMDDDLRawData.cxx:167
 AliPMDDDLRawData.cxx:168
 AliPMDDDLRawData.cxx:169
 AliPMDDDLRawData.cxx:170
 AliPMDDDLRawData.cxx:171
 AliPMDDDLRawData.cxx:172
 AliPMDDDLRawData.cxx:173
 AliPMDDDLRawData.cxx:174
 AliPMDDDLRawData.cxx:175
 AliPMDDDLRawData.cxx:176
 AliPMDDDLRawData.cxx:177
 AliPMDDDLRawData.cxx:178
 AliPMDDDLRawData.cxx:179
 AliPMDDDLRawData.cxx:180
 AliPMDDDLRawData.cxx:181
 AliPMDDDLRawData.cxx:182
 AliPMDDDLRawData.cxx:183
 AliPMDDDLRawData.cxx:184
 AliPMDDDLRawData.cxx:185
 AliPMDDDLRawData.cxx:186
 AliPMDDDLRawData.cxx:187
 AliPMDDDLRawData.cxx:188
 AliPMDDDLRawData.cxx:189
 AliPMDDDLRawData.cxx:190
 AliPMDDDLRawData.cxx:191
 AliPMDDDLRawData.cxx:192
 AliPMDDDLRawData.cxx:193
 AliPMDDDLRawData.cxx:194
 AliPMDDDLRawData.cxx:195
 AliPMDDDLRawData.cxx:196
 AliPMDDDLRawData.cxx:197
 AliPMDDDLRawData.cxx:198
 AliPMDDDLRawData.cxx:199
 AliPMDDDLRawData.cxx:200
 AliPMDDDLRawData.cxx:201
 AliPMDDDLRawData.cxx:202
 AliPMDDDLRawData.cxx:203
 AliPMDDDLRawData.cxx:204
 AliPMDDDLRawData.cxx:205
 AliPMDDDLRawData.cxx:206
 AliPMDDDLRawData.cxx:207
 AliPMDDDLRawData.cxx:208
 AliPMDDDLRawData.cxx:209
 AliPMDDDLRawData.cxx:210
 AliPMDDDLRawData.cxx:211
 AliPMDDDLRawData.cxx:212
 AliPMDDDLRawData.cxx:213
 AliPMDDDLRawData.cxx:214
 AliPMDDDLRawData.cxx:215
 AliPMDDDLRawData.cxx:216
 AliPMDDDLRawData.cxx:217
 AliPMDDDLRawData.cxx:218
 AliPMDDDLRawData.cxx:219
 AliPMDDDLRawData.cxx:220
 AliPMDDDLRawData.cxx:221
 AliPMDDDLRawData.cxx:222
 AliPMDDDLRawData.cxx:223
 AliPMDDDLRawData.cxx:224
 AliPMDDDLRawData.cxx:225
 AliPMDDDLRawData.cxx:226
 AliPMDDDLRawData.cxx:227
 AliPMDDDLRawData.cxx:228
 AliPMDDDLRawData.cxx:229
 AliPMDDDLRawData.cxx:230
 AliPMDDDLRawData.cxx:231
 AliPMDDDLRawData.cxx:232
 AliPMDDDLRawData.cxx:233
 AliPMDDDLRawData.cxx:234
 AliPMDDDLRawData.cxx:235
 AliPMDDDLRawData.cxx:236
 AliPMDDDLRawData.cxx:237
 AliPMDDDLRawData.cxx:238
 AliPMDDDLRawData.cxx:239
 AliPMDDDLRawData.cxx:240
 AliPMDDDLRawData.cxx:241
 AliPMDDDLRawData.cxx:242
 AliPMDDDLRawData.cxx:243
 AliPMDDDLRawData.cxx:244
 AliPMDDDLRawData.cxx:245
 AliPMDDDLRawData.cxx:246
 AliPMDDDLRawData.cxx:247
 AliPMDDDLRawData.cxx:248
 AliPMDDDLRawData.cxx:249
 AliPMDDDLRawData.cxx:250
 AliPMDDDLRawData.cxx:251
 AliPMDDDLRawData.cxx:252
 AliPMDDDLRawData.cxx:253
 AliPMDDDLRawData.cxx:254
 AliPMDDDLRawData.cxx:255
 AliPMDDDLRawData.cxx:256
 AliPMDDDLRawData.cxx:257
 AliPMDDDLRawData.cxx:258
 AliPMDDDLRawData.cxx:259
 AliPMDDDLRawData.cxx:260
 AliPMDDDLRawData.cxx:261
 AliPMDDDLRawData.cxx:262
 AliPMDDDLRawData.cxx:263
 AliPMDDDLRawData.cxx:264
 AliPMDDDLRawData.cxx:265
 AliPMDDDLRawData.cxx:266
 AliPMDDDLRawData.cxx:267
 AliPMDDDLRawData.cxx:268
 AliPMDDDLRawData.cxx:269
 AliPMDDDLRawData.cxx:270
 AliPMDDDLRawData.cxx:271
 AliPMDDDLRawData.cxx:272
 AliPMDDDLRawData.cxx:273
 AliPMDDDLRawData.cxx:274
 AliPMDDDLRawData.cxx:275
 AliPMDDDLRawData.cxx:276
 AliPMDDDLRawData.cxx:277
 AliPMDDDLRawData.cxx:278
 AliPMDDDLRawData.cxx:279
 AliPMDDDLRawData.cxx:280
 AliPMDDDLRawData.cxx:281
 AliPMDDDLRawData.cxx:282
 AliPMDDDLRawData.cxx:283
 AliPMDDDLRawData.cxx:284
 AliPMDDDLRawData.cxx:285
 AliPMDDDLRawData.cxx:286
 AliPMDDDLRawData.cxx:287
 AliPMDDDLRawData.cxx:288
 AliPMDDDLRawData.cxx:289
 AliPMDDDLRawData.cxx:290
 AliPMDDDLRawData.cxx:291
 AliPMDDDLRawData.cxx:292
 AliPMDDDLRawData.cxx:293
 AliPMDDDLRawData.cxx:294
 AliPMDDDLRawData.cxx:295
 AliPMDDDLRawData.cxx:296
 AliPMDDDLRawData.cxx:297
 AliPMDDDLRawData.cxx:298
 AliPMDDDLRawData.cxx:299
 AliPMDDDLRawData.cxx:300
 AliPMDDDLRawData.cxx:301
 AliPMDDDLRawData.cxx:302
 AliPMDDDLRawData.cxx:303
 AliPMDDDLRawData.cxx:304
 AliPMDDDLRawData.cxx:305
 AliPMDDDLRawData.cxx:306
 AliPMDDDLRawData.cxx:307
 AliPMDDDLRawData.cxx:308
 AliPMDDDLRawData.cxx:309
 AliPMDDDLRawData.cxx:310
 AliPMDDDLRawData.cxx:311
 AliPMDDDLRawData.cxx:312
 AliPMDDDLRawData.cxx:313
 AliPMDDDLRawData.cxx:314
 AliPMDDDLRawData.cxx:315
 AliPMDDDLRawData.cxx:316
 AliPMDDDLRawData.cxx:317
 AliPMDDDLRawData.cxx:318
 AliPMDDDLRawData.cxx:319
 AliPMDDDLRawData.cxx:320
 AliPMDDDLRawData.cxx:321
 AliPMDDDLRawData.cxx:322
 AliPMDDDLRawData.cxx:323
 AliPMDDDLRawData.cxx:324
 AliPMDDDLRawData.cxx:325
 AliPMDDDLRawData.cxx:326
 AliPMDDDLRawData.cxx:327
 AliPMDDDLRawData.cxx:328
 AliPMDDDLRawData.cxx:329
 AliPMDDDLRawData.cxx:330
 AliPMDDDLRawData.cxx:331
 AliPMDDDLRawData.cxx:332
 AliPMDDDLRawData.cxx:333
 AliPMDDDLRawData.cxx:334
 AliPMDDDLRawData.cxx:335
 AliPMDDDLRawData.cxx:336
 AliPMDDDLRawData.cxx:337
 AliPMDDDLRawData.cxx:338
 AliPMDDDLRawData.cxx:339
 AliPMDDDLRawData.cxx:340
 AliPMDDDLRawData.cxx:341
 AliPMDDDLRawData.cxx:342
 AliPMDDDLRawData.cxx:343
 AliPMDDDLRawData.cxx:344
 AliPMDDDLRawData.cxx:345
 AliPMDDDLRawData.cxx:346
 AliPMDDDLRawData.cxx:347
 AliPMDDDLRawData.cxx:348
 AliPMDDDLRawData.cxx:349
 AliPMDDDLRawData.cxx:350
 AliPMDDDLRawData.cxx:351
 AliPMDDDLRawData.cxx:352
 AliPMDDDLRawData.cxx:353
 AliPMDDDLRawData.cxx:354
 AliPMDDDLRawData.cxx:355
 AliPMDDDLRawData.cxx:356
 AliPMDDDLRawData.cxx:357
 AliPMDDDLRawData.cxx:358
 AliPMDDDLRawData.cxx:359
 AliPMDDDLRawData.cxx:360
 AliPMDDDLRawData.cxx:361
 AliPMDDDLRawData.cxx:362
 AliPMDDDLRawData.cxx:363
 AliPMDDDLRawData.cxx:364
 AliPMDDDLRawData.cxx:365
 AliPMDDDLRawData.cxx:366
 AliPMDDDLRawData.cxx:367
 AliPMDDDLRawData.cxx:368
 AliPMDDDLRawData.cxx:369
 AliPMDDDLRawData.cxx:370
 AliPMDDDLRawData.cxx:371
 AliPMDDDLRawData.cxx:372
 AliPMDDDLRawData.cxx:373
 AliPMDDDLRawData.cxx:374
 AliPMDDDLRawData.cxx:375
 AliPMDDDLRawData.cxx:376
 AliPMDDDLRawData.cxx:377
 AliPMDDDLRawData.cxx:378
 AliPMDDDLRawData.cxx:379
 AliPMDDDLRawData.cxx:380
 AliPMDDDLRawData.cxx:381
 AliPMDDDLRawData.cxx:382
 AliPMDDDLRawData.cxx:383
 AliPMDDDLRawData.cxx:384
 AliPMDDDLRawData.cxx:385
 AliPMDDDLRawData.cxx:386
 AliPMDDDLRawData.cxx:387
 AliPMDDDLRawData.cxx:388
 AliPMDDDLRawData.cxx:389
 AliPMDDDLRawData.cxx:390
 AliPMDDDLRawData.cxx:391
 AliPMDDDLRawData.cxx:392
 AliPMDDDLRawData.cxx:393
 AliPMDDDLRawData.cxx:394
 AliPMDDDLRawData.cxx:395
 AliPMDDDLRawData.cxx:396
 AliPMDDDLRawData.cxx:397
 AliPMDDDLRawData.cxx:398
 AliPMDDDLRawData.cxx:399
 AliPMDDDLRawData.cxx:400
 AliPMDDDLRawData.cxx:401
 AliPMDDDLRawData.cxx:402
 AliPMDDDLRawData.cxx:403
 AliPMDDDLRawData.cxx:404
 AliPMDDDLRawData.cxx:405
 AliPMDDDLRawData.cxx:406
 AliPMDDDLRawData.cxx:407
 AliPMDDDLRawData.cxx:408
 AliPMDDDLRawData.cxx:409
 AliPMDDDLRawData.cxx:410
 AliPMDDDLRawData.cxx:411
 AliPMDDDLRawData.cxx:412
 AliPMDDDLRawData.cxx:413
 AliPMDDDLRawData.cxx:414
 AliPMDDDLRawData.cxx:415
 AliPMDDDLRawData.cxx:416
 AliPMDDDLRawData.cxx:417
 AliPMDDDLRawData.cxx:418
 AliPMDDDLRawData.cxx:419
 AliPMDDDLRawData.cxx:420
 AliPMDDDLRawData.cxx:421
 AliPMDDDLRawData.cxx:422
 AliPMDDDLRawData.cxx:423
 AliPMDDDLRawData.cxx:424
 AliPMDDDLRawData.cxx:425
 AliPMDDDLRawData.cxx:426
 AliPMDDDLRawData.cxx:427
 AliPMDDDLRawData.cxx:428
 AliPMDDDLRawData.cxx:429
 AliPMDDDLRawData.cxx:430
 AliPMDDDLRawData.cxx:431
 AliPMDDDLRawData.cxx:432
 AliPMDDDLRawData.cxx:433
 AliPMDDDLRawData.cxx:434
 AliPMDDDLRawData.cxx:435
 AliPMDDDLRawData.cxx:436
 AliPMDDDLRawData.cxx:437
 AliPMDDDLRawData.cxx:438
 AliPMDDDLRawData.cxx:439
 AliPMDDDLRawData.cxx:440
 AliPMDDDLRawData.cxx:441
 AliPMDDDLRawData.cxx:442
 AliPMDDDLRawData.cxx:443
 AliPMDDDLRawData.cxx:444
 AliPMDDDLRawData.cxx:445
 AliPMDDDLRawData.cxx:446
 AliPMDDDLRawData.cxx:447
 AliPMDDDLRawData.cxx:448
 AliPMDDDLRawData.cxx:449
 AliPMDDDLRawData.cxx:450
 AliPMDDDLRawData.cxx:451
 AliPMDDDLRawData.cxx:452
 AliPMDDDLRawData.cxx:453
 AliPMDDDLRawData.cxx:454
 AliPMDDDLRawData.cxx:455
 AliPMDDDLRawData.cxx:456
 AliPMDDDLRawData.cxx:457
 AliPMDDDLRawData.cxx:458
 AliPMDDDLRawData.cxx:459
 AliPMDDDLRawData.cxx:460
 AliPMDDDLRawData.cxx:461
 AliPMDDDLRawData.cxx:462
 AliPMDDDLRawData.cxx:463
 AliPMDDDLRawData.cxx:464
 AliPMDDDLRawData.cxx:465
 AliPMDDDLRawData.cxx:466
 AliPMDDDLRawData.cxx:467
 AliPMDDDLRawData.cxx:468
 AliPMDDDLRawData.cxx:469
 AliPMDDDLRawData.cxx:470
 AliPMDDDLRawData.cxx:471
 AliPMDDDLRawData.cxx:472
 AliPMDDDLRawData.cxx:473
 AliPMDDDLRawData.cxx:474
 AliPMDDDLRawData.cxx:475
 AliPMDDDLRawData.cxx:476
 AliPMDDDLRawData.cxx:477
 AliPMDDDLRawData.cxx:478
 AliPMDDDLRawData.cxx:479
 AliPMDDDLRawData.cxx:480
 AliPMDDDLRawData.cxx:481
 AliPMDDDLRawData.cxx:482
 AliPMDDDLRawData.cxx:483
 AliPMDDDLRawData.cxx:484
 AliPMDDDLRawData.cxx:485
 AliPMDDDLRawData.cxx:486
 AliPMDDDLRawData.cxx:487
 AliPMDDDLRawData.cxx:488
 AliPMDDDLRawData.cxx:489
 AliPMDDDLRawData.cxx:490
 AliPMDDDLRawData.cxx:491
 AliPMDDDLRawData.cxx:492
 AliPMDDDLRawData.cxx:493
 AliPMDDDLRawData.cxx:494
 AliPMDDDLRawData.cxx:495
 AliPMDDDLRawData.cxx:496
 AliPMDDDLRawData.cxx:497
 AliPMDDDLRawData.cxx:498
 AliPMDDDLRawData.cxx:499
 AliPMDDDLRawData.cxx:500
 AliPMDDDLRawData.cxx:501
 AliPMDDDLRawData.cxx:502
 AliPMDDDLRawData.cxx:503
 AliPMDDDLRawData.cxx:504
 AliPMDDDLRawData.cxx:505
 AliPMDDDLRawData.cxx:506
 AliPMDDDLRawData.cxx:507
 AliPMDDDLRawData.cxx:508
 AliPMDDDLRawData.cxx:509
 AliPMDDDLRawData.cxx:510
 AliPMDDDLRawData.cxx:511
 AliPMDDDLRawData.cxx:512
 AliPMDDDLRawData.cxx:513
 AliPMDDDLRawData.cxx:514
 AliPMDDDLRawData.cxx:515
 AliPMDDDLRawData.cxx:516
 AliPMDDDLRawData.cxx:517
 AliPMDDDLRawData.cxx:518
 AliPMDDDLRawData.cxx:519
 AliPMDDDLRawData.cxx:520
 AliPMDDDLRawData.cxx:521
 AliPMDDDLRawData.cxx:522
 AliPMDDDLRawData.cxx:523
 AliPMDDDLRawData.cxx:524
 AliPMDDDLRawData.cxx:525
 AliPMDDDLRawData.cxx:526
 AliPMDDDLRawData.cxx:527
 AliPMDDDLRawData.cxx:528
 AliPMDDDLRawData.cxx:529
 AliPMDDDLRawData.cxx:530
 AliPMDDDLRawData.cxx:531
 AliPMDDDLRawData.cxx:532
 AliPMDDDLRawData.cxx:533
 AliPMDDDLRawData.cxx:534
 AliPMDDDLRawData.cxx:535
 AliPMDDDLRawData.cxx:536
 AliPMDDDLRawData.cxx:537
 AliPMDDDLRawData.cxx:538
 AliPMDDDLRawData.cxx:539
 AliPMDDDLRawData.cxx:540
 AliPMDDDLRawData.cxx:541
 AliPMDDDLRawData.cxx:542
 AliPMDDDLRawData.cxx:543
 AliPMDDDLRawData.cxx:544
 AliPMDDDLRawData.cxx:545
 AliPMDDDLRawData.cxx:546
 AliPMDDDLRawData.cxx:547
 AliPMDDDLRawData.cxx:548
 AliPMDDDLRawData.cxx:549
 AliPMDDDLRawData.cxx:550
 AliPMDDDLRawData.cxx:551
 AliPMDDDLRawData.cxx:552
 AliPMDDDLRawData.cxx:553
 AliPMDDDLRawData.cxx:554
 AliPMDDDLRawData.cxx:555
 AliPMDDDLRawData.cxx:556
 AliPMDDDLRawData.cxx:557
 AliPMDDDLRawData.cxx:558
 AliPMDDDLRawData.cxx:559
 AliPMDDDLRawData.cxx:560
 AliPMDDDLRawData.cxx:561
 AliPMDDDLRawData.cxx:562
 AliPMDDDLRawData.cxx:563
 AliPMDDDLRawData.cxx:564
 AliPMDDDLRawData.cxx:565
 AliPMDDDLRawData.cxx:566
 AliPMDDDLRawData.cxx:567
 AliPMDDDLRawData.cxx:568
 AliPMDDDLRawData.cxx:569
 AliPMDDDLRawData.cxx:570
 AliPMDDDLRawData.cxx:571
 AliPMDDDLRawData.cxx:572
 AliPMDDDLRawData.cxx:573
 AliPMDDDLRawData.cxx:574
 AliPMDDDLRawData.cxx:575
 AliPMDDDLRawData.cxx:576
 AliPMDDDLRawData.cxx:577
 AliPMDDDLRawData.cxx:578
 AliPMDDDLRawData.cxx:579
 AliPMDDDLRawData.cxx:580
 AliPMDDDLRawData.cxx:581
 AliPMDDDLRawData.cxx:582
 AliPMDDDLRawData.cxx:583
 AliPMDDDLRawData.cxx:584
 AliPMDDDLRawData.cxx:585
 AliPMDDDLRawData.cxx:586
 AliPMDDDLRawData.cxx:587
 AliPMDDDLRawData.cxx:588
 AliPMDDDLRawData.cxx:589
 AliPMDDDLRawData.cxx:590
 AliPMDDDLRawData.cxx:591
 AliPMDDDLRawData.cxx:592
 AliPMDDDLRawData.cxx:593
 AliPMDDDLRawData.cxx:594
 AliPMDDDLRawData.cxx:595
 AliPMDDDLRawData.cxx:596
 AliPMDDDLRawData.cxx:597
 AliPMDDDLRawData.cxx:598
 AliPMDDDLRawData.cxx:599
 AliPMDDDLRawData.cxx:600
 AliPMDDDLRawData.cxx:601
 AliPMDDDLRawData.cxx:602
 AliPMDDDLRawData.cxx:603
 AliPMDDDLRawData.cxx:604
 AliPMDDDLRawData.cxx:605
 AliPMDDDLRawData.cxx:606
 AliPMDDDLRawData.cxx:607
 AliPMDDDLRawData.cxx:608
 AliPMDDDLRawData.cxx:609
 AliPMDDDLRawData.cxx:610
 AliPMDDDLRawData.cxx:611
 AliPMDDDLRawData.cxx:612
 AliPMDDDLRawData.cxx:613
 AliPMDDDLRawData.cxx:614
 AliPMDDDLRawData.cxx:615
 AliPMDDDLRawData.cxx:616
 AliPMDDDLRawData.cxx:617
 AliPMDDDLRawData.cxx:618
 AliPMDDDLRawData.cxx:619
 AliPMDDDLRawData.cxx:620
 AliPMDDDLRawData.cxx:621
 AliPMDDDLRawData.cxx:622
 AliPMDDDLRawData.cxx:623
 AliPMDDDLRawData.cxx:624
 AliPMDDDLRawData.cxx:625
 AliPMDDDLRawData.cxx:626
 AliPMDDDLRawData.cxx:627
 AliPMDDDLRawData.cxx:628
 AliPMDDDLRawData.cxx:629
 AliPMDDDLRawData.cxx:630
 AliPMDDDLRawData.cxx:631
 AliPMDDDLRawData.cxx:632
 AliPMDDDLRawData.cxx:633
 AliPMDDDLRawData.cxx:634
 AliPMDDDLRawData.cxx:635
 AliPMDDDLRawData.cxx:636
 AliPMDDDLRawData.cxx:637
 AliPMDDDLRawData.cxx:638
 AliPMDDDLRawData.cxx:639
 AliPMDDDLRawData.cxx:640
 AliPMDDDLRawData.cxx:641
 AliPMDDDLRawData.cxx:642
 AliPMDDDLRawData.cxx:643
 AliPMDDDLRawData.cxx:644
 AliPMDDDLRawData.cxx:645
 AliPMDDDLRawData.cxx:646
 AliPMDDDLRawData.cxx:647
 AliPMDDDLRawData.cxx:648
 AliPMDDDLRawData.cxx:649
 AliPMDDDLRawData.cxx:650
 AliPMDDDLRawData.cxx:651
 AliPMDDDLRawData.cxx:652
 AliPMDDDLRawData.cxx:653
 AliPMDDDLRawData.cxx:654
 AliPMDDDLRawData.cxx:655
 AliPMDDDLRawData.cxx:656
 AliPMDDDLRawData.cxx:657
 AliPMDDDLRawData.cxx:658
 AliPMDDDLRawData.cxx:659
 AliPMDDDLRawData.cxx:660
 AliPMDDDLRawData.cxx:661
 AliPMDDDLRawData.cxx:662
 AliPMDDDLRawData.cxx:663
 AliPMDDDLRawData.cxx:664
 AliPMDDDLRawData.cxx:665
 AliPMDDDLRawData.cxx:666
 AliPMDDDLRawData.cxx:667
 AliPMDDDLRawData.cxx:668
 AliPMDDDLRawData.cxx:669
 AliPMDDDLRawData.cxx:670
 AliPMDDDLRawData.cxx:671
 AliPMDDDLRawData.cxx:672
 AliPMDDDLRawData.cxx:673
 AliPMDDDLRawData.cxx:674
 AliPMDDDLRawData.cxx:675
 AliPMDDDLRawData.cxx:676
 AliPMDDDLRawData.cxx:677
 AliPMDDDLRawData.cxx:678
 AliPMDDDLRawData.cxx:679
 AliPMDDDLRawData.cxx:680
 AliPMDDDLRawData.cxx:681
 AliPMDDDLRawData.cxx:682
 AliPMDDDLRawData.cxx:683
 AliPMDDDLRawData.cxx:684
 AliPMDDDLRawData.cxx:685
 AliPMDDDLRawData.cxx:686
 AliPMDDDLRawData.cxx:687
 AliPMDDDLRawData.cxx:688
 AliPMDDDLRawData.cxx:689
 AliPMDDDLRawData.cxx:690
 AliPMDDDLRawData.cxx:691
 AliPMDDDLRawData.cxx:692
 AliPMDDDLRawData.cxx:693
 AliPMDDDLRawData.cxx:694
 AliPMDDDLRawData.cxx:695
 AliPMDDDLRawData.cxx:696
 AliPMDDDLRawData.cxx:697
 AliPMDDDLRawData.cxx:698
 AliPMDDDLRawData.cxx:699
 AliPMDDDLRawData.cxx:700
 AliPMDDDLRawData.cxx:701
 AliPMDDDLRawData.cxx:702
 AliPMDDDLRawData.cxx:703
 AliPMDDDLRawData.cxx:704
 AliPMDDDLRawData.cxx:705
 AliPMDDDLRawData.cxx:706
 AliPMDDDLRawData.cxx:707
 AliPMDDDLRawData.cxx:708
 AliPMDDDLRawData.cxx:709
 AliPMDDDLRawData.cxx:710
 AliPMDDDLRawData.cxx:711
 AliPMDDDLRawData.cxx:712
 AliPMDDDLRawData.cxx:713
 AliPMDDDLRawData.cxx:714
 AliPMDDDLRawData.cxx:715
 AliPMDDDLRawData.cxx:716
 AliPMDDDLRawData.cxx:717
 AliPMDDDLRawData.cxx:718
 AliPMDDDLRawData.cxx:719
 AliPMDDDLRawData.cxx:720
 AliPMDDDLRawData.cxx:721
 AliPMDDDLRawData.cxx:722
 AliPMDDDLRawData.cxx:723
 AliPMDDDLRawData.cxx:724
 AliPMDDDLRawData.cxx:725
 AliPMDDDLRawData.cxx:726
 AliPMDDDLRawData.cxx:727
 AliPMDDDLRawData.cxx:728
 AliPMDDDLRawData.cxx:729
 AliPMDDDLRawData.cxx:730
 AliPMDDDLRawData.cxx:731
 AliPMDDDLRawData.cxx:732
 AliPMDDDLRawData.cxx:733
 AliPMDDDLRawData.cxx:734
 AliPMDDDLRawData.cxx:735
 AliPMDDDLRawData.cxx:736
 AliPMDDDLRawData.cxx:737
 AliPMDDDLRawData.cxx:738
 AliPMDDDLRawData.cxx:739
 AliPMDDDLRawData.cxx:740
 AliPMDDDLRawData.cxx:741
 AliPMDDDLRawData.cxx:742
 AliPMDDDLRawData.cxx:743
 AliPMDDDLRawData.cxx:744
 AliPMDDDLRawData.cxx:745
 AliPMDDDLRawData.cxx:746
 AliPMDDDLRawData.cxx:747
 AliPMDDDLRawData.cxx:748
 AliPMDDDLRawData.cxx:749
 AliPMDDDLRawData.cxx:750
 AliPMDDDLRawData.cxx:751
 AliPMDDDLRawData.cxx:752
 AliPMDDDLRawData.cxx:753
 AliPMDDDLRawData.cxx:754
 AliPMDDDLRawData.cxx:755
 AliPMDDDLRawData.cxx:756
 AliPMDDDLRawData.cxx:757
 AliPMDDDLRawData.cxx:758
 AliPMDDDLRawData.cxx:759
 AliPMDDDLRawData.cxx:760
 AliPMDDDLRawData.cxx:761
 AliPMDDDLRawData.cxx:762
 AliPMDDDLRawData.cxx:763
 AliPMDDDLRawData.cxx:764
 AliPMDDDLRawData.cxx:765
 AliPMDDDLRawData.cxx:766
 AliPMDDDLRawData.cxx:767
 AliPMDDDLRawData.cxx:768
 AliPMDDDLRawData.cxx:769
 AliPMDDDLRawData.cxx:770
 AliPMDDDLRawData.cxx:771
 AliPMDDDLRawData.cxx:772
 AliPMDDDLRawData.cxx:773
 AliPMDDDLRawData.cxx:774
 AliPMDDDLRawData.cxx:775
 AliPMDDDLRawData.cxx:776
 AliPMDDDLRawData.cxx:777
 AliPMDDDLRawData.cxx:778
 AliPMDDDLRawData.cxx:779
 AliPMDDDLRawData.cxx:780
 AliPMDDDLRawData.cxx:781
 AliPMDDDLRawData.cxx:782
 AliPMDDDLRawData.cxx:783
 AliPMDDDLRawData.cxx:784
 AliPMDDDLRawData.cxx:785
 AliPMDDDLRawData.cxx:786
 AliPMDDDLRawData.cxx:787
 AliPMDDDLRawData.cxx:788
 AliPMDDDLRawData.cxx:789
 AliPMDDDLRawData.cxx:790
 AliPMDDDLRawData.cxx:791
 AliPMDDDLRawData.cxx:792
 AliPMDDDLRawData.cxx:793
 AliPMDDDLRawData.cxx:794
 AliPMDDDLRawData.cxx:795
 AliPMDDDLRawData.cxx:796
 AliPMDDDLRawData.cxx:797
 AliPMDDDLRawData.cxx:798
 AliPMDDDLRawData.cxx:799
 AliPMDDDLRawData.cxx:800
 AliPMDDDLRawData.cxx:801
 AliPMDDDLRawData.cxx:802
 AliPMDDDLRawData.cxx:803
 AliPMDDDLRawData.cxx:804
 AliPMDDDLRawData.cxx:805
 AliPMDDDLRawData.cxx:806
 AliPMDDDLRawData.cxx:807
 AliPMDDDLRawData.cxx:808
 AliPMDDDLRawData.cxx:809
 AliPMDDDLRawData.cxx:810
 AliPMDDDLRawData.cxx:811
 AliPMDDDLRawData.cxx:812
 AliPMDDDLRawData.cxx:813
 AliPMDDDLRawData.cxx:814
 AliPMDDDLRawData.cxx:815
 AliPMDDDLRawData.cxx:816
 AliPMDDDLRawData.cxx:817
 AliPMDDDLRawData.cxx:818
 AliPMDDDLRawData.cxx:819
 AliPMDDDLRawData.cxx:820
 AliPMDDDLRawData.cxx:821
 AliPMDDDLRawData.cxx:822
 AliPMDDDLRawData.cxx:823
 AliPMDDDLRawData.cxx:824
 AliPMDDDLRawData.cxx:825
 AliPMDDDLRawData.cxx:826
 AliPMDDDLRawData.cxx:827
 AliPMDDDLRawData.cxx:828
 AliPMDDDLRawData.cxx:829
 AliPMDDDLRawData.cxx:830
 AliPMDDDLRawData.cxx:831
 AliPMDDDLRawData.cxx:832
 AliPMDDDLRawData.cxx:833
 AliPMDDDLRawData.cxx:834
 AliPMDDDLRawData.cxx:835
 AliPMDDDLRawData.cxx:836
 AliPMDDDLRawData.cxx:837
 AliPMDDDLRawData.cxx:838
 AliPMDDDLRawData.cxx:839
 AliPMDDDLRawData.cxx:840
 AliPMDDDLRawData.cxx:841
 AliPMDDDLRawData.cxx:842
 AliPMDDDLRawData.cxx:843
 AliPMDDDLRawData.cxx:844
 AliPMDDDLRawData.cxx:845
 AliPMDDDLRawData.cxx:846
 AliPMDDDLRawData.cxx:847
 AliPMDDDLRawData.cxx:848
 AliPMDDDLRawData.cxx:849
 AliPMDDDLRawData.cxx:850
 AliPMDDDLRawData.cxx:851
 AliPMDDDLRawData.cxx:852
 AliPMDDDLRawData.cxx:853
 AliPMDDDLRawData.cxx:854
 AliPMDDDLRawData.cxx:855
 AliPMDDDLRawData.cxx:856
 AliPMDDDLRawData.cxx:857