]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOFDDLRawData.cxx
Fix for TOF new calib task for CPass
[u/mrichter/AliRoot.git] / TOF / AliTOFDDLRawData.cxx
index fe4fc5bb602cf495848405ab4462b29763cfa3e0..099903e19a0e1d4b10060ffc91d94dc98012e112 100644 (file)
@@ -91,6 +91,10 @@ Revision 0.01  2004/6/11 A.De Caro, S.B.Sellitto, R.Silvestri
 
 extern TRandom *gRandom;
 
+using std::ofstream;
+using std::endl;
+using std::cout;
+using std::ios;
 ClassImp(AliTOFDDLRawData)
 
 //---------------------------------------------------------------------------
@@ -102,9 +106,10 @@ AliTOFDDLRawData::AliTOFDDLRawData():
   fFakeOrphaneProduction(kFALSE),
   fMatchingWindow(8192),
   fTOFdigitMap(new AliTOFDigitMap()),
-  fTOFdigitArray(0x0)
-  //fTOFrawStream(AliTOFRawStream()),
-  //fTOFCableLengthMap(new AliTOFCableLengthMap())
+  fTOFdigitArray(0x0),
+  fWordsPerDRM(0),
+  fWordsPerTRM(0),
+  fWordsPerChain(0)
 {
   //Default constructor
 }
@@ -117,9 +122,10 @@ AliTOFDDLRawData::AliTOFDDLRawData(const AliTOFDDLRawData &source) :
   fFakeOrphaneProduction(source.fFakeOrphaneProduction),
   fMatchingWindow(source.fMatchingWindow),
   fTOFdigitMap(source.fTOFdigitMap),
