Remove old raw reader class
authorcblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 10 Feb 2011 17:17:21 +0000 (17:17 +0000)
committercblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 10 Feb 2011 17:17:21 +0000 (17:17 +0000)
TRD/AliTRDrawStreamOld.cxx [deleted file]
TRD/AliTRDrawStreamOld.h [deleted file]
TRD/CMakelibTRDbase.pkg
TRD/CMakelibTRDrec.pkg
TRD/TRDbaseLinkDef.h
TRD/TRDrecLinkDef.h

diff --git a/TRD/AliTRDrawStreamOld.cxx b/TRD/AliTRDrawStreamOld.cxx
deleted file mode 100644 (file)
index add4c60..0000000
+++ /dev/null
@@ -1,2087 +0,0 @@
-/**************************************************************************\r
-* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
-*                                                                        *\r
-* Author: The ALICE Off-line Project.                                    *\r
-* Contributors are mentioned in the code where appropriate.              *\r
-*                                                                        *\r
-* Permission to use, copy, modify and distribute this software and its   *\r
-* documentation strictly for non-commercial purposes is hereby granted   *\r
-* without fee, provided that the above copyright notice appears in all   *\r
-* copies and that both the copyright notice and this permission notice   *\r
-* appear in the supporting documentation. The authors make no claims     *\r
-* about the suitability of this software for any purpose. It is          *\r
-* provided "as is" without express or implied warranty.                  *\r
-**************************************************************************/\r
-\r
-/* $Id: AliTRDrawStreamOld.cxx 27797 2008-08-05 14:37:22Z cblume $ */\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-//                                                                           //\r
-// This class provides access to TRD digits in raw data.                     //\r
-//                                                                           //\r
-// It loops over all TRD digits in the raw data given by the AliRawReader.   //\r
-// The Next method goes to the next digit. If there are no digits left       //\r
-// it returns kFALSE.                                                        //\r
-// Several getters provide information about the current digit.              //\r
-//                                                                           //\r
-// Author: M. Ploskon (ploskon@ikf.uni-frankfurt.de)                         //\r
-// Author: MinJung Kweon (minjung@physi.uni-heidelberg.de)                   //\r
-//                                                                           //\r
-///////////////////////////////////////////////////////////////////////////////\r
-\r
-#include "TString.h"\r
-#include "TFile.h"\r
-//#include "TTreeStream.h"\r
-\r
-#include "AliTRDrawStreamOld.h"\r
-#include "AliTRDgeometry.h"\r
-#include "AliTRDfeeParam.h"\r
-#include "AliTRDdigitsManager.h"\r
-#include "AliTRDarrayDictionary.h"\r
-#include "AliTRDarrayADC.h"\r
-#include "AliTRDSignalIndex.h"\r
-#include "AliTRDdigitsParam.h"\r
-\r
-#include "AliLog.h"\r
-#include "AliRawReader.h"\r
-\r
-#define END_OF_TRACKLET_MARKEROLD 0xaaaaaaaa\r
-#define END_OF_TRACKLET_MARKERNEW 0x10001000\r
-#define ENDOFRAWDATAMARKER 0x00000000\r
-#define WORD_SIZE sizeof(UInt_t)             // size of a word in bytes\r
-#define EXTRA_LEAD_WORDS 24\r
-#define CDH_WORDS 8\r
-\r
-#define IS_BIT_SET(w,b) ( ((w) >> (b)) & 0x1 )     // 1 if bit b is set in word w\r
-#define GET_VALUE_AT(w,m,s) (( (w) >> (s)) & (m) ) // get value of word w rshifted by s and mask with m\r
-\r
-// SM index word masks:\r
-#define SM_HEADER_SIZE(w) GET_VALUE_AT(w,0xffff,16) \r
-#define TRACKLETS_ENABLED(w) IS_BIT_SET(w,5)\r
-#define STACK_MASK(w) ((w) & 0x1f)\r
-\r
-// Stack word masks\r
-#define STACK_HEADER_SIZE(w) GET_VALUE_AT(w,0xffff,16)\r
-#define STACK_LINK_WORD(w) ((w) & 0xfff)\r
-#define LINK0_DATA_TYPE_FLAG(w) (GET_VALUE_AT(w,0x3,4) == (0x0) ? 0 : 1)  // 0 if physics data\r
-#define LINK1_DATA_TYPE_FLAG(w) (GET_VALUE_AT(w,0x3,20) == (0x0) ? 0 : 1) // 0 if physics data\r
-#define LINK0_MONITOR_FLAG(w) (GET_VALUE_AT(w,0xf,0) == (0x0) ? 0 : 1)    // 0 if OK\r
-#define LINK1_MONITOR_FLAG(w) (GET_VALUE_AT(w,0xf,16) == (0x0) ? 0 : 1)   // 0 if OK\r
-\r
-// HC word masks\r
-#define HC_HEADER_MASK_ERR(w) ( ((w) & (0x3)) == (0x1) ? 0 : 1) // 0 if OK\r
-\r
-// HC word 0\r
-#define HC_SPECIAL_RAW_VERSION(w) IS_BIT_SET(w,31)\r
-#define HC_MAJOR_RAW_VERSION(w) GET_VALUE_AT(w,0x7f,24)\r
-#define HC_MAJOR_RAW_VERSION_OPT(w) GET_VALUE_AT(w,0x7,24)\r
-#define HC_MINOR_RAW_VERSION(w) GET_VALUE_AT(w,0x7f,17)\r
-#define HC_EXTRA_WORDS(w) GET_VALUE_AT(w,0x7,14)\r
-#define HC_DCS_BOARD(w) GET_VALUE_AT(w,0xfff<<20,20)\r
-#define HC_SM_NUMBER(w) GET_VALUE_AT(w,0x1f,9)\r
-#define HC_LAYER_NUMBER(w) GET_VALUE_AT(w,0x7,6)\r
-#define HC_STACK_NUMBER(w) GET_VALUE_AT(w,0x7,3)\r
-#define HC_SIDE_NUMBER(w) IS_BIT_SET(w,2)\r
-\r
-// HC word 1\r
-#define HC_NTIMEBINS(w) GET_VALUE_AT(w,0x3f,26)\r
-#define HC_BUNCH_CROSS_COUNTER(w) GET_VALUE_AT(w,0xffff,10)\r
-#define HC_PRETRIGGER_COUNTER(w) GET_VALUE_AT(w,0xf,6)\r
-#define HC_PRETRIGGER_PHASE(w) GET_VALUE_AT(w,0xf,2)\r
-\r
-// MCM word and ADC mask\r
-#define MCM_HEADER_MASK_ERR(w) ( ((w) & (0xf)) == (0xc) ? 0 : 1)  // 0 if OK\r
-#define MCM_ADCMASK_MASK_ERR(w) ( ((w) & (0xf)) == (0xc) ? 0 : 1) // 0 if OK\r
-#define MCM_MCM_NUMBER(w) GET_VALUE_AT(w,0x0f,24)\r
-#define MCM_ROB_NUMBER(w) GET_VALUE_AT(w,0x7,28)\r
-#define MCM_EVENT_COUNTER(w) GET_VALUE_AT(w,0x00fffff,4)\r
-#define MCM_ADCMASK_VAL(w) GET_VALUE_AT(w,0x1fffff,4)\r
-#define MCM_ADCMASK_NADC(w) GET_VALUE_AT(w,0x1f,25)\r
-\r
-#define MCM_DUMMY_ADCMASK_VAL 0x015fffffc  // updated \r
-#define ADCDATA_VAL1 0x2                   // updated \r
-#define ADCDATA_VAL2 0x3                   // updated \r
-\r
-#define ADC_WORD_MASK(w) ((w) & 0x3)\r
-\r
-//--------------------------------------------------------\r
-ClassImp(AliTRDrawStreamOld)\r
-\r
-Bool_t AliTRDrawStreamOld::fgExtraSkip = kFALSE;\r
-Bool_t AliTRDrawStreamOld::fgSkipCDH = kFALSE;\r
-Bool_t AliTRDrawStreamOld::fgCleanDataOnly = kFALSE;\r
-Bool_t AliTRDrawStreamOld::fgDebugFlag = kTRUE;\r
-Bool_t AliTRDrawStreamOld::fgEnableMemoryReset = kTRUE;\r
-Bool_t AliTRDrawStreamOld::fgStackNumberChecker = kTRUE;\r
-Bool_t AliTRDrawStreamOld::fgStackLinkNumberChecker = kFALSE;\r
-Bool_t AliTRDrawStreamOld::fgSkipData = kTRUE;\r
-Bool_t AliTRDrawStreamOld::fgEnableDecodeConfigData = kFALSE;\r
-Int_t AliTRDrawStreamOld::fgDumpHead = -1;\r
-Int_t AliTRDrawStreamOld::fgEmptySignals[] = \r
-  {\r
-    -1, -1, -1, -1, -1,  -1, -1, -1, -1, -1,  -1, -1, -1, -1, -1\r
-    -1, -1, -1, -1, -1,  -1, -1, -1, -1, -1,  -1, -1, -1, -1, -1\r
-  };\r
-Short_t AliTRDrawStreamOld::fgMCMordering[] =\r
-  {\r
-    12, 13, 14, 15, 8, 9, 10, 11, 4, 5, 6, 7, 0, 1, 2, 3 \r
-  };\r
-Short_t AliTRDrawStreamOld::fgROBordering[] =\r
-  {\r
-    0, 1, 2, 3\r
-  };\r
-Int_t  AliTRDrawStreamOld::fgLastHC = -1;\r
-Int_t  AliTRDrawStreamOld::fgLastROB = -1;\r
-Int_t  AliTRDrawStreamOld::fgLastIndex = -1;\r
-Int_t  AliTRDrawStreamOld::fgDumpingSM = -1;\r
-Int_t  AliTRDrawStreamOld::fgDumpingStack = -1;\r
-Int_t  AliTRDrawStreamOld::fgDumpingLayer = -1;\r
-Int_t  AliTRDrawStreamOld::fgDumpingROB = -1;\r
-Int_t  AliTRDrawStreamOld::fgDumpingMCM = -1;\r
-Bool_t  AliTRDrawStreamOld::fgDumpingEnable = kFALSE;\r
-\r
-\r
-AliTRDrawStreamOld::AliTRDrawStreamOld()\r
-  : TObject()\r
-  , fSM()\r
-  , fStack(0)\r
-  , fHC(0)\r
-  , fLastHC(0)\r
-  , fMCM(0)\r
-  , fADC(0)\r
-  , fpPos(0)\r
-  , fpBegin(0)\r
-  , fpEnd(0)\r
-  , fWordLength(0)\r
-  , fStackNumber(-1)\r
-  , fStackLinkNumber(-1)\r
-  , fhcMCMcounter(0)\r
-  , fmcmADCcounter(0)\r
-  , fLinkTrackletCounter(-1)\r
-  , fEndOfTrackletCount(-1)\r
-  , fNWordsCounter(-1)\r
-  , fMaskADCword(0)\r
-  , fTbinADC(0)\r
-  , fDecodedADCs(-1)\r
-  , fEventCounter(0)\r
-  , fLastEventCounter(0)\r
-  , fSharedPadsOn(kTRUE)\r
-  , fMaxADCgeom(0)\r
-  , fBufferRead(0)\r
-  , fGeometry(0)\r
-  , fRawReader(0)\r
-  , fTRDfeeParam(0)\r
-  , fCommonAdditive(0)\r
-  , fWarnError(kTRUE)\r
-{\r
-  //\r
-  // default constructor\r
-  //\r
-  if (Init() == kFALSE) {\r
-    AliWarning("Unable to Init.");    \r
-  }\r
-}\r
-\r
-//--------------------------------------------------------\r
-AliTRDrawStreamOld::AliTRDrawStreamOld(AliRawReader *rawReader)\r
-  : TObject()\r
-  , fSM()\r
-  , fStack(0)\r
-  , fHC(0)\r
-  , fLastHC(0)\r
-  , fMCM(0)\r
-  , fADC(0)\r
-  , fpPos(0)\r
-  , fpBegin(0)\r
-  , fpEnd(0)\r
-  , fWordLength(0)\r
-  , fStackNumber(-1)\r
-  , fStackLinkNumber(-1)\r
-  , fhcMCMcounter(0)\r
-  , fmcmADCcounter(0)\r
-  , fLinkTrackletCounter(-1)\r
-  , fEndOfTrackletCount(-1)\r
-  , fNWordsCounter(-1)\r
-  , fMaskADCword(0)\r
-  , fTbinADC(0)\r
-  , fDecodedADCs(-1)\r
-  , fEventCounter(0)\r
-  , fLastEventCounter(0)\r
-  , fSharedPadsOn(kTRUE)\r
-  , fMaxADCgeom(0)\r
-  , fBufferRead(0)\r
-  , fGeometry(0)\r
-  , fRawReader(rawReader)\r
-  , fTRDfeeParam(0)\r
-  , fCommonAdditive(0)\r
-  , fWarnError(kTRUE)\r
-{\r
-  //\r
-  // default constructor\r
-  //\r
-  if (fRawReader) {\r
-    if (Init() == kFALSE) {\r
-      AliWarning("Unable to Init. Try setting up the reader with SetReader or buffer with Init(void *, UInt_t )");    \r
-    }\r
-  }\r
-  else {\r
-    AliWarning("Unable to setup reader. Use SetReader(AliRawReader*).");\r
-  }\r
-}\r
-\r
-//------------------------------------------------------------\r
-\r
-AliTRDrawStreamOld::AliTRDrawStreamOld(const AliTRDrawStreamOld& /*st*/)\r
-  : TObject()\r
-  , fSM()\r
-  , fStack(0)\r
-  , fHC(0)\r
-  , fLastHC(0)\r
-  , fMCM(0)\r
-  , fADC(0)\r
-  , fpPos(0)\r
-  , fpBegin(0)\r
-  , fpEnd(0)\r
-  , fWordLength(0)\r
-  , fStackNumber(-1)\r
-  , fStackLinkNumber(-1)\r
-  , fhcMCMcounter(0)\r
-  , fmcmADCcounter(0)\r
-  , fLinkTrackletCounter(-1)\r
-  , fEndOfTrackletCount(-1)\r
-  , fNWordsCounter(-1)\r
-  , fMaskADCword(0)\r
-  , fTbinADC(0)\r
-  , fDecodedADCs(-1)\r
-  , fEventCounter(0)\r
-  , fLastEventCounter(0)\r
-  , fSharedPadsOn(kTRUE)\r
-  , fMaxADCgeom(0)\r
-  , fBufferRead(0)\r
-  , fGeometry(0)\r
-  , fRawReader(0)\r
-  , fTRDfeeParam(0)\r
-  , fCommonAdditive(0)\r
-  , fWarnError(kTRUE)\r
-{\r
-  //\r
-  // Copy constructor\r
-  // \r
-  AliError("Not implemeneted.");\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::SetRawVersion(Int_t fraw)\r
-{\r
-  //\r
-  // function provided for backward compatibility\r
-  //\r
-  AliWarning("Raw data version is read from raw data stream! No point of setting it in here.");\r
-  fraw = 0; // avoid warnings\r
-\r
-  return kFALSE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-AliTRDrawStreamOld::~AliTRDrawStreamOld()\r
-{\r
-  //\r
-  // destructor\r
-  //\r
-  delete fGeometry;\r
-}\r
-\r
-//------------------------------------------------------------\r
-AliTRDrawStreamOld & AliTRDrawStreamOld::operator=(const AliTRDrawStreamOld &)\r
-{\r
-  //\r
-  // we are not using this functionality\r
-  //\r
-  AliFatal("May not use.");\r
-\r
-  return *this;\r
-}\r
-\r
-//___________________________________________________________\r
-void AliTRDrawStreamOld::SwapOnEndian()\r
-{\r
-  //\r
-  // Check the endian and swap if needed\r
-  //\r
-  int itemp = 1;\r
-  char* ptemp = (char*) &itemp;\r
-  if (ptemp[0] != 1) {\r
-    if (fgDebugFlag) AliDebug(8, "Swapping.");\r
-\r
-    fpPos = fpBegin;\r
-    UInt_t iutmp = 0;\r
-    while (fpPos < fpEnd) {\r
-      fpPos += 1;\r
-      iutmp = (((*fpPos & 0x000000ffU) << 24) | ((*fpPos & 0x0000ff00U) <<  8) |\r
-             ((*fpPos & 0x00ff0000U) >>  8) | ((*fpPos & 0xff000000U) >> 24));\r
-      // here we override the value in the buffer!\r
-      *fpPos = iutmp;   \r
-    }\r
-    fpPos = fpBegin;\r
-  }\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::DumpWords(UInt_t *px, UInt_t iw, UInt_t marker)\r
-{\r
-  //\r
-  // dump given number of words for debugging\r
-  //\r
-  TString tsreturn = Form("\n[ Dump Sequence at 0x%p ] : ", px);\r
-  for (UInt_t i = 0; i < iw; i++) {\r
-     if ( iw != 0 && px + iw > fpEnd) return kFALSE;\r
-\r
-     if (i % 8 == 0) tsreturn += "\n                              ";\r
-     if (marker != 0 && marker == px[i]) tsreturn += Form(" *>0x%08x<* ", px[i]);\r
-     else tsreturn += Form("0x%08x ", px[i]);\r
-  }\r
-  tsreturn += "\n";\r
-\r
-  AliInfo(tsreturn.Data());\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::SkipWords(UInt_t iw)\r
-{\r
-  //\r
-  // Skip words corresponding to iw\r
-  //\r
-  if ( fpPos + iw < fpEnd ) {\r
-    fpPos += iw;\r
-    return kTRUE;\r
-  }\r
-  else {\r
-    if (fWarnError) AliWarning(Form("Skip %u words failed. %ld available", iw, fpEnd - fpPos - 1));\r
-    return kFALSE;\r
-  }\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::SetReader(AliRawReader * reader)\r
-{\r
-  //\r
-  // Set reader pointer\r
-  //\r
-  if (reader != 0) {\r
-    fRawReader = reader;\r
-    if (fRawReader) {\r
-      return Init();\r
-    }\r
-    else {\r
-      AliWarning("Unable to setup reader.");\r
-      return kFALSE;\r
-    }\r
-  }\r
-  else {\r
-    AliWarning("AliRawReader argument is 0.");\r
-    fRawReader = 0;\r
-  }\r
-\r
-  return kFALSE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Int_t AliTRDrawStreamOld::NextBuffer()\r
-{\r
-  //\r
-  // return -1 if no more buffers available\r
-  // return  0 DecodeSM failed (clean data required for example) but still maybe more data to come\r
-  // return  1 DecodeSM OK\r
-  // \r
-  if (fRawReader != 0) {\r
-    UChar_t *buffer = 0;\r
-    UInt_t length = 0;\r
-    Bool_t kBufferSet = fRawReader->ReadNextData(buffer);\r
-    if (kBufferSet == kTRUE) {\r
-      if (fgDebugFlag)  AliDebug(9, "Buffer is set.");\r
-      length = fRawReader->GetDataSize();\r
-      if (fgExtraSkip == kTRUE) {\r
-        buffer += EXTRA_LEAD_WORDS * WORD_SIZE;\r
-        length -= EXTRA_LEAD_WORDS * WORD_SIZE;\r
-      }\r
-\r
-      if (fgSkipCDH == kTRUE) {\r
-        buffer += CDH_WORDS * WORD_SIZE;\r
-        length -= CDH_WORDS * WORD_SIZE;\r
-      }\r
-\r
-      if (length > 0) {\r
-        if (fgDebugFlag)  AliDebug(9, Form("Buffer length : %d", length));\r
-        if (fgEnableMemoryReset) ResetMemory(); //[mj]\r
-        if (DecodeSM((void*)buffer, length) == kTRUE)\r
-          return 1;\r
-        else\r
-          return 0;\r
-      }\r
-    }\r
-    else {\r
-      return -1;\r
-    }\r
-  }\r
-\r
-  return -1;\r
-}\r
-\r
-//------------------------------------------------------------\r
-void AliTRDrawStreamOld::ResetCounters()\r
-{\r
-  //\r
-  // reset some global counters\r
-  //\r
-  fBufferRead = kFALSE; // read buffer if it is false (important to read buffer)\r
-\r
-  fStackNumber = 0;\r
-  fStackLinkNumber = 0;\r
-  fDecodedADCs = 0;\r
-\r
-  fSM.fActiveStacks = 0;\r
-  fSM.fNexpectedHalfChambers = 0;\r
-\r
-  fLinkTrackletCounter = 0;\r
-  fLastEventCounter = 0;\r
-  fEventCounter = 0;\r
-}\r
-\r
-//------------------------------------------------------------\r
-void AliTRDrawStreamOld::ResetIterators()\r
-{\r
-  //\r
-  // reset data which should be reset every sm\r
-  //\r
-  fStackNumber = 0;     // reset for Next() function \r
-  fStackLinkNumber = 0; // reset for Next() function\r
-  fhcMCMcounter = 0;  \r
-  fmcmADCcounter = 0;\r
-}\r
-\r
-//------------------------------------------------------------\r
-void AliTRDrawStreamOld::ResetPerSM()\r
-{\r
-  //\r
-  // reset every SM\r
-  //\r
-  fSM.fHeaderSize = 0;\r
-  fSM.fTrackletEnable = kFALSE;\r
-  fSM.fCorrupted = 0;\r
-  fSM.fNexpectedHalfChambers = 0;\r
-  fSM.fNexpectedHalfChambers = 0;\r
-  fSM.fClean = kTRUE;\r
-  fSM.fPos = NULL;\r
-  for (Int_t i=0; i<5; i++){\r
-    fSM.fStackActive[i] = kFALSE;\r
-  }\r
-}     \r
-\r
-//------------------------------------------------------------\r
-void AliTRDrawStreamOld::ResetPerStack()\r
-{\r
-  //\r
-  // reset every Stack\r
-  //\r
-  fStack->fHeaderSize = 0;\r
-  fStack->fActiveLinks = 0;\r
-  fStack->fPos = NULL;\r
-  for (Int_t i=0; i<12; i++){\r
-    fStack->fLinksActive[i] = kFALSE;\r
-    fStack->fLinksDataType[i] = 0;\r
-    fStack->fLinksMonitor[i] = 0;\r
-    fStack->fLinkMonitorError[i] = 0;\r
-  }\r
-}\r
-\r
-//------------------------------------------------------------\r
-void AliTRDrawStreamOld::ResetPerHC()\r
-{\r
-  //\r
-  // reset every HC\r
-  //\r
-  fEventCounter = 0;\r
-  fHC->fTrackletError = 0;\r
-  fHC->fNTracklets = 0;\r
-  fHC->fSpecialRawV = 0;\r
-  fHC->fRawVMajor = 0;\r
-  fHC->fRawVMajorOpt = 0;\r
-  fHC->fRawVMinor = 0;\r
-  fHC->fNExtraWords = 0;\r
-  fHC->fDCSboard = 0;\r
-  fHC->fSM = 0;\r
-  fHC->fStack = 0;\r
-  fHC->fLayer = 0;\r
-  fHC->fSide = 0;\r
-  fHC->fTimeBins = 0;\r
-  fHC->fBunchCrossCounter = 0;\r
-  fHC->fPreTriggerCounter = 0;\r
-  fHC->fPreTriggerPhase = 0;\r
-  fHC->fDET = 0;\r
-  fHC->fROC = 0;\r
-  fHC->fRowMax = 0;\r
-  fHC->fColMax = 0;\r
-  fHC->fMCMmax = 0;\r
-  fHC->fH0Corrupted = 0;\r
-  fHC->fH1Corrupted = 0;\r
-  fHC->fCorrupted = 0;\r
-}\r
-\r
-//------------------------------------------------------------\r
-void AliTRDrawStreamOld::ResetPerMCM()\r
-{\r
-  //\r
-  // reset every MCM \r
-  //\r
-  fMCM->fROB = 0;\r
-  fMCM->fMCM = 0;\r
-  fMCM->fROW = 0;\r
-  fMCM->fEvCounter = 0;\r
-  fMCM->fADCMask = 0;\r
-  fMCM->fADCMaskWord = 0;\r
-  fMCM->fADCmax = 0;\r
-  fMCM->fADCcount = 0;\r
-  fMCM->fSingleADCwords = 0;\r
-  fMCM->fMCMhdCorrupted = 0;\r
-  fMCM->fADCmaskCorrupted = 0;\r
-  fMCM->fCorrupted = 0;\r
-  fMCM->fPos = NULL;\r
-  fMCM->fAdcDataPos = NULL;\r
-  fMCM->fADCcounter = 0;\r
-\r
-  memset(fMCM->fADCchannel, 0, TRDMAXADC*sizeof(UInt_t));\r
-}\r
-\r
-//------------------------------------------------------------\r
-void AliTRDrawStreamOld::ResetPerADC()\r
-{\r
-  //\r
-  // reset every ADC \r
-  //\r
-  fADC->fPos = NULL;\r
-  fADC->fADCnumber = 0;\r
-  fADC->fExtendedCOL = 0;\r
-  fADC->fCOL = 0;\r
-  fADC->fIsShared = kTRUE;\r
-  fADC->fCorrupted = 0;\r
-\r
-  //memset(fADC->fSignals, 0, GetNumberOfTimeBins()*sizeof(Int_t));\r
-  memset(fADC->fSignals, 0, TRDMAXTBINS*sizeof(Int_t)); \r
-}\r
-\r
-//------------------------------------------------------------\r
-void AliTRDrawStreamOld::ResetMemory()\r
-{                 \r
-  //              \r
-  // initialize all the data members to prevent read data from memory for previous buffer \r
-  //              \r
-  ResetPerSM();\r
-  for (Int_t istack=0; istack<5; istack++){\r
-     fStack = &fSM.fStacks[istack];\r
-     ResetPerStack();\r
-     for (Int_t ilink=0; ilink<12; ilink++){\r
-        fHC = &fStack->fHalfChambers[ilink];\r
-        ResetPerHC();\r
-        for (Int_t imcm=0; imcm<TRDMAXMCM; imcm++){\r
-           fMCM = &fHC->fMCMs[imcm];\r
-           ResetPerMCM();\r
-           for (Int_t iadc=0; iadc<TRDMAXADC; iadc++){\r
-              fADC = &fMCM->fADCs[iadc];\r
-              ResetPerADC();\r
-           } // iadc\r
-        } // imcm\r
-     } // ilink     \r
-  } // istack\r
-}         \r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::Next()\r
-{\r
-  //\r
-  // returns with true on next adc read\r
-  // returns false on errors and end of buffer\r
-  // \r
-  if (fBufferRead) {\r
-    while (fStackNumber < 5 && fSM.fActiveStacks > 0) {\r
-      if (fSM.fStackActive[fStackNumber] == kTRUE) {\r
-        fStack = &fSM.fStacks[fStackNumber];\r
-        while (fStackLinkNumber < 12) {\r
-          if (fStack->fLinksActive[fStackLinkNumber] == kTRUE && fStack->fLinksMonitor[fStackLinkNumber] == 0) {\r
-            fHC = &fStack->fHalfChambers[fStackLinkNumber];\r
-            if (!fHC) {\r
-              AliError(Form("HC missing at stack %d link %d", fStackNumber, fStackLinkNumber));\r
-              return kFALSE;\r
-            }\r
-            if (fHC->fCorrupted == 0 && (fHC->fH0Corrupted == 0 && fHC->fH1Corrupted == 0) | !fgSkipData) { // if HC data corrupted(in any case), we don't read data at all from this HC \r
-              while (fhcMCMcounter < fHC->fMCMmax) {\r
-                fMCM = &fHC->fMCMs[fhcMCMcounter];\r
-                if (!fMCM) {\r
-                  AliError(Form("HC missing at stack %d link %d atMCMslot %d", \r
-                  fStackNumber, fStackLinkNumber, fhcMCMcounter));\r
-                  return kFALSE;\r
-                }\r
-                while(fmcmADCcounter < fMCM->fADCmax) {\r
-                  fADC = &fMCM->fADCs[fmcmADCcounter];\r
-                  if (!fADC) {\r
-                    AliError(Form("ADC missing at stack %d link %d MCMslot %d ADCslot %d", \r
-                            fStackNumber, fStackLinkNumber, fhcMCMcounter, fmcmADCcounter));\r
-                    return kFALSE;\r
-                  }\r
-                  fmcmADCcounter++;\r
-                  if (fSharedPadsOn) {\r
-                    return kTRUE;\r
-                  }\r
-                  else {\r
-                    if (fADC->fIsShared == kFALSE)\r
-                      return kTRUE;\r
-                  }\r
-                } // while fmcmADCcounter\r
-                fhcMCMcounter++;\r
-                fmcmADCcounter = 0; // next MCM should go through all active ADCs - start from 0\r
-              } // while fhcMCMcounter\r
-            } // if HC OK\r
-          } // if link active\r
-          fStackLinkNumber++;\r
-          fhcMCMcounter = 0; // next stack link (HC) should go through all active MCMs - start from 0\r
-        } // while fStackLinkNumber\r
-      } // if stack active\r
-      fStackNumber++;\r
-      fStackLinkNumber = 0; // next stack should go through all links - start from 0\r
-    } // while fStackNumber\r
-  } // if fBufferRead\r
-\r
-  // in case rawreader manages the mem buffers, go for the next buffer \r
-  if (fRawReader) {\r
-    Int_t nextBuff = NextBuffer();\r
-    while (nextBuff != -1) {\r
-      if (nextBuff > 0) {\r
-        fBufferRead = kTRUE;\r
-        return Next();        \r
-      }\r
-      nextBuff = NextBuffer();\r
-    }\r
-  }\r
-\r
-  return kFALSE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Int_t AliTRDrawStreamOld::NextChamber(AliTRDdigitsManager *const digitsManager, UInt_t **trackletContainer, UShort_t **/*errorCodeContainer*/) \r
-{\r
-  //\r
-  // Fills single chamber digit array \r
-  // Return value is the detector number\r
-  //\r
-  AliTRDarrayADC *digits = 0;\r
-  AliTRDarrayDictionary *track0 = 0;\r
-  AliTRDarrayDictionary *track1 = 0;\r
-  AliTRDarrayDictionary *track2 = 0; \r
-  AliTRDSignalIndex *indexes = 0;\r
-  AliTRDdigitsParam *digitsparam = 0;\r
-\r
-  // Loop through the digits\r
-  Int_t lastdet = -1;\r
-  Int_t det     = -1;\r
-  Int_t lastside = -1; \r
-  Int_t side     = -1;\r
-  Int_t it = 0;\r
-  Int_t ntracklets = 0;\r
-\r
-  if (trackletContainer) { \r
-    for (Int_t i = 0; i < 2; i++) \r
-      for (Int_t j = 0; j < MAXTRACKLETSPERHC; j++) \r
-         trackletContainer[i][j] = 0; \r
-  }\r
-\r
-  while (Next()) {\r
-    det    = GetDet();\r
-    side   = GetSide();\r
-\r
-    if (trackletContainer) {\r
-      if ((det + side*AliTRDgeometry::kNdet) != (lastdet + lastside*AliTRDgeometry::kNdet)) {\r
-        if (det != lastdet) {\r
-          if (lastdet != -1) {\r
-            fmcmADCcounter--; \r
-            return lastdet;\r
-          }\r
-        }\r
-        ntracklets = GetNTracklets();\r
-        if (ntracklets > 0) memcpy(trackletContainer[side], GetTrackletWords(), sizeof(UInt_t) * ntracklets); //copy tracklet words to trackletContainer array\r
-        lastside = side; \r
-      } \r
-    } \r
-\r
-    if (det != lastdet) {\r
-      // If new detector found\r
-      if (lastdet == -1) {\r
-        lastdet = det;\r
-        fLastHC = fHC;\r
-      }\r
-      else {\r
-        fmcmADCcounter--; \r
-        fHC = fLastHC ;\r
-        return lastdet;\r
-      }\r
-\r
-      if (det < 0 || det >= AliTRDgeometry::kNdet) {\r
-        if (fSM.fClean == kTRUE) {\r
-          AliError(Form("Strange Det Number %d BUT event buffer seems to be clean.", det));\r
-        }\r
-        else {\r
-          AliError(Form("Strange Det Number %d. Event buffer marked NOT clean!", det));\r
-        }\r
-        continue;\r
-      }\r
-\r
-      // Add a container for the digits of this detector\r
-      digits = (AliTRDarrayADC *) digitsManager->GetDigits(det);\r
-\r
-      if (digitsManager->UsesDictionaries()) {\r
-        track0 = (AliTRDarrayDictionary *) digitsManager->GetDictionary(det,0);\r
-        track1 = (AliTRDarrayDictionary *) digitsManager->GetDictionary(det,1);\r
-        track2 = (AliTRDarrayDictionary *) digitsManager->GetDictionary(det,2);\r
-      }\r
-\r
-      if (!digits) {\r
-        if (fSM.fClean == kTRUE) {\r
-          AliError(Form("Unable to get digits for det %d BUT event buffer seems to be clean.", det));\r
-        }\r
-        else {\r
-          AliError(Form("Unable to get digits for det %d. Event buffer is NOT clean!", det));\r
-        }\r
-        return -1;\r
-      }\r
-\r
-      //Int_t rowMax = GetRowMax();\r
-      Int_t rowMax = fGeometry->RowmaxC1(); // we use maximum row number among all detectors to reuse memory\r
-      Int_t colMax = GetColMax();\r
-      Int_t ntbins = GetNumberOfTimeBins();\r
-\r
-      // Set digitparam variables\r
-      digitsparam = (AliTRDdigitsParam *) digitsManager->GetDigitsParam();\r
-      digitsparam->SetPretriggerPhase(det,GetPreTriggerPhase());\r
-      digitsparam->SetNTimeBins(det,ntbins);\r
-      fCommonAdditive=10;\r
-      digitsparam->SetADCbaseline(det,fCommonAdditive);\r
-\r
-      // Allocate memory space for the digits buffer\r
-      //if (digits->GetNtime() == 0) {\r
-      if (ntbins != digits->GetNtime()) {\r
-        digits->Allocate(rowMax, colMax, ntbins);\r
-        if (digitsManager->UsesDictionaries()) {\r
-          track0->Allocate(rowMax, colMax, ntbins);\r
-          track1->Allocate(rowMax, colMax, ntbins);\r
-          track2->Allocate(rowMax, colMax, ntbins);\r
-        }\r
-      }\r
-\r
-      indexes = digitsManager->GetIndexes(det);\r
-      indexes->SetSM(GetSM());\r
-      indexes->SetStack(GetStack());\r
-      indexes->SetLayer(GetLayer());\r
-      indexes->SetDetNumber(det);\r
-      if (indexes->GetNtime() != ntbins)\r
-        indexes->Allocate(rowMax, colMax, ntbins);\r
-    }\r
-\r
-    // ntimebins data are ready to read\r
-    for (it = 0; it < GetNumberOfTimeBins(); it++) {\r
-       digits->SetDataByAdcCol(GetRow(), GetExtendedCol(), it, GetSignals()[it]);\r
-       if (!(GetCol()<0)) indexes->AddIndexRC(GetRow(), GetCol());\r
-       if (digitsManager->UsesDictionaries()) {\r
-         track0->SetData(GetRow(), GetCol(), it, 0);\r
-         track1->SetData(GetRow(), GetCol(), it, 0);\r
-         track2->SetData(GetRow(), GetCol(), it, 0);\r
-       }\r
-    } // it\r
-  } // while Next()\r
-\r
-  return det;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::Init()\r
-{\r
-  //\r
-  // Initialize geometry and fee parameters \r
-  //\r
-  TDirectory *saveDir = gDirectory; \r
-  \r
-  if (!fGeometry) {\r
-    fGeometry = new AliTRDgeometry();\r
-    if (!fGeometry) {\r
-      AliError("Geometry FAILED!");\r
-      return kFALSE;\r
-    }\r
-  }\r
-\r
-  fTRDfeeParam = AliTRDfeeParam::Instance();\r
-  if (!fTRDfeeParam) {\r
-    AliError("AliTRDfeeParam FAILED!");\r
-    return kFALSE;\r
-  }\r
-\r
-  fMaxADCgeom = (Int_t)fGeometry->ADCmax();\r
-\r
-  ResetCounters(); // fBufferRead is set to kFALSE - important\r
-\r
-  saveDir->cd();\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::InitBuffer(void * const buffer, UInt_t length)\r
-{\r
-  // \r
-  // set initial information about the buffer\r
-  //\r
-  if (fgDebugFlag)  AliDebug(5, Form("Equipment ID: %d",fRawReader->GetEquipmentId()));\r
-  if (fRawReader->GetEquipmentId()<1024 || fRawReader->GetEquipmentId()>1041) // tmp protection\r
-    return kFALSE; \r
-\r
-  if (WORD_SIZE == 0) {\r
-    AliFatal("Strange word size. size of UInt_t == 0");\r
-    return kFALSE;\r
-  }\r
-\r
-  ResetCounters();\r
-\r
-  fpBegin = (UInt_t *)buffer;\r
-  fWordLength = length/WORD_SIZE;\r
-  fpEnd = fpBegin + fWordLength;\r
-  fpPos = fpBegin;\r
-\r
-  if (fpBegin == 0 || length <= 0) {\r
-    AliError(Form("Buffer size or pointer is strange. pointer to the buffer is 0x%p of size %u", fpBegin, length));\r
-    return kFALSE;\r
-  }\r
-\r
-  SwapOnEndian();\r
-\r
-  if (fgDumpHead >= 0) {\r
-    if ( fgDumpHead == 0 ) { // dump all words\r
-      AliInfo(Form("---------- Dumping all words from the beginnig of the buffer ----------"));\r
-      if (DumpWords(fpBegin, fWordLength) == kFALSE) AliError("Dump failed. Not enough data.");\r
-    } \r
-    else {\r
-      AliInfo(Form("---------- Dumping %u words from the beginnig of the buffer ----------",fgDumpHead));\r
-      if (DumpWords(fpBegin, fgDumpHead) == kFALSE) AliError("Dump failed. Not enough data.");\r
-    }\r
-    AliInfo(Form("---------- Dumping ended ----------------------------------------------"));\r
-  }\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::DecodeGTUheader()\r
-{\r
-  // Decode Supermodule Index Word\r
-  DecodeSMInfo(fpPos, &fSM);\r
-\r
-  if (fgDebugFlag)  AliDebug(5, DumpSMInfo(&fSM));\r
-\r
-  fpPos++;\r
-  if (fpPos < fpEnd) {\r
-    // fSM.fHeaderSize represent additional Supermodule header size which contains additional information regarding hardware design.\r
-    // For the moment, we skip decoding these words \r
-    if (SkipWords(fSM.fHeaderSize) == kTRUE) {\r
-      for (Int_t istack = 0; istack < 5; istack++) {\r
-         if (fSM.fStackActive[istack] == kFALSE)\r
-           continue;\r
-\r
-         fStack = &fSM.fStacks[istack];\r
-\r
-         // Decode Stack Index Word of given stack\r
-         DecodeStackInfo(fpPos, fStack);\r
-         fpPos++;\r
-\r
-         fSM.fNexpectedHalfChambers += fStack->fActiveLinks;\r
-        \r
-         if (fgDebugFlag)  AliDebug(5, DumpStackInfo(fStack));\r
-        \r
-         if (SkipWords(fStack->fHeaderSize-6) == kFALSE) { // 6 is the 6 stack header words for 12 links \r
-           if (fRawReader) fRawReader->AddMajorErrorLog(kDecodeStackInfo, "Stack header words missing");\r
-           return kFALSE;\r
-         }\r
-         for (Int_t iword=0; iword<6; iword++) { // decode 6 stack header words\r
-            // Decode Stack Header Word of given stack\r
-            DecodeStackHeader(fpPos, fStack, iword); \r
-            fpPos++;\r
-         }\r
-      }\r
-    }\r
-    else {\r
-      return kFALSE;\r
-    }\r
-  }\r
-  else {\r
-    if (fWarnError) AliWarning("No additional sm headers and stack index words present.");\r
-    if (fRawReader) fRawReader->AddMajorErrorLog(kDecodeStackInfo, "Stack info missing");\r
-      return kFALSE;\r
-  }\r
-\r
-  if (fpPos < fpEnd) {\r
-    if (fgDebugFlag)  AliDebug(5, "GTU headers are OK.");\r
-  }\r
-  else {\r
-    if (fWarnError) AliWarning("No data just after GTU headers.");\r
-    if (fRawReader) fRawReader->AddMajorErrorLog(kMissingData, "Missing sm data");\r
-      return kFALSE;\r
-  }\r
-\r
-  if (fgDebugFlag)  AliDebug(5, Form("Expected half chambers from GTU header: %d", fSM.fNexpectedHalfChambers));\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::DecodeSM(void * const buffer, UInt_t length)\r
-{\r
-  //\r
-  // decode one sm data in buffer\r
-  //\r
-  ResetIterators(); \r
-\r
-  fSM.fClean = kTRUE;\r
-  if (InitBuffer(buffer, length) == kFALSE) {\r
-    if (fWarnError) AliError("InitBuffer failed.");      \r
-      fSM.fClean = kFALSE;\r
-      return kFALSE;\r
-  }\r
-\r
-  if (DecodeGTUheader()== kFALSE)\r
-    return kFALSE;\r
-\r
-  for (Int_t istack = 0; istack < 5; istack++) {\r
-     fStackNumber = istack; \r
-     if (fSM.fStackActive[istack] == kFALSE)\r
-       continue;\r
-      \r
-     fStack = &fSM.fStacks[istack];\r
-\r
-     fgLastHC  = -1; // to check rob number odering \r
-     for (Int_t ilink = 0; ilink < 12; ilink++) {\r
-        fStackLinkNumber = ilink; \r
-        if (fStack->fLinksActive[ilink] == kFALSE)\r
-          continue;\r
-\r
-        // check GTU link monitor \r
-        if (!(fStack->fLinksDataType[ilink] == 0 && fStack->fLinksMonitor[ilink] == 0)) {\r
-          fStack->fLinkMonitorError[ilink] = 1;\r
-          SeekEndOfData(); // skip this HC data if GTU link monitor report error\r
-          fStack->fLinkMonitorError[ilink] += fNWordsCounter; // counts words of given hc having link monitor error\r
-          continue; \r
-        }\r
-\r
-        if (fpPos >= fpEnd) {\r
-          if (fRawReader) fRawReader->AddMajorErrorLog(kLinkDataMissing, "Link data missing");        \r
-          if (fWarnError) AliError("Link data missing.");      \r
-          fSM.fClean = kFALSE;\r
-          break;\r
-        }\r
-\r
-        fHC = &fStack->fHalfChambers[ilink];\r
-        ResetPerHC();\r
-\r
-        if (fSM.fTrackletEnable == kTRUE) {\r
-          if (DecodeTracklets() == kFALSE) {\r
-            fSM.fClean = kFALSE;\r
-            SeekEndOfData();\r
-\r
-            if (fWarnError) {\r
-              AliError(Form("Tracklet decoding failed stack %d link %d", fStackNumber, fStackLinkNumber));\r
-            }\r
-            continue;\r
-          }\r
-        }\r
-\r
-        if (fpPos >= fpEnd) {\r
-          if (fRawReader) fRawReader->AddMajorErrorLog(kHCdataMissing, "HC data missing");        \r
-          if (fWarnError) AliError("HC data missing.");      \r
-          fSM.fClean = kFALSE;\r
-          break;\r
-        }\r
-    \r
-        fgLastROB   = -1; // to check mcm number odering \r
-        fgLastIndex = -1 ; // to check mcm number odering \r
-        if (DecodeHC() == kFALSE) {\r
-          fSM.fClean = kFALSE;\r
-          if (fHC->fCorrupted < 16)  SeekEndOfData(); // In case that we meet END_OF_TRACKLET_MARKERNEW \r
-                                                      // during ADC data decoding or MCM header decoding\r
-                                                      // we don't seek ENDOFRAWDATAMARKER\r
-          if (fWarnError) {\r
-            AliError(Form("Failed HC : %s", DumpHCinfoH0(fHC)));\r
-            AliError(Form("Failed HC : %s", DumpHCinfoH1(fHC)));\r
-          }\r
-                \r
-          continue;\r
-        }\r
-        else {\r
-          SeekEndOfData(); // make sure that finish off with the end of data markers\r
-        }\r
-     } // ilink\r
-  } // istack\r
-\r
-  ResetIterators(); // need to do it again for Next() function \r
-\r
-  if (fSM.fClean == kTRUE)\r
-    return kTRUE;\r
-  \r
-  if (fgCleanDataOnly && (fSM.fClean == kFALSE)) {\r
-    if (fWarnError) {\r
-      AliWarning("Buffer with errors. Returning FALSE.");\r
-      AliWarning(Form("--- Failed SM : %s ---", DumpSMInfo(&fSM)));\r
-    }\r
-    fSM.fActiveStacks = 0; // Next() will not give data\r
-    return kFALSE;\r
-  }\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Int_t AliTRDrawStreamOld::DecodeSM()\r
-{\r
-  //\r
-  // decode SM data in case AliRawReader is in use\r
-  //    \r
-  if (fRawReader) {\r
-    Int_t nextBuff = NextBuffer();\r
-    while (nextBuff != -1) {\r
-      if (nextBuff > 0)\r
-        return nextBuff;        \r
-      nextBuff = NextBuffer();\r
-    }\r
-    return -1;\r
-  }\r
-  else {\r
-    AliWarning("AliRawReader not set.");\r
-  }\r
-\r
-  return kFALSE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Int_t AliTRDrawStreamOld::DecodeSM(AliRawReader *reader)\r
-{\r
-  //\r
-  // decode SM with the AliRawReader\r
-  //\r
-  if (reader != 0) {\r
-    fRawReader = reader;\r
-    return DecodeSM();\r
-  }\r
-  else {\r
-    AliWarning("Argument AliRawReader is 0.");\r
-  }\r
-\r
-  return kFALSE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::SeekEndOfData()\r
-{\r
-  //\r
-  // go to end of data marker\r
-  //\r
-  Int_t fEndOfDataCount = 0;\r
-  fNWordsCounter = 0;\r
-\r
-  while ( *fpPos != ENDOFRAWDATAMARKER && fpPos < fpEnd ) {\r
-    fpPos++;\r
-    fNWordsCounter++;\r
-  }\r
-  while (*fpPos == ENDOFRAWDATAMARKER && fpPos < fpEnd ) {\r
-    fEndOfDataCount++;\r
-    fpPos++;      \r
-  }\r
-  \r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::SkipMCMdata(UInt_t iw)\r
-{\r
-  //\r
-  // skip mcm data words due to corruption \r
-  //\r
-  if (fgDebugFlag) AliDebug(11,Form("Skip %d words due to MCM header corruption.",iw));\r
-  UInt_t iwcounter = 0;  \r
-  while ( *fpPos != ENDOFRAWDATAMARKER && iwcounter < iw) {\r
-    if ( *fpPos == END_OF_TRACKLET_MARKERNEW) {\r
-      if (fgDebugFlag) AliDebug(11,"Met END_OF_TRACKLET_MARKERNEW");\r
-      fMCM->fCorrupted += 16;\r
-      fHC->fCorrupted += 16;\r
-      return kFALSE;\r
-    } \r
-    fpPos++;\r
-    iwcounter++; \r
-  }\r
-\r
-  if (iwcounter == iw) {\r
-    fpPos++;\r
-    return kTRUE;\r
-  }\r
-\r
-  if (fgDebugFlag) AliDebug(11,"Met ENDOFRAWDATAMARKER");\r
-\r
-  return kFALSE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::SeekNextMCMheader()\r
-{\r
-  //\r
-  // go to mcm marker\r
-  //\r
-  fpPos++;\r
-\r
-  while ( *fpPos != ENDOFRAWDATAMARKER && fpPos < fpEnd ) {\r
-    if (MCM_HEADER_MASK_ERR(*fpPos) == 0 && MCM_HEADER_MASK_ERR(*(fpPos+1)) == 0) {      \r
-      if (fgDebugFlag) AliDebug(11,Form("^^^ Found : Pos 0x%p : Val 0x%08x", fpPos, *fpPos));\r
-      return kTRUE;\r
-    }\r
-    if ( *fpPos == END_OF_TRACKLET_MARKERNEW) {\r
-      fMCM->fCorrupted += 16;\r
-      fHC->fCorrupted += 16;\r
-      return kFALSE;\r
-    } \r
-    fpPos++;\r
-  }\r
-\r
-  SeekEndOfData();\r
-\r
-  return kFALSE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::DecodeTracklets()\r
-{\r
-  //\r
-  // decode tracklets\r
-  //\r
-  fLinkTrackletCounter = 0;\r
-  fEndOfTrackletCount = 0;\r
-  fHC->fNTracklets = 0;\r
-\r
-  for (Int_t i = 0; i < MAXTRACKLETSPERHC; i++) \r
-     fHC->fTrackletWords[i] = 0; \r
-\r
-  if (fgDebugFlag)  AliDebug(10, Form("Decode tracklets at 0x%p : 0x%08x", fpPos, *fpPos));\r
-\r
-  while ( *fpPos != END_OF_TRACKLET_MARKEROLD && *fpPos != END_OF_TRACKLET_MARKERNEW && fpPos < fpEnd ) {\r
-    if (fgDebugFlag)  AliDebug(10, Form("Tracklet found at 0x%p : 0x%08x", fpPos, *fpPos));\r
-\r
-    fLinkTrackletCounter++;\r
-\r
-    if (fLinkTrackletCounter > MAXTRACKLETSPERHC) {\r
-      if (fgDebugFlag) AliDebug(11,Form("Max number of tracklets exceeded %d > %d.", \r
-                                        fLinkTrackletCounter, MAXTRACKLETSPERHC));\r
-      if (fRawReader) fRawReader->AddMajorErrorLog(kTrackletOverflow,"Too many tracklets"); \r
-      fHC->fTrackletError = 1;\r
-      return kFALSE;\r
-    }\r
-\r
-    fHC->fTrackletWords[fLinkTrackletCounter-1] = UInt_t(*fpPos); //store tracklet words into array  \r
-    fHC->fNTracklets = fLinkTrackletCounter;\r
-    fpPos++;\r
-  }\r
-\r
-  while ( ( *fpPos == END_OF_TRACKLET_MARKEROLD || *fpPos == END_OF_TRACKLET_MARKERNEW ) && fpPos < fpEnd ) {\r
-    if (fgDebugFlag)  AliDebug(10, Form("EoTracklets found at 0x%p : 0x%08x", fpPos, *fpPos));\r
-\r
-    fEndOfTrackletCount++;\r
-    fpPos++;\r
-  }\r
-\r
-  if ( fEndOfTrackletCount < 2 ) {\r
-    if (fgDebugFlag) AliDebug(11,"End of tracklets word missing"); \r
-    if (fRawReader) fRawReader->AddMajorErrorLog(kEOTrackeltsMissing, "End of tracklets word missing"); \r
-    fHC->fTrackletError += 2;\r
-    return kFALSE;\r
-  }\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::IsRowValid()\r
-{\r
-  //\r
-  // check if the row number is in valid range\r
-  //\r
-  if ( (fHC->fStack == 2 && fMCM->fROW >= fGeometry->RowmaxC0()) ||\r
-      (fHC->fStack != 2 && fMCM->fROW >= fGeometry->RowmaxC1()) || fMCM->fROW < 0 ) {\r
-    if (fgDebugFlag) AliDebug(11,Form("SM%d L%dS%d: Wrong Padrow (%d) fROB=%d, fSIDE=%d, fMCM=%02d"\r
-                                      , fHC->fSM, fHC->fLayer, fHC->fStack, fMCM->fROW, fMCM->fROB, fHC->fSide, fMCM->fMCM ));\r
-    return kFALSE;\r
-  }\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::IsMCMheaderOK()\r
-{\r
-  //\r
-  // check the mcm header\r
-  //\r
-  if (fgLastROB != fMCM->fROB) {\r
-    fgLastIndex = 0;\r
-    if (fgLastROB== -1) fgLastROB = fMCM->fROB;\r
-  }\r
-  else {\r
-    Int_t matchingcounter = 0; \r
-    for (Int_t i=fgLastIndex+1; i<16; i++) {\r
-       if ( fMCM->fMCM == fgMCMordering[i] ) {\r
-         fgLastIndex = i;\r
-         matchingcounter++;\r
-         break;\r
-       }\r
-    }\r
-    if (matchingcounter == 0) {  \r
-      fMCM->fMCMhdCorrupted += 2;\r
-      AliDebug(11,Form("MCM number from last MCM is larger: MCM # from last MCM %d,  MCM # from current MCM %d \n",(fMCM-1)->fMCM, fMCM->fMCM));\r
-    }\r
-  }\r
-\r
-  if ( fgLastHC == fHC->fLayer*2 + fHC->fSide ) {\r
-    if ( fMCM->fROB < (fMCM-1)->fROB ) {\r
-      fMCM->fMCMhdCorrupted += 2;\r
-      AliDebug(11,Form("ROB number from last MCM is larger: ROB # from last MCM %d,  ROB # from current MCM %d \n",(fMCM-1)->fROB, fMCM->fROB));\r
-    }\r
-    else fgLastROB = fMCM->fROB; \r
-  }\r
-\r
-  fgLastHC = fHC->fLayer*2 + fHC->fSide; \r
-\r
-  /*\r
-  // this check will come back later again when we have "patched MCM map"\r
-  int expectedROB = -1;\r
-  if(!fHC->fSide) expectedROB = int(fHC->fMCMmax/16)*2;\r
-  else expectedROB = int(fHC->fMCMmax/16)*2 + 1;\r
-  int expectedMCM = 4*(3-int((fHC->fMCMmax%16)/4)) + fHC->fMCMmax%4;\r
-\r
-  if ( expectedROB != fMCM->fROB || expectedMCM != fMCM->fMCM)\r
-    {\r
-      fMCM->fMCMhdCorrupted += 2;\r
-      AliDebug(11,Form("ROB expected %d ROB read %d,  MCM expected %d MCM read %d\n",expectedROB, fMCM->fROB, expectedMCM, fMCM->fMCM));\r
-    }\r
-  */\r
-\r
-  // below two conditions are redundant  \r
-  /*\r
-  if ( fMCM->fMCM < 0 || fMCM->fMCM > 15 || fMCM->fROB < 0 || fMCM->fROB > 7 ) \r
-    {\r
-      fMCM->fMCMhdCorrupted += 8;  // need to assign new number\r
-      if (fgDebugFlag) AliDebug(11,Form("ROB or MCM number is out of range. %s\n", DumpMCMinfo(fMCM)));\r
-    }\r
-  if (IsRowValid() == kFALSE)\r
-    {\r
-      fMCM->fMCMhdCorrupted += 16; // need to assign new number\r
-    }\r
-  */  \r
-    \r
-  if (fEventCounter == 0) {\r
-    fEventCounter = fMCM->fEvCounter;\r
-  }\r
-\r
-  if (fEventCounter != fMCM->fEvCounter) {\r
-    fMCM->fMCMhdCorrupted += 4;      \r
-    if (fgDebugFlag) AliDebug(11,Form("Event number(%d) of current MCM is different from that(%d) of reference MCM %s.\n"\r
-                                      , fMCM->fEvCounter, fEventCounter, DumpMCMinfo(fMCM)));\r
-  }\r
-\r
-  if (fEventCounter < fLastEventCounter) {\r
-    fMCM->fMCMhdCorrupted += 8;      \r
-    if (fgDebugFlag) AliDebug(11,Form("Event from the past? Current %d Last %d %s.\n", fEventCounter, fLastEventCounter, DumpMCMinfo(fMCM)));\r
-  }\r
-\r
-  if ( fMCM->fADCmaskCorrupted > 0 ) {\r
-    return kFALSE;\r
-  }\r
-\r
-  if ( fMCM->fMCMhdCorrupted > 0 ) {\r
-    return kFALSE;\r
-  }\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::DecodeMCMheader()\r
-{\r
-  //\r
-  // decode the mcm header\r
-  //\r
-  DecodeMCMheader(fpPos, fMCM); \r
-\r
-  if (fgDumpingEnable) { \r
-    if (fMCM->fMCM == fgDumpingMCM) {\r
-      if (fMCM->fROB == fgDumpingROB && fHC->fLayer == fgDumpingLayer) {\r
-        if (fHC->fSM == fgDumpingSM && fHC->fStack == fgDumpingStack) {\r
-          if (fgDebugFlag) {\r
-            AliDebug(5,DumpHCinfoH0(fHC));\r
-            AliDebug(5,DumpMCMinfo(fMCM));\r
-          }\r
-          DumpWords(fpPos, 212);\r
-        }  \r
-      }\r
-    }\r
-  }\r
-\r
-  if (fHC->fCorrupted >= 16) {\r
-    fpPos--; \r
-    return kFALSE;\r
-  }\r
-  fMCM->fROW = fTRDfeeParam->GetPadRowFromMCM(fMCM->fROB, fMCM->fMCM); \r
-\r
-  if ((fHC->fRawVMajor > 2 && fHC->fRawVMajor <5) || ((fHC->fRawVMajor & 32) == 32)) { //cover old and new version definition of ZS data\r
-    fpPos++;\r
-    if ( fpPos < fpEnd ) {\r
-      DecodeMask(fpPos, fMCM); \r
-      if (fHC->fCorrupted >= 16) {\r
-        fpPos--; \r
-        return kFALSE;\r
-      }\r
-      MCMADCwordsWithTbins(fHC->fTimeBins, fMCM);\r
-      fMCM->fAdcDataPos = fpPos + 1;\r
-    }\r
-    else {\r
-      if (fgDebugFlag) AliDebug(11,"Expected ADC mask word. Fail due to buffer END.");    \r
-      if (fRawReader) fRawReader->AddMajorErrorLog(kMCMADCMaskMissing,"Missing"); \r
-      fHC->fCorrupted += 32;\r
-      return kFALSE;\r
-    }\r
-  }\r
-  else {\r
-    UInt_t dummyMask = MCM_DUMMY_ADCMASK_VAL;\r
-    DecodeMask(&dummyMask, fMCM); \r
-    MCMADCwordsWithTbins(fHC->fTimeBins, fMCM);\r
-    fMCM->fAdcDataPos = fpPos + 1;\r
-  }\r
-\r
-  if (fgDebugFlag) { \r
-    AliDebug(6, DumpMCMinfo(fMCM));\r
-    AliDebug(7, DumpMCMadcMask(fMCM));\r
-  }\r
-\r
-  if (IsMCMheaderOK() == kFALSE) {\r
-    return kFALSE;\r
-  }    \r
-\r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::IsHCheaderOK()\r
-{\r
-  //\r
-  // check insanity of half chamber header\r
-  //\r
-  if (fHC->fStack < 0 || fHC->fStack > 4) {\r
-    if (fgDebugFlag) AliDebug(11,Form("Wrong Stack %d", fHC->fStack));\r
-      return kFALSE;\r
-  }\r
-\r
-  if (fHC->fLayer < 0 || fHC->fLayer >= AliTRDgeometry::kNlayer) {\r
-    if (fgDebugFlag) AliDebug(11,Form("Wrong layer %d", fHC->fLayer));\r
-      return kFALSE;\r
-  }\r
-\r
-  if (fHC->fSide < 0 || fHC->fSide > 1) {\r
-    if (fgDebugFlag) AliDebug(11,Form("Wrong Side %d", fHC->fSide));\r
-      return kFALSE;\r
-  }\r
-\r
-  if (fgStackNumberChecker) {\r
-    if (fHC->fStack != fStackNumber) {\r
-      if (fgDebugFlag) AliDebug(11,Form("Missmatch: Stack number between HC header %d and GTU link mask %d", \r
-                                        fHC->fStack, fStackNumber));\r
-      fStackNumber = -1;\r
-      return kFALSE;\r
-    }\r
-  }\r
-\r
-  if (fgStackLinkNumberChecker) {\r
-    if (fHC->fLayer * 2 + fHC->fSide != fStackLinkNumber) {\r
-    // let it make flexible to consider known fiber swapping\r
-    //if ((fHC->fLayer * 2 != fStackLinkNumber) && (fHC->fLayer * 2 != fStackLinkNumber - 1)) { \r
-      if (fgDebugFlag) AliDebug(11,Form("Missmatch: Layer number between HC header %d and GTU link mask %d | %s", \r
-                                        fHC->fLayer, fStackLinkNumber, DumpStackInfo(fStack)));\r
-      fStackLinkNumber = -1;\r
-      return kFALSE;      \r
-    }\r
-  }\r
-\r
-  // SLOW GEOM : consistancy check with geometry\r
-  fHC->fDET = fGeometry->GetDetector(fHC->fLayer, fHC->fStack, fHC->fSM);\r
-  if (fHC->fDET < 0 || fHC->fDET >= AliTRDgeometry::kNdet) {\r
-    if (fgDebugFlag) AliDebug(11,Form("Wrong detector %d", fHC->fDET));      \r
-    if (fRawReader) fRawReader->AddMajorErrorLog(kHCHeaderWrongDet, "Wrong Det");       \r
-    return kFALSE;\r
-  }\r
-\r
-  if (fHC->fSM != fGeometry->GetSector(fHC->fDET) || fHC->fSM <0 || fHC->fSM >= AliTRDgeometry::kNsector) {\r
-    if (fgDebugFlag) AliDebug(11,Form("Wrong SM(sector) %d (Geometry says: %d) Stack=%d Layer=%d Det=%d", \r
-                                      fHC->fSM, fGeometry->GetSector(fHC->fDET), fHC->fStack, fHC->fLayer, fHC->fDET));\r
-    if (fRawReader) fRawReader->AddMajorErrorLog(kHCHeaderWrongSM, "Wrong SM");       \r
-    return kFALSE;\r
-  }\r
-\r
-  fHC->fROC    = fGeometry->GetDetectorSec(fHC->fLayer, fHC->fStack);\r
-  if (fHC->fROC < 0) {\r
-    if (fRawReader) fRawReader->AddMajorErrorLog(kHCHeaderWrongROC, "Wrong ROC");       \r
-    return kFALSE;\r
-  }\r
-\r
-  fHC->fRowMax = fGeometry->GetRowMax(fHC->fLayer, fHC->fStack, fHC->fSM);\r
-  if (fHC->fRowMax < 1) {\r
-    if (fRawReader) fRawReader->AddMajorErrorLog(kHCHeaderWrongROC, "Wrong ROC Row Max");       \r
-    return kFALSE;\r
-  }\r
-\r
-  fHC->fColMax = fGeometry->GetColMax(fHC->fROC);\r
-  if (fHC->fColMax < 1) {\r
-    if (fRawReader) fRawReader->AddMajorErrorLog(kHCHeaderWrongROC, "Wrong ROC Col Max");       \r
-    return kFALSE;\r
-  }\r
-  \r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::DecodeHCheader()\r
-{  \r
-  //\r
-  // decode the half chamber header\r
-  //\r
-  if (DecodeHCwordH0(fpPos, fHC) == kFALSE)\r
-    return kFALSE;\r
-    \r
-  if (fHC->fNExtraWords > 0) {\r
-    fpPos++;\r
-    if (fpPos < fpEnd) {\r
-      if (DecodeHCwordH1(fpPos, fHC) == kFALSE)\r
-        return kFALSE;\r
-    }\r
-    else {\r
-      if (fgDebugFlag) AliDebug(11,"Expected HC header word 1. Fail due to buffer END.");\r
-      if (fRawReader) fRawReader->AddMajorErrorLog(kHCWordMissing,"Next HC word 1 (count from 0) missing"); \r
-      return kFALSE;\r
-    }\r
-  }\r
-\r
-  if (fgDebugFlag)  AliDebug(5, DumpHCinfoH0(fHC));\r
-  if (fgDebugFlag)  AliDebug(5, DumpHCinfoH1(fHC));\r
-\r
-  fHC->fDET = -1;\r
-  if (IsHCheaderOK() == kFALSE) {\r
-    fHC->fH0Corrupted += 2;\r
-    if (fgDebugFlag) AliDebug(11,Form("H0 Header Insane. Word 0x%p", *fHC->fPos));\r
-      return kFALSE;\r
-  }\r
-  \r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::DecodeHC()\r
-{\r
-  //\r
-  // decode hc header and data\r
-  //\r
-\r
-  if (DecodeHCheader() == kFALSE) {\r
-    if (fWarnError) AliWarning(Form("HC Header decode failed. H0 Error: %d H1 Error: %d",fHC->fH0Corrupted,fHC->fH1Corrupted));\r
-    if (fRawReader) fRawReader->AddMajorErrorLog(kHCHeaderCorrupt, "HC header corrupted"); \r
-    return kFALSE;\r
-  }\r
-  else {\r
-    fpPos++;\r
-    if (fpPos >= fpEnd) {\r
-      fHC->fCorrupted += 1;\r
-      if (fgDebugFlag) AliDebug(11,"No MCM data? Not enough data in the buffer.");\r
-      if (fRawReader) fRawReader->AddMajorErrorLog(kMCMdataMissing, "MCM data missing"); \r
-      return kFALSE;\r
-    }\r
-  }\r
-\r
-//   if ((fHC->fRawVMajor & 64) == 64) { // test pattern data\r
-//     AliTRDrawTPStream *tpStream = new AliTRDrawTPStream(fHC->fRawVMajorOpt, fpPos);\r
-//     if (tpStream->DecodeTPdata() == kFALSE) {\r
-//       if (fWarnError) AliError("failed to decode test pattern data");\r
-//         return kFALSE; \r
-//     }\r
-//     return kTRUE;\r
-//   } \r
-\r
-  fHC->fMCMmax = 0;\r
-  while (*fpPos != ENDOFRAWDATAMARKER && fpPos < fpEnd) {\r
-    if (fHC->fMCMmax > TRDMAXMCM) {\r
-      fHC->fCorrupted += 2;\r
-      if (fgDebugFlag) AliDebug(11,"More mcm data than expected!");\r
-      if (fRawReader) fRawReader->AddMajorErrorLog(kMCMoverflow, "Too many mcms found!"); \r
-      return kFALSE;\r
-    }\r
-\r
-    fMCM = &fHC->fMCMs[fHC->fMCMmax];\r
-\r
-    if (DecodeMCMheader() == kFALSE) {\r
-      if (fHC->fCorrupted < 4) fHC->fCorrupted += 4; // benchmark hc data corruption as 4\r
-    \r
-      if (fgSkipData == kTRUE || fHC->fCorrupted >= 16) { // stop HC data reading\r
-        fHC->fMCMmax++;\r
-        return kFALSE;\r
-      } \r
-          \r
-      fHC->fMCMmax++; // increase mcm counter to match with expected rob/mcm number\r
-\r
-      // in case we decide to keep reading data, skip this mcm data and find next mcm header \r
-      if (fMCM->fADCmaskCorrupted < 2) {\r
-        if (SkipMCMdata(fMCM->fADCcount*fMCM->fSingleADCwords) == kFALSE)\r
-          return kFALSE;\r
-        continue;\r
-      }\r
-      else {\r
-        if (SeekNextMCMheader() == kFALSE)\r
-          return kFALSE;\r
-        continue;\r
-      }\r
-    }\r
-\r
-    fHC->fMCMmax++;\r
-\r
-    if (fMCM->fADCmax > 0) {\r
-      fpPos++;\r
-      if (fpPos >= fpEnd) {\r
-        fMCM->fCorrupted += 1;\r
-        if (fHC->fCorrupted < 4) fHC->fCorrupted += 4; // benchmark hc data corruption as 4\r
-        if (fgDebugFlag)  AliDebug(9, Form("Buffer short of data. ADC data expected."));    \r
-        return kFALSE;\r
-      }\r
-\r
-      for (Int_t iadc = 0; iadc < fMCM->fADCmax; iadc++) {\r
-         fADC = &fMCM->fADCs[iadc];\r
-         fADC->fADCnumber = fMCM->fADCchannel[iadc];\r
-         if (fgDebugFlag)  AliDebug(9, Form("This is ADC %d of %d. ADC number is %d.", \r
-                                            iadc+1, fMCM->fADCmax, fMCM->fADCchannel[iadc]));\r
-         if (fpPos + fMCM->fSingleADCwords >= fpEnd) {\r
-           fMCM->fCorrupted += 2;\r
-           if (fHC->fCorrupted < 4) fHC->fCorrupted += 4; // benchmark hc data corruption as 4\r
-           if (fgDebugFlag) AliDebug(11,"ADC (10 words) expected. Not enough data in the buffer.");\r
-           return kFALSE;\r
-         }\r
-\r
-         if (fHC->fRawVMajor < 64) { // normal(real) ADC data\r
-           if (fHC->fTimeBins < 31) {\r
-             if (DecodeADC() == kFALSE) {\r
-               if (fMCM->fCorrupted < 4) fMCM->fCorrupted += 4; // benchmark mcm data corruption as 4\r
-               if (fHC->fCorrupted < 4) fHC->fCorrupted += 4;   // benchmark hc data corruption as 4\r
-               if (fADC->fIsShared && fADC->fCorrupted == 32) { // check if we are out of the det when the pad is shared\r
-                 fADC->fExtendedCOL = -1;\r
-                 fADC->fCOL = -1;\r
-                 fpPos = fADC->fPos + fMCM->fSingleADCwords;\r
-               }\r
-               else {\r
-                 if (fgDebugFlag) AliDebug(11,Form("ADC decode failed."));\r
-                 if (fgSkipData == kTRUE || fHC->fCorrupted >= 16) \r
-                   return kFALSE; // stop HC data reading\r
-               }\r
-             }\r
-           }\r
-           else if (fHC->fTimeBins > 32) {\r
-             if (DecodeADCExtended() == kFALSE) { // decoding TRAP data with ZS and more than 32 samples\r
-               if (fMCM->fCorrupted < 4) fMCM->fCorrupted += 4; // benchmark mcm data corruption as 4\r
-               if (fHC->fCorrupted < 4) fHC->fCorrupted += 4;   // benchmark hc data corruption as 4\r
-               if (fADC->fIsShared && fADC->fCorrupted == 32) { // check if we are out of the det when the pad is shared\r
-                 fADC->fExtendedCOL = -1;\r
-                 fADC->fCOL = -1;\r
-                 fpPos = fADC->fPos + fMCM->fSingleADCwords;\r
-               }\r
-               else {\r
-                 if (fgDebugFlag) AliDebug(11,Form("ADC decode failed."));\r
-                 if (fgSkipData == kTRUE || fHC->fCorrupted >= 16)\r
-                   return kFALSE; // stop HC data reading\r
-               }\r
-             }\r
-           }\r
-           else { // nsamples = 31, 32 are not implemented in the TRAP and should never happen  \r
-             if (fWarnError) AliError("nsamples are 31 or 32. These are not implemented in the TRAP and should never happen!"); \r
-           }\r
-         } // if fHC->fRawVMajor\r
-         else { // test pattern data\r
-           if (fWarnError) AliError("These are test pattern data. You need other reader"); // will be served in other class\r
-         }\r
-      } // for iadc \r
-    } // if fMCM->fADCmax\r
-    else {\r
-      fpPos++;\r
-    }\r
-  }//while eof data\r
-\r
-  if (fpPos >= fpEnd) {\r
-    if (fgDebugFlag) AliDebug(11,"We are at the end of buffer. There should be one more word left.");\r
-    return kFALSE;\r
-  }\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::DecodeADC()\r
-{\r
-  //\r
-  // decode single ADC channel\r
-  //\r
-\r
-  fADC->fCorrupted = 0;\r
-  if(fADC->fADCnumber%2==1) fMaskADCword = ADC_WORD_MASK(ADCDATA_VAL1);\r
-  if(fADC->fADCnumber%2==0) fMaskADCword = ADC_WORD_MASK(ADCDATA_VAL2);\r
-\r
-  fADC->fPos = fpPos;\r
-  fTbinADC = 0;\r
-\r
-  for (Int_t i = 0; i < GetNumberOfTimeBins(); i++)\r
-  //for (Int_t i = 0; i < TRDMAXTBINS; i++)\r
-    fADC->fSignals[i] = 0;\r
-\r
-  for (Int_t iw = 0; iw < fMCM->fSingleADCwords; iw++) {\r
-     if (HC_HEADER_MASK_ERR(*fpPos) == 0 || *fpPos == END_OF_TRACKLET_MARKERNEW) {\r
-       if (fWarnError) AliError(Form("There should be ADC data. We meet HC header or END_OF_TRACKLET_MARKER 0x%08x",*fpPos));\r
-       fADC->fCorrupted += 16;\r
-       fHC->fCorrupted += 16; \r
-       fpPos--;\r
-       return kFALSE;\r
-     }\r
-     if (fMaskADCword != ADC_WORD_MASK(*fpPos)) {\r
-       fADC->fCorrupted += 1;\r
-       if (fgDebugFlag) AliDebug(11,Form("Wrong ADC data mask! ADC channel number: %02d [Expected mask: 0x%08x  Current mask: 0x%08x] MCM= %s Error : %d",\r
-                                         fADC->fADCnumber, fMaskADCword, ADC_WORD_MASK(*fpPos),DumpMCMinfo(fMCM),fADC->fCorrupted));\r
-       fpPos++;\r
-       continue;\r
-     }\r
-\r
-     fADC->fSignals[fTbinADC + 0] = ((*fpPos & 0x00000ffc) >>  2);\r
-     fADC->fSignals[fTbinADC + 1] = ((*fpPos & 0x003ff000) >> 12);\r
-     fADC->fSignals[fTbinADC + 2] = ((*fpPos & 0xffc00000) >> 22);\r
-\r
-     fTbinADC += 3;\r
-     fpPos++;\r
-  } // iw\r
-\r
-  if (fADC->fADCnumber <= 1 || fADC->fADCnumber == fMaxADCgeom - 1) {\r
-    fADC->fIsShared = kTRUE;\r
-  }\r
-  else {\r
-    fADC->fIsShared = kFALSE;\r
-  }\r
-\r
-    fADC->fExtendedCOL = fTRDfeeParam->GetExtendedPadColFromADC(fMCM->fROB, fMCM->fMCM, fADC->fADCnumber);\r
-    fADC->fCOL = fTRDfeeParam->GetPadColFromADC(fMCM->fROB, fMCM->fMCM, fADC->fADCnumber);\r
-\r
-  if (fADC->fCOL >= fHC->fColMax || fADC->fCOL < 0) {\r
-    if (fADC->fIsShared == kFALSE) {\r
-      fADC->fCorrupted += 32;\r
-      if (fgDebugFlag) AliDebug(11,Form("Wrong column! ADCnumber %d MaxIs %d Col %d MaxIs %d MCM= %s", \r
-                                        fADC->fADCnumber, fMaxADCgeom, fADC->fCOL, fHC->fColMax, DumpMCMinfo(fMCM)));\r
-    }\r
-    //else {\r
-    // we are out of the det when the pad is shared\r
-    //if (fgDebugFlag) AliDebug(11, Form("Column out of the detector! ADCnumber %d MaxIs %d Col %d MaxIs %d MCM= %s", \r
-    //             fADC->fADCnumber, fMaxADCgeom, fADC->fCOL, fHC->fColMax, DumpMCMinfo(fMCM)));\r
-    //fADC->fCorrupted += 32;\r
-    //}\r
-  }\r
-\r
-  if (fADC->fCorrupted > 0) {\r
-    return kFALSE;\r
-  }\r
-\r
-  fDecodedADCs++;\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//------------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::DecodeADCExtended()\r
-{\r
-  //\r
-  // decode single ADC channel\r
-  //\r
-\r
-  fADC->fCorrupted = 0;\r
-  if(fADC->fADCnumber%2==1) fMaskADCword = ADC_WORD_MASK(ADCDATA_VAL1);\r
-  if(fADC->fADCnumber%2==0) fMaskADCword = ADC_WORD_MASK(ADCDATA_VAL2);\r
-\r
-  fADC->fPos = fpPos;\r
-\r
-  fTbinADC = ((*fpPos & 0x000000fc) >>  2);\r
-  fMCM->fSingleADCwords  = ((*fpPos & 0x00000f00) >>  8);\r
-  fADC->fSignals[fTbinADC] = ((*fpPos & 0x003ff000) >> 12);\r
-  fADC->fSignals[fTbinADC+1] = ((*fpPos & 0xffc00000) >> 22);\r
-\r
-  fpPos++; \r
-  for (Int_t iw = 0; iw < fMCM->fSingleADCwords-1; iw++) { // it goes up to fMCM->fSingleADCwords-1 since the first word was already decoded above\r
-     if (HC_HEADER_MASK_ERR(*fpPos) == 0 || *fpPos == END_OF_TRACKLET_MARKERNEW) {\r
-       if (fWarnError) AliError(Form("There should be ADC data. We meet HC header or END_OF_TRACKLET_MARKER 0x%08x",*fpPos));\r
-       fADC->fCorrupted += 16;\r
-       fHC->fCorrupted += 16; \r
-       fpPos--;\r
-       return kFALSE;\r
-     }\r
-     if (fMaskADCword != ADC_WORD_MASK(*fpPos)) {\r
-       fADC->fCorrupted += 1;\r
-       if (fgDebugFlag) AliDebug(11,Form("Wrong ADC data mask! ADC channel number: %02d [Expected mask: 0x%08x  Current mask: 0x%08x] MCM= %s Error : %d",\r
-                                         fADC->fADCnumber, fMaskADCword, ADC_WORD_MASK(*fpPos),DumpMCMinfo(fMCM),fADC->fCorrupted));\r
-       fpPos++;\r
-       continue;\r
-     }\r
-\r
-     fADC->fSignals[fTbinADC + 2] = ((*fpPos & 0x00000ffc) >>  2);\r
-     fADC->fSignals[fTbinADC + 3] = ((*fpPos & 0x003ff000) >> 12);\r
-     fADC->fSignals[fTbinADC + 4] = ((*fpPos & 0xffc00000) >> 22);\r
-\r
-     fTbinADC += 3;\r
-     fpPos++;\r
-  } // iw\r
-\r
-//  for(int i=0; i )\r
-//  printf();\r
-\r
-\r
-  if (fADC->fADCnumber <= 1 || fADC->fADCnumber == fMaxADCgeom - 1) {\r
-    fADC->fIsShared = kTRUE;\r
-  }\r
-  else {\r
-    fADC->fIsShared = kFALSE;\r
-  }\r
-\r
-  fADC->fExtendedCOL = fTRDfeeParam->GetExtendedPadColFromADC(fMCM->fROB, fMCM->fMCM, fADC->fADCnumber);\r
-    fADC->fCOL = fTRDfeeParam->GetPadColFromADC(fMCM->fROB, fMCM->fMCM, fADC->fADCnumber);\r
-\r
-  if (fADC->fCOL >= fHC->fColMax || fADC->fCOL < 0) {\r
-    if (fADC->fIsShared == kFALSE) {\r
-      fADC->fCorrupted += 32;\r
-      if (fgDebugFlag) AliDebug(11,Form("Wrong column! ADCnumber %d MaxIs %d Col %d MaxIs %d MCM= %s", \r
-                                        fADC->fADCnumber, fMaxADCgeom, fADC->fCOL, fHC->fColMax, DumpMCMinfo(fMCM)));\r
-    }\r
-  }\r
-\r
-  if (fADC->fCorrupted > 0) {\r
-    return kFALSE;\r
-  }\r
-\r
-  fDecodedADCs++;\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//--------------------------------------------------------\r
-void AliTRDrawStreamOld::DecodeSMInfo(const UInt_t *word, struct AliTRDrawSM *sm) const\r
-{\r
-  //\r
-  // Decode Supermodule Index Word\r
-  // The Supermodule Index Word is a 32-Bit word wit following structure\r
-  // ssssssss ssssssss vvvv rrrr r d t mmmm\r
-  // s: Size of the Supermodule Header, v: Supermodule Header Version, r: Reserved for future use\r
-  // d: Track Data Enabled Bit, t: Tracklet Data Enabled Bit, m: Stack Mask \r
-  //\r
-  sm->fPos = (UInt_t*)word; \r
-\r
-  UInt_t vword = *word;\r
-  sm->fHeaderSize = SM_HEADER_SIZE(vword);\r
-    \r
-  if (TRACKLETS_ENABLED(vword) > 0)\r
-    sm->fTrackletEnable = kTRUE;\r
-  else\r
-    sm->fTrackletEnable = kFALSE;\r
-    \r
-  UInt_t stackMask = STACK_MASK(vword);\r
-  sm->fActiveStacks = 0;\r
-  for (Int_t i = 0; i < 5; i++) {\r
-     if (IS_BIT_SET(stackMask,i) > 0) {\r
-       sm->fStackActive[i] = kTRUE;\r
-       sm->fActiveStacks++;\r
-     }\r
-     else {\r
-       sm->fStackActive[i] = kFALSE;\r
-     }\r
-  }\r
-}\r
-\r
-//--------------------------------------------------------\r
-const char *AliTRDrawStreamOld::DumpSMInfo(const struct AliTRDrawSM *sm)\r
-{\r
-  //\r
-  // Get SM structure into a const char\r
-  //\r
-  return Form("[ SM Info 0x%08x] : Hsize %d TrackletEnable %d Stacks %d %d %d %d %d",\r
-              *sm->fPos, sm->fHeaderSize, sm->fTrackletEnable,\r
-              sm->fStackActive[0], sm->fStackActive[1], sm->fStackActive[2],\r
-              sm->fStackActive[3], sm->fStackActive[4]);      \r
-}\r
-\r
-//--------------------------------------------------------\r
-void AliTRDrawStreamOld::DecodeStackInfo(const UInt_t *word, struct AliTRDrawStack *st) const\r
-{\r
-  //\r
-  // Decode Stack #i Index Word\r
-  // The Stack #i Index Word is a 32-Bit word wit following structure\r
-  // ssssssss ssssssss vvvv mmmm mmmmmmmm\r
-  // s: Size of the Stack #i Header, v: Supermodule Header Version, m: Link Mask\r
-  //\r
-  st->fPos = (UInt_t*)word;\r
-      \r
-  UInt_t vword = *word;\r
-  st->fHeaderSize = STACK_HEADER_SIZE(vword);\r
-\r
-  UInt_t linkMask = STACK_LINK_WORD(vword);\r
-  st->fActiveLinks = 0;\r
-  for (Int_t i = 0; i < 12; i++) {\r
-     if (IS_BIT_SET(linkMask,i) > 0) {\r
-       st->fLinksActive[i] = kTRUE;\r
-       st->fActiveLinks++;\r
-     }\r
-     else {\r
-       st->fLinksActive[i] = kFALSE;\r
-     }\r
-  }\r
-}\r
-  \r
-//--------------------------------------------------------\r
-void AliTRDrawStreamOld::DecodeStackHeader(const UInt_t *word, struct AliTRDrawStack *st, Int_t iword) const\r
-{\r
-  //\r
-  // decode gtu header for stack info\r
-  //\r
-  st->fPos = (UInt_t*)word;\r
-     \r
-  UInt_t vword = *word;\r
-  st->fLinksDataType[2*iword]    = LINK0_DATA_TYPE_FLAG(vword);\r
-  st->fLinksMonitor[2*iword]     = LINK0_MONITOR_FLAG(vword);\r
-  st->fLinksDataType[2*iword+1]  = LINK1_DATA_TYPE_FLAG(vword);\r
-  st->fLinksMonitor[2*iword+1]   = LINK1_MONITOR_FLAG(vword);\r
-}\r
-\r
-//--------------------------------------------------------\r
-const char *AliTRDrawStreamOld::DumpStackInfo(const struct AliTRDrawStack *st)\r
-{\r
-  //\r
-  // format the string with the stack info\r
-  //\r
-\r
-  return Form("[ Stack Info 0x%08x ] : Hsize %d Links Active %d %d %d %d %d %d %d %d %d %d %d %d",\r
-              *st->fPos, st->fHeaderSize,\r
-              st->fLinksActive[0], st->fLinksActive[1], st->fLinksActive[2], st->fLinksActive[3],\r
-              st->fLinksActive[4], st->fLinksActive[5], st->fLinksActive[6], st->fLinksActive[7],\r
-              st->fLinksActive[8], st->fLinksActive[9], st->fLinksActive[10], st->fLinksActive[11]);\r
-}\r
-\r
-//--------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::DecodeHCwordH0(const UInt_t *word, struct AliTRDrawHC *hc) const\r
-{\r
-  //\r
-  // decode the hc header word 0\r
-  //\r
-  UInt_t vword = *word;\r
-  hc->fPos[0] = (UInt_t*)word;\r
-\r
-  hc->fH0Corrupted = HC_HEADER_MASK_ERR(vword);\r
-  if (hc->fH0Corrupted > 0) {\r
-    if (fgDebugFlag) AliDebug(11,Form("H0 Header Mask Error. Word 0x%p", *fHC->fPos));\r
-    return kFALSE;\r
-  }\r
-\r
-  hc->fSpecialRawV =  HC_SPECIAL_RAW_VERSION(vword);\r
-  hc->fRawVMajor = HC_MAJOR_RAW_VERSION(vword);\r
-  hc->fRawVMajorOpt = HC_MAJOR_RAW_VERSION_OPT(vword); \r
-  hc->fRawVMinor = HC_MINOR_RAW_VERSION(vword);\r
-  hc->fNExtraWords = HC_EXTRA_WORDS(vword);\r
-  hc->fDCSboard = HC_DCS_BOARD(vword);\r
-  hc->fSM = HC_SM_NUMBER(vword);\r
-  hc->fStack = HC_STACK_NUMBER(vword);\r
-  hc->fLayer = HC_LAYER_NUMBER(vword);\r
-  hc->fSide = HC_SIDE_NUMBER(vword);\r
-\r
-\r
-  return kTRUE;\r
-}\r
-\r
-//--------------------------------------------------------\r
-Bool_t AliTRDrawStreamOld::DecodeHCwordH1(const UInt_t *word, struct AliTRDrawHC *hc) const\r
-{\r
-  //\r
-  // decode the hc header word 1\r
-  //\r
-  UInt_t vword = *word;\r
-\r
-  hc->fH1Corrupted = HC_HEADER_MASK_ERR(vword);\r
-  if (hc->fH1Corrupted > 0) {\r
-    if (fgDebugFlag) AliDebug(11,Form("H1 Header Mask Error. Word 0x%p", *fHC->fPos));\r
-    return kFALSE;\r
-  }\r
-\r
-  hc->fTimeBins = HC_NTIMEBINS(vword);\r
-  hc->fBunchCrossCounter = HC_BUNCH_CROSS_COUNTER(vword);\r
-  hc->fPreTriggerCounter = HC_PRETRIGGER_COUNTER(vword);\r
-  hc->fPreTriggerPhase = HC_PRETRIGGER_PHASE(vword);\r
-\r
-  hc->fPos[1] = (UInt_t*)word;\r
-\r
-  return kTRUE;\r
-}\r
-  \r
-//--------------------------------------------------------\r
-const char *AliTRDrawStreamOld::DumpHCinfoH0(const struct AliTRDrawHC *hc)\r
-{\r
-  //\r
-  // dump the hc header word 0\r
-  //\r
-  if (!hc)\r
-    return Form("Unable to dump. Null received as parameter!?!");\r
-  else\r
-    return Form("[ HC[0] at 0x%p ] : 0x%08x Info is : RawV %d SM %d Stack %d Layer %d Side %d DCSboard %d",\r
-                hc->fPos[0], (hc->fPos[0]) ? *(hc->fPos[0]) : 0, hc->fRawVMajor, \r
-                fRawReader->GetEquipmentId()-1024, hc->fStack, hc->fLayer, hc->fSide, hc->fDCSboard);\r
-}\r
-\r
-//--------------------------------------------------------\r
-const char *AliTRDrawStreamOld::DumpHCinfoH1(const struct AliTRDrawHC *hc)\r
-{\r
-  //\r
-  // dump the hc header word 1\r
-  //\r
-  if (!hc)\r
-    return Form("Unable to dump. Null received as parameter!?!");\r
-  else\r
-    return Form("[ HC[1] at 0x%p ] : 0x%08x Info is : TBins %d BCcount %d PreTrigCount %d PreTrigPhase %d",\r
-                hc->fPos[1], (hc->fPos[1]) ? *(hc->fPos[1]) : 0, hc->fTimeBins, hc->fBunchCrossCounter, hc->fPreTriggerCounter, hc->fPreTriggerPhase);\r
-}\r
-\r
-//--------------------------------------------------------\r
-void AliTRDrawStreamOld::DecodeMCMheader(const UInt_t *word, struct AliTRDrawMCM *mcm) const\r
-{\r
-  //\r
-  // decode the mcm header\r
-  //\r
-  UInt_t vword = *word;\r
-\r
-  if (vword == END_OF_TRACKLET_MARKERNEW) {\r
-    if (fWarnError) AliError(Form("There should be MCM header. We meet END_OF_TRACKLET_MARKER 0x%08x",vword));\r
-    mcm->fMCMhdCorrupted += 16;\r
-    fHC->fCorrupted += 16; //to finish data reading of this HC\r
-  }\r
-\r
-  mcm->fMCMhdCorrupted = MCM_HEADER_MASK_ERR(vword); //if MCM header mask has error\r
-  if (fgDebugFlag && mcm->fMCMhdCorrupted != 0) AliDebug(11,Form("Wrong MCM header mask 0x%08x.\n", *fpPos));\r
-\r
-  mcm->fROB = MCM_ROB_NUMBER(vword);\r
-  mcm->fMCM = MCM_MCM_NUMBER(vword);\r
-  mcm->fEvCounter = MCM_EVENT_COUNTER(vword);\r
-  mcm->fPos = (UInt_t*)word;\r
-}\r
-\r
-//--------------------------------------------------------\r
-UInt_t AliTRDrawStreamOld::GetMCMadcMask(const UInt_t *word, struct AliTRDrawMCM *mcm) const\r
-{\r
-  //\r
-  // get the adc mask\r
-  //\r
-  UInt_t vword = *word;\r
-\r
-  mcm->fADCmax    = 0;\r
-  mcm->fADCMask   = 0;\r
-  mcm->fADCcount  = 0;\r
-  mcm->fADCMaskWord = vword;\r
-\r
-  if (vword == END_OF_TRACKLET_MARKERNEW) {\r
-    if (fWarnError) AliError(Form("There should be MCMadcMask. We meet END_OF_TRACKLET_MARKER 0x%08x",vword));\r
-    mcm->fADCmaskCorrupted += 16;\r
-    fHC->fCorrupted += 16; //to finish data reading of this HC\r
-  }\r
-\r
-  if ( MCM_ADCMASK_MASK_ERR(vword) == 0 ) {\r
-    mcm->fADCMask  = MCM_ADCMASK_VAL(vword);\r
-    mcm->fADCcount = MCM_ADCMASK_NADC(~vword);\r
-  }\r
-  else {\r
-    mcm->fADCMask = 0xffffffff;\r
-    mcm->fADCmaskCorrupted = 1; // mcm adc mask error\r
-    if (fgDebugFlag) AliDebug(11,Form("Wrong ADC Mask word 0x%08x.\n", *fpPos));\r
-  }\r
-\r
-  return mcm->fADCMask;\r
-}\r
-\r
-//--------------------------------------------------------\r
-void AliTRDrawStreamOld::DecodeMask(const UInt_t *word, struct AliTRDrawMCM *mcm) const\r
-{\r
-  //\r
-  // decode the adc mask - adcs to be read out\r
-  //\r
-  mcm->fSingleADCwords = 0;\r
-  mcm->fADCmax = 0;\r
-  mcm->fADCMask = GetMCMadcMask(word, mcm);\r
-\r
-  if (mcm->fADCMask > 0) {\r
-    for (Int_t i = 0; i < TRDMAXADC; i++) {\r
-       mcm->fADCchannel[mcm->fADCmax] = 0;\r
-       if ( IS_BIT_SET(mcm->fADCMask,i) ) {\r
-         mcm->fADCchannel[mcm->fADCmax] = i;\r
-         mcm->fADCmax++;\r
-       }\r
-    }\r
-  }\r
-  if (mcm->fADCcount != mcm->fADCmax && fHC->fRawVMajor >= 32) { // backward compatibility\r
-    mcm->fADCmaskCorrupted += 2; \r
-    if (fgDebugFlag) AliDebug(11,Form("ADC counts from ADCMask are different %d %d : ADCMask word 0x%08x\n", mcm->fADCcount, mcm->fADCmax, *fMCM->fPos));\r
-  }\r
-}\r
-\r
-//--------------------------------------------------------\r
-void AliTRDrawStreamOld::MCMADCwordsWithTbins(UInt_t fTbins, struct AliTRDrawMCM *mcm) const\r
-{\r
-  //\r
-  //  count the expected mcm words for a given tbins\r
-  //\r
-  mcm->fSingleADCwords = 0;\r
-  mcm->fSingleADCwords = (fTbins-1)/3+1;\r
-  if (fTbins > 32) mcm->fSingleADCwords = 10; // if the timebin is more than 30, then fix the number of adc words to 10\r
-}\r
-  \r
-//--------------------------------------------------------\r
-const char *AliTRDrawStreamOld::DumpMCMinfo(const struct AliTRDrawMCM *mcm)\r
-{\r
-  //\r
-  // mcm info in a string\r
-  //\r
-  if (!mcm)\r
-    return Form("Unable to dump. Null received as parameter!?!");\r
-  else\r
-    return Form("[ MCM 0x%08x ] : ROB %d MCM %d EvCounter %d", *(mcm->fPos), mcm->fROB, mcm->fMCM, mcm->fEvCounter);\r
-}\r
-  \r
-//--------------------------------------------------------\r
-const char *AliTRDrawStreamOld::DumpMCMadcMask(const struct AliTRDrawMCM *mcm)\r
-{\r
-  //\r
-  // mcm adc mask in a string\r
-  //\r
-  if (!mcm)\r
-    return Form("Unable to dump. Null received as parameter!?!");\r
-\r
-  TString tsreturn = Form("[Word] : 0x%08x => [Mask] : 0x%08x : ", mcm->fADCMaskWord, mcm->fADCMask);\r
-  for (Int_t i = 0; i < TRDMAXADC; i++) {\r
-     tsreturn += Form("%d ", mcm->fADCchannel[i]);\r
-  }\r
-  tsreturn += "";\r
-  return tsreturn.Data();\r
-}\r
-\r
diff --git a/TRD/AliTRDrawStreamOld.h b/TRD/AliTRDrawStreamOld.h
deleted file mode 100644 (file)
index 6a0f455..0000000
+++ /dev/null
@@ -1,701 +0,0 @@
-#ifndef ALITRDRAWSTREAMOLD_H\r
-#define ALITRDRAWSTREAMOLD_H\r
-\r
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
- * See cxx source for full Copyright notice                               */\r
-\r
-/* $Id: AliTRDrawStreamOld.h 27696 2008-07-31 09:18:53Z cblume $ */\r
-\r
-///////////////////////////////////////////////////////////////////////////////\r
-//                                                                           //\r
-// This class provides access to TRD digits in raw data.                     //\r
-//                                                                           //\r
-///////////////////////////////////////////////////////////////////////////////\r
-\r
-#include "TObject.h"\r
-\r
-class AliTRDgeometry;\r
-class AliRawReader;\r
-class AliTRDdigitsManager;\r
-class TTreeSRedirector;\r
-class AliTRDfeeParam;\r
-\r
-#define TRDMAXTBINS       63\r
-#define TRDMAXADC         21\r
-#define TRDMAXMCM         4 * 16\r
-#define MAXTRACKLETSPERHC 256\r
-\r
-class AliTRDrawStreamOld : public TObject\r
-{ // class def begin\r
-\r
- public:\r
-    \r
-  //--------------------------------------------------------\r
-  // THE STRUCTURES\r
-  //--------------------------------------------------------\r
-\r
-  struct AliTRDrawADC\r
-  {//adc struct\r
-\r
-    UInt_t             *fPos;                    //! position of ADC 1st word in the buffer\r
-    Short_t             fADCnumber;              // number of the ADC 0 .. 20\r
-    Short_t             fExtendedCOL;            // column - row from MCM\r
-    Short_t             fCOL;                    // column - row from MCM\r
-    Int_t               fSignals[TRDMAXTBINS];   // signals for this adc\r
-    Bool_t              fIsShared;               // is pad chared between MCMs\r
-    Short_t             fCorrupted;              // is adc word corrupted\r
-\r
-    AliTRDrawADC()\r
-      : fPos(0)\r
-      , fADCnumber(0)\r
-      , fExtendedCOL(0)\r
-      , fCOL(0)\r
-      , fSignals()\r
-      , fIsShared(kFALSE)\r
-      , fCorrupted(0)\r
-    {\r
-      // default constructor\r
-    };\r
-\r
-    AliTRDrawADC(const AliTRDrawADC& p): \r
-        fPos(p.fPos)\r
-      , fADCnumber(p.fADCnumber)\r
-      , fExtendedCOL(p.fExtendedCOL)\r
-      , fCOL(p.fCOL)\r
-      , fSignals()\r
-      , fIsShared(p.fIsShared)\r
-      , fCorrupted(p.fCorrupted)\r
-    {\r
-      // copy constructor\r
-    };\r
-\r
-    AliTRDrawADC &operator=(const AliTRDrawADC &) \r
-    {\r
-      // assignment operator\r
-      // not implemented\r
-      return *this;\r
-    };\r
-\r
-  };\r
-  \r
-  //--------------------------------------------------------\r
-\r
-  struct AliTRDrawMCM\r
-  { // mcm struct\r
-    Int_t               fROB;                     // ROB number\r
-    Int_t               fMCM;                     // MCM number\r
-    Int_t               fROW;                     // row number filed during decoding\r
-      \r
-    UInt_t              fEvCounter;               // MCM event counter\r
-    UInt_t              fADCMask;                 // ADC mask\r
-    UInt_t              fADCMaskWord;             // word with ADC mask in\r
-    UInt_t              fADCchannel[TRDMAXADC]; // channels to be decoded accrording to ADC mask\r
-      \r
-    Int_t               fADCmax;                  // number of ADCs fired\r
-    Int_t               fADCcount;                // number of ADCs fired from double checking bit\r
-    Int_t               fSingleADCwords;          // n of words per ADC\r
-      \r
-    Int_t               fMCMhdCorrupted;          // is mcm header corrupted\r
-    Int_t               fADCmaskCorrupted;        // is mcm adc mask corrupted\r
-    Int_t               fCorrupted;               // is mcm data missing\r
-      \r
-    UInt_t             *fPos;                     //! position of mcm header in the buffer\r
-    UInt_t             *fAdcDataPos;              //! start of ADC data for this mcm\r
-\r
-    Int_t               fADCcounter;              // count the adcs decoded\r
-    AliTRDrawADC        fADCs[TRDMAXADC];       // 21 adcs\r
-      \r
-    AliTRDrawMCM()\r
-      : fROB(-1)\r
-      , fMCM(-1)\r
-      , fROW(-1)\r
-      , fEvCounter(0)\r
-      , fADCMask(0)\r
-      , fADCMaskWord(0)\r
-      , fADCchannel()      \r
-      , fADCmax(0)\r
-      , fADCcount(0)\r
-      , fSingleADCwords(0)\r
-      , fMCMhdCorrupted(0)      \r
-      , fADCmaskCorrupted(0)      \r
-      , fCorrupted(0)      \r
-      , fPos(0)\r
-      , fAdcDataPos(0)\r
-      , fADCcounter(0)\r
-      , fADCs()\r
-    {\r
-      // default constructor\r
-    };\r
-\r
-    AliTRDrawMCM(const AliTRDrawMCM & p):\r
-        fROB(p.fROB)\r
-      , fMCM(p.fMCM)\r
-      , fROW(p.fROW)\r
-      , fEvCounter(p.fEvCounter)\r
-      , fADCMask(p.fADCMask)\r
-      , fADCMaskWord(p.fADCMaskWord)\r
-      , fADCchannel()      \r
-      , fADCmax(p.fADCmax)\r
-      , fADCcount(p.fADCcount)\r
-      , fSingleADCwords(p.fSingleADCwords)\r
-      , fMCMhdCorrupted(p.fMCMhdCorrupted)      \r
-      , fADCmaskCorrupted(p.fADCmaskCorrupted)      \r
-      , fCorrupted(p.fCorrupted)      \r
-      , fPos(p.fPos)\r
-      , fAdcDataPos(p.fAdcDataPos)\r
-      , fADCcounter(p.fADCcounter)\r
-      , fADCs()\r
-    {\r
-      // copy constructor\r
-    };\r
-\r
-    AliTRDrawMCM &operator=(const AliTRDrawMCM &)\r
-    {\r
-      // assignment operator\r
-      // not implemented\r
-      return *this;\r
-    };\r
-\r
-  };\r
-\r
-  //--------------------------------------------------------\r
-\r
-  struct AliTRDrawHC\r
-  { // hc struct\r
-      \r
-    //tacklet words of given HC\r
-    UInt_t              fTrackletWords[MAXTRACKLETSPERHC]; // array to keep tracklet words [mj]\r
-    Short_t             fTrackletError;                      // tracklet error \r
-    Short_t             fNTracklets;                    // number of tracklet  \r
-\r
-    // header word 0\r
-    Int_t               fSpecialRawV;       // Raw data version\r
-    Int_t               fRawVMajor;         // Raw data version\r
-    Int_t               fRawVMajorOpt;      // Raw data version\r
-    Int_t               fRawVMinor;         // Raw data version\r
-    Int_t               fNExtraWords;       // N extra HC header words\r
-    Int_t               fDCSboard;          // DCS board number\r
-    Int_t               fSM;                // Super Module number\r
-    Int_t               fStack;             // Stack number (some people might call it a chamber)\r
-    Int_t               fLayer;             // Layer number (some people might call it a plane)\r
-    Int_t               fSide;              // Side of HC\r
-      \r
-    // header word 1\r
-    Int_t               fTimeBins;          // N of t bins\r
-    UInt_t              fBunchCrossCounter; // Bunch crossing counter\r
-    UInt_t              fPreTriggerCounter; // Pre Trigger counter\r
-    UInt_t              fPreTriggerPhase;   // Pre Trigger phase\r
-      \r
-    // error \r
-    Int_t               fH0Corrupted;       // is hc header 0 corrupted \r
-    Int_t               fH1Corrupted;       // is hc header 1 corrupted\r
-    Int_t               fCorrupted;         // is hc data corrupted \r
-\r
-    UInt_t             *fPos[2];            //! position of the header words in buffer\r
-      \r
-    Int_t               fDET;               // filled while decoding\r
-    Int_t               fROC;               // filled while decoding\r
-    Int_t               fRowMax;            // filled while decoding\r
-    Int_t               fColMax;            // filled while decoding\r
-\r
-    // hc data\r
-    Int_t               fMCMmax;            // number of mcm found\r
-    AliTRDrawMCM        fMCMs[TRDMAXMCM]; // 4 ROBS 16 each \r
-\r
-    AliTRDrawHC()\r
-      : fTrackletWords() //[mj]\r
-      , fTrackletError(0)\r
-      , fNTracklets(0)\r
-      , fSpecialRawV(0)\r
-      , fRawVMajor(0)\r
-      , fRawVMajorOpt(0)\r
-      , fRawVMinor(0)\r
-      , fNExtraWords(0)\r
-      , fDCSboard(-1)\r
-      , fSM(-1)\r
-      , fStack(-1)\r
-      , fLayer(-1)\r
-      , fSide(-1)\r
-      , fTimeBins(0)\r
-      , fBunchCrossCounter(0)\r
-      , fPreTriggerCounter(0)\r
-      , fPreTriggerPhase(0)\r
-      , fH0Corrupted(0)\r
-      , fH1Corrupted(0)\r
-      , fCorrupted(0)\r
-      , fPos()\r
-      , fDET(-1)\r
-      , fROC(-1)\r
-      , fRowMax(-1)\r
-      , fColMax(-1)\r
-      , fMCMmax(0)\r
-      , fMCMs()\r
-    {\r
-      // default constructor hc info \r
-    };\r
-\r
-    AliTRDrawHC(const AliTRDrawHC & p):\r
-        fTrackletWords() //[mj]\r
-      , fTrackletError(p.fTrackletError)\r
-      , fNTracklets(p.fNTracklets)\r
-      , fSpecialRawV(p.fSpecialRawV)\r
-      , fRawVMajor(p.fRawVMajor)\r
-      , fRawVMajorOpt(p.fRawVMajorOpt)\r
-      , fRawVMinor(p.fRawVMinor)\r
-      , fNExtraWords(p.fNExtraWords)\r
-      , fDCSboard(p.fDCSboard)\r
-      , fSM(p.fSM)\r
-      , fStack(p.fStack)\r
-      , fLayer(p.fLayer)\r
-      , fSide(p.fSide)\r
-      , fTimeBins(p.fTimeBins)\r
-      , fBunchCrossCounter(p.fBunchCrossCounter)\r
-      , fPreTriggerCounter(p.fPreTriggerCounter)\r
-      , fPreTriggerPhase(p.fPreTriggerPhase)\r
-      , fH0Corrupted(p.fH0Corrupted)\r
-      , fH1Corrupted(p.fH1Corrupted)\r
-      , fCorrupted(p.fCorrupted)\r
-      , fPos()\r
-      , fDET(p.fDET)\r
-      , fROC(p.fROC)\r
-      , fRowMax(p.fRowMax)\r
-      , fColMax(p.fColMax)\r
-      , fMCMmax(p.fMCMmax)\r
-      , fMCMs()\r
-    {\r
-      // copy constructor\r
-    };\r
-\r
-    AliTRDrawHC &operator=(const AliTRDrawHC &)\r
-    {\r
-      // assignment operator\r
-      // not implemented\r
-      return *this;\r
-    };\r
-\r
-  };\r
-\r
-  //--------------------------------------------------------\r
-    \r
-  struct AliTRDrawStack\r
-  {\r
-    UInt_t           fHeaderSize;            // header size of the stack info\r
-    Bool_t           fLinksActive[12];       // data links active - 1 per half chamber\r
-    Short_t          fLinksDataType[12];     // 0 indicating real data for the front-end electronics \r
-    Short_t          fLinksMonitor[12];      // 0 indicating properly operating link \r
-    Short_t          fLinkMonitorError[12];  // record link monitor error\r
-    Int_t            fActiveLinks;           // number of active links\r
-    UInt_t          *fPos;                   //! position in the buffer\r
-                   \r
-    AliTRDrawHC      fHalfChambers[12];      // 12 half chambers in a stack\r
-      \r
-    AliTRDrawStack()\r
-      : fHeaderSize(0)\r
-      , fLinksActive()\r
-      , fLinksDataType()\r
-      , fLinksMonitor()\r
-      , fLinkMonitorError()\r
-      , fActiveLinks(0)\r
-      , fPos(0)\r
-      , fHalfChambers()\r
-    {\r
-      // default constructor\r
-    };      \r
-\r
-    AliTRDrawStack(const AliTRDrawStack & p):\r
-        fHeaderSize(p.fHeaderSize)\r
-      , fLinksActive()\r
-      , fLinksDataType()\r
-      , fLinksMonitor()\r
-      , fLinkMonitorError()\r
-      , fActiveLinks(p.fActiveLinks)\r
-      , fPos(p.fPos)\r
-      , fHalfChambers()\r
-    {\r
-      // copy constructor\r
-    };\r
-\r
-    AliTRDrawStack &operator=(const AliTRDrawStack &)\r
-    {\r
-      // assignment operator\r
-      // not implemented\r
-      return *this;\r
-    };\r
-\r
-  };\r
-\r
-  //--------------------------------------------------------\r
-\r
-  struct AliTRDrawSM\r
-  {\r
-    UInt_t            fHeaderSize;            // size of the header in words\r
-    Bool_t            fTrackletEnable;        // tracklet enable bit\r
-    Bool_t            fStackActive[5];        // map of active/expected stacks\r
-    Int_t             fActiveStacks;          // number of active stacks\r
-    Int_t             fCorrupted;             // is sm info corrupted\r
-    Int_t             fNexpectedHalfChambers; // number of half chambers to be read out in this sm\r
-    Bool_t            fClean;                 // true if everything went OK - false is some error occured\r
-    UInt_t           *fPos;                   // location of the sm info - should be the first word (after CDH if not DDL buffer)\r
-\r
-    AliTRDrawStack    fStacks[5];             // objects for 5 stacks\r
-\r
-    AliTRDrawSM()\r
-      : fHeaderSize(0)\r
-      , fTrackletEnable(0)\r
-      , fStackActive()\r
-      , fActiveStacks(0)\r
-      , fCorrupted(0)\r
-      , fNexpectedHalfChambers(0)\r
-      , fClean(kTRUE)\r
-      , fPos(0)\r
-      , fStacks()\r
-    {\r
-           // Default constructor\r
-    };      \r
-\r
-    AliTRDrawSM(const AliTRDrawSM & p):\r
-        fHeaderSize(p.fHeaderSize)\r
-      , fTrackletEnable(p.fTrackletEnable)\r
-      , fStackActive()\r
-      , fActiveStacks(p.fActiveStacks)\r
-      , fCorrupted(p.fCorrupted)\r
-      , fNexpectedHalfChambers(p.fNexpectedHalfChambers)\r
-      , fClean(p.fClean)\r
-      , fPos(p.fPos)\r
-      , fStacks()\r
-    {\r
-      // copy constructor\r
-    };\r
-\r
-    AliTRDrawSM &operator=(const AliTRDrawSM &)\r
-    {\r
-      // assignment operator\r
-      // not implemented\r
-      return *this;\r
-    };\r
-\r
-  };\r
-  \r
-  //--------------------------------------------------------\r
-     \r
-  AliTRDrawStreamOld();\r
-  AliTRDrawStreamOld(AliRawReader *rawReader);\r
-  virtual ~AliTRDrawStreamOld();\r
-\r
-  //--------------------------------------------------------\r
-\r
-  virtual Bool_t       Next();                           // read the next data in the memory\r
-  //virtual Int_t      NextChamber(AliTRDdigitsManager *man); // read next chamber data in the momory\r
-  virtual Int_t        NextChamber(AliTRDdigitsManager *man, UInt_t **trackletContainer, UShort_t **/*errorCodeContainer*/=NULL); // read next chamber data in the memory\r
-  virtual Bool_t       Init();                           // initialize some internal variables\r
-\r
-  Int_t    NextBuffer(); // go and init next buffer if available - check the implementation file for return values\r
-\r
-  Bool_t   SetRawVersion(Int_t fraw); // set the raw version - used for backward compat.\r
-  \r
-  Bool_t   IsCurrentPadShared() const {return fADC->fIsShared;} // is current pad shared between mcms\r
-  void     SetSharedPadReadout(Bool_t fv) {fSharedPadsOn = fv;} // set the flag on if the reader should return the shared pads\r
-  \r
-  Bool_t   DecodeSM(void *buffer, UInt_t length); // decode a buffer\r
-  Int_t    DecodeSM();                            // used with raw reader\r
-  Int_t    DecodeSM(AliRawReader *reader);        // used with raw reader\r
-          \r
-  Bool_t   SetReader(AliRawReader *reader); // set the raw reader to use\r
-  void     SetNoErrorWarning() {fWarnError = kFALSE;} // disable warning and error info\r
-          \r
-  // info from Supermodule Index Word\r
-  Bool_t    IsTrackletEnableBitSet() const {return fSM.fTrackletEnable;} // get status of tracklet enable bit\r
-  Bool_t    IsStackActive(Int_t is) const {return fSM.fStackActive[is];} // get status of stack enable bit\r
-  Int_t     GetNofActiveStacks() const {return fSM.fActiveStacks;}       // get number of active stacks from stack mask\r
-  UInt_t   *GetGTUheaderWords() const {return fSM.fPos;}       // get number of active stacks from stack mask\r
-\r
-  // info from Stack Index Word\r
-  Int_t     GetNexpectedHalfChambers() const {return fSM.fNexpectedHalfChambers;}                    // get number of expected HC in a sm\r
-  Int_t     GetNofActiveLinksInStack(Int_t is) const {return fSM.fStacks[is].fActiveLinks;}          // get number of active links in a stack\r
-  Bool_t    IsLinkActiveInStack(Int_t is, Int_t il) const {return fSM.fStacks[is].fLinksActive[il];} // check whether the link is active\r
-\r
-  // info from Stack Header Word\r
-  Short_t    GetLinkMonitorError(Int_t is, Int_t il) const {return fSM.fStacks[is].fLinkMonitorError[il];} // get link monitor error\r
-\r
-  // info from Tracklet Data\r
-  Int_t     GetTrackletErrorCode(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fTrackletError;}\r
-  Int_t     GetNTracklets(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fNTracklets;} // get number of tracklets \r
-\r
-  // info from HC Header Word\r
-  Int_t     GetSM(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fSM;}\r
-  Int_t     GetLayer(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fLayer;}\r
-  Int_t     GetStack(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fStack;}\r
-  Int_t     GetSide(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fSide;}\r
-  Int_t     GetH0ErrorCode(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fH0Corrupted;}\r
-  Int_t     GetH1ErrorCode(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fH1Corrupted;}\r
-  Int_t     GetNumberOfTimeBins(Int_t is, Int_t il) const { return fSM.fStacks[is].fHalfChambers[il].fTimeBins;}\r
-  UInt_t   *GetTrackletWords(Int_t is, Int_t il) { return fSM.fStacks[is].fHalfChambers[il].fTrackletWords;}\r
-\r
-  // info from HC data\r
-  Int_t     GetHCErrorCode(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fCorrupted;}\r
-  Int_t     GetHCMCMmax(Int_t is, Int_t il) const {return fSM.fStacks[is].fHalfChambers[il].fMCMmax;}\r
-\r
-  // from MCM Header Word\r
-  // rob and mcm ordering\r
-  // side 0(even link) - ROB: 0 2 4 6  MCM: 12 13 14 15 8 9 10 11 4 5 6 7 0 1 2 3  \r
-  // side 1( odd link) - ROB: 1 3 5 7  MCM: 12 13 14 15 8 9 10 11 4 5 6 7 0 1 2 3  \r
-  Int_t     GetMCM(Int_t stack, Int_t link, Int_t mcm) const {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fMCM;}\r
-  Int_t     GetROB(Int_t stack, Int_t link, Int_t mcm) const {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fROB;}\r
-  Int_t     GetMCMhdErrorCode(Int_t stack, Int_t link, Int_t mcm) const {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fMCMhdCorrupted;}\r
-  Int_t     GetMCMADCMaskErrorCode(Int_t stack, Int_t link, Int_t mcm) const {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fADCmaskCorrupted;}\r
-  Int_t     GetEventNumber(Int_t stack, Int_t link, Int_t mcm) const {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fEvCounter;}\r
-  Int_t     GetADCcount(Int_t stack, Int_t link, Int_t mcm) const {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fADCcount;}\r
-\r
-  // info from MCM data words\r
-  Int_t     GetMCMErrorCode(Int_t stack, Int_t link, Int_t mcm) const {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fCorrupted;} // get MCM data error code\r
-  Int_t     GetADCErrorCode(Int_t stack, Int_t link, Int_t mcm, Int_t adc) const {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fADCs[adc].fCorrupted;} // get ADC error code\r
-  Int_t     GetADCnumber(Int_t stack, Int_t link, Int_t mcm, Int_t adc) const {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fADCs[adc].fADCnumber;} // get ADC error code\r
-\r
-  Int_t     GetRow(Int_t stack, Int_t link, Int_t mcm) const {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fROW;}         // get current row number\r
-  Int_t     GetCol(Int_t stack, Int_t link, Int_t mcm, Int_t adc) const {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fADCs[adc].fCOL;}         // get current column number\r
-  Int_t     GetExtendedCol(Int_t stack, Int_t link, Int_t mcm, Int_t adc) const {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fADCs[adc].fExtendedCOL;}         // get current column number\r
-\r
-  // info from ADC data words\r
-  Int_t    *GetSignalDirect(Int_t stack, Int_t link, Int_t mcm, Int_t adc) {return fSM.fStacks[stack].fHalfChambers[link].fMCMs[mcm].fADCs[adc].fSignals;}\r
-\r
-\r
-  // from here, only works with returning ADC channel pointer using Next() \r
-  UInt_t   *GetTrackletWords() const { return fHC->fTrackletWords;}                 // return tracklet words pointer per hc [mj]\r
-  Int_t     GetTrackletErrorCode() const {return fHC ? fHC->fTrackletError : -1;}   // get tracklet error code\r
-  Int_t     GetNTracklets() const {return fHC ? fHC->fNTracklets : -1;}             // get number of tracklets \r
-\r
-  Int_t     GetSpecialRawVersion() const {return fHC ? fHC->fSpecialRawV : -1;}     // return special raw version\r
-  Int_t     GetMajorRawVersion() const {return fHC ? fHC->fRawVMajor : -1;}         // major raw version getter\r
-  Int_t     GetRawVersion() const {return fHC ? fHC->fRawVMajor : -1;}              // compatibility see funtion above\r
-  Int_t     GetMinorRawVersion() const {return fHC ? fHC->fRawVMinor : -1;}         // minor raw version\r
-\r
-  Int_t     GetSM() const {return fHC ? fHC->fSM : -1;}                              //  SM Position of CURRENT half chamber in full TRD\r
-  Int_t     GetLayer() const {return fHC ? fHC->fLayer : -1;}                        //  Layer Position of CURRENT half chamber in full TRD\r
-  Int_t     GetStack() const {return fHC ? fHC->fStack : -1;}                        //  Stack Position of CURRENT half chamber in full TRD\r
-  Int_t     GetSide() const {return fHC ? fHC->fSide : -1;}                          // get side\r
-  Int_t     GetDCS() const { return fHC ? fHC->fDCSboard : -1;}                      //  DCS board number read from data (HC header)\r
-  Int_t     GetROC() const { return fHC ? fHC->fROC : -1;}                           //  ROB Position of CURRENT half chamber in full TRD\r
-  Int_t     GetNumberOfTimeBins() const { return fHC ? fHC->fTimeBins : 0;}          // Get Ntime bins\r
-  UInt_t    GetBunchCrossCounter() const {return fHC ? fHC->fBunchCrossCounter : 0;} // get bunch cross counter\r
-  UInt_t    GetPreTriggerCounter() const {return fHC ? fHC->fPreTriggerCounter : 0;} // get pre trigger info\r
-  UInt_t    GetPreTriggerPhase() const {return fHC ? fHC->fPreTriggerPhase : 0;}     // get trigger phase\r
-\r
-  Int_t     GetRow() const {return fMCM ? fMCM->fROW : -1;}         // get current row number\r
-  Int_t     GetExtendedCol() const {return fADC ? fADC->fExtendedCOL : -1;}         // get current column number\r
-  Int_t     GetCol() const {return fADC ? fADC->fCOL : -1;}         // get current column number\r
-  Int_t     GetRowMax() const { return fHC ? fHC->fRowMax : -1;}    // Get maximum rows in the current HC\r
-  Int_t     GetColMax() const { return fHC ? fHC->fColMax : -1;}    // Get maximum cols in the current HC\r
-  // compatibility\r
-  Int_t     GetMaxRow() const { return fHC ? fHC->fRowMax : -1;}    // Get maximum rows in the current HC\r
-  Int_t     GetMaxCol() const { return fHC ? fHC->fColMax : -1;}    // Get maximum cols in the current HC\r
-\r
-  UInt_t    GetHCword0() const {return fHC ? *fHC->fPos[0] : 0;}    // get the HC word 0\r
-  UInt_t    GetHCword1() const {return fHC ? *fHC->fPos[1] : 0;}    // get the HC word 1\r
-           \r
-  Int_t     GetDET() const {return fHC ? fHC->fDET : -1;}           // get current det number\r
-  Int_t     GetDet() const {return fHC ? fHC->fDET : -1;}           // get current det number\r
-           \r
-  Int_t     GetROB() const {return fMCM ? fMCM->fROB : -1;}         // get current ROB number\r
-  Int_t     GetMCM() const {return fMCM ? fMCM->fMCM : -1;}         // get current MCM number\r
-  Int_t     GetEventNumber() const { return fMCM->fEvCounter;}      //  MCM Event number and position of current MCM on TRD chamber\r
-\r
-  Int_t     GetADC() const { return fADC ? fADC->fADCnumber : -1;}  //  MCM ADC channel and Time Bin of word 1\r
-  Int_t     GetTimeBin() const { return 0;}                         //  MCM ADC channel and Time Bin of word 1\r
-  Int_t    *GetSignals() const { return fADC ? fADC->fSignals : (Int_t *)fgEmptySignals;} // signals in the n-time bins from data word\r
-\r
-  Int_t     GetHCErrorCode() const {return fHC ? fHC->fCorrupted : -1;}    // get HC error code\r
-  Int_t     GetH0ErrorCode() const {return fHC ? fHC->fH0Corrupted : -1;}  // get HC header word0 error code\r
-  Int_t     GetH1ErrorCode() const {return fHC ? fHC->fH1Corrupted : -1;}  // get HC header word1 error code\r
-  Int_t     GetMCMErrorCode() const {return fMCM ? fMCM->fCorrupted : -1;} // get MCM data error code\r
-  Int_t     GetADCErrorCode() const {return fADC ? fADC->fCorrupted : -1;} // get ADC data error code\r
-  Int_t     GetMCMhdErrorCode() const {return fMCM ? fMCM->fMCMhdCorrupted: -1;} // get MCM header word error code\r
-  Int_t     GetMCMADCMaskErrorCode() const {return fMCM ? fMCM->fADCmaskCorrupted: -1;} // get MCM adc mask error code\r
-\r
-  UInt_t   *GetSMstreamPosition() const {return fSM.fPos;} // get position of the SM index word in the buffer\r
-\r
-  Bool_t    IsSMbufferClean() const {return fSM.fClean;}   // is data clean\r
-\r
-  //----------------------------------------------------------\r
\r
-  static void    SetNoDebug() {fgDebugFlag = kFALSE;} // allow debug info\r
-  static void    EnableMemoryReset() {fgEnableMemoryReset = kTRUE;} // allow memory reset\r
-  static void    SetForceCleanDataOnly() {fgCleanDataOnly = kTRUE;} // clean data only\r
-  static void    AllowCorruptedData() {fgCleanDataOnly = kFALSE;} // accept corrupted data\r
-\r
-  static void    SetExtraWordsFix() {fgExtraSkip = kTRUE;} // extra skip of 24 32-bit words \r
-  static void    SetSkipCDH() {fgSkipCDH = kTRUE;} // skip of 8 32-bit words \r
-  static void    SetDumpHead(Int_t iv) {fgDumpHead = iv;}\r
-  static void    DisableStackNumberChecker() {fgStackNumberChecker = kFALSE;}  // set false to cleanroom data \r
-  static void    DisableStackLinkNumberChecker() {fgStackLinkNumberChecker = kFALSE;}  \r
-  static void    DisableSkipData() {fgSkipData = kFALSE;} // keep reading next words even previous words were corrupted - debugging purpose  \r
-  static void    SetDumpingEnable() {fgDumpingEnable = kTRUE;} \r
-  static void    SetDumpingMCM(Int_t sm, Int_t stack, Int_t layer, Int_t rob, Int_t mcm) {fgDumpingSM = sm; fgDumpingStack = stack; fgDumpingLayer = layer; fgDumpingROB = rob; fgDumpingMCM = mcm;}\r
-\r
-  // this is a temporary solution!\r
-  // baseline should come with the HC header word 2 (count from 0!)\r
-\r
-  static void    EnableDecodeConfigData() {fgEnableDecodeConfigData = kTRUE;} // allow configuration data decoding\r
-  static Bool_t  fgEnableDecodeConfigData; // flag to decode configuration data\r
-\r
-\r
-  //--------------------------------------------------------\r
-  // Decoding functions\r
-  //--------------------------------------------------------\r
-\r
-  void DecodeSMInfo(const UInt_t *word, struct AliTRDrawSM *sm) const ;\r
-  const char *DumpSMInfo(const struct AliTRDrawSM *sm);\r
-  void DecodeStackInfo(const UInt_t *word, struct AliTRDrawStack *st) const;\r
-  void DecodeStackHeader(const UInt_t *word, struct AliTRDrawStack *st, Int_t iword) const;\r
-  const char *DumpStackInfo(const struct AliTRDrawStack *st);\r
-  Bool_t DecodeHCwordH0(const UInt_t *word, struct AliTRDrawHC *hc) const;\r
-  Bool_t DecodeHCwordH1(const UInt_t *word, struct AliTRDrawHC *hc) const;\r
-  const char *DumpHCinfoH0(const struct AliTRDrawHC *hc);\r
-  const char *DumpHCinfoH1(const struct AliTRDrawHC *hc);\r
-  void DecodeMCMheader(const UInt_t *word, struct AliTRDrawMCM *mcm) const;\r
-  UInt_t GetMCMadcMask(const UInt_t *word, struct AliTRDrawMCM *mcm) const;\r
-  void DecodeMask(const UInt_t *word, struct AliTRDrawMCM *mcm) const;\r
-  void MCMADCwordsWithTbins(UInt_t fTbins, struct AliTRDrawMCM *mcm) const;\r
-  const char *DumpMCMinfo(const struct AliTRDrawMCM *mcm);\r
-  const char *DumpMCMadcMask(const struct AliTRDrawMCM *mcm);\r
-\r
-\r
- protected:\r
-\r
-  Bool_t InitBuffer(void *buffer, UInt_t length); // init the buffer - called by DecodeSM(void*, UInt_t)\r
-  Bool_t DumpWords(UInt_t *px, UInt_t iw, UInt_t marker = 0); // dump some words onto the screen\r
-\r
-  void   SwapOnEndian();         // swap if endian is BIG\r
-  Bool_t SkipWords(UInt_t iw);   // skip number of words\r
-  Bool_t DecodeGTUheader();      // decode data in GTU header\r
-  Bool_t DecodeTracklets();      // decode tracklets\r
-  Bool_t DecodeHC();             // decode data in HC\r
-\r
-  Bool_t DecodeADC();            // decode 10 ADC words\r
-  Bool_t DecodeADCExtended();    // decode TRAP data with ZS and more than 32 samples \r
-\r
-  Bool_t DecodeHCheader();       // decode HC  header\r
-  Bool_t SeekEndOfData();        // go to next end of raw data marker (actually 1 word after)\r
-  Bool_t SkipMCMdata(UInt_t iw);  // skip this mcm data due to mcm header corruption\r
-  Bool_t SeekNextMCMheader();    // go to next mcm header\r
-  Bool_t DecodeMCMheader();      // decode mcm header\r
-\r
-  Bool_t IsRowValid();       // check if row within the range\r
-  Bool_t IsHCheaderOK();     // check if current hc header data make sense\r
-  Bool_t IsMCMheaderOK();    // check if current mcm header data make sense\r
-    \r
-  void   ResetCounters();    // reset some counters\r
-  void   ResetIterators();   // needed for Next()\r
-  void   ResetPerSM();       // reset every SM \r
-  void   ResetPerStack();    // reset every Stack \r
-  void   ResetPerHC();       // reset every HC \r
-  void   ResetPerMCM();      // reset every MCM  \r
-  void   ResetPerADC();      // reset every ADC  \r
-  void   ResetMemory();      // reset all data members\r
-\r
-  AliTRDrawStreamOld(const AliTRDrawStreamOld& st);\r
-  AliTRDrawStreamOld &operator=(const AliTRDrawStreamOld &);\r
-\r
-  // ----------------- DATA MEMBERS START\r
-\r
-  struct AliTRDrawSM       fSM;    // one SM per buffer\r
-  struct AliTRDrawStack   *fStack; //! pointer to the current stack\r
-  struct AliTRDrawHC      *fHC;    //! current HC\r
-  struct AliTRDrawHC      *fLastHC; //! last HC\r
-  struct AliTRDrawMCM     *fMCM;   //! current MCM\r
-  struct AliTRDrawADC     *fADC;   //! current ADC\r
-  \r
-  UInt_t *fpPos;   // current position in the buffer\r
-  UInt_t *fpBegin; // begin - pointer to the buffer word 0\r
-  UInt_t *fpEnd;   // end of the buffer\r
-\r
-  UInt_t  fWordLength;  // length of the buffer in 32bit words\r
-\r
-  Int_t   fStackNumber;     // current stack number\r
-  Int_t   fStackLinkNumber; // current link in the stack\r
-\r
-  Int_t   fhcMCMcounter;    // mcm counter inside single hc - used in Next()  \r
-  Int_t   fmcmADCcounter;   // adc counrer inside single adc - used in Next() \r
-\r
-  Int_t   fLinkTrackletCounter; // count the tracklets in the current HC\r
-  Int_t   fEndOfTrackletCount;  // count link by link (hc by hc) used for debug\r
-  Int_t   fNWordsCounter;       // counts words of given hc having link monitor error\r
-\r
-  UInt_t  fMaskADCword; // temp mask when decoding adcs\r
-  UInt_t  fTbinADC;     // temp adc \r
-  Int_t   fDecodedADCs; // counter of decoded adcs [mj] do we need?\r
-\r
-  UInt_t  fEventCounter;     // stores the valid/current MCM event counter\r
-  UInt_t  fLastEventCounter; // last known event counter of MCM\r
-\r
-  Bool_t  fSharedPadsOn; // do we want to output shared pads - default is off\r
-  Int_t   fMaxADCgeom;   // maximum ADC channels per mcm\r
-\r
-  Bool_t  fBufferRead; // set to be true if buffer is read for a given equipment\r
-\r
-  AliTRDgeometry *fGeometry;  //! TRD geometry\r
-  AliRawReader   *fRawReader; //! raw reader    \r
-\r
-  AliTRDfeeParam      *fTRDfeeParam; // pointer to the fee params\r
-  Int_t   fCommonAdditive; // baseline value\r
-  Bool_t  fWarnError; // no errors no warnings\r
-\r
-  // STATIC \r
-\r
-  static Bool_t fgExtraSkip; // whether we should skip the leading 24 words\r
-  static Bool_t fgSkipCDH; // whether we should skip CDH (8 words)\r
-  static Bool_t fgCleanDataOnly; // release only clean events = no errors\r
-  static Bool_t fgDebugFlag; // allow debugging info\r
-  static Bool_t fgEnableMemoryReset; // allow memory reset\r
-  static Bool_t fgStackNumberChecker; // decide if we check stack number insanity - set false to cleanroom data\r
-  static Bool_t fgStackLinkNumberChecker; // decide if we check stack link number insanity - debuging purpose\r
-  static Bool_t fgSkipData; // decide if we skip corrupted data of given HC\r
-  static Int_t fgDumpHead; // number of words to dump (from the start of the buffer) on each Init\r
-  static Int_t  fgEmptySignals[30]; // empty signals in case of ADC pointer = NULL\r
-  static Short_t  fgMCMordering[16]; // mcm number odering for mcm header corruption check\r
-  static Short_t  fgROBordering[16]; // mcm number odering for mcm header corruption check\r
-  static Int_t  fgLastHC;  // HC number indicator to check HC numbering\r
-  static Int_t  fgLastROB; // ROB number indicator to check ROB numbering \r
-  static Int_t  fgLastIndex; // variable to check mcm number odering\r
-\r
-  static Bool_t fgDumpingEnable; // flag to dump MCM data words  \r
-\r
-  static Int_t  fgDumpingSM; // sm number to dump MCM data words\r
-  static Int_t  fgDumpingStack; // stack number to dump MCM data words\r
-  static Int_t  fgDumpingLayer; // layer number to dump MCM data words\r
-  static Int_t  fgDumpingROB; // rob number to dump MCM data words\r
-  static Int_t  fgDumpingMCM; // mcm number to dump MCM data words\r
-\r
-  // ----------------- DATA MEMBERS STOP\r
-\r
-  enum ETRDzRawStreamError \r
-    {\r
-      kDecodeStackInfo          = 1 //\r
-      , kMissingData             = 2 //\r
-      , kLinkDataMissing        = 3 //\r
-      , kHCdataMissing         = 4 //\r
-      , kTrackletOverflow       = 5 //\r
-      , kEOTrackeltsMissing     = 6 //\r
-      , kWrongPadrow             = 7 //\r
-      , kMCMheaderCorrupted     = 8 //\r
-      , kWrongMCMorROB         = 9 //\r
-      , kMCMeventMissmatch      = 10 //\r
-      , kMCMADCMaskMissing      = 11 //\r
-      , kHCHeaderCorrupt        = 12 //\r
-      , kHCHeaderWrongStack     = 13 //\r
-      , kHCHeaderWrongLayer     = 14 //\r
-      , kHCHeaderWrongSide      = 15 //\r
-      , kHCHeaderWrongSM        = 16 //\r
-      , kHCHeaderWrongDet       = 17 //\r
-      , kHCHeaderWrongROC       = 18 //\r
-      , kHCWordMissing         = 19 //\r
-      , kMCMdataMissing                = 20 //\r
-      , kMCMoverflow             = 21 //\r
-      , kADCdataMissing                = 22 //\r
-      , kADCmaskMissmatch       = 23 //\r
-      , kWrongPadcolumn                = 24 //\r
-    };                        \r
-\r
-  ClassDef(AliTRDrawStreamOld, 1)\r
-}; //clas def end\r
-\r
-#endif\r
index b5d5c74..6a37187 100644 (file)
@@ -25,7 +25,7 @@
 # SHLIBS - Shared Libraries and objects for linking (Executables only)           #
 #--------------------------------------------------------------------------------#
 
-set ( SRCS  AliTRDarraySignal.cxx AliTRDarrayDictionary.cxx AliTRDarrayADC.cxx AliTRDSignalIndex.cxx AliTRDgeometry.cxx AliTRDdigit.cxx AliTRDdigitsManager.cxx AliTRDdigitsParam.cxx AliTRDrawData.cxx AliTRDpadPlane.cxx AliTRDrawStreamOld.cxx AliTRDrawStream.cxx AliTRDCommonParam.cxx AliTRDfeeParam.cxx AliTRDgtuParam.cxx AliTRDcalibDB.cxx Cal/AliTRDCalROC.cxx Cal/AliTRDCalPad.cxx Cal/AliTRDCalDet.cxx Cal/AliTRDCalDCS.cxx Cal/AliTRDCalDCSFEE.cxx Cal/AliTRDCalDCSv2.cxx Cal/AliTRDCalDCSFEEv2.cxx Cal/AliTRDCalDCSPTR.cxx Cal/AliTRDCalDCSGTUBoardInfo.cxx Cal/AliTRDCalDCSGTUCtpOpc.cxx Cal/AliTRDCalDCSGTUSegment.cxx Cal/AliTRDCalDCSGTUTgu.cxx Cal/AliTRDCalDCSGTUTmu.cxx Cal/AliTRDCalDCSGTU.cxx Cal/AliTRDCalMonitoring.cxx Cal/AliTRDCalChamberStatus.cxx Cal/AliTRDCalPadStatus.cxx Cal/AliTRDCalSingleChamberStatus.cxx Cal/AliTRDCalPID.cxx AliTRDCalibraFit.cxx AliTRDCalibraMode.cxx AliTRDCalibraVector.cxx AliTRDCalibraVdriftLinearFit.cxx AliTRDCalibPadStatus.cxx AliTRDCalibChamberStatus.cxx AliTRDCalibViewer.cxx AliTRDCalibViewerGUI.cxx AliTRDEntriesInfo.cxx AliTRDPhInfo.cxx AliTRDPrfInfo.cxx AliTRDUshortInfo.cxx AliTRDQAChecker.cxx AliTRDPreprocessor.cxx AliTRDSaxHandler.cxx AliTRDDataDCS.cxx AliTRDSensor.cxx AliTRDSensorArray.cxx AliTRDalignment.cxx AliTRDtrapConfig.cxx AliTRDmcmSim.cxx AliTRDtrapConfigHandler.cxx AliTRDtrackGTU.cxx AliTRDtrackletBase.cxx AliTRDtrackletGTU.cxx AliTRDtrackletMCM.cxx AliTRDtrackletWord.cxx AliTRDgtuSim.cxx AliTRDgtuTMU.cxx AliTRDhit.cxx AliTRDrecoParam.cxx AliTRDSimParam.cxx)
+set ( SRCS  AliTRDarraySignal.cxx AliTRDarrayDictionary.cxx AliTRDarrayADC.cxx AliTRDSignalIndex.cxx AliTRDgeometry.cxx AliTRDdigit.cxx AliTRDdigitsManager.cxx AliTRDdigitsParam.cxx AliTRDrawData.cxx AliTRDpadPlane.cxx AliTRDrawStream.cxx AliTRDCommonParam.cxx AliTRDfeeParam.cxx AliTRDgtuParam.cxx AliTRDcalibDB.cxx Cal/AliTRDCalROC.cxx Cal/AliTRDCalPad.cxx Cal/AliTRDCalDet.cxx Cal/AliTRDCalDCS.cxx Cal/AliTRDCalDCSFEE.cxx Cal/AliTRDCalDCSv2.cxx Cal/AliTRDCalDCSFEEv2.cxx Cal/AliTRDCalDCSPTR.cxx Cal/AliTRDCalDCSGTUBoardInfo.cxx Cal/AliTRDCalDCSGTUCtpOpc.cxx Cal/AliTRDCalDCSGTUSegment.cxx Cal/AliTRDCalDCSGTUTgu.cxx Cal/AliTRDCalDCSGTUTmu.cxx Cal/AliTRDCalDCSGTU.cxx Cal/AliTRDCalMonitoring.cxx Cal/AliTRDCalChamberStatus.cxx Cal/AliTRDCalPadStatus.cxx Cal/AliTRDCalSingleChamberStatus.cxx Cal/AliTRDCalPID.cxx AliTRDCalibraFit.cxx AliTRDCalibraMode.cxx AliTRDCalibraVector.cxx AliTRDCalibraVdriftLinearFit.cxx AliTRDCalibPadStatus.cxx AliTRDCalibChamberStatus.cxx AliTRDCalibViewer.cxx AliTRDCalibViewerGUI.cxx AliTRDEntriesInfo.cxx AliTRDPhInfo.cxx AliTRDPrfInfo.cxx AliTRDUshortInfo.cxx AliTRDQAChecker.cxx AliTRDPreprocessor.cxx AliTRDSaxHandler.cxx AliTRDDataDCS.cxx AliTRDSensor.cxx AliTRDSensorArray.cxx AliTRDalignment.cxx AliTRDtrapConfig.cxx AliTRDmcmSim.cxx AliTRDtrapConfigHandler.cxx AliTRDtrackGTU.cxx AliTRDtrackletBase.cxx AliTRDtrackletGTU.cxx AliTRDtrackletMCM.cxx AliTRDtrackletWord.cxx AliTRDgtuSim.cxx AliTRDgtuTMU.cxx AliTRDhit.cxx AliTRDrecoParam.cxx AliTRDSimParam.cxx)
 
 string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
 
index 7652ea1..637296b 100644 (file)
@@ -25,7 +25,7 @@
 # SHLIBS - Shared Libraries and objects for linking (Executables only)           #
 #--------------------------------------------------------------------------------#
 
-set ( SRCS  AliTRDcluster.cxx AliTRDclusterizer.cxx AliTRDtransform.cxx AliTRDtracklet.cxx AliTRDpidUtil.cxx AliTRDpidESD.cxx AliTRDReconstructor.cxx AliTRDseedV1.cxx AliTRDtrackV1.cxx AliTRDtrackerV1.cxx AliTRDtrackerDebug.cxx AliTRDtrackingSector.cxx AliTRDtrackingChamber.cxx AliTRDchamberTimeBin.cxx AliTRDQADataMakerRec.cxx AliTRDqaBlackEvents.cxx AliTRDqaBuildReference.cxx AliTRDCalibraFillHisto.cxx Cal/AliTRDCalPIDLQ.cxx Cal/AliTRDCalPIDNN.cxx AliTRDqaRecPoints.cxx)
+set ( SRCS  AliTRDcluster.cxx AliTRDclusterizer.cxx AliTRDtransform.cxx AliTRDtracklet.cxx AliTRDpidUtil.cxx AliTRDpidESD.cxx AliTRDReconstructor.cxx AliTRDseedV1.cxx AliTRDtrackV1.cxx AliTRDtrackerV1.cxx AliTRDtrackerDebug.cxx AliTRDtrackingSector.cxx AliTRDtrackingChamber.cxx AliTRDchamberTimeBin.cxx AliTRDQADataMakerRec.cxx AliTRDqaBuildReference.cxx AliTRDCalibraFillHisto.cxx Cal/AliTRDCalPIDLQ.cxx Cal/AliTRDCalPIDNN.cxx AliTRDqaRecPoints.cxx)
 
 string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
 
index ff847d0..0bbe787 100644 (file)
@@ -25,7 +25,6 @@
 
 #pragma link C++ class  AliTRDrawData+;
 
-#pragma link C++ class  AliTRDrawStreamOld+;
 #pragma link C++ class  AliTRDrawStream+;
 #pragma link C++ class  AliTRDrawStream::AliTRDrawStreamError+;
 #pragma link C++ class  AliTRDrawStream::AliTRDrawStats+;
index 696389e..2f09265 100644 (file)
@@ -28,7 +28,6 @@
 #pragma link C++ class  AliTRDtrackingChamber+;
 #pragma link C++ class  AliTRDchamberTimeBin+;
 
-#pragma link C++ class  AliTRDqaBlackEvents+;
 #pragma link C++ class  AliTRDQADataMakerRec+;
 #pragma link C++ class  AliTRDqaBuildReference+;