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

// $Id$

//-----------------------------------------------------------------------------
/// \class AliMUONPayloadTracker
/// Decodes rawdata from buffer and stores in TClonesArray.
/// First version implement for Tracker
///
/// \author Christian Finck
//-----------------------------------------------------------------------------

#include <TObjString.h>

#include "AliMUONPayloadTracker.h"

#include "AliMUONDspHeader.h"
#include "AliMUONBlockHeader.h"
#include "AliMUONBusStruct.h"
#include "AliMUONDDLTracker.h"

#include "AliMUONLogger.h"
#include "AliLog.h"

/// \cond CLASSIMP
ClassImp(AliMUONPayloadTracker)
/// \endcond

AliMUONPayloadTracker::AliMUONPayloadTracker()
  : TObject(),
    fBusPatchId(0),
    fDspId(0),
    fBlkId(0),
    fMaxDDL(20),
    fMaxBlock(2),
    fMaxDsp(5),
    fMaxBus(5),
    fDDLTracker(new AliMUONDDLTracker()),
    fBusStruct(new AliMUONBusStruct()),
    fBlockHeader(new AliMUONBlockHeader()),
    fDspHeader(new AliMUONDspHeader()),
    fLog(new AliMUONLogger(1000)),
    fParityErrors(0),
    fGlitchErrors(0),
    fPaddingErrors(0),
    fWarnings(kTRUE)
{
  ///
  /// create an object to decode MUON payload
  ///

}

//___________________________________
AliMUONPayloadTracker::~AliMUONPayloadTracker()
{
  ///
  /// clean up
  ///
  delete fDDLTracker;
  delete fBusStruct;
  delete fBlockHeader;
  delete fDspHeader;
  delete fLog;
}

//______________________________________________________
Bool_t AliMUONPayloadTracker::Decode(UInt_t* buffer, Int_t totalDDLSize)
{

  /// Each DDL is made with 2 Blocks each of which consists of 5 DSP's at most 
  /// and each of DSP has at most 5 buspatches.
  /// The different structures, Block (CRT), DSP (FRT) and Buspatch,
  /// are identified by a key word 0xFC0000FC, 0xF000000F and 0xB000000B respectively.
  /// (fBusPatchManager no more needed !)


  //Read Header Size of DDL,Block,DSP and BusPatch
  static Int_t kBlockHeaderSize    = fBlockHeader->GetHeaderLength();
  static Int_t kDspHeaderSize      = fDspHeader->GetHeaderLength();
  static Int_t kBusPatchHeaderSize = fBusStruct->GetHeaderLength();

  // size structures
  Int_t totalBlockSize;
  Int_t totalDspSize;
  Int_t totalBusPatchSize;
  Int_t dataSize; 
  Int_t bufSize;

  // indexes
  Int_t indexBlk;
  Int_t indexDsp;
  Int_t indexBusPatch;
  Int_t index = 0;
  Int_t iBlock = 0;

  // CROCUS CRT
  while (buffer[index] == fBlockHeader->GetDefaultDataKey()) {
    
    if (iBlock > fMaxBlock) break;
    
    // copy within padding words
    memcpy(fBlockHeader->GetHeader(),&buffer[index], (kBlockHeaderSize)*4);
    
    totalBlockSize = fBlockHeader->GetTotalLength();
    
    indexBlk = index;
    index += kBlockHeaderSize;
    
    // copy in TClonesArray
    fDDLTracker->AddBlkHeader(*fBlockHeader);
    
    // Crocus FRT
    Int_t iDsp = 0;
    while (buffer[index] == fDspHeader->GetDefaultDataKey()) {
      
      if (iDsp > fMaxDsp) break; // if ever...
      
      memcpy(fDspHeader->GetHeader(),&buffer[index], kDspHeaderSize*4);
      
      totalDspSize = fDspHeader->GetTotalLength();
      
      if (fDspHeader->GetErrorWord()) {
        //	fDspHeader->Print("");
        if ( fDspHeader->GetErrorWord() == (0x000000B1 |  fBlockHeader->GetDspId())
            ||  fDspHeader->GetErrorWord() == (0x00000091 |  fBlockHeader->GetDspId()) ){
          // an event with a glitch in the readout  has been detected
          // it means that somewhere a 1 byte word has been randomly inserted
          // all the readout sequence is shifted  untill the next event 
          
          Char_t* msg = Form("Glitch error detected in DSP %d, skipping event ", fBlockHeader->GetDspId());
          
          if (fWarnings) AliWarning(msg); 
          AddErrorMessage(msg);
          fGlitchErrors++;
          return kFALSE ; 
        }	
      }
      
      indexDsp = index;
      index += kDspHeaderSize;
      
      // copy in TClonesArray
      fDDLTracker->AddDspHeader(*fDspHeader, iBlock);
      
      // buspatch structure
      Int_t iBusPatch = 0;
      while (buffer[index] == fBusStruct->GetDefaultDataKey()) {
        
        if (iBusPatch > fMaxBus) break; // if ever
        
        //copy buffer into header structure
        memcpy(fBusStruct->GetHeader(), &buffer[index], kBusPatchHeaderSize*4);
        
        totalBusPatchSize = fBusStruct->GetTotalLength();
        indexBusPatch     = index;
        
        //Check Buspatch header, not empty events
        if(totalBusPatchSize > kBusPatchHeaderSize) {    
          
          index   += kBusPatchHeaderSize;
          dataSize = fBusStruct->GetLength();
          bufSize  = fBusStruct->GetBufSize();
          
          if(dataSize > 0) { // check data present
            if (dataSize > bufSize) // check buffer size
              fBusStruct->SetAlloc(dataSize);
            
            //copy buffer into data structure
            memcpy(fBusStruct->GetData(), &buffer[index], dataSize*4);
            fBusStruct->SetBlockId(iBlock); // could be usefull in future applications ?
            fBusStruct->SetDspId(iDsp);
            
            // check parity
            if(!CheckDataParity()) {
              fParityErrors++;
              return kFALSE;
            }
            
            // copy in TClonesArray
            fDDLTracker->AddBusPatch(*fBusStruct, iBlock, iDsp);
            
          } // dataSize test
          
        } // testing buspatch
        
        index = indexBusPatch + totalBusPatchSize;
        if (index >= totalDDLSize) {// check the end of DDL
          index = totalDDLSize - 1; // point to the last element of buffer
          break;
        }
        iBusPatch++;
      }  // buspatch loop
      
      // skipping additionnal word if padding
      if (fDspHeader->GetPaddingWord() == 1) {
        if (buffer[index++] != fDspHeader->GetDefaultPaddingWord()) {
          
          Char_t *msg = Form("Padding word error for iBlock %d, iDsp %d, iBus %d\n", 
                             iBlock, iDsp, iBusPatch);
          
          if (fWarnings) AliWarning(msg);
          AddErrorMessage(msg);
          fPaddingErrors++;
        }
      }
      
      index = indexDsp + totalDspSize;
      if (index >= totalDDLSize) {
        index = totalDDLSize - 1;
        break;
      }
      iDsp++;
    }  // dsp loop
    
    index = indexBlk + totalBlockSize;
    if (index >= totalDDLSize) {
      index = totalDDLSize - 1;
      break;
    }
    
    iBlock++;
  }  // block loop
  
  if (buffer[index++] != fBlockHeader->GetDdlDataKey() || 
      buffer[index++] != fBlockHeader->GetDdlDataKey()) {
    
    Char_t *msg = Form("Bad end of DDL data key\n");
    
    if (fWarnings) AliWarning(msg);
    AddErrorMessage(msg);
  }
  
  
  return kTRUE;
}

//______________________________________________________
void AliMUONPayloadTracker::ResetDDL()
{
  /// reseting TClonesArray
  /// after each DDL
  ///
  fDDLTracker->GetBlkHeaderArray()->Delete();
  fGlitchErrors  = 0;
  fPaddingErrors = 0;
  fParityErrors  = 0;

}

//______________________________________________________
void AliMUONPayloadTracker::SetMaxBlock(Int_t blk) 
{
  /// set regional card number
  if (blk > 2) blk = 2;
  fMaxBlock = blk;
}

//______________________________________________________
Bool_t AliMUONPayloadTracker::CheckDataParity()
{
  /// parity check
  /// taken from MuTrkBusPatch.cxx (sotfware test for CROCUS)
  /// A. Baldisseri

  Int_t  parity;
  UInt_t data;
  
  Int_t dataSize = fBusStruct->GetLength();
  for (int idata = 0; idata < dataSize; idata++) {

    data  = fBusStruct->GetData(idata);

    // Compute the parity for each data word
    parity  = data & 0x1;
    for (Int_t i = 1; i <= 30; i++) 
      parity ^= ((data >> i) & 0x1);

    // Check
    if (parity != fBusStruct->GetParity(idata)) {

      Char_t* msg = Form("Parity error in word %d for manuId %d and channel %d in buspatch %d\n", 
                          idata, fBusStruct->GetManuId(idata), fBusStruct->GetChannelId(idata),
                          fBusStruct->GetBusPatchId());
      
      if (fWarnings) AliWarning(msg);
      AddErrorMessage(msg);
      fParityErrors++;
      
      return kFALSE;
		     
    }
  }
  return kTRUE;
}

//______________________________________________________
void AliMUONPayloadTracker::AddErrorMessage(const Char_t* msg)
{
/// adding message to logger
 
    TString tmp(msg);
  
    Int_t pos = tmp.First("\n");
    tmp[pos] = 0;
    
    fLog->Log(tmp.Data());
}

          
 AliMUONPayloadTracker.cxx:1
 AliMUONPayloadTracker.cxx:2
 AliMUONPayloadTracker.cxx:3
 AliMUONPayloadTracker.cxx:4
 AliMUONPayloadTracker.cxx:5
 AliMUONPayloadTracker.cxx:6
 AliMUONPayloadTracker.cxx:7
 AliMUONPayloadTracker.cxx:8
 AliMUONPayloadTracker.cxx:9
 AliMUONPayloadTracker.cxx:10
 AliMUONPayloadTracker.cxx:11
 AliMUONPayloadTracker.cxx:12
 AliMUONPayloadTracker.cxx:13
 AliMUONPayloadTracker.cxx:14
 AliMUONPayloadTracker.cxx:15
 AliMUONPayloadTracker.cxx:16
 AliMUONPayloadTracker.cxx:17
 AliMUONPayloadTracker.cxx:18
 AliMUONPayloadTracker.cxx:19
 AliMUONPayloadTracker.cxx:20
 AliMUONPayloadTracker.cxx:21
 AliMUONPayloadTracker.cxx:22
 AliMUONPayloadTracker.cxx:23
 AliMUONPayloadTracker.cxx:24
 AliMUONPayloadTracker.cxx:25
 AliMUONPayloadTracker.cxx:26
 AliMUONPayloadTracker.cxx:27
 AliMUONPayloadTracker.cxx:28
 AliMUONPayloadTracker.cxx:29
 AliMUONPayloadTracker.cxx:30
 AliMUONPayloadTracker.cxx:31
 AliMUONPayloadTracker.cxx:32
 AliMUONPayloadTracker.cxx:33
 AliMUONPayloadTracker.cxx:34
 AliMUONPayloadTracker.cxx:35
 AliMUONPayloadTracker.cxx:36
 AliMUONPayloadTracker.cxx:37
 AliMUONPayloadTracker.cxx:38
 AliMUONPayloadTracker.cxx:39
 AliMUONPayloadTracker.cxx:40
 AliMUONPayloadTracker.cxx:41
 AliMUONPayloadTracker.cxx:42
 AliMUONPayloadTracker.cxx:43
 AliMUONPayloadTracker.cxx:44
 AliMUONPayloadTracker.cxx:45
 AliMUONPayloadTracker.cxx:46
 AliMUONPayloadTracker.cxx:47
 AliMUONPayloadTracker.cxx:48
 AliMUONPayloadTracker.cxx:49
 AliMUONPayloadTracker.cxx:50
 AliMUONPayloadTracker.cxx:51
 AliMUONPayloadTracker.cxx:52
 AliMUONPayloadTracker.cxx:53
 AliMUONPayloadTracker.cxx:54
 AliMUONPayloadTracker.cxx:55
 AliMUONPayloadTracker.cxx:56
 AliMUONPayloadTracker.cxx:57
 AliMUONPayloadTracker.cxx:58
 AliMUONPayloadTracker.cxx:59
 AliMUONPayloadTracker.cxx:60
 AliMUONPayloadTracker.cxx:61
 AliMUONPayloadTracker.cxx:62
 AliMUONPayloadTracker.cxx:63
 AliMUONPayloadTracker.cxx:64
 AliMUONPayloadTracker.cxx:65
 AliMUONPayloadTracker.cxx:66
 AliMUONPayloadTracker.cxx:67
 AliMUONPayloadTracker.cxx:68
 AliMUONPayloadTracker.cxx:69
 AliMUONPayloadTracker.cxx:70
 AliMUONPayloadTracker.cxx:71
 AliMUONPayloadTracker.cxx:72
 AliMUONPayloadTracker.cxx:73
 AliMUONPayloadTracker.cxx:74
 AliMUONPayloadTracker.cxx:75
 AliMUONPayloadTracker.cxx:76
 AliMUONPayloadTracker.cxx:77
 AliMUONPayloadTracker.cxx:78
 AliMUONPayloadTracker.cxx:79
 AliMUONPayloadTracker.cxx:80
 AliMUONPayloadTracker.cxx:81
 AliMUONPayloadTracker.cxx:82
 AliMUONPayloadTracker.cxx:83
 AliMUONPayloadTracker.cxx:84
 AliMUONPayloadTracker.cxx:85
 AliMUONPayloadTracker.cxx:86
 AliMUONPayloadTracker.cxx:87
 AliMUONPayloadTracker.cxx:88
 AliMUONPayloadTracker.cxx:89
 AliMUONPayloadTracker.cxx:90
 AliMUONPayloadTracker.cxx:91
 AliMUONPayloadTracker.cxx:92
 AliMUONPayloadTracker.cxx:93
 AliMUONPayloadTracker.cxx:94
 AliMUONPayloadTracker.cxx:95
 AliMUONPayloadTracker.cxx:96
 AliMUONPayloadTracker.cxx:97
 AliMUONPayloadTracker.cxx:98
 AliMUONPayloadTracker.cxx:99
 AliMUONPayloadTracker.cxx:100
 AliMUONPayloadTracker.cxx:101
 AliMUONPayloadTracker.cxx:102
 AliMUONPayloadTracker.cxx:103
 AliMUONPayloadTracker.cxx:104
 AliMUONPayloadTracker.cxx:105
 AliMUONPayloadTracker.cxx:106
 AliMUONPayloadTracker.cxx:107
 AliMUONPayloadTracker.cxx:108
 AliMUONPayloadTracker.cxx:109
 AliMUONPayloadTracker.cxx:110
 AliMUONPayloadTracker.cxx:111
 AliMUONPayloadTracker.cxx:112
 AliMUONPayloadTracker.cxx:113
 AliMUONPayloadTracker.cxx:114
 AliMUONPayloadTracker.cxx:115
 AliMUONPayloadTracker.cxx:116
 AliMUONPayloadTracker.cxx:117
 AliMUONPayloadTracker.cxx:118
 AliMUONPayloadTracker.cxx:119
 AliMUONPayloadTracker.cxx:120
 AliMUONPayloadTracker.cxx:121
 AliMUONPayloadTracker.cxx:122
 AliMUONPayloadTracker.cxx:123
 AliMUONPayloadTracker.cxx:124
 AliMUONPayloadTracker.cxx:125
 AliMUONPayloadTracker.cxx:126
 AliMUONPayloadTracker.cxx:127
 AliMUONPayloadTracker.cxx:128
 AliMUONPayloadTracker.cxx:129
 AliMUONPayloadTracker.cxx:130
 AliMUONPayloadTracker.cxx:131
 AliMUONPayloadTracker.cxx:132
 AliMUONPayloadTracker.cxx:133
 AliMUONPayloadTracker.cxx:134
 AliMUONPayloadTracker.cxx:135
 AliMUONPayloadTracker.cxx:136
 AliMUONPayloadTracker.cxx:137
 AliMUONPayloadTracker.cxx:138
 AliMUONPayloadTracker.cxx:139
 AliMUONPayloadTracker.cxx:140
 AliMUONPayloadTracker.cxx:141
 AliMUONPayloadTracker.cxx:142
 AliMUONPayloadTracker.cxx:143
 AliMUONPayloadTracker.cxx:144
 AliMUONPayloadTracker.cxx:145
 AliMUONPayloadTracker.cxx:146
 AliMUONPayloadTracker.cxx:147
 AliMUONPayloadTracker.cxx:148
 AliMUONPayloadTracker.cxx:149
 AliMUONPayloadTracker.cxx:150
 AliMUONPayloadTracker.cxx:151
 AliMUONPayloadTracker.cxx:152
 AliMUONPayloadTracker.cxx:153
 AliMUONPayloadTracker.cxx:154
 AliMUONPayloadTracker.cxx:155
 AliMUONPayloadTracker.cxx:156
 AliMUONPayloadTracker.cxx:157
 AliMUONPayloadTracker.cxx:158
 AliMUONPayloadTracker.cxx:159
 AliMUONPayloadTracker.cxx:160
 AliMUONPayloadTracker.cxx:161
 AliMUONPayloadTracker.cxx:162
 AliMUONPayloadTracker.cxx:163
 AliMUONPayloadTracker.cxx:164
 AliMUONPayloadTracker.cxx:165
 AliMUONPayloadTracker.cxx:166
 AliMUONPayloadTracker.cxx:167
 AliMUONPayloadTracker.cxx:168
 AliMUONPayloadTracker.cxx:169
 AliMUONPayloadTracker.cxx:170
 AliMUONPayloadTracker.cxx:171
 AliMUONPayloadTracker.cxx:172
 AliMUONPayloadTracker.cxx:173
 AliMUONPayloadTracker.cxx:174
 AliMUONPayloadTracker.cxx:175
 AliMUONPayloadTracker.cxx:176
 AliMUONPayloadTracker.cxx:177
 AliMUONPayloadTracker.cxx:178
 AliMUONPayloadTracker.cxx:179
 AliMUONPayloadTracker.cxx:180
 AliMUONPayloadTracker.cxx:181
 AliMUONPayloadTracker.cxx:182
 AliMUONPayloadTracker.cxx:183
 AliMUONPayloadTracker.cxx:184
 AliMUONPayloadTracker.cxx:185
 AliMUONPayloadTracker.cxx:186
 AliMUONPayloadTracker.cxx:187
 AliMUONPayloadTracker.cxx:188
 AliMUONPayloadTracker.cxx:189
 AliMUONPayloadTracker.cxx:190
 AliMUONPayloadTracker.cxx:191
 AliMUONPayloadTracker.cxx:192
 AliMUONPayloadTracker.cxx:193
 AliMUONPayloadTracker.cxx:194
 AliMUONPayloadTracker.cxx:195
 AliMUONPayloadTracker.cxx:196
 AliMUONPayloadTracker.cxx:197
 AliMUONPayloadTracker.cxx:198
 AliMUONPayloadTracker.cxx:199
 AliMUONPayloadTracker.cxx:200
 AliMUONPayloadTracker.cxx:201
 AliMUONPayloadTracker.cxx:202
 AliMUONPayloadTracker.cxx:203
 AliMUONPayloadTracker.cxx:204
 AliMUONPayloadTracker.cxx:205
 AliMUONPayloadTracker.cxx:206
 AliMUONPayloadTracker.cxx:207
 AliMUONPayloadTracker.cxx:208
 AliMUONPayloadTracker.cxx:209
 AliMUONPayloadTracker.cxx:210
 AliMUONPayloadTracker.cxx:211
 AliMUONPayloadTracker.cxx:212
 AliMUONPayloadTracker.cxx:213
 AliMUONPayloadTracker.cxx:214
 AliMUONPayloadTracker.cxx:215
 AliMUONPayloadTracker.cxx:216
 AliMUONPayloadTracker.cxx:217
 AliMUONPayloadTracker.cxx:218
 AliMUONPayloadTracker.cxx:219
 AliMUONPayloadTracker.cxx:220
 AliMUONPayloadTracker.cxx:221
 AliMUONPayloadTracker.cxx:222
 AliMUONPayloadTracker.cxx:223
 AliMUONPayloadTracker.cxx:224
 AliMUONPayloadTracker.cxx:225
 AliMUONPayloadTracker.cxx:226
 AliMUONPayloadTracker.cxx:227
 AliMUONPayloadTracker.cxx:228
 AliMUONPayloadTracker.cxx:229
 AliMUONPayloadTracker.cxx:230
 AliMUONPayloadTracker.cxx:231
 AliMUONPayloadTracker.cxx:232
 AliMUONPayloadTracker.cxx:233
 AliMUONPayloadTracker.cxx:234
 AliMUONPayloadTracker.cxx:235
 AliMUONPayloadTracker.cxx:236
 AliMUONPayloadTracker.cxx:237
 AliMUONPayloadTracker.cxx:238
 AliMUONPayloadTracker.cxx:239
 AliMUONPayloadTracker.cxx:240
 AliMUONPayloadTracker.cxx:241
 AliMUONPayloadTracker.cxx:242
 AliMUONPayloadTracker.cxx:243
 AliMUONPayloadTracker.cxx:244
 AliMUONPayloadTracker.cxx:245
 AliMUONPayloadTracker.cxx:246
 AliMUONPayloadTracker.cxx:247
 AliMUONPayloadTracker.cxx:248
 AliMUONPayloadTracker.cxx:249
 AliMUONPayloadTracker.cxx:250
 AliMUONPayloadTracker.cxx:251
 AliMUONPayloadTracker.cxx:252
 AliMUONPayloadTracker.cxx:253
 AliMUONPayloadTracker.cxx:254
 AliMUONPayloadTracker.cxx:255
 AliMUONPayloadTracker.cxx:256
 AliMUONPayloadTracker.cxx:257
 AliMUONPayloadTracker.cxx:258
 AliMUONPayloadTracker.cxx:259
 AliMUONPayloadTracker.cxx:260
 AliMUONPayloadTracker.cxx:261
 AliMUONPayloadTracker.cxx:262
 AliMUONPayloadTracker.cxx:263
 AliMUONPayloadTracker.cxx:264
 AliMUONPayloadTracker.cxx:265
 AliMUONPayloadTracker.cxx:266
 AliMUONPayloadTracker.cxx:267
 AliMUONPayloadTracker.cxx:268
 AliMUONPayloadTracker.cxx:269
 AliMUONPayloadTracker.cxx:270
 AliMUONPayloadTracker.cxx:271
 AliMUONPayloadTracker.cxx:272
 AliMUONPayloadTracker.cxx:273
 AliMUONPayloadTracker.cxx:274
 AliMUONPayloadTracker.cxx:275
 AliMUONPayloadTracker.cxx:276
 AliMUONPayloadTracker.cxx:277
 AliMUONPayloadTracker.cxx:278
 AliMUONPayloadTracker.cxx:279
 AliMUONPayloadTracker.cxx:280
 AliMUONPayloadTracker.cxx:281
 AliMUONPayloadTracker.cxx:282
 AliMUONPayloadTracker.cxx:283
 AliMUONPayloadTracker.cxx:284
 AliMUONPayloadTracker.cxx:285
 AliMUONPayloadTracker.cxx:286
 AliMUONPayloadTracker.cxx:287
 AliMUONPayloadTracker.cxx:288
 AliMUONPayloadTracker.cxx:289
 AliMUONPayloadTracker.cxx:290
 AliMUONPayloadTracker.cxx:291
 AliMUONPayloadTracker.cxx:292
 AliMUONPayloadTracker.cxx:293
 AliMUONPayloadTracker.cxx:294
 AliMUONPayloadTracker.cxx:295
 AliMUONPayloadTracker.cxx:296
 AliMUONPayloadTracker.cxx:297
 AliMUONPayloadTracker.cxx:298
 AliMUONPayloadTracker.cxx:299
 AliMUONPayloadTracker.cxx:300
 AliMUONPayloadTracker.cxx:301
 AliMUONPayloadTracker.cxx:302
 AliMUONPayloadTracker.cxx:303
 AliMUONPayloadTracker.cxx:304
 AliMUONPayloadTracker.cxx:305
 AliMUONPayloadTracker.cxx:306
 AliMUONPayloadTracker.cxx:307
 AliMUONPayloadTracker.cxx:308
 AliMUONPayloadTracker.cxx:309
 AliMUONPayloadTracker.cxx:310
 AliMUONPayloadTracker.cxx:311
 AliMUONPayloadTracker.cxx:312
 AliMUONPayloadTracker.cxx:313
 AliMUONPayloadTracker.cxx:314
 AliMUONPayloadTracker.cxx:315
 AliMUONPayloadTracker.cxx:316
 AliMUONPayloadTracker.cxx:317
 AliMUONPayloadTracker.cxx:318
 AliMUONPayloadTracker.cxx:319
 AliMUONPayloadTracker.cxx:320
 AliMUONPayloadTracker.cxx:321
 AliMUONPayloadTracker.cxx:322
 AliMUONPayloadTracker.cxx:323