]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOFRawStream.cxx
1. Reduced usage of the AliTPCReconstructor::GetRecoParam
[u/mrichter/AliRoot.git] / TOF / AliTOFRawStream.cxx
index 7648a59b017b9467894986570efbcd24d98dbcdd..8b92fadb92b44c6682323b118909d9e979218ac6 100644 (file)
@@ -89,6 +89,8 @@ Revision 0.01  2005/07/22 A. De Caro
 ////////////////////////////////////////////////////////////////////////
 
 
+#include "Riostream.h"
+
 #include "TClonesArray.h"
 
 #include "AliDAQ.h"
@@ -99,11 +101,36 @@ Revision 0.01  2005/07/22 A. De Caro
 #include "AliTOFrawData.h"
 #include "AliTOFRawMap.h"
 #include "AliTOFRawStream.h"
+//#include "AliTOFCableLengthMap.h"
 
 #include "AliTOFHitData.h"
 
+#include "AliRawEventHeaderBase.h"
+
 ClassImp(AliTOFRawStream)
 
+const Int_t AliTOFRawStream::fgkddlBCshift[72] = 
+{
+  2, 2, -1, -1,
+  2, 3,  0,  0,
+  2, 2,  0,  0,
+  2, 2,  0,  0,
+  2, 2,  0,  0,
+  2, 2,  0,  0,
+  2, 2,  0,  0,
+  2, 2,  0,  0,
+  2, 2,  0,  0,
+  2, 2,  0,  0,
+  2, 2, -1, -1,
+  2, 2, -1, -1,
+  2, 2, -2, -2,
+  2, 2, -2, -2,
+  2, 2, -2, -2,
+  2, 2, -1, -1,
+  2, 2, -1, -1,
+  2, 2, -1, -1
+};
+
 
 //_____________________________________________________________________________
 AliTOFRawStream::AliTOFRawStream(AliRawReader* rawReader):
@@ -135,7 +162,13 @@ AliTOFRawStream::AliTOFRawStream(AliRawReader* rawReader):
   fInsideTRM(kFALSE),
   fInsideLTM(kFALSE),
   fInsideTRMchain0(kFALSE),
-  fInsideTRMchain1(kFALSE)
+  fInsideTRMchain1(kFALSE),
+  fLocalEventCounterDRM(-1),
+  fLocalEventCounterLTM(-1),
+  fLocalEventCounterTRM(0x0),
+  fLocalEventCounterChain(0x0),
+  fCableLengthMap(0x0),
+  fEventID(0)
 {
   //
   // create an object to read TOF raw digits
@@ -151,6 +184,20 @@ AliTOFRawStream::AliTOFRawStream(AliRawReader* rawReader):
 
   fRawReader->Reset();
   fRawReader->Select("TOF");
+
+  fLocalEventCounterTRM = new Int_t[13];//adc
+  fLocalEventCounterChain = new Int_t*[13];//adc
+  for (Int_t j=0;j<13;j++){//adc
+    fLocalEventCounterTRM[j] = -1;//adc
+    fLocalEventCounterChain[j] = new Int_t[2];//adc
+    for (Int_t k=0;k<2;k++){//adc
+      fLocalEventCounterChain[j][k] = -1;//adc
+    }//adc
+  }//adc
+
+  fCableLengthMap = new AliTOFCableLengthMap();
+
+  fEventID = fRawReader->GetBCID(); //bunch crossing
 }
 
 //_____________________________________________________________________________
@@ -183,7 +230,13 @@ AliTOFRawStream::AliTOFRawStream():
   fInsideTRM(kFALSE),
   fInsideLTM(kFALSE),
   fInsideTRMchain0(kFALSE),
-  fInsideTRMchain1(kFALSE)
+  fInsideTRMchain1(kFALSE),
+  fLocalEventCounterDRM(-1),
+  fLocalEventCounterLTM(-1),
+  fLocalEventCounterTRM(0x0),
+  fLocalEventCounterChain(0x0),
+  fCableLengthMap(0x0),
+  fEventID(0)
 {
   //
   // default ctr
@@ -195,6 +248,19 @@ AliTOFRawStream::AliTOFRawStream():
 
   fTOFrawData = new TClonesArray("AliTOFrawData",1000);
   fTOFrawData->SetOwner();
+
+  fLocalEventCounterTRM = new Int_t[13];//adc
+  fLocalEventCounterChain = new Int_t*[13];//adc
+  for (Int_t j=0;j<13;j++){//adc
+    fLocalEventCounterTRM[j] = -1;//adc
+    fLocalEventCounterChain[j] = new Int_t[2];//adc
+    for (Int_t k=0;k<2;k++){//adc
+      fLocalEventCounterChain[j][k] = -1;//adc
+    }//adc
+  }//adc
+
+  fCableLengthMap = new AliTOFCableLengthMap();
+
 }
 
 //_____________________________________________________________________________
