final raw data mapping
authorbasanta <basanta@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 22 Mar 2008 10:59:30 +0000 (10:59 +0000)
committerbasanta <basanta@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 22 Mar 2008 10:59:30 +0000 (10:59 +0000)
PMD/AliPMDDDLRawData.cxx
PMD/AliPMDDDLRawData.h
PMD/AliPMDRawStream.cxx
PMD/AliPMDRawStream.h
PMD/PMD_Mapping_ddl0.dat
PMD/PMD_Mapping_ddl1.dat
PMD/PMD_Mapping_ddl2.dat
PMD/PMD_Mapping_ddl3.dat
PMD/PMD_Mapping_ddl4.dat
PMD/PMD_Mapping_ddl5.dat

index c96ba18..a30ca20 100644 (file)
@@ -93,12 +93,13 @@ void AliPMDDDLRawData::WritePMDRawData(TTree *treeD)
   AliRawDataHeaderSim header;
   UInt_t sizeRawData = 0;
   
+  const Int_t kbusSize = 51;
   const Int_t kSize = 1536;
   UInt_t buffer[kSize];
 
-  UInt_t busPatch[50][1536];
+  UInt_t busPatch[kbusSize][1536];
 
-  Int_t contentsBus[50];
+  Int_t contentsBus[kbusSize];
 
   Char_t filename[80];
 
@@ -132,10 +133,10 @@ void AliPMDDDLRawData::WritePMDRawData(TTree *treeD)
       Int_t bHPosition = outfile->Tellp();
       outfile->WriteBuffer((char*)(&header),sizeof(header));
 