-  fTOFdigitArray(source.fTOFdigitArray)
-  //fTOFrawStream(source.fTOFrawStream),
-  //fTOFCableLengthMap(source.fTOFCableLengthMap)
+  fTOFdigitArray(source.fTOFdigitArray),
+  fWordsPerDRM(source.fWordsPerDRM),
+  fWordsPerTRM(source.fWordsPerTRM),
+  fWordsPerChain(source.fWordsPerChain)
  {
   //Copy Constructor
   return;
@@ -140,17 +146,18 @@ AliTOFDDLRawData& AliTOFDDLRawData::operator=(const AliTOFDDLRawData &source) {
   fMatchingWindow=source.fMatchingWindow;
   fTOFdigitMap=source.fTOFdigitMap;
   fTOFdigitArray=source.fTOFdigitArray;
-  //fTOFrawStream=source.fTOFrawStream;
-  //fTOFCableLengthMap=source.fTOFCableLengthMap;
+  fWordsPerDRM=source.fWordsPerDRM;
+  fWordsPerTRM=source.fWordsPerTRM;
+  fWordsPerChain=source.fWordsPerChain;
   return *this;
 }
 
 //----------------------------------------------------------------------------
 AliTOFDDLRawData::~AliTOFDDLRawData()
 {
+  // dtr
+
   delete fTOFdigitMap;
-  //delete fTOFrawStream;
-  //delete fTOFCableLengthMap;
 }
 //----------------------------------------------------------------------------
 Int_t AliTOFDDLRawData::RawDataTOF(TBranch* branch)
@@ -166,16 +173,12 @@ Int_t AliTOFDDLRawData::RawDataTOF(TBranch* branch)
   // To clear the digit indices map for each event
   fTOFdigitMap->Clear();
 
-  //fTOFrawStream->Clear();
-
   fIndex = -1;
 
   fTOFdigitArray = * (TClonesArray**) branch->GetAddress();
 
-  char fileName[15];
   AliFstream* outfile;      // logical name of the output file 
 
-  //AliRawDataHeader header;
   AliRawDataHeaderSim header;
 
   UInt_t sizeRawData = 0;
@@ -192,15 +195,13 @@ Int_t AliTOFDDLRawData::RawDataTOF(TBranch* branch)
   Int_t nTRM =  0;
   Int_t iChain = -1;
 
-  UInt_t nWordsPerTRM = 0;
-
   //loop over TOF DDL files
   for (nDDL=0; nDDL<AliDAQ::NumberOfDdls("TOF"); nDDL++) {
 
-    strcpy(fileName,AliDAQ::DdlFileName("TOF",nDDL)); //The name of the output file
+    char fileName[256]="";
+    strncpy(fileName,AliDAQ::DdlFileName("TOF",nDDL),255); //The name of the output file
 
     outfile = new AliFstream(fileName);
-    //iDDL = fTOFrawStream->GetDDLnumberPerSector(nDDL);
     iDDL = AliTOFRawStream::GetDDLnumberPerSector(nDDL);
 
     // write Dummy DATA HEADER
@@ -210,48 +211,50 @@ Int_t AliTOFDDLRawData::RawDataTOF(TBranch* branch)
     // DRM section: trailer
     MakeDRMtrailer(buf);
 
-    // LTM section
-    fIndex++;
-    buf[fIndex] = MakeFiller();
-    MakeLTMtrailer(buf);
-    MakeLTMdata(buf);
-    MakeLTMheader(buf);
-
     // loop on TRM number per DRM
     for (nTRM=AliTOFGeometry::NTRM(); nTRM>=3; nTRM--) {
 
-      nWordsPerTRM = 0;
+      fWordsPerTRM = 0;
 
       // the slot number 3 of the even DRM (i.e. right) doesn't contain TDC digit data
       if (iDDL%2==0 && nTRM==3) continue;
 
-      // TRM global trailer
-      MakeTRMtrailer(buf);
-
       // loop on TRM chain number per TRM
       for (iChain=AliTOFGeometry::NChain()-1; iChain>=0; iChain--) {
 
        // TRM chain trailer
-       MakeTRMchainTrailer(iChain, buf);
-       nWordsPerTRM++;
+       MakeTRMchainTrailer(iChain, buf); fWordsPerTRM++;
 
        // TRM TDC digits
-       MakeTDCdigits(nDDL, nTRM, iChain, buf, nWordsPerTRM);
+       MakeTDCdigits(nDDL, nTRM, iChain, buf);
 
        // TRM chain header
-       MakeTRMchainHeader(nTRM, iChain, buf);
-       nWordsPerTRM++;
+       MakeTRMchainHeader(nTRM, iChain, buf); fWordsPerTRM++;
 
       } // end loop on iChain
 
       // TRM global header
-      MakeTRMheader(nTRM, buf);
+      MakeTRMheader(nTRM, buf); fWordsPerTRM++;
 
       // TRM filler in case where TRM data number is odd
-      if (nWordsPerTRM%2!=0) MakeTRMfiller(buf, nWordsPerTRM);
+      if ((fWordsPerTRM+1)%2!=0) {
+       MakeTRMfiller(buf); fWordsPerTRM++;
+      }
+
+      MakeTRMtrailer(buf); fWordsPerDRM++;
+
+      fWordsPerDRM += fWordsPerTRM;
 
     } // end loop on nTRM
-       
+
+
+    // LTM section
+    //fIndex++;
+    //buf[fIndex] = MakeFiller(); fWordsPerDRM++; // valid till when LTM word number was 33
+    MakeLTMtrailer(buf); fWordsPerDRM++;
+    MakeLTMdata(buf); fWordsPerDRM+=48;
+    MakeLTMheader(buf); fWordsPerDRM++;
+
     // DRM section: in
     MakeDRMheader(nDDL, buf);
 
@@ -290,7 +293,7 @@ void AliTOFDDLRawData::GetDigits()
 
   Int_t digit = -1;
   Int_t ndigits = fTOFdigitArray->GetEntries();
-
+  AliDebug(2, Form(" Number of read digits = %d",ndigits));
   AliTOFdigit *digs;
 
   // loop on TOF digits
@@ -306,7 +309,7 @@ void AliTOFDDLRawData::GetDigits()
     fTOFdigitMap->AddDigit(vol, digit);
 
   } // close loop on digit del TOF
-
+  AliDebug(2,Form(" Number of mapped digits = %d",fTOFdigitMap->GetFilledCellNumber()));
 }
 
 //----------------------------------------------------------------------------