@@ -228,7 +294,13 @@ AliTOFRawStream::AliTOFRawStream(const AliTOFRawStream& stream) :
   fInsideTRM(kFALSE),
   fInsideLTM(kFALSE),
   fInsideTRMchain0(kFALSE),
-  fInsideTRMchain1(kFALSE)
+  fInsideTRMchain1(kFALSE),
+  fLocalEventCounterDRM(-1),
+  fLocalEventCounterLTM(-1),
+  fLocalEventCounterTRM(0x0),
+  fLocalEventCounterChain(0x0),
+  fCableLengthMap(0x0),
+  fEventID(0)
 {
   //
   // copy constructor
@@ -275,7 +347,20 @@ AliTOFRawStream::AliTOFRawStream(const AliTOFRawStream& stream) :
   }
 
   fTOFrawData = new TClonesArray(*stream.fTOFrawData);
-  
+
+  fLocalEventCounterDRM = stream.fLocalEventCounterDRM;//adc
+  fLocalEventCounterLTM = stream.fLocalEventCounterLTM;//adc
+  for (Int_t j=0;j<13;j++){//adc
+    fLocalEventCounterTRM[j] = stream.fLocalEventCounterTRM[j];//adc
+    for (Int_t k=0;k<2;k++){//adc
+      fLocalEventCounterChain[j][k] = stream.fLocalEventCounterChain[j][k];//adc
+    }//adc
+  }//adc
+
+  fCableLengthMap = stream.fCableLengthMap;
+
+  fEventID = stream.fEventID;
+
 }
 
 //_____________________________________________________________________________
@@ -325,7 +410,20 @@ AliTOFRawStream& AliTOFRawStream::operator = (const AliTOFRawStream& stream)
   }
   
   fTOFrawData = stream.fTOFrawData;
-  
+
+  fLocalEventCounterDRM = stream.fLocalEventCounterDRM;//adc
+  fLocalEventCounterLTM = stream.fLocalEventCounterLTM;//adc
+  for (Int_t j=0;j<13;j++){//adc
+    fLocalEventCounterTRM[j] = stream.fLocalEventCounterTRM[j];//adc
+    for (Int_t k=0;k<2;k++){//adc
+      fLocalEventCounterChain[j][k] = stream.fLocalEventCounterChain[j][k];//adc
+    }//adc
+  }//adc
+
+  fCableLengthMap = stream.fCableLengthMap;
+
+  fEventID = stream.fEventID;
+
   return *this;
 
 }
@@ -346,6 +444,13 @@ AliTOFRawStream::~AliTOFRawStream()
 
   fTOFrawData->Clear();
   delete fTOFrawData;
+
+  delete [] fLocalEventCounterTRM;
+  for (Int_t ii=0; ii<2; ii++) 
+    delete [] fLocalEventCounterChain[ii];
+
+  delete fCableLengthMap;
+
 }
 
 
@@ -369,6 +474,14 @@ void AliTOFRawStream::LoadRawData(Int_t indexDDL)
 
   Int_t slot[4] = {-1, -1, -1, -1};
 
+  fLocalEventCounterDRM = -1;
+  fLocalEventCounterLTM = -1;
+  for (Int_t ii=0; ii<13; ii++)
+    fLocalEventCounterTRM[ii] = -1;
+  for (Int_t ii=0; ii<13; ii++)
+    for (Int_t jj=0; jj<2; jj++)
+      fLocalEventCounterChain[ii][jj] = -1;
+
   fRawReader->Reset();
   fRawReader->Select("TOF", indexDDL, indexDDL);
     