-      for (Int_t ibus = 0; ibus < 50; ibus++)
+      for (Int_t ibus = 0; ibus < kbusSize; ibus++)
        {
          contentsBus[ibus] = 0;
-         for (Int_t ich = 0; ich < 1536; ich++)
+         for (Int_t ich = 0; ich < kSize; ich++)
            {
              busPatch[ibus][ich] = 0;
            }
@@ -164,12 +165,13 @@ void AliPMDDDLRawData::WritePMDRawData(TTree *treeD)
          dspBus[i] = 0;
          for (Int_t ibus=0; ibus < 5; ibus++)
            {
+             ij++;
              if (contentsBus[ij] > 0)
                {
                  dsp[i] += contentsBus[ij];
                  dspBus[i]++;
                }
-             ij++;
+             //ij++;
            }
          // Add the patch Bus header to the DSP contents
          dsp[i] += 4*dspBus[i];
@@ -216,7 +218,7 @@ void AliPMDDDLRawData::WritePMDRawData(TTree *treeD)
       UInt_t dspBlockHeaderWord[8];
       UInt_t dspHeaderWord[10];
       UInt_t patchBusHeaderWord[4];
-      Int_t iskip[5];
+      Int_t  iskip[5];
 
 
       for (Int_t iblock = 0; iblock < 2; iblock++)
@@ -288,7 +290,8 @@ void AliPMDDDLRawData::WritePMDRawData(TTree *treeD)
              for (Int_t ibus = 0; ibus < 5; ibus++)
                {
                  // Patch Bus Header
-                 Int_t busno = iskip[idsp] + ibus;
+                 // BKN - just added 1
+                 Int_t busno = iskip[idsp] + ibus + 1;
                  Int_t patchbusRDL = contentsBus[busno];
 
                  if (patchbusRDL > 0)
@@ -360,7 +363,7 @@ void AliPMDDDLRawData::GetUMDigitsData(TTree *treeD, Int_t imodule,
   Int_t  det, smn, irow, icol;
   Int_t  parity;
   
-  const Int_t kMaxBus = 50;
+  const Int_t kMaxBus = 51;   // BKN
   Int_t totPatchBus, bPatchBus, ePatchBus;
   Int_t ibus, totmcm, rows, cols, rowe, cole;
   Int_t moduleno;
@@ -470,7 +473,7 @@ void AliPMDDDLRawData::GetUMDigitsData(TTree *treeD, Int_t imodule,
 
       TransformS2H(smn,irow,icol);
 
-      GetMCMCh(ddlno, irow, icol, beginPatchBus, endPatchBus,
+      GetMCMCh(ddlno, smn, irow, icol, beginPatchBus, endPatchBus,
               mcmperBus, startRowBus, startColBus,
               endRowBus, endColBus, busno, mcmno, chno);
 
@@ -522,7 +525,7 @@ void AliPMDDDLRawData::TransformS2H(Int_t smn, Int_t &irow, Int_t &icol)
 
 //____________________________________________________________________________
 
-void AliPMDDDLRawData::GetMCMCh(Int_t ddlno, Int_t row, Int_t col,
+void AliPMDDDLRawData::GetMCMCh(Int_t ddlno, Int_t smn, Int_t row, Int_t col,
                                Int_t beginPatchBus, Int_t endPatchBus,
                                Int_t *mcmperBus,
                                Int_t *startRowBus, Int_t *startColBus,
@@ -532,27 +535,139 @@ void AliPMDDDLRawData::GetMCMCh(Int_t ddlno, Int_t row, Int_t col,
   // This converts row col to hardware channel number
   // This is the final version of mapping supplied by Mriganka
 
-  static const UInt_t kCh[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} };
-  
+    UInt_t iCh[16][4];
+
+//    ChMap(ddlno, smn, iCh);
+
+
+    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 (ddlno == 0 || ddlno == 1) iCh[i][j] = kChDdl01[i][j];
+           if (ddlno == 2 || ddlno == 3) iCh[i][j] = kChDdl23[i][j];
+           
+           if (ddlno == 4 && smn < 6)                iCh[i][j] = kChDdl41[i][j];
+           if (ddlno == 4 && (smn >= 18 && smn < 24))iCh[i][j] = kChDdl42[i][j];
+           if (ddlno == 5 && (smn >= 12 && smn < 18))iCh[i][j] = kChDdl51[i][j];
+           if (ddlno == 5 && (smn >=  6 && smn < 12))iCh[i][j] = kChDdl52[i][j];
+       }
+    }
+
+
   Int_t irownew = row%16;
   Int_t icolnew = col%4;
   
-  chno  = kCh[irownew][icolnew];
+  chno  = iCh[irownew][icolnew];
   
   
   for (Int_t ibus = beginPatchBus; ibus <= endPatchBus; ibus++)
@@ -572,34 +687,34 @@ void AliPMDDDLRawData::GetMCMCh(Int_t ddlno, Int_t row, Int_t col,
          if (ddlno == 0 || ddlno == 1)
            {
              // PRE plane, SU Mod = 0, 1
-             mcmno = (col-scol)/4;
+             mcmno = (col-scol)/4 + 1;
              
            }
          else if (ddlno == 2 || ddlno == 3)
            {
              // PRE plane,  SU Mod = 2, 3
              Int_t icolnew = (col - scol)/4;
-             mcmno = tmcm - 1 - icolnew;
+             mcmno = tmcm - icolnew;
            }
          else if (ddlno == 4 )
            {
              // CPV plane,  SU Mod = 0, 3 : ddl = 4
              
-             if(ibus <= 17)
+             if(ibus <= 18)
                {
                  Int_t midrow = srow + 16;
                  if(row >= srow && row < midrow)
                    {
-                     mcmno = 12 + (col-scol)/4;
+                     mcmno = 12 + (col-scol)/4 + 1;
                    }
                  else if(row >= midrow && row <= erow)
                  
                    {
-                     mcmno = (col-scol)/4;
+                     mcmno = (col-scol)/4 + 1;
                    }
                }
              
-             else if (ibus > 17)
+             else if (ibus > 18)
                {
                  Int_t rowdiff = endRowBus[ibus] - startRowBus[ibus];
                  if(rowdiff > 16)
@@ -607,37 +722,37 @@ void AliPMDDDLRawData::GetMCMCh(Int_t ddlno, Int_t row, Int_t col,
                      Int_t midrow = srow + 16;
                      if (row >= midrow && row <= erow)
                        {
-                         mcmno = 12 + (ecol -col)/4;
+                         mcmno = 12 + (ecol -col)/4 + 1;
                        }
                      else if (row >= srow && row < midrow)
                        {
-                         mcmno = (ecol - col)/4;
+                         mcmno = (ecol - col)/4 + 1;
                        }
                    }
-                 else if (rowdiff < 16) 
+                 else if (rowdiff < 16)
                    {
-                     mcmno = (ecol - col)/4;
-                   } 
+                     mcmno = (ecol - col)/4 + 1;
+                   }
                }
            }
          else if ( ddlno == 5)
            {
-             // CPV plane,  SU Mod = 0, 3 : ddl = 4
+             // CPV plane,  SU Mod = 1, 2 : ddl = 5
              
-             if(ibus <= 17)
+             if(ibus <= 18)
                {
                  Int_t midrow = srow + 16;
                  if(row >= srow && row < midrow)
                    {
-                     mcmno = 12 + (col-scol)/4;
+                     mcmno = 12 + (col-scol)/4 + 1;
                    }
                  else if(row >= midrow && row <= erow)
                    {
-                     mcmno = (col-scol)/4;
+                     mcmno = (col-scol)/4 + 1;
                    }
                }
              
-             else if (ibus > 17)
+             else if (ibus > 18)
                {
                  Int_t rowdiff = endRowBus[ibus] - startRowBus[ibus];
                  if(rowdiff > 16)
@@ -645,17 +760,17 @@ void AliPMDDDLRawData::GetMCMCh(Int_t ddlno, Int_t row, Int_t col,
                      Int_t midrow = srow + 16;
                      if (row >= midrow && row <= erow)
                        {
-                         mcmno = 12 + (ecol -col)/4;
+                         mcmno = 12 + (ecol - col)/4 + 1;
                        }
                      else if (row >= srow && row < midrow)
                        {
-                         mcmno = (ecol - col)/4;
+                         mcmno = (ecol - col)/4 + 1;
                        }
                    }
-                 else if (rowdiff < 16) 
+                 else if (rowdiff < 16)
                    {
-                     mcmno = (ecol - col)/4;
-                   } 
+                     mcmno = (ecol - col)/4 + 1;
+                   }
                }
            }
        }
@@ -664,6 +779,140 @@ void AliPMDDDLRawData::GetMCMCh(Int_t ddlno, Int_t row, Int_t col,
 
 //____________________________________________________________________________
 
+/*
+void ChMap(Int_t ddlno, Int_t smn, UInt_t iCh[][4])
+{
+// Row and Col converted to Channel
+
+    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 (ddlno == 0 || ddlno == 1) iCh[i][j] = kChDdl01[i][j];
+           if (ddlno == 2 || ddlno == 3) iCh[i][j] = kChDdl23[i][j];
+           
+           if (ddlno == 4 && smn < 6)                iCh[i][j] = kChDdl41[i][j];
+           if (ddlno == 4 && (smn >= 18 && smn < 24))iCh[i][j] = kChDdl42[i][j];
+           if (ddlno == 5 && (smn >= 12 && smn < 18))iCh[i][j] = kChDdl51[i][j];
+           if (ddlno == 0 && (smn >=  6 && smn < 12))iCh[i][j] = kChDdl52[i][j];
+       }
+    }
+    
+}
+*/
+//____________________________________________________________________________
+
+
+
 Int_t AliPMDDDLRawData::ComputeParity(UInt_t baseword)
 {
   // Generate the parity bit
index f6c651b..4af39f6 100644 (file)
@@ -31,13 +31,14 @@ class AliPMDDDLRawData:public TObject
   void GetUMDigitsData(TTree *treeD, Int_t imodule, Int_t ddlno,
                       Int_t *contentsBus, UInt_t busPatch[][1536]);
   void TransformS2H(Int_t smn, Int_t &irow, Int_t &icol);
-  void GetMCMCh(Int_t ddlno, Int_t row, Int_t col,
+  void GetMCMCh(Int_t ddlno, Int_t smn, 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);
 
+//  void  ChMap(Int_t ddlno, Int_t smn, UInt_t iCh[][4]);
 
  protected:
 
@@ -45,7 +46,7 @@ class AliPMDDDLRawData:public TObject
 
   TClonesArray *fDigits;    //! List of digits
 
-  ClassDef(AliPMDDDLRawData,7)    // To make RAW Data
+  ClassDef(AliPMDDDLRawData,8)    // To make RAW Data
 };
 #endif
 
index b3c893f..b4c2bb9 100644 (file)
@@ -86,6 +86,7 @@ Bool_t AliPMDRawStream::DdlData(Int_t indexDDL, TObjArray *pmdddlcont)
 // read the next raw digit
 // returns kFALSE if there is no digit left
 
+
   AliPMDddldata *pmdddldata;
 
   if (!fRawReader->ReadHeader()) return kFALSE;
@@ -155,7 +156,7 @@ Bool_t AliPMDRawStream::DdlData(Int_t indexDDL, TObjArray *pmdddlcont)
       modulePerDDL = 12;
     }
 
-  const Int_t kNPatchBus = 50;
+  const Int_t kNPatchBus = 51;
   
   Int_t modno, totPatchBus, bPatchBus, ePatchBus;
   Int_t ibus, totmcm, rows, rowe, cols, cole;
@@ -276,12 +277,14 @@ Bool_t AliPMDRawStream::DdlData(Int_t indexDDL, TObjArray *pmdddlcont)
                      AliWarning("ComputeParity:: Parity Error");
                      fRawReader->AddMajorErrorLog(kParityError);
                    }
-                 GetRowCol(iddl, pbusid, imcm, ich, 
+
+                 ConvertDDL2SMN(iddl, imodule, ismn, idet);
+
+                 GetRowCol(iddl, ismn, pbusid, imcm, ich, 
                            startRowBus, endRowBus,
                            startColBus, endColBus,
                            irow, icol);
 
-                 ConvertDDL2SMN(iddl, imodule, ismn, idet);
                  TransformH2S(ismn, irow, icol);
 
                  pmdddldata = new AliPMDddldata();
@@ -318,7 +321,7 @@ Bool_t AliPMDRawStream::DdlData(Int_t indexDDL, TObjArray *pmdddlcont)
   return kTRUE;
 }
 //_____________________________________________________________________________
-void AliPMDRawStream::GetRowCol(Int_t ddlno, Int_t pbusid,
+void AliPMDRawStream::GetRowCol(Int_t ddlno, Int_t smn, Int_t pbusid,
                                UInt_t mcmno, UInt_t chno,
                                Int_t startRowBus[], Int_t endRowBus[],
                                Int_t startColBus[], Int_t endColBus[],
@@ -327,106 +330,164 @@ void AliPMDRawStream::GetRowCol(Int_t ddlno, Int_t pbusid,
 // decode: ddlno, patchbusid, mcmno, chno -> um, row, col
 
 
-  static const UInt_t kCh[64] = { 53, 58, 57, 54, 61, 62, 60, 63,
-                                 49, 59, 56, 55, 52, 50, 48, 51,
-                                 44, 47, 45, 43, 40, 39, 36, 46,
-                                 32, 35, 33, 34, 41, 38, 37, 42,
-                                 21, 26, 25, 22, 29, 30, 28, 31,
-                                 17, 27, 24, 23, 20, 18, 16, 19,
-                                 12, 15, 13, 11,  8,  7,  4, 14,
-                                 0,   3,  1,  2,  9,  6,  5, 10 };
 
+  UInt_t iCh[64];
 
-  Int_t rowcol  = kCh[chno];
+  static const UInt_t kChDdl01[64] = { 9, 6, 5, 10, 1, 2, 0, 3,
+                                      13, 7, 4, 11, 8, 14, 12, 15,
+                                      16, 19, 17, 23, 20, 27, 24, 18,
+                                      28, 31, 29, 30, 21, 26, 25, 22,
+                                      41, 38, 37, 42, 33, 34, 32, 35,
+                                      45, 39, 36, 43, 40, 46, 44, 47,
+                                      48, 51, 49, 55, 52, 59, 56, 50,
+                                      60, 63, 61, 62, 53, 58, 57, 54 };
+    
+  static const UInt_t kChDdl23[64] = { 54, 57, 58, 53, 62, 61, 63, 60,
+                                      50, 56, 59, 52, 55, 49, 51, 48,
+                                      47, 44, 46, 40, 43, 36, 39, 45,
+                                      35, 32, 34, 33, 42, 37, 38, 41,
+                                      22, 25, 26, 21, 30, 29, 31, 28,
+                                      18, 24, 27, 20, 23, 17, 19, 16,
+                                      15, 12, 14, 8, 11, 4, 7, 13,
+                                      3, 0, 2, 1, 10, 5, 6, 9 };
+  
+  static const UInt_t kChDdl41[64] = { 53, 58, 57, 54, 61, 62, 60, 63,
+                                      49, 59, 56, 55, 52, 50, 48, 51,
+                                      44, 47, 45, 43, 40, 39, 36, 46,
+                                      32, 35, 33, 34, 41, 38, 37, 42,
+                                      21, 26, 25, 22, 29, 30, 28, 31,
+                                      17, 27, 24, 23, 20, 18, 16, 19,
+                                      12, 15, 13, 11, 8, 7, 4, 14,
+                                      0, 3, 1, 2, 9, 6, 5, 10 };
+  
+  static const UInt_t kChDdl42[64] = { 10, 5, 6, 9, 2, 1, 3, 0,
+                                      14, 4, 7, 8, 11, 13, 15, 12,
+                                      19, 16, 18, 20, 23, 24, 27, 17,
+                                      31, 28, 30, 29, 22, 25, 26, 21,
+                                      42, 37, 38, 41, 34, 33, 35, 32,
+                                      46, 36, 39, 40, 43, 45, 47, 44,
+                                      51, 48, 50, 52, 55, 56, 59, 49,
+                                      63, 60, 62, 61, 54, 57, 58, 53 };
+  
+  static const UInt_t kChDdl51[64] = { 10, 5, 6, 9, 2, 1, 3, 0,
+                                      14, 4, 7, 8, 11, 13, 15, 12,
+                                      19, 16, 18, 20, 23, 24, 27, 17,
+                                      31, 28, 30, 29, 22, 25, 26, 21,
+                                      42, 37, 38, 41, 34, 33, 35, 32,
+                                      46, 36, 39, 40, 43, 45, 47, 44,
+                                      51, 48, 50, 52, 55, 56, 59, 49,
+                                      63, 60, 62, 61, 54, 57, 58, 53 };
+  
+  static const UInt_t kChDdl52[64] = { 53, 58, 57, 54, 61, 62, 60, 63,
+                                      49, 59, 56, 55, 52, 50, 48, 51,
+                                      44, 47, 45, 43, 40, 39, 36, 46,
+                                      32, 35, 33, 34, 41, 38, 37, 42,
+                                      21, 26, 25, 22, 29, 30, 28, 31,
+                                      17, 27, 24, 23, 20, 18, 16, 19,
+                                      12, 15, 13, 11, 8, 7, 4, 14,
+                                      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];
+  }
+  
+  
+  Int_t rowcol  = iCh[chno];
   Int_t irownew = rowcol/4;
   Int_t icolnew = rowcol%4;
 
   if (ddlno == 0 )
     {
       row = startRowBus[pbusid] + irownew;
-      col = startColBus[pbusid] + mcmno*4 + icolnew;
+      col = startColBus[pbusid] + (mcmno-1)*4 + icolnew;
     }
   else if (ddlno == 1)
     {
     row = endRowBus[pbusid] - (15 - irownew);
-    col = startColBus[pbusid] + mcmno*4 + icolnew;
+    col = startColBus[pbusid] + (mcmno-1)*4 + icolnew;
     
     }
   else if (ddlno == 2 )
     {
       row = startRowBus[pbusid] + irownew;
-      col = endColBus[pbusid] - mcmno*4 - (3 - icolnew);
+      col = endColBus[pbusid] - (mcmno-1)*4 - (3 - icolnew);
     }
   else if (ddlno == 3)
     {
     row = endRowBus[pbusid] - (15 - irownew);
-    col = endColBus[pbusid] - mcmno*4 - (3 - icolnew);
+    col = endColBus[pbusid] - (mcmno-1)*4 - (3 - icolnew);
     }
   else if (ddlno == 4 )
     {
-      if (pbusid  < 18)
+      if (pbusid  < 19)
        {
-         if (mcmno <= 11)
+         if (mcmno <= 12)
            {
              // Add 16 to skip the 1st 15 rows
              row = startRowBus[pbusid] + irownew + 16;
-             col = startColBus[pbusid] + (mcmno)*4 + icolnew;
+             col = startColBus[pbusid] + (mcmno-1)*4 + icolnew;
            }
-         else if(mcmno > 11)
+         else if(mcmno > 12)
            {
              row = startRowBus[pbusid] + irownew;
-             col = startColBus[pbusid] + (mcmno-12)*4 + icolnew;
+             col = startColBus[pbusid] + (mcmno-12-1)*4 + icolnew;
            }
        }
-      else if(pbusid > 17)
+      else if(pbusid > 18)
        {
-         if (mcmno <= 11)
+         if (mcmno <= 12)
            {
-             col = endColBus[pbusid] - mcmno*4 - (3 - icolnew); 
+             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 > 11)
+         else if(mcmno > 12)
            {
              row = endRowBus[pbusid] - (15 - irownew)  ;
-             col = endColBus[pbusid] - (mcmno - 12)*4 - (3 - icolnew);
+             col = endColBus[pbusid] - (mcmno - 12 - 1)*4 - (3 - icolnew);
            }
        }
     }
   else if (ddlno == 5)
     {
-      if (pbusid  <= 17)
+      if (pbusid  <= 18)
        {
-         if (mcmno > 11)
+         if (mcmno > 12)
            {
              // Subtract 16 to skip the 1st 15 rows
              row = endRowBus[pbusid] - 16 -(15 - irownew);
-             col = startColBus[pbusid] + (mcmno-12)*4 + icolnew;
+             col = startColBus[pbusid] + (mcmno-12 -1)*4 + icolnew;
            }
          else
            {
              row = endRowBus[pbusid]  - (15 - irownew) ;
-             col = startColBus[pbusid] + mcmno*4 + icolnew;
+             col = startColBus[pbusid] + (mcmno -1)*4 + icolnew;
            }
+
        }
       
-      else if (pbusid > 17)
+      else if (pbusid > 18)
        {
-         if(mcmno > 11)
+         if(mcmno > 12)
            {
              // Add 16 to skip the 1st 15 rows
              row = startRowBus[pbusid] + irownew + 16;
-             col = endColBus[pbusid] - (mcmno - 12)*4 - (3 - icolnew);
+             col = endColBus[pbusid] - (mcmno - 12 - 1)*4 - (3 - icolnew);
            }
          else 
            {
              row = startRowBus[pbusid] + irownew ;
-             col = endColBus[pbusid] - mcmno*4 - (3 - icolnew); 
+             col = endColBus[pbusid] - (mcmno - 1)*4 - (3 - icolnew); 
            }
        }
     }
@@ -451,6 +512,7 @@ void AliPMDRawStream::ConvertDDL2SMN(Int_t iddl, Int_t imodule,
     }
 }
 //_____________________________________________________________________________
+
 void AliPMDRawStream::TransformH2S(Int_t smn, Int_t &row, Int_t &col) const
 {
   // This does the transformation of the hardware coordinate to
index 65670d5..2d9f42c 100644 (file)
@@ -35,7 +35,7 @@ class AliPMDRawStream: public TObject {
     AliPMDRawStream(const AliPMDRawStream& stream);
     AliPMDRawStream& operator = (const AliPMDRawStream& stream);
 
-    void             GetRowCol(Int_t ddlno, Int_t pbusid, 
+    void             GetRowCol(Int_t ddlno, Int_t smn, Int_t pbusid, 
                               UInt_t mcmno, UInt_t chno,
                               Int_t startRowBus[], Int_t endRowBus[],
                               Int_t startColBus[], Int_t endColBus[],
@@ -48,7 +48,7 @@ class AliPMDRawStream: public TObject {
     AliRawReader*    fRawReader;    // object for reading the raw data
 
 
-    ClassDef(AliPMDRawStream, 3)    // class for reading PMD raw digits
+    ClassDef(AliPMDRawStream, 4)    // class for reading PMD raw digits
 };
 
 #endif
index fa2e08d..e6230e6 100644 (file)
@@ -1,49 +1,48 @@
 0
-6  0 5
-0  12 0  15 0 47
-1  12 16 31 0 47
-2  12 32 47 0 47
-3  12 48 63 0 47
-4  12 64 79 0 47
-5  12 80 95 0 47
+6  1 6
+1  12 0  15 0 47
+2  12 16 31 0 47
+3  12 32 47 0 47
+4  12 48 63 0 47
+5  12 64 79 0 47
+6  12 80 95 0 47
 1
-6  6 11
-6  12 0  15 0 47
-7  12 16 31 0 47
-8  12 32 47 0 47
-9  12 48 63 0 47
-10 12 64 79 0 47
-11 12 80 95 0 47
+6  7 12
+7  12 0  15 0 47
+8  12 16 31 0 47
+9  12 32 47 0 47
+10 12 48 63 0 47
+11 12 64 79 0 47
+12 12 80 95 0 47
 2
-6  12 17
-12 12 0  15 0 47
-13 12 16 31 0 47
-14 12 32 47 0 47
-15 12 48 63 0 47
-16 12 64 79 0 47
-17 12 80 95 0 47
+6  13 18
+13 12 0  15 0 47
+14 12 16 31 0 47
+15 12 32 47 0 47
+16 12 48 63 0 47
+17 12 64 79 0 47
+18 12 80 95 0 47
 3
-6  18 23
-18 12 0  15 0 47
-19 12 16 31 0 47
-20 12 32 47 0 47
-21 12 48 63 0 47
-22 12 64 79 0 47
-23 12 80 95 0 47
+6  19 24
+19 12 0  15 0 47
+20 12 16 31 0 47
+21 12 32 47 0 47
+22 12 48 63 0 47
+23 12 64 79 0 47
+24 12 80 95 0 47
 4
-6  24 29
-24 12 0  15 0 47
-25 12 16 31 0 47
-26 12 32 47 0 47
-27 12 48 63 0 47
-28 12 64 79 0 47
-29 12 80 95 0 47
+6  25 30
+25 12 0  15 0 47
+26 12 16 31 0 47
+27 12 32 47 0 47
+28 12 48 63 0 47
+29 12 64 79 0 47
+30 12 80 95 0 47
 5
-6 30 35
-30 12 0  15 0 47
-31 12 16 31 0 47
-32 12 32 47 0 47
-33 12 48 63 0 47
-34 12 64 79 0 47
-35 12 80 95 0 47
-
+6 31 36
+31 12 0  15 0 47
+32 12 16 31 0 47
+33 12 32 47 0 47
+34 12 48 63 0 47
+35 12 64 79 0 47
+36 12 80 95 0 47
index 0498e20..dd7e052 100644 (file)
@@ -1,49 +1,48 @@
 6
-6  0 5
-0  12 0  15 0 47
-1  12 16 31 0 47
-2  12 32 47 0 47
-3  12 48 63 0 47
-4  12 64 79 0 47
-5  12 80 95 0 47
+6  1 6
+1  12 0  15 0 47
+2  12 16 31 0 47
+3  12 32 47 0 47
+4  12 48 63 0 47
+5  12 64 79 0 47
+6  12 80 95 0 47
 7
-6  6 11
-6  12 0  15 0 47
-7  12 16 31 0 47
-8  12 32 47 0 47
-9  12 48 63 0 47
-10 12 64 79 0 47
-11 12 80 95 0 47
+6  7 12
+7  12 0  15 0 47
+8  12 16 31 0 47
+9  12 32 47 0 47
+10  12 48 63 0 47
+11 12 64 79 0 47
+12 12 80 95 0 47
 8
-6  12 17
-12 12 0  15 0 47
-13 12 16 31 0 47
-14 12 32 47 0 47
-15 12 48 63 0 47
-16 12 64 79 0 47
-17 12 80 95 0 47
+6  13 18
+13 12 0  15 0 47
+14 12 16 31 0 47
+15 12 32 47 0 47
+16 12 48 63 0 47
+17 12 64 79 0 47
+18 12 80 95 0 47
 9
-6  18 23
-18 12 0  15 0 47
-19 12 16 31 0 47
-20 12 32 47 0 47
-21 12 48 63 0 47
-22 12 64 79 0 47
-23 12 80 95 0 47
+6  19 24
+19 12 0  15 0 47
+20 12 16 31 0 47
+21 12 32 47 0 47
+22 12 48 63 0 47
+23 12 64 79 0 47
+24 12 80 95 0 47
 10
-6  24 29
-24 12 0  15 0 47
-25 12 16 31 0 47
-26 12 32 47 0 47
-27 12 48 63 0 47
-28 12 64 79 0 47
-29 12 80 95 0 47
+6  25 30
+25 12 0  15 0 47
+26 12 16 31 0 47
+27 12 32 47 0 47
+28 12 48 63 0 47
+29 12 64 79 0 47
+30 12 80 95 0 47
 11
-6 30 35
-30 12 0  15 0 47
-31 12 16 31 0 47
-32 12 32 47 0 47
-33 12 48 63 0 47
-34 12 64 79 0 47
-35 12 80 95 0 47
-
+6 31 36
+31 12 0  15 0 47
+32 12 16 31 0 47
+33 12 32 47 0 47
+34 12 48 63 0 47
+35 12 64 79 0 47
+36 12 80 95 0 47
index a205669..5e307a5 100644 (file)
@@ -1,48 +1,48 @@
 12
-6 0 5
-0 12 32 47 48 95
-1 12 32 47 0 47
-2 12 16 31 48 95
-3 12 16 31 0 47
-4 12 0 15 48 95
-5 12 0 15  0 47
+6 1 6
+1 12 32 47 48 95
+2 12 32 47 0 47
+3 12 16 31 48 95
+4 12 16 31 0 47
+5 12 0 15 48 95
+6 12 0 15  0 47
 13
-6  6 11
-6  12 32 47 48 95
-7  12 32 47  0 47
-8  12 16 31 48 95
-9  12 16 31  0 47
-10 12  0 15 48 95
-11 12  0 15  0 47
+6  7 12
+7  12 32 47 48 95
+8  12 32 47  0 47
+9  12 16 31 48 95
+10 12 16 31  0 47
+11 12  0 15 48 95
+12 12  0 15  0 47
 14
-6  12 17
-12 12 32 47 48 95
-13 12 32 47  0 47
-14 12 16 31 48 95
-15 12 16 31  0 47
-16 12  0 15 48 95
-17 12  0 15  0 47
+6  13 18
+13 12 32 47 48 95
+14 12 32 47  0 47
+15 12 16 31 48 95
+16 12 16 31  0 47
+17 12  0 15 48 95
+18 12  0 15  0 47
 15
-6 18 23
-18 12 32 47 48 95
-19 12 32 47  0 47
-20 12 16 31 48 95
-21 12 16 31  0 47
-22 12  0 15 48 95
-23 12  0 15  0 47
+6 19 24
+19 12 32 47 48 95
+20 12 32 47  0 47
+21 12 16 31 48 95
+22 12 16 31  0 47
+23 12  0 15 48 95
+24 12  0 15  0 47
 16
-6 24 29
-24 12 32 47 48 95
-25 12 32 47  0 47
-26 12 16 31 48 95
-27 12 16 31  0 47
-28 12  0 15 48 95
-29 12  0 15  0 47
+6 25 30
+25 12 32 47 48 95
+26 12 32 47  0 47
+27 12 16 31 48 95
+28 12 16 31  0 47
+29 12  0 15 48 95
+30 12  0 15  0 47
 17
-6 30 35
-30 12 32 47 48 95
-31 12 32 47  0 47
-32 12 16 31 48 95
-33 12 16 31  0 47
-34 12  0 15 48 95
-35 12  0 15  0 47
+6 31 36
+31 12 32 47 48 95
+32 12 32 47  0 47
+33 12 16 31 48 95
+34 12 16 31  0 47
+35 12  0 15 48 95
+36 12  0 15  0 47
index 5cb95d4..25cca8d 100644 (file)
@@ -1,48 +1,48 @@
 18
-6 0 5
-0 12 32 47 48 95
-1 12 32 47  0 47
-2 12 16 31 48 95
-3 12 16 31  0 47
-4 12  0 15 48 95
-5 12  0 15  0 47
+6 1 6
+1 12 32 47 48 95
+2 12 32 47  0 47
+3 12 16 31 48 95
+4 12 16 31  0 47
+5 12  0 15 48 95
+6 12  0 15  0 47
 19
-6 6 11
-6  12 32 47 48 95
-7  12 32 47  0 47
-8  12 16 31 48 95
-9  12 16 31  0 47
-10 12  0 15 48 95
-11 12  0 15  0 47
+6 7 12
+7  12 32 47 48 95
+8  12 32 47  0 47
+9  12 16 31 48 95
+10 12 16 31  0 47
+11 12  0 15 48 95
+12 12  0 15  0 47
 20
-6 12 17
-12 12 32 47 48 95
-13 12 32 47  0 47
-14 12 16 31 48 95
-15 12 16 31  0 47
-16 12  0 15 48 95
-17 12  0 15  0 47
+6 13 18
+13 12 32 47 48 95
+14 12 32 47  0 47
+15 12 16 31 48 95
+16 12 16 31  0 47
+17 12  0 15 48 95
+18 12  0 15  0 47
 21
-6 18 23
-18 12 32 47 48 95
-19 12 32 47  0 47
-20 12 16 31 48 95
-21 12 16 31  0 47
-22 12  0 15 48 95
-23 12  0 15  0 47
+6 19 24
+19 12 32 47 48 95
+20 12 32 47  0 47
+21 12 16 31 48 95
+22 12 16 31  0 47
+23 12  0 15 48 95
+24 12  0 15  0 47
 22
-6 24 29
-24 12 32 47 48 95
-25 12 32 47  0 47
-26 12 16 31 48 95
-27 12 16 31  0 47
-28 12  0 15 48 95
-29 12  0 15  0 47
+6 25 30
+25 12 32 47 48 95
+26 12 32 47  0 47
+27 12 16 31 48 95
+28 12 16 31  0 47
+29 12  0 15 48 95
+30 12  0 15  0 47
 23
-6 30 35
-30 12 32 47 48 95
-31 12 32 47  0 47
-32 12 16 31 48 95
-33 12 16 31  0 47
-34 12  0 15 48 95
-35 12  0 15  0 47
+6 31 36
+31 12 32 47 48 95
+32 12 32 47  0 47
+33 12 16 31 48 95
+34 12 16 31  0 47
+35 12  0 15 48 95
+36 12  0 15  0 47
index 6a0450f..e00869a 100644 (file)
@@ -1,67 +1,67 @@
 24
-3 0 2
-0  24  0 31 0 47
-1  24 32 63 0 47
-2  24 64 95 0 47
+3 1 3
+1  24  0 31 0 47
+2  24 32 63 0 47
+3  24 64 95 0 47
 25
-3  3 5 
-3  24 0  31 0 47
-4  24 32 63 0 47
-5  24 64 95 0 47
+3  4 6 
+4  24 0  31 0 47
+5  24 32 63 0 47
+6  24 64 95 0 47
 26
-3  6  8 
-6  24 0  31 0 47
-7  24 32 63 0 47
-8  24 64 95 0 47
+3  7  9 
+7  24 0  31 0 47
+8  24 32 63 0 47
+9  24 64 95 0 47
 27
-3  9  11
-9  24 0  31 0 47
-10 24 32 63 0 47
-11 24 64 95 0 47
+3  10  12
+10  24 0  31 0 47
+11 24 32 63 0 47
+12 24 64 95 0 47
 28
-3  12 14
-12 24 0  31 0 47
-13 24 32 63 0 47
-14 24 64 95 0 47
+3  13 15
+13 24 0  31 0 47
+14 24 32 63 0 47
+15 24 64 95 0 47
 29
-3  15 17
-15 24 0  31 0 47
-16 24 32 63 0 47
-17 24 64 95 0 47
+3  16 18
+16 24 0  31 0 47
+17 24 32 63 0 47
+18 24 64 95 0 47
 42
-4 18 21
-18 12 32 47 48 95
-19 12 32 47  0 47
-20 24  0 31 48 95
-21 24  0 31  0 47
+4 19 22
+19 12 32 47 48 95
+20 12 32 47  0 47
+21 24  0 31 48 95
+22 24  0 31  0 47
 43
-4 22 25
-22 12 32 47 48 95
-23 12 32 47  0 47
-24 24  0 31 48 95
-25 24  0 31  0 47
+4 23 26
+23 12 32 47 48 95
+24 12 32 47  0 47
+25 24  0 31 48 95
+26 24  0 31  0 47
 44
-4 26 29
-26 12 32 47 48 95
-27 12 32 47  0 47
-28 24  0 31 48 95
-29 24  0 31  0 47
+4 27 30
+27 12 32 47 48 95
+28 12 32 47  0 47
+29 24  0 31 48 95
+30 24  0 31  0 47
 45
-4 30 33
-30 12 32 47 48 95
-31 12 32 47  0 47
-32 24  0 31 48 95
-33 24  0 31  0 47
+4 31 34
+31 12 32 47 48 95
+32 12 32 47  0 47
+33 24  0 31 48 95
+34 24  0 31  0 47
 46
-4 34 37
-34 12 32 47 48 95
-35 12 32 47  0 47
-36 24  0 31 48 95
-37 24  0 31  0 47
+4 35 38
+35 12 32 47 48 95
+36 12 32 47  0 47
+37 24  0 31 48 95
+38 24  0 31  0 47
 47
-4 38 41
-38 12 32 47 48 95
-39 12 32 47  0 47
-40 24  0 31 48 95
-41 24  0 31  0 47
+4 39 42
+39 12 32 47 48 95
+40 12 32 47  0 47
+41 24  0 31 48 95
+42 24  0 31  0 47
 
index f7954d2..182da03 100644 (file)
@@ -1,67 +1,67 @@
 30
-3 0 2
-0  24  0 31 0 47
-1  24 32 63 0 47
-2  24 64 95 0 47
+3 1 3
+1  24  0 31 0 47
+2  24 32 63 0 47
+3  24 64 95 0 47
 31
-3  3 5 
-3  24 0  31 0 47
-4  24 32 63 0 47
-5  24 64 95 0 47
+3  4 6 
+4  24 0  31 0 47
+5  24 32 63 0 47
+6  24 64 95 0 47
 32
-3  6  8 
-6  24 0  31 0 47
-7  24 32 63 0 47
-8  24 64 95 0 47
+3  7  9 
+7  24 0  31 0 47
+8  24 32 63 0 47
+9  24 64 95 0 47
 33
-3  9  11
-9  24 0  31 0 47
-10 24 32 63 0 47
-11 24 64 95 0 47
+3  10  12
+10  24 0  31 0 47
+11 24 32 63 0 47
+12 24 64 95 0 47
 34
-3  12 14
-12 24 0  31 0 47
-13 24 32 63 0 47
-14 24 64 95 0 47
+3  13 15
+13 24 0  31 0 47
+14 24 32 63 0 47
+15 24 64 95 0 47
 35
-3  15 17
-15 24 0  31 0 47
-16 24 32 63 0 47
-17 24 64 95 0 47
+3  16 18
+16 24 0  31 0 47
+17 24 32 63 0 47
+18 24 64 95 0 47
 36
-4 18 21
-18 12 32 47 48 95
-19 12 32 47  0 47
-20 24  0 31 48 95
-21 24  0 31  0 47
+4 19 22
+19 12 32 47 48 95
+20 12 32 47  0 47
+21 24  0 31 48 95
+22 24  0 31  0 47
 37
-4 22 25
-22 12 32 47 48 95
-23 12 32 47  0 47
-24 24  0 31 48 95
-25 24  0 31  0 47
+4 23 26
+23 12 32 47 48 95
+24 12 32 47  0 47
+25 24  0 31 48 95
+26 24  0 31  0 47
 38
-4 26 29
-26 12 32 47 48 95
-27 12 32 47  0 47
-28 24  0 31 48 95
-29 24  0 31  0 47
+4 27 30
+27 12 32 47 48 95
+28 12 32 47  0 47
+29 24  0 31 48 95
+30 24  0 31  0 47
 39
-4 30 33
-30 12 32 47 48 95
-31 12 32 47  0 47
-32 24  0 31 48 95
-33 24  0 31  0 47
+4 31 34
+31 12 32 47 48 95
+32 12 32 47  0 47
+33 24  0 31 48 95
+34 24  0 31  0 47
 40
-4 34 37
-34 12 32 47 48 95
-35 12 32 47  0 47
-36 24  0 31 48 95
-37 24  0 31  0 47
+4 35 38
+35 12 32 47 48 95
+36 12 32 47  0 47
+37 24  0 31 48 95
+38 24  0 31  0 47
 41
-4 38 41
-38 12 32 47 48 95
-39 12 32 47  0 47
-40 24  0 31 48 95
-41 24  0 31  0 47
+4 39 42
+39 12 32 47 48 95
+40 12 32 47  0 47
+41 24  0 31 48 95
+42 24  0 31  0 47