@@ -329,7 +332,7 @@ void AliTOFDDLRawData::MakeDRMheader(Int_t nDDL, UInt_t *buf)
   baseWord=0;
   word = 1; // 0001 -> DRM data are coming from the VME slot number 1
   AliBitPacking::PackWord(word,baseWord, 0, 3);
-  word = 0; // event CRC
+  word = 0; // event CRC --> CHANGED
   AliBitPacking::PackWord(word,baseWord, 4,19);
   word = 0; // reserved for future use
   AliBitPacking::PackWord(word,baseWord,20,27);
@@ -456,7 +459,7 @@ void AliTOFDDLRawData::MakeDRMtrailer(UInt_t *buf)
   baseWord=0;
   word = 1; // 0001 -> DRM data are coming from the VME slot number 1
   AliBitPacking::PackWord(word,baseWord, 0, 3);
-  word = 0; // local event counter
+  word = 0; // local event counter --> TO BE CHANGED IN fWordsPerDRM+5
   AliBitPacking::PackWord(word,baseWord, 4,15);
   word = 0; // reserved for future use
   AliBitPacking::PackWord(word,baseWord,16,27);
@@ -504,146 +507,235 @@ void AliTOFDDLRawData::MakeLTMdata(UInt_t *buf)
 
   UInt_t baseWord;
   UInt_t word;
-  
+
   baseWord=0;
-  word = 100; // Local temperature in LTM5 -> 4 X 25 degree (environment temperature)
-  AliBitPacking::PackWord(word,baseWord, 0, 9);
-  word = 100; // Local temperature in LTM6 -> 4 X 25 degree (environment temperature)
+  word = 0;
+  AliBitPacking::PackWord(word,baseWord,0,9);
+  word = 0;
   AliBitPacking::PackWord(word,baseWord,10,19);
-  word = 100; // Local temperature in LTM7 -> 4 X 25 degree (environment temperature)
+  word = 0;
   AliBitPacking::PackWord(word,baseWord,20,29);
   word = 0;
-  AliBitPacking::PackWord(word,baseWord,30,31);
+  AliBitPacking::PackWord(word,baseWord,30,30);
+  word = 0;
+  AliBitPacking::PackWord(word,baseWord,31,31);
+
+
+  // OR45, OR46, OR47
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // OR42, OR43, OR44
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // OR39, OR40, OR41
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // OR36, OR37, OR38
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // OR33, OR34, OR35
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // OR30, OR31, OR32
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // OR27, OR28, OR29
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // OR24, OR25, OR26
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // OR21, OR22, OR23
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // OR18, OR19, OR20
+  fIndex++;
+  buf[fIndex]=baseWord;
 
+  // OR15, OR16, OR17
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // Local temperature in LTM2, LMT3, LTM4 -> 4 X 25 degree (environment temperature)
+  // OR12, OR12, OR24
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // Local temperature in FEAC7, FEAC8, LTM1 -> 4 X 25 degree (environment temperature)
+  // OR9, OR10, OR11
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // Local temperature in FEAC4, FEAC5, FEAC6 -> 4 X 25 degree (environment temperature)
+  // OR6, OR7, OR8
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // Local temperature in FEAC1, FEAC2, FEAC3 -> 4 X 25 degree (environment temperature)
+  // OR3, OR4, OR5
   fIndex++;
   buf[fIndex]=baseWord;
 
+  // OR0, OR1, OR2
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+
+  
   baseWord=0;
-  word = 0; // GND-FEAC15 -> Voltage drop between GND and FEAC15
+  word = 100; // Local temperature in LTM11 -> 4 X 25 degree (environment temperature)
   AliBitPacking::PackWord(word,baseWord, 0, 9);
-  word = 0; // VTH16 -> Thereshould voltage for FEAC16
+  word = 100; // Local temperature in LTM10 -> 4 X 25 degree (environment temperature)
   AliBitPacking::PackWord(word,baseWord,10,19);
-  word = 0; // GND-FEAC16 -> Voltage drop between GND and FEAC16
+  word = 100; // Local temperature in LTM9 -> 4 X 25 degree (environment temperature)
   AliBitPacking::PackWord(word,baseWord,20,29);
   word = 0;
-  AliBitPacking::PackWord(word,baseWord,30,31);
+  AliBitPacking::PackWord(word,baseWord,30,30);
+  word = 0;
+  AliBitPacking::PackWord(word,baseWord,31,31);
+
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // Local temperature in LTM8, LMT7, LTM6 -> 4 X 25 degree (environment temperature)
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // Local temperature in LTM5, LMT4, LTM3 -> 4 X 25 degree (environment temperature)
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // Local temperature in LTM2, LMT1, LTM0 -> 4 X 25 degree (environment temperature)
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+
 
+  // Local temperature in T7, T6, T5 -> 4 X 25 degree (environment temperature)
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // VTH14 -> Thereshould voltage for FEAC14
-  // GND-FEAC14 -> Voltage drop between GND and FEAC14
-  // VTH15 -> Thereshould voltage for FEAC15
+  // Local temperature in T4, T3, T2 -> 4 X 25 degree (environment temperature)
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // GND-FEAC12 -> Voltage drop between GND and FEAC12
-  // VTH13 -> Thereshould voltage for FEAC13
-  // GND-FEAC13 -> Voltage drop between GND and FEAC13
+  // Local temperature in T1, T0 -> 4 X 25 degree (environment temperature)
+  // Local temperature in VTH15 -> Thereshould voltage for FEAC15
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  baseWord=0;
+  word = 0; // VTH13 -> Thereshould voltage for FEAC16
+  AliBitPacking::PackWord(word,baseWord, 0, 9);
+  word = 0; // VTH14 -> Thereshould voltage for FEAC14
+  AliBitPacking::PackWord(word,baseWord,10,19);
+  word = 0; // GND-FEAC7 -> Voltage drop between GND and FEAC7
+  AliBitPacking::PackWord(word,baseWord,20,29);
+  word = 0;
+  AliBitPacking::PackWord(word,baseWord,30,30);
+  word = 0;
+  AliBitPacking::PackWord(word,baseWord,31,31);
+
   fIndex++;
   buf[fIndex]=baseWord;
 
   // VTH11 -> Thereshould voltage for FEAC11
-  // GND-FEAC11 -> Voltage drop between GND and FEAC11
   // VTH12 -> Thereshould voltage for FEAC12
+  // GND-FEAC6 -> Voltage drop between GND and FEAC6
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // GND-FEAC9 -> Voltage drop between GND and FEAC9
-  // VTH10 -> Thereshould voltage for FEAC10
-  // GND-FEAC10 -> Voltage drop between GND and FEAC10
+  // VTH9 -> Thereshould voltage for FEAC11
+  // VTH10 -> Thereshould voltage for FEAC12
+  // GND-FEAC5 -> Voltage drop between GND and FEAC6
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // VTH8 -> Thereshould voltage for FEAC8
-  // GND-FEAC8 -> Voltage drop between GND and FEAC8
-  // VTH9 -> Thereshould voltage for FEAC9
+  // VTH7 -> Thereshould voltage for FEAC11
+  // VTH8 -> Thereshould voltage for FEAC12
+  // GND-FEAC4 -> Voltage drop between GND and FEAC6
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // GND-FEAC6 -> Voltage drop between GND and FEAC6
-  // VTH7 -> Thereshould voltage for FEAC7
-  // GND-FEAC7 -> Voltage drop between GND and FEAC7
+  // VTH5 -> Thereshould voltage for FEAC11
+  // VTH6 -> Thereshould voltage for FEAC12
+  // GND-FEAC3 -> Voltage drop between GND and FEAC6
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // VTH5 -> Thereshould voltage for FEAC5
-  // GND-FEAC5 -> Voltage drop between GND and FEAC5
-  // VTH6 -> Thereshould voltage for FEAC6
+  // VTH3 -> Thereshould voltage for FEAC11
+  // VTH4 -> Thereshould voltage for FEAC12
+  // GND-FEAC2 -> Voltage drop between GND and FEAC6
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // GND-FEAC3 -> Voltage drop between GND and FEAC3
-  // VTH4 -> Thereshould voltage for FEAC4
-  // GND-FEAC4 -> Voltage drop between GND and FEAC4
+  // VTH1 -> Thereshould voltage for FEAC11
+  // VTH2 -> Thereshould voltage for FEAC12
+  // GND-FEAC1 -> Voltage drop between GND and FEAC6
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // VTH2 -> Thereshould voltage for FEAC2
-  // GND-FEAC2 -> Voltage drop between GND and FEAC2
-  // VTH3 -> Thereshould voltage for FEAC3
+  // LV15
+  // VTH0 -> Thereshould voltage for FEAC12
+  // GND-FEAC0 -> Voltage drop between GND and FEAC6
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // LV16 -> Low Voltage measured by FEAC16
-  // GND-FEAC1 -> Voltage drop between GND and FEAC1
-  // VTH1 -> Thereshould voltage for FEAC1
+  // LV15
+  // VTH0 -> Thereshould voltage for FEAC12
+  // GND-FEAC0 -> Voltage drop between GND and FEAC6
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // Low Voltage measured by FEAC13, FEAC14, FEAC15
+  // LV12
+  // LV13
+  // LV14
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // Low Voltage measured by FEAC10, FEAC11, FEAC12
+  // LV9
+  // LV10
+  // LV11
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // Low Voltage measured by FEAC7, FEAC8, FEAC9
+  // LV6
+  // LV7
+  // LV8
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // Low Voltage measured by FEAC4, FEAC5, FEAC6
+  // LV3
+  // LV4
+  // LV5
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // Low Voltage measured by FEAC1, FEAC2, FEAC3
+  // LV0
+  // LV1
+  // LV2
   fIndex++;
   buf[fIndex]=baseWord;
 
 
+
   baseWord=0;
-  word = 0; // PDL45 -> Delay Line setting for PDL45
+  word = 0; // PDL45 -> Delay Line setting for PDL41
   AliBitPacking::PackWord(word,baseWord, 0, 7);
-  word = 0; // PDL46 -> Delay Line setting for PDL46
+  word = 0; // PDL46 -> Delay Line setting for PDL42
   AliBitPacking::PackWord(word,baseWord, 8,15);
-  word = 0; // PDL47 -> Delay Line setting for PDL47
+  word = 0; // PDL47 -> Delay Line setting for PDL43
   AliBitPacking::PackWord(word,baseWord,16,23);
-  word = 0; // PDL48 -> Delay Line setting for PDL48
+  word = 0; // PDL48 -> Delay Line setting for PDL44
   AliBitPacking::PackWord(word,baseWord,24,31);
   fIndex++;
   buf[fIndex]=baseWord;
 
-  // Delay Line setting for PDL41, PDL42, PDL43, PDL44
-  fIndex++;
-  buf[fIndex]=baseWord;
-
   // Delay Line setting for PDL37, PDL38, PDL39, PDL40
   fIndex++;
   buf[fIndex]=baseWord;
@@ -752,7 +844,8 @@ void AliTOFDDLRawData::MakeTRMheader(Int_t nTRM, UInt_t *buf)
 void AliTOFDDLRawData::MakeTRMtrailer(UInt_t *buf)
 {
   //
-  // TRM trailer
+  // Set TRM Global Trailer
+  // with the calculated CRC
   //
 
   UInt_t baseWord;
@@ -761,17 +854,34 @@ void AliTOFDDLRawData::MakeTRMtrailer(UInt_t *buf)
   baseWord=0;
   word = 15; // 1111 -> TRM trailer ID 1
   AliBitPacking::PackWord(word,baseWord, 0, 3);
-  word = 0; // event CRC
-  AliBitPacking::PackWord(word,baseWord, 4,15);
-  word = 0; // local event counter == DRM local event counter
+
+  UInt_t trmCRC=0x0;
+  for (Int_t ii=fIndex-(fWordsPerTRM-1); ii<fIndex; ii++)
+    trmCRC ^= buf[ii];
+  //PH  printf(" A trmCRC=%d\n",trmCRC);
+
+  word = 0x0;
+  word ^= ( (trmCRC & 0x00000fff) >>  0);
+  word ^= ( (trmCRC & 0x00fff000) >> 12);
+  word ^= ( (trmCRC & 0xff000000) >> 24);
+
+  //PH  printf(" B trmCRC=%d\n",word);
+
+  AliBitPacking::PackWord(word,baseWord, 4,15); // event CRC --> CHANGED
+
+  word = 0; // local event counter == DRM local event counter --> TO BE CHANGED
   AliBitPacking::PackWord(word,baseWord,16,27);
   word = 5; // 0101 -> TRM trailer ID 2
   AliBitPacking::PackWord(word,baseWord,28,31);
+
   fIndex++;
-  buf[fIndex]=baseWord;
+  for (Int_t ii=fIndex; ii>fIndex-fWordsPerTRM; ii--)
+    buf[ii]=buf[ii-1];
 
-}
+  buf[fIndex-fWordsPerTRM] = baseWord;
 
+}
+  
 //----------------------------------------------------------------------------
 void AliTOFDDLRawData::MakeTRMchainHeader(Int_t nTRM, Int_t iChain,
                                          UInt_t *buf)
@@ -798,9 +908,9 @@ void AliTOFDDLRawData::MakeTRMchainHeader(Int_t nTRM, Int_t iChain,
   AliBitPacking::PackWord(word,baseWord, 0, 3);
   word = 0; // bunch ID
   AliBitPacking::PackWord(word,baseWord, 4,15);
-  word = 100; // PB24 temperature -> 4 X 25 degree (environment temperature)
+  word = 0;//100; // PB24 temperature -> 4 X 25 degree (environment temperature)
   AliBitPacking::PackWord(word,baseWord,16,23);
-  word = (Int_t)(5 * gRandom->Rndm()); // PB24 ID [0;4]
+  word = 0;//(Int_t)(5 * gRandom->Rndm()); // PB24 ID [0;4]
   AliBitPacking::PackWord(word,baseWord,24,26);
   word = 0; // TS
   AliBitPacking::PackWord(word,baseWord,27,27);
@@ -819,7 +929,7 @@ void AliTOFDDLRawData::MakeTRMchainHeader(Int_t nTRM, Int_t iChain,
 }
 
 //----------------------------------------------------------------------------
-void AliTOFDDLRawData::MakeTRMfiller(UInt_t *buf, UInt_t nWordsPerTRM)
+void AliTOFDDLRawData::MakeTRMfiller(UInt_t *buf)
 {
   //
   // TRM filler
@@ -828,16 +938,15 @@ void AliTOFDDLRawData::MakeTRMfiller(UInt_t *buf, UInt_t nWordsPerTRM)
   Int_t jj = -1;
 
   fIndex++;
-  for (jj=fIndex; jj>fIndex-(Int_t)nWordsPerTRM; jj--) {
+  for (jj=fIndex; jj>fIndex-fWordsPerTRM; jj--)
     buf[jj] = buf[jj-1];
-  }
 
-  buf[fIndex-nWordsPerTRM] = MakeFiller();
+  buf[fIndex-fWordsPerTRM] = MakeFiller();
 
 }
   
 //----------------------------------------------------------------------------
-UInt_t AliTOFDDLRawData::MakeFiller()
+UInt_t AliTOFDDLRawData::MakeFiller() const
 {
   //
   // Filler word definition: to make even the number of words per TRM/LTM
@@ -878,7 +987,7 @@ void AliTOFDDLRawData::MakeTRMchainTrailer(Int_t iChain, UInt_t *buf)
   AliBitPacking::PackWord(word,baseWord, 0, 3);
   word = 0; // MBZ
   AliBitPacking::PackWord(word,baseWord, 4,15);
-  word = 0; // event counter
+  word = 0; // event counter --> TO BE CHANGED
   AliBitPacking::PackWord(word,baseWord,16,27);
   switch (iChain) {
     case 0:
@@ -895,8 +1004,7 @@ void AliTOFDDLRawData::MakeTRMchainTrailer(Int_t iChain, UInt_t *buf)
 }
 
 //----------------------------------------------------------------------------
-void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
-                                    UInt_t *buf, UInt_t &nWordsPerTRM)
+void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain, UInt_t *buf)
 {
   //
   // TRM TDC digit
@@ -960,19 +1068,23 @@ void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
 
     // the DRM odd (i.e. left) slot number 3 doesn't contain TDC digit data
     // for TDC numbers 3-14
-    if (iDDL%2==1 && nTRM==3 && (Int_t)(nTDC/3.)!=0) continue;
+    if (iDDL%2==1 && nTRM==3 && (Int_t)(nTDC/3)!=0) continue;
 
     // loop on TDC channel number
     for (iCH=AliTOFGeometry::NCh()-1; iCH>=0; iCH--) {
 
       //numberOfMeasuresPerChannel = 0;
 
-      //fTOFrawStream->EquipmentId2VolumeId(nDDL, nTRM, iChain, nTDC, iCH, volume);
+      for (Int_t aa=0; aa<5; aa++) volume[aa]=-1;
       AliTOFRawStream::EquipmentId2VolumeId(nDDL, nTRM, iChain, nTDC, iCH, volume);
        
+      AliDebug(3,Form(" volume -> %2d %1d %2d %2d %1d",volume[0],volume[1],volume[2],volume[3],volume[4]));
+
       if (volume[0]==-1 || volume[1]==-1 || volume[2]==-1 ||
          volume[3]==-1 || volume[4]==-1) continue;
 
+      AliDebug(3,Form(" ====== %2d %1d %2d %2d %1d",volume[0],volume[1],volume[2],volume[3],volume[4]));
+
       for (jj=0; jj<3; jj++) indexDigit[jj] = -1;
 
       fTOFdigitMap->GetDigitIndex(volume, indexDigit);
@@ -1039,11 +1151,10 @@ void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
          word = 1; // TRM TDC digit ID
          AliBitPacking::PackWord(word,baseWord,31,31);
 
-         localIndex++;
+         localIndex++; fWordsPerTRM++;
          localBuffer[localIndex]=baseWord;
          psArray[localIndex]=dummyPS;
 
-         nWordsPerTRM++;
          baseWord=0;
 
        } // if ( fFakeOrphaneProduction && ( ( fPackedAcquisition && percentFilledCells<0.12 && gRandom->Rndm()<(0.12-percentFilledCells) ) or ... ) )
@@ -1053,6 +1164,8 @@ void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
 
        if (indexDigit[jj]<0) continue;
 
+       AliDebug(3,Form(" ====== %2d %1d %2d %2d %1d -> %1d %d",volume[0],volume[1],volume[2],volume[3],volume[4],jj,indexDigit[jj]));
+
        digs = (AliTOFdigit*)fTOFdigitArray->UncheckedAt(indexDigit[jj]);
          
        if (digs->GetSector()!=volume[0] ||
@@ -1067,12 +1180,17 @@ void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
                                                          digs->GetPadz(), volume[4])
                                                     );
 
-       timeOfFlight = (Int_t)(digs->GetTdc())
-         /*+
+       timeOfFlight = (Int_t)(digs->GetTdc());
+       /*+
          fTOFCableLengthMap->GetCableTimeShiftBin(nDDL, nTRM, iChain, nTDC)*/;
 
        //if (timeOfFlight>=fMatchingWindow+1000) continue; // adc
-       if (timeOfFlight>=fMatchingWindow) continue; // adc
+       //if (timeOfFlight>=fMatchingWindow) continue; // adc
+       if (digs->GetTdcND()>=fMatchingWindow) {
+         AliDebug(2,"Out of matching window.");
+         continue; // adc
+       }
+       else AliDebug(2,"In matching window");
 
        //numberOfMeasuresPerChannel++;
 
@@ -1127,10 +1245,9 @@ void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
        word = 1; // TRM TDC digit ID
        AliBitPacking::PackWord(word,baseWord,31,31);
 
-       localIndex++;
+       localIndex++; fWordsPerTRM++;
        localBuffer[localIndex]=baseWord;
 
-       nWordsPerTRM++;
        baseWord=0;
 
        if ( fFakeOrphaneProduction &&
@@ -1192,11 +1309,10 @@ void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
          word = 1; // TRM TDC digit ID
          AliBitPacking::PackWord(word,baseWord,31,31);
 
-         localIndex++;
+         localIndex++; fWordsPerTRM++;
          localBuffer[localIndex]=baseWord;
          psArray[localIndex]=dummyPS;
 
-         nWordsPerTRM++;
          baseWord=0;
 
        } // if ( fFakeOrphaneProduction && percentFilledCells<0.12 && gRandom->Rndm()<(0.12-percentFilledCells) )
@@ -1254,11 +1370,10 @@ void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
          word = 1; // TRM TDC digit ID
          AliBitPacking::PackWord(word,baseWord,31,31);
 
-         localIndex++;
+         localIndex++; fWordsPerTRM++;
          localBuffer[localIndex]=baseWord;
          psArray[localIndex]=dummyPS;
 
-         nWordsPerTRM++;
          baseWord=0;
 
        } // if ( fFakeOrphaneProduction && percentFilledCells<0.24 && gRandom->Rndm()<(0.24-percentFilledCells)  && outOut )
@@ -1307,11 +1422,10 @@ void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
        word = 1; // TRM TDC digit ID
        AliBitPacking::PackWord(word,baseWord,31,31);
 
-       localIndex++;
+       localIndex++; fWordsPerTRM++;
        localBuffer[localIndex]=baseWord;
        psArray[localIndex]=2;
 
-       nWordsPerTRM++;
        baseWord=0;
 
        word = timeOfFlight%2097152; // leading edge measurement
@@ -1357,11 +1471,10 @@ void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
        word = 1; // TRM TDC digit ID
        AliBitPacking::PackWord(word,baseWord,31,31);
 
-       localIndex++;
+       localIndex++; fWordsPerTRM++;
        localBuffer[localIndex]=baseWord;
        psArray[localIndex]=1;
 
-       nWordsPerTRM++;
        baseWord=0;
 
 
@@ -1414,11 +1527,10 @@ void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
          word = 1; // TRM TDC digit ID
          AliBitPacking::PackWord(word,baseWord,31,31);
 
-         localIndex++;
+         localIndex++; fWordsPerTRM++;
          localBuffer[localIndex]=baseWord;
          psArray[localIndex]=dummyPS;
 
-         nWordsPerTRM++;
          baseWord=0;
 
        } // if ( fFakeOrphaneProduction && percentFilledCells<0.24 && gRandom->Rndm()<(0.24-percentFilledCells) && !outOut )
@@ -1433,7 +1545,7 @@ void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
 
     } // end loop on TDC channel number
 
-    //AliInfo(Form(" TDC number %2i:  numberOfMeasuresPerChannel = %2i  ---  maxMeasuresPerChannelInTDC = %2i ", nTDC, numberOfMeasuresPerChannel, maxMeasuresPerChannelInTDC));
+    //AliDebug(3,Form(" TDC number %2i:  numberOfMeasuresPerChannel = %2i  ---  maxMeasuresPerChannelInTDC = %2i ", nTDC, numberOfMeasuresPerChannel, maxMeasuresPerChannelInTDC));
 
     if (localIndex==-1) continue;
 
@@ -1471,7 +1583,7 @@ void AliTOFDDLRawData::MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain,
       } // if (maxMeasuresPerChannelInTDC = 1)
       else if (maxMeasuresPerChannelInTDC>1) {
 
-       AliInfo(Form(" In the TOF DDL %2i, TRM %2i, TDC %2i, chain %1i, the maximum number of t.o.f. good measurements per channel is %2i",
+       AliDebug(3,Form(" In the TOF DDL %2i, TRM %2i, TDC %2i, chain %1i, the maximum number of t.o.f. good measurements per channel is %2i",
                     nDDL, nTRM, iChain, nTDC, iCH, maxMeasuresPerChannelInTDC));
       */
       for (jj=0; jj<=localIndex; jj++) {