@@ -380,7 +493,7 @@ void AliTOFRawStream::LoadRawData(Int_t indexDDL)
 
     signal = (fSector!=-1 && fPlate!=-1 && fStrip!=-1 && fPadZ!=-1 && fPadX!=-1);
     if (signal) {
-      AliDebug(2,Form("  %2i  %1i  %2i  %1i  %2i  \n", fSector, fPlate, fStrip, fPadZ, fPadX));
+      AliDebug(2,Form("  %2i  %1i  %2i  %1i  %2i", fSector, fPlate, fStrip, fPadZ, fPadX));
 
       slot[0] = fTRM;
       slot[1] = fTRMchain;
@@ -436,6 +549,8 @@ Bool_t AliTOFRawStream::Next()
 
   UInt_t data;
 
+  Int_t dummy = 0;
+
   if (!fRawReader->ReadNextInt(data)) return kFALSE;
 
   if (fSector!=-1 && fPlate!=-1 && fStrip!=-1 && fPadZ!=-1 && fPadX!=-1) {
@@ -504,7 +619,6 @@ Bool_t AliTOFRawStream::Next()
 
   case GLOBAL_TRAILER_TYPE: // global trailer
     fSlotID = GetField(data,HEADER_SLOT_ID_MASK,HEADER_SLOT_ID_POSITION);
-    
 
     switch (fSlotID) { // switch global trailer slot ID
 
@@ -512,6 +626,9 @@ Bool_t AliTOFRawStream::Next()
       if (!fInsideDRM) { // unexpected DRM global trailers -> exit
        break;
       }
+      dummy = 0x0000fff0;
+      //AliInfo(Form("  DRM local event counter = %i", GetField(data,dummy,4)));
+      fLocalEventCounterDRM = GetField(data,dummy,4);//adc
       fInsideDRM = kFALSE; // DRM global trailer accepted
       fInsideTRM = kFALSE;
       fInsideLTM = kFALSE;
@@ -540,12 +657,18 @@ Bool_t AliTOFRawStream::Next()
       if (!fInsideLTM) { // unexpected LTM global trailer -> exit
        break;
       }
+      dummy = 0x0fff0000;
+      //AliInfo(Form("  LTM local event counter = %i", GetField(data,dummy,16)));
+      fLocalEventCounterLTM = GetField(data,dummy,16);//adc
       fInsideLTM = kFALSE; // LTM global trailer accepted
       break;
     case 15: //TRM global trailer
       if (!fInsideTRM) { // unexpected TRM global trailers -> exit
        break;
       }
+      dummy = 0x0fff0000;
+      //AliInfo(Form("  TRM local event counter = %i", GetField(data,dummy,16)));
+      fLocalEventCounterTRM[fTRM] = GetField(data,dummy,16);//adc
       fInsideTRM = kFALSE; // TRM global trailer accepted
       break;
     default: // unexpected global trailer slot ID
@@ -582,6 +705,9 @@ Bool_t AliTOFRawStream::Next()
        if (!fInsideTRMchain0) { // unexpected TRM chain0 trailer
          break;
        }
+        dummy = 0x0fff0000;
+        //AliInfo(Form("  chain local event counter = %i", GetField(data,dummy,16)));
+        fLocalEventCounterChain[fTRM][fTRMchain] = GetField(data,dummy,16);//adc
        fInsideTRMchain0 = kFALSE;
        fTRMchain = -1;
        break;
@@ -596,6 +722,9 @@ Bool_t AliTOFRawStream::Next()
        if (!fInsideTRMchain1) { // unexpected TRM chain1 trailer
          break;
        }
+        dummy = 0x0fff0000;
+        //AliInfo(Form("  chain local event counter = %i", GetField(data,dummy,16)));
+        fLocalEventCounterChain[fTRM][fTRMchain] = GetField(data,dummy,16);//adc
        fInsideTRMchain1 = kFALSE;
        fTRMchain = -1;
        break;
@@ -626,24 +755,52 @@ Bool_t AliTOFRawStream::Next()
 
       case 0: // packing ok, digit time and TOT
        fToT  = GetField(data,TRM_TOT_WIDTH_MASK, TRM_TOT_WIDTH_POSITION);
-       fTime = GetField(data,TRM_DIGIT_TIME_MASK,TRM_DIGIT_TIME_POSITION);
+       fTime = GetField(data,TRM_DIGIT_TIME_MASK,TRM_DIGIT_TIME_POSITION)
+         -
+         fCableLengthMap->GetCableTimeShiftBin(fDDL, fTRM, fTRMchain, fTDC)
+         /*+
+         (Int_t)(fgkddlBCshift[fDDL]*25.*1000./AliTOFGeometry::TdcBinWidth())
+         +
+         (Int_t)((fLocalEventCounterChain[fTRM][fTRMchain]-fEventID)*25.*1000./AliTOFGeometry::TdcBinWidth())*/
+         ;
        break;
 
       case 1: // leading edge digit, long digit time, no TOT
        //fToT  = -1;
        //fTime  = -1;
-       fLeadingEdge = GetField(data,TRM_LONG_DIGIT_TIME_MASK,TRM_LONG_DIGIT_TIME_POSITION);
+       fLeadingEdge = GetField(data,TRM_LONG_DIGIT_TIME_MASK,TRM_LONG_DIGIT_TIME_POSITION)
+         -
+         fCableLengthMap->GetCableTimeShiftBin(fDDL, fTRM, fTRMchain, fTDC)
+         /*+
+         (Int_t)(fgkddlBCshift[fDDL]*25.*1000./AliTOFGeometry::TdcBinWidth())
+         +
+         (Int_t)((fLocalEventCounterChain[fTRM][fTRMchain]-fEventID)*25.*1000./AliTOFGeometry::TdcBinWidth())*/
+         ;
        break;
 
       case 2: // trailing edge digit, long digit time, no TOT
        //fToT  = -1;
        //fTime  = -1;
-       fTrailingEdge = GetField(data,TRM_LONG_DIGIT_TIME_MASK,TRM_LONG_DIGIT_TIME_POSITION);
+       fTrailingEdge = GetField(data,TRM_LONG_DIGIT_TIME_MASK,TRM_LONG_DIGIT_TIME_POSITION)
+         -
+         fCableLengthMap->GetCableTimeShiftBin(fDDL, fTRM, fTRMchain, fTDC)
+         /*+
+         (Int_t)(fgkddlBCshift[fDDL]*25.*1000./AliTOFGeometry::TdcBinWidth())
+         +
+         (Int_t)((fLocalEventCounterChain[fTRM][fTRMchain]-fEventID)*25.*1000./AliTOFGeometry::TdcBinWidth())*/
+         ;
        break;
 
       case 3: // TOT overflow
        fToT  = GetField(data,TRM_TOT_WIDTH_MASK, TRM_TOT_WIDTH_POSITION);
-       fTime = GetField(data,TRM_DIGIT_TIME_MASK,TRM_DIGIT_TIME_POSITION);
+       fTime = GetField(data,TRM_DIGIT_TIME_MASK,TRM_DIGIT_TIME_POSITION)
+         -
+         fCableLengthMap->GetCableTimeShiftBin(fDDL, fTRM, fTRMchain, fTDC)
+         /*+
+         (Int_t)(fgkddlBCshift[fDDL]*25.*1000./AliTOFGeometry::TdcBinWidth())
+         +
+         (Int_t)((fLocalEventCounterChain[fTRM][fTRMchain]-fEventID)*25.*1000./AliTOFGeometry::TdcBinWidth())*/
+         ;
        break;
 
       } // end switch PS bits inside TRM chains
@@ -747,6 +904,9 @@ void AliTOFRawStream::SetPadZ()
        iPadZ  = iPadAlongTheStrip%AliTOFGeometry::NpadZ();
     }
 
+  //iPadZ = Equip2VolNpad(GetDDLnumberPerSector(fDDL), fTRMchain, fTDC, fTDCchannel)%AliTOFGeometry::NpadZ();
+  //iPadZ = Equip2VolNpadZ(GetDDLnumberPerSector(fDDL), fTRMchain, fTDC, fTDCchannel);
+
   fPadZ = iPadZ;
 
 }
@@ -774,6 +934,9 @@ void AliTOFRawStream::SetPadX()
        iPadX  = (Int_t)(iPadAlongTheStrip/(Float_t(AliTOFGeometry::NpadZ())));
     }
 
+  //iPadX = (Int_t)(Equip2VolNpad(GetDDLnumberPerSector(fDDL), fTRMchain, fTDC, fTDCchannel)/(Float_t(AliTOFGeometry::NpadZ())));
+  //iPadX = Equip2VolNpadX(GetDDLnumberPerSector(fDDL), fTRMchain, fTDC, fTDCchannel);
+
   fPadX = iPadX;
 
 }
@@ -789,7 +952,7 @@ Int_t AliTOFRawStream::GetField(UInt_t word, Int_t fieldMask, Int_t fieldPositio
 }
 
 //----------------------------------------------------------------------------
-Int_t AliTOFRawStream::Equip2VolNplate(Int_t iDDL, Int_t nTRM, Int_t nTDC) const 
+Int_t AliTOFRawStream::Equip2VolNplate(Int_t iDDL, Int_t nTRM, Int_t nTDC)
 {
   //
   // Returns the TOF plate number [0;4]
@@ -875,7 +1038,7 @@ Int_t AliTOFRawStream::Equip2VolNplate(Int_t iDDL, Int_t nTRM, Int_t nTDC) const
 }
 
 //----------------------------------------------------------------------------
-Int_t AliTOFRawStream::Equip2VolNstrip(Int_t iDDL, Int_t nTRM, Int_t nTDC) const 
+Int_t AliTOFRawStream::Equip2VolNstrip(Int_t iDDL, Int_t nTRM, Int_t nTDC)
 {
   //
   // Returns the TOF strip number per module:
@@ -971,7 +1134,7 @@ Int_t AliTOFRawStream::Equip2VolNstrip(Int_t iDDL, Int_t nTRM, Int_t nTDC) const
 
 //----------------------------------------------------------------------------
 Int_t AliTOFRawStream::Equip2VolNpad(Int_t iDDL, Int_t iChain, Int_t nTDC,
-                               Int_t iCH) const 
+                                    Int_t iCH)
 {
   //
   // Returns the TOF pad number per strip [0;95]
@@ -984,10 +1147,17 @@ Int_t AliTOFRawStream::Equip2VolNpad(Int_t iDDL, Int_t iChain, Int_t nTDC,
 
   Int_t iPadAlongTheStrip = -1;
 
-  Int_t iTDClocal = nTDC%3 + (1-iChain)*3;
+  // wrong
+  //Int_t iTDClocal = nTDC%3 + (1-iChain)*3;
+  //if (iDDL==0 || iDDL==3) iTDClocal = 5 - iTDClocal;
+  //else if (iDDL==1 || iDDL==2) iTDClocal = 6 + (5 - iTDClocal);
 
-  if (iDDL==0 || iDDL==3) iTDClocal = 5 - iTDClocal;
-  else if (iDDL==1 || iDDL==2) iTDClocal = 6 + (5 - iTDClocal);
+  // right
+  Int_t iTDClocal = -1;
+  Int_t iTDClocal03 = nTDC%3 + (1-iChain)*3;
+  Int_t iTDClocal12 = 2-nTDC%3 + iChain*3;
+  if (iDDL==0 || iDDL==3) iTDClocal = 5 - iTDClocal03;
+  else if (iDDL==1 || iDDL==2) iTDClocal = 6 + (5 - iTDClocal12);
 
   Int_t iCHlocal = iCH;
   if (iDDL==0 || iDDL==3) iCHlocal = 7 - iCH;
@@ -996,13 +1166,52 @@ Int_t AliTOFRawStream::Equip2VolNpad(Int_t iDDL, Int_t iChain, Int_t nTDC,
 
   if (((iDDL==1 || iDDL==2) && iPadAlongTheStrip< AliTOFGeometry::NpadX()) ||
       ((iDDL==0 || iDDL==3) && iPadAlongTheStrip>=AliTOFGeometry::NpadX())) {
-    fRawReader->AddMajorErrorLog(kPadXError);
-    AliWarning("Problems with the padX number!");
+    std::cerr << "Problems with the padX number!" << endl;
+    //AliWarning("Problems with the padX number!");
   }
   return iPadAlongTheStrip;
 
 }
 
+//----------------------------------------------------------------------------
+Int_t AliTOFRawStream::Equip2VolNpadX(Int_t iDDL, Int_t iChain, Int_t nTDC,
+                                     Int_t iCH)
+{
+  //
+  // Returns the TOF padX number [0;47]
+  // corresponding to the TOF equipment ID numbers:
+  //                          iDDL -> DDL number per sector [0;3]
+  //                        iChain -> TRM chain number [0;1]
+  //                          nTDC -> TDC number [0;14]
+  //                           iCH -> TDC channel number [0;7]
+  //
+
+  Int_t iPadX = (Int_t)(AliTOFRawStream::Equip2VolNpad(iDDL, iChain, nTDC, iCH)/
+                       (Float_t(AliTOFGeometry::NpadZ())));
+
+  return iPadX;
+
+}
+
+//----------------------------------------------------------------------------
+Int_t AliTOFRawStream::Equip2VolNpadZ(Int_t iDDL, Int_t iChain, Int_t nTDC,
+                                     Int_t iCH)
+{
+  //
+  // Returns the TOF padZ number [0;1]
+  // corresponding to the TOF equipment ID numbers:
+  //                          iDDL -> DDL number per sector [0;3]
+  //                        iChain -> TRM chain number [0;1]
+  //                          nTDC -> TDC number [0;14]
+  //                           iCH -> TDC channel number [0;7]
+  //
+
+  Int_t iPadZ  = AliTOFRawStream::Equip2VolNpad(iDDL, iChain, nTDC, iCH)%AliTOFGeometry::NpadZ();
+
+  return iPadZ;
+
+}
+
 //----------------------------------------------------------------------------
 Int_t AliTOFRawStream::GetSectorNumber(Int_t nDDL) const
 {
@@ -1062,25 +1271,34 @@ void AliTOFRawStream::EquipmentId2VolumeId(Int_t nDDL, Int_t nTRM, Int_t iChain,
 
   Int_t iPlate = Equip2VolNplate(iDDL, nTRM, nTDC);
   if (iPlate==-1) {
-    fRawReader->AddMajorErrorLog(kPlateError,"plate = -1");
+    if (fRawReader)
+      fRawReader->AddMajorErrorLog(kPlateError,"plate = -1");
     AliWarning("Problems with the plate number!");
   }
 
   Int_t iStrip = Equip2VolNstrip(iDDL, nTRM, nTDC);
   if (iStrip==-1) {
-    fRawReader->AddMajorErrorLog(kStripError,"strip = -1");
+    if (fRawReader)
+      fRawReader->AddMajorErrorLog(kStripError,"strip = -1");
     AliWarning("Problems with the strip number!");
   }
 
   Int_t iPadAlongTheStrip  = Equip2VolNpad(iDDL, iChain, nTDC, iCH);
   if (iPadAlongTheStrip==-1){
-    fRawReader->AddMajorErrorLog(kPadAlongStripError,"pad = -1");
+    if (fRawReader)
+      fRawReader->AddMajorErrorLog(kPadAlongStripError,"pad = -1");
     AliWarning("Problems with the pad number along the strip!");
   }
-
+  
   Int_t iPadX  = (Int_t)(iPadAlongTheStrip/(Float_t(AliTOFGeometry::NpadZ())));
   Int_t iPadZ  = iPadAlongTheStrip%AliTOFGeometry::NpadZ();
 
+  //Int_t iPadX  = (Int_t)(Equip2VolNpad(iDDL, iChain, nTDC, iCH)/(Float_t(AliTOFGeometry::NpadZ())));
+  //Int_t iPadZ  = Equip2VolNpad(iDDL, iChain, nTDC, iCH)%AliTOFGeometry::NpadZ();
+
+  //Int_t iPadX  = Equip2VolNpadX(iDDL, iChain, nTDC, iCH);
+  //Int_t iPadZ  = Equip2VolNpadZ(iDDL, iChain, nTDC, iCH);
+
   volume[0] = iSector;
   volume[1] = iPlate;
   volume[2] = iStrip;
@@ -1239,7 +1457,9 @@ AliTOFRawStream::LoadRawDataBuffers(Int_t indexDDL, Int_t verbose)
     Int_t   hitTimeBin = hitData->GetTimeBin();
     Int_t   hitTOTBin = hitData->GetTOTBin();
     
-    Int_t hitLeading = hitData->GetTimeBin();//-1; // adc
+    Int_t hitLeading = hitData->GetTimeBin()
+      -
+      fCableLengthMap->GetCableTimeShiftBin(indexDDL, hitSlotID, hitChain, hitTDC);//-1; // adc
     Int_t hitTrailing = -1;
     Int_t hitError = -1;