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 AliMUONRawStreamTracker
/// This class provides access to MUON digits in raw data.
///
/// It loops over all MUON digits in the raw data given by the AliRawReader.
/// The Next method goes to the next digit. If there are no digits left
/// it returns kFALSE
/// It can loop also over DDL and store the decoded rawdata in TClonesArray
/// in Payload class.
/// 
/// Implement for Tracker
///
/// \author Christian Finck & Laurent Aphecetche
//-----------------------------------------------------------------------------

#include "AliMUONRawStreamTracker.h"

#include "AliMUONLogger.h"
#include "AliRawReader.h"
#include "AliDAQ.h"
#include "AliLog.h"
#include "AliMUONPayloadTracker.h"
#include "AliMUONBlockHeader.h"
#include "AliMUONDspHeader.h"
#include "AliMUONBusStruct.h"
#include "AliMUONDDLTracker.h"
#include "Riostream.h"
#include <cassert>

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


//___________________________________________
AliMUONRawStreamTracker::AliMUONRawStreamTracker(TRootIOCtor* /*dummy*/)
: AliMUONVRawStreamTracker(),
fPayload(0x0),
fCurrentDDL(0),
fCurrentDDLIndex(fgkMaxDDL),
fCurrentBlockHeader(0),
fCurrentBlockHeaderIndex(0),
fCurrentDspHeader(0),
fCurrentDspHeaderIndex(0),
fCurrentBusStruct(0),
fCurrentBusStructIndex(0),
fCurrentDataIndex(0),
fDDL(0)
{
  ///
  /// create an object to read MUON raw digits
  /// Default ctor with no memory allocation for I/O
  ///
}

//___________________________________________
AliMUONRawStreamTracker::AliMUONRawStreamTracker()
 : AliMUONVRawStreamTracker(),
   fPayload(new AliMUONPayloadTracker()),
   fCurrentDDL(0),
   fCurrentDDLIndex(fgkMaxDDL),
   fCurrentBlockHeader(0),
   fCurrentBlockHeaderIndex(0),
   fCurrentDspHeader(0),
   fCurrentDspHeaderIndex(0),
   fCurrentBusStruct(0),
   fCurrentBusStructIndex(0),
   fCurrentDataIndex(0),
   fDDL(0)
{
  ///
  /// create an object to read MUON raw digits
  /// Default ctor for monitoring purposes
  ///
  
  
}

//_________________________________________________________________
AliMUONRawStreamTracker::AliMUONRawStreamTracker(AliRawReader* rawReader)
: AliMUONVRawStreamTracker(rawReader),
  fPayload(new AliMUONPayloadTracker()),
  fCurrentDDL(0),
  fCurrentDDLIndex(fgkMaxDDL),
  fCurrentBlockHeader(0),
  fCurrentBlockHeaderIndex(0),
  fCurrentDspHeader(0),
  fCurrentDspHeaderIndex(0),
  fCurrentBusStruct(0),
  fCurrentBusStructIndex(0),
  fCurrentDataIndex(0),
  fDDL(0)
{
  ///
  /// ctor with AliRawReader as argument
  /// for reconstruction purpose
  ///
  
  
}

//___________________________________
AliMUONRawStreamTracker::~AliMUONRawStreamTracker()
{
  ///
  /// clean up
  ///
  delete fPayload;
}

//_____________________________________________________________
Bool_t 
AliMUONRawStreamTracker::Next(Int_t& busPatchId,
                              UShort_t& manuId, UChar_t& manuChannel,
                              UShort_t& adc)
{
  ///
  /// read the next raw digit (buspatch structure)
  /// returns kFALSE if there is no digit left
  /// Should call First() before this method to start the iteration.
  ///
  
  if ( IsDone() ) return kFALSE;
  
  if ( fCurrentDataIndex >= fCurrentBusStruct->GetLength()-1 )
  {
    Bool_t ok = GetNextBusStruct();
    if (!ok)
    {
      // this is the end
      return kFALSE;
    } 
  }

  ++fCurrentDataIndex;

  busPatchId = fCurrentBusStruct->GetBusPatchId();
  manuId = fCurrentBusStruct->GetManuId(fCurrentDataIndex);
  manuChannel = fCurrentBusStruct->GetChannelId(fCurrentDataIndex);
  adc = fCurrentBusStruct->GetCharge(fCurrentDataIndex);

  return kTRUE;
}

//______________________________________________________
Bool_t
AliMUONRawStreamTracker::IsDone() const
{
  /// Whether the iteration is finished or not
  return (fCurrentBusStruct==0);
}

//______________________________________________________
void
AliMUONRawStreamTracker::First()
{
  /// Initialize the iteration process.
  
  fCurrentDDLIndex = -1;
//  fCurrentDspHeaderIndex = -1; // Not necessary since this gets reset in the GetNextXXX methods.
//  fCurrentBusStructIndex = -1;

  // Must reset all the pointers because if we return before calling
  // GetNextBusStruct() the user might call CurrentDDL(), CurrentBlockHeader(),
  // CurrentDspHeader() or CurrentBusStruct() which should return reasonable
  // results in that case.
  fCurrentDDL = 0;
  fCurrentBlockHeader = 0;
  fCurrentDspHeader = 0;
  fCurrentBusStruct = 0;
  
  // Find the first non-empty structure
  if (not GetNextDDL()) return;
  if (not GetNextBlockHeader()) return;
  if (not GetNextDspHeader()) return;
  GetNextBusStruct();
}

//______________________________________________________
Bool_t
AliMUONRawStreamTracker::GetNextDDL()
{
  /// Returns the next DDL present
  
  assert( GetReader() != 0 );
  
  Bool_t kFound(kFALSE);
  
  while ( fCurrentDDLIndex < fgkMaxDDL-1 && !kFound ) 
  {
    ++fCurrentDDLIndex;
    GetReader()->Reset();
    GetReader()->Select("MUONTRK",fCurrentDDLIndex,fCurrentDDLIndex);
    if ( GetReader()->ReadHeader() ) 
    {
      kFound = kTRUE;
    }
  }
  
  if ( !kFound ) 
  {
    // fCurrentDDLIndex is set to fgkMaxDDL so that we exit the above loop immediately
    // for a subsequent call to this method, unless NextEvent is called in between.
    fCurrentDDLIndex = fgkMaxDDL;
    // We have not actually been able to complete the loading of the new DDL so
    // we are still on the old one. In this case we do not need to reset fCurrentDDL.
    //fCurrentDDL = 0;
    if (IsErrorLogger()) AddErrorMessage();
    return kFALSE;
  }
  
  Int_t totalDataWord  = GetReader()->GetDataSize(); // in bytes
  
  AliDebug(3, Form("DDL Number %d totalDataWord %d\n", fCurrentDDLIndex,
                   totalDataWord));

  UInt_t *buffer = new UInt_t[totalDataWord/4];
  
  if ( !GetReader()->ReadNext((UChar_t*)buffer, totalDataWord) )
  {
    // We have not actually been able to complete the loading of the new DDL so
    // we are still on the old one. In this case we do not need to reset fCurrentDDL.
    //fCurrentDDL = 0;
    delete [] buffer;
    return kFALSE;
  }
  fPayload->ResetDDL();
  
#ifndef R__BYTESWAP  
  Swap(buffer, totalDataWord / sizeof(UInt_t)); // swap needed for mac power pc
#endif

  Bool_t ok = fPayload->Decode(buffer, totalDataWord/4);
  
  delete[] buffer;
  
  fCurrentDDL = fPayload->GetDDLTracker();
  
  fCurrentBlockHeaderIndex = -1;
  
  return ok;
}

//______________________________________________________
Bool_t
AliMUONRawStreamTracker::GetNextBlockHeader()
{
  /// Returns the next block Header present
  
  assert( fCurrentDDL != 0 );

  fCurrentBlockHeader = 0;

  Int_t i(fCurrentBlockHeaderIndex);
  
  while ( fCurrentBlockHeader == 0 && i < fCurrentDDL->GetBlkHeaderEntries()-1 ) 
  {
    ++i;
    fCurrentBlockHeader = fCurrentDDL->GetBlkHeaderEntry(i);
  }
  
  if ( !fCurrentBlockHeader ) 
  {
    Bool_t ok = GetNextDDL();
    if (!ok) 
    {
      return kFALSE;
    }
    else
    {
      return GetNextBlockHeader();
    }
  }
  
  fCurrentBlockHeaderIndex = i;
  
  fCurrentDspHeaderIndex = -1;
  
  return kTRUE;
}

//______________________________________________________
Bool_t
AliMUONRawStreamTracker::GetNextDspHeader()
{
  /// Returns the next Dsp Header present

  assert( fCurrentBlockHeader != 0 );
  
  fCurrentDspHeader = 0;
  
  Int_t i(fCurrentDspHeaderIndex);
  
  while ( fCurrentDspHeader == 0 && i < fCurrentBlockHeader->GetDspHeaderEntries()-1 )
  {
    ++i;
    fCurrentDspHeader = fCurrentBlockHeader->GetDspHeaderEntry(i);
  }
  
  if ( !fCurrentDspHeader ) 
  {
    Bool_t ok = GetNextBlockHeader();
    if (!ok) 
    {
      return kFALSE;
    }
    else
    {
      return GetNextDspHeader();
    }
  }
  
  fCurrentDspHeaderIndex = i;
  
  fCurrentBusStructIndex = -1;
  
  return kTRUE;
}

//______________________________________________________
Bool_t
AliMUONRawStreamTracker::GetNextBusStruct()
{
  /// Find the next non-empty busPatch structure
  
  assert( fCurrentDspHeader != 0 );
  
  fCurrentBusStruct = 0;

  Int_t i(fCurrentBusStructIndex);
  
  while ( fCurrentBusStruct == 0 && i < fCurrentDspHeader->GetBusPatchEntries()-1 ) 
  {
    ++i;
    fCurrentBusStruct = fCurrentDspHeader->GetBusPatchEntry(i);
  }
    
  if ( !fCurrentBusStruct ) 
  {
    Bool_t ok = GetNextDspHeader();
    if (!ok)
    {
      return kFALSE;
    }
    else
    {
      return GetNextBusStruct();
    }
  }
  
  fCurrentBusStructIndex = i;
  
  fCurrentDataIndex = -1;
  
  return kTRUE;
}

//______________________________________________________
Bool_t AliMUONRawStreamTracker::NextDDL()
{
  /// reading tracker DDL
  
  assert( GetReader() != 0 );
  
  fPayload->ResetDDL();
  
  while ( fDDL < fgkMaxDDL ) 
  {
    GetReader()->Reset();
    GetReader()->Select("MUONTRK", fDDL, fDDL);  //Select the DDL file to be read  
    if (GetReader()->ReadHeader()) break;
    AliDebug(3,Form("Skipping DDL %d which does not seem to be there",fDDL));
    ++fDDL;
  }
  
  if ( fDDL == fgkMaxDDL ) 
  {
    fDDL = 0;
    if ( IsErrorLogger()) AddErrorMessage();
    return kFALSE;
  }
  
  AliDebug(3, Form("DDL Number %d\n", fDDL ));
  
  Int_t totalDataWord  = GetReader()->GetDataSize(); // in bytes
  
  UInt_t *buffer = new UInt_t[totalDataWord/4];

  if(!GetReader()->ReadNext((UChar_t*)buffer, totalDataWord))
  {
    delete[] buffer;
    return kFALSE;
  }

#ifndef R__BYTESWAP  
  Swap(buffer, totalDataWord / sizeof(UInt_t)); // swap needed for mac power pc
#endif
  
  Bool_t ok = fPayload->Decode(buffer, totalDataWord/4);

  delete[] buffer;
  
  fDDL++;
  
  return ok;
}

//______________________________________________________
void AliMUONRawStreamTracker::SetMaxBlock(Int_t blk) 
{
  /// set regional card number
  fPayload->SetMaxBlock(blk);
}

//______________________________________________________
void AliMUONRawStreamTracker::AddErrorMessage()
{
  /// add message into logger of AliRawReader per event

    assert( GetReader() != 0 );
    TString msg;
    Int_t occurance = 0;
    AliMUONLogger* log = fPayload->GetErrorLogger();
    
    log->ResetItr();
    while(log->Next(msg, occurance))
    { 
      if (msg.Contains("Parity"))
         GetReader()->AddMinorErrorLog(kParityErr, msg.Data());

      if (msg.Contains("Glitch"))
        GetReader()->AddMajorErrorLog(kGlitchErr, msg.Data());

      if (msg.Contains("Padding"))
        GetReader()->AddMinorErrorLog(kPaddingWordErr, msg.Data());
    }
    
    log->Clear(); // clear logger after each event
}

//______________________________________________________
Bool_t AliMUONRawStreamTracker::IsErrorMessage() const
{
  /// true if there is any error/warning 
  if (GetPayLoad()->GetParityErrors() || 
        GetPayLoad()->GetGlitchErrors() || 
        GetPayLoad()->GetPaddingErrors())
    return kTRUE;
  
  return kFALSE;
}  
    
    
    
    

 AliMUONRawStreamTracker.cxx:1
 AliMUONRawStreamTracker.cxx:2
 AliMUONRawStreamTracker.cxx:3
 AliMUONRawStreamTracker.cxx:4
 AliMUONRawStreamTracker.cxx:5
 AliMUONRawStreamTracker.cxx:6
 AliMUONRawStreamTracker.cxx:7
 AliMUONRawStreamTracker.cxx:8
 AliMUONRawStreamTracker.cxx:9
 AliMUONRawStreamTracker.cxx:10
 AliMUONRawStreamTracker.cxx:11
 AliMUONRawStreamTracker.cxx:12
 AliMUONRawStreamTracker.cxx:13
 AliMUONRawStreamTracker.cxx:14
 AliMUONRawStreamTracker.cxx:15
 AliMUONRawStreamTracker.cxx:16
 AliMUONRawStreamTracker.cxx:17
 AliMUONRawStreamTracker.cxx:18
 AliMUONRawStreamTracker.cxx:19
 AliMUONRawStreamTracker.cxx:20
 AliMUONRawStreamTracker.cxx:21
 AliMUONRawStreamTracker.cxx:22
 AliMUONRawStreamTracker.cxx:23
 AliMUONRawStreamTracker.cxx:24
 AliMUONRawStreamTracker.cxx:25
 AliMUONRawStreamTracker.cxx:26
 AliMUONRawStreamTracker.cxx:27
 AliMUONRawStreamTracker.cxx:28
 AliMUONRawStreamTracker.cxx:29
 AliMUONRawStreamTracker.cxx:30
 AliMUONRawStreamTracker.cxx:31
 AliMUONRawStreamTracker.cxx:32
 AliMUONRawStreamTracker.cxx:33
 AliMUONRawStreamTracker.cxx:34
 AliMUONRawStreamTracker.cxx:35
 AliMUONRawStreamTracker.cxx:36
 AliMUONRawStreamTracker.cxx:37
 AliMUONRawStreamTracker.cxx:38
 AliMUONRawStreamTracker.cxx:39
 AliMUONRawStreamTracker.cxx:40
 AliMUONRawStreamTracker.cxx:41
 AliMUONRawStreamTracker.cxx:42
 AliMUONRawStreamTracker.cxx:43
 AliMUONRawStreamTracker.cxx:44
 AliMUONRawStreamTracker.cxx:45
 AliMUONRawStreamTracker.cxx:46
 AliMUONRawStreamTracker.cxx:47
 AliMUONRawStreamTracker.cxx:48
 AliMUONRawStreamTracker.cxx:49
 AliMUONRawStreamTracker.cxx:50
 AliMUONRawStreamTracker.cxx:51
 AliMUONRawStreamTracker.cxx:52
 AliMUONRawStreamTracker.cxx:53
 AliMUONRawStreamTracker.cxx:54
 AliMUONRawStreamTracker.cxx:55
 AliMUONRawStreamTracker.cxx:56
 AliMUONRawStreamTracker.cxx:57
 AliMUONRawStreamTracker.cxx:58
 AliMUONRawStreamTracker.cxx:59
 AliMUONRawStreamTracker.cxx:60
 AliMUONRawStreamTracker.cxx:61
 AliMUONRawStreamTracker.cxx:62
 AliMUONRawStreamTracker.cxx:63
 AliMUONRawStreamTracker.cxx:64
 AliMUONRawStreamTracker.cxx:65
 AliMUONRawStreamTracker.cxx:66
 AliMUONRawStreamTracker.cxx:67
 AliMUONRawStreamTracker.cxx:68
 AliMUONRawStreamTracker.cxx:69
 AliMUONRawStreamTracker.cxx:70
 AliMUONRawStreamTracker.cxx:71
 AliMUONRawStreamTracker.cxx:72
 AliMUONRawStreamTracker.cxx:73
 AliMUONRawStreamTracker.cxx:74
 AliMUONRawStreamTracker.cxx:75
 AliMUONRawStreamTracker.cxx:76
 AliMUONRawStreamTracker.cxx:77
 AliMUONRawStreamTracker.cxx:78
 AliMUONRawStreamTracker.cxx:79
 AliMUONRawStreamTracker.cxx:80
 AliMUONRawStreamTracker.cxx:81
 AliMUONRawStreamTracker.cxx:82
 AliMUONRawStreamTracker.cxx:83
 AliMUONRawStreamTracker.cxx:84
 AliMUONRawStreamTracker.cxx:85
 AliMUONRawStreamTracker.cxx:86
 AliMUONRawStreamTracker.cxx:87
 AliMUONRawStreamTracker.cxx:88
 AliMUONRawStreamTracker.cxx:89
 AliMUONRawStreamTracker.cxx:90
 AliMUONRawStreamTracker.cxx:91
 AliMUONRawStreamTracker.cxx:92
 AliMUONRawStreamTracker.cxx:93
 AliMUONRawStreamTracker.cxx:94
 AliMUONRawStreamTracker.cxx:95
 AliMUONRawStreamTracker.cxx:96
 AliMUONRawStreamTracker.cxx:97
 AliMUONRawStreamTracker.cxx:98
 AliMUONRawStreamTracker.cxx:99
 AliMUONRawStreamTracker.cxx:100
 AliMUONRawStreamTracker.cxx:101
 AliMUONRawStreamTracker.cxx:102
 AliMUONRawStreamTracker.cxx:103
 AliMUONRawStreamTracker.cxx:104
 AliMUONRawStreamTracker.cxx:105
 AliMUONRawStreamTracker.cxx:106
 AliMUONRawStreamTracker.cxx:107
 AliMUONRawStreamTracker.cxx:108
 AliMUONRawStreamTracker.cxx:109
 AliMUONRawStreamTracker.cxx:110
 AliMUONRawStreamTracker.cxx:111
 AliMUONRawStreamTracker.cxx:112
 AliMUONRawStreamTracker.cxx:113
 AliMUONRawStreamTracker.cxx:114
 AliMUONRawStreamTracker.cxx:115
 AliMUONRawStreamTracker.cxx:116
 AliMUONRawStreamTracker.cxx:117
 AliMUONRawStreamTracker.cxx:118
 AliMUONRawStreamTracker.cxx:119
 AliMUONRawStreamTracker.cxx:120
 AliMUONRawStreamTracker.cxx:121
 AliMUONRawStreamTracker.cxx:122
 AliMUONRawStreamTracker.cxx:123
 AliMUONRawStreamTracker.cxx:124
 AliMUONRawStreamTracker.cxx:125
 AliMUONRawStreamTracker.cxx:126
 AliMUONRawStreamTracker.cxx:127
 AliMUONRawStreamTracker.cxx:128
 AliMUONRawStreamTracker.cxx:129
 AliMUONRawStreamTracker.cxx:130
 AliMUONRawStreamTracker.cxx:131
 AliMUONRawStreamTracker.cxx:132
 AliMUONRawStreamTracker.cxx:133
 AliMUONRawStreamTracker.cxx:134
 AliMUONRawStreamTracker.cxx:135
 AliMUONRawStreamTracker.cxx:136
 AliMUONRawStreamTracker.cxx:137
 AliMUONRawStreamTracker.cxx:138
 AliMUONRawStreamTracker.cxx:139
 AliMUONRawStreamTracker.cxx:140
 AliMUONRawStreamTracker.cxx:141
 AliMUONRawStreamTracker.cxx:142
 AliMUONRawStreamTracker.cxx:143
 AliMUONRawStreamTracker.cxx:144
 AliMUONRawStreamTracker.cxx:145
 AliMUONRawStreamTracker.cxx:146
 AliMUONRawStreamTracker.cxx:147
 AliMUONRawStreamTracker.cxx:148
 AliMUONRawStreamTracker.cxx:149
 AliMUONRawStreamTracker.cxx:150
 AliMUONRawStreamTracker.cxx:151
 AliMUONRawStreamTracker.cxx:152
 AliMUONRawStreamTracker.cxx:153
 AliMUONRawStreamTracker.cxx:154
 AliMUONRawStreamTracker.cxx:155
 AliMUONRawStreamTracker.cxx:156
 AliMUONRawStreamTracker.cxx:157
 AliMUONRawStreamTracker.cxx:158
 AliMUONRawStreamTracker.cxx:159
 AliMUONRawStreamTracker.cxx:160
 AliMUONRawStreamTracker.cxx:161
 AliMUONRawStreamTracker.cxx:162
 AliMUONRawStreamTracker.cxx:163
 AliMUONRawStreamTracker.cxx:164
 AliMUONRawStreamTracker.cxx:165
 AliMUONRawStreamTracker.cxx:166
 AliMUONRawStreamTracker.cxx:167
 AliMUONRawStreamTracker.cxx:168
 AliMUONRawStreamTracker.cxx:169
 AliMUONRawStreamTracker.cxx:170
 AliMUONRawStreamTracker.cxx:171
 AliMUONRawStreamTracker.cxx:172
 AliMUONRawStreamTracker.cxx:173
 AliMUONRawStreamTracker.cxx:174
 AliMUONRawStreamTracker.cxx:175
 AliMUONRawStreamTracker.cxx:176
 AliMUONRawStreamTracker.cxx:177
 AliMUONRawStreamTracker.cxx:178
 AliMUONRawStreamTracker.cxx:179
 AliMUONRawStreamTracker.cxx:180
 AliMUONRawStreamTracker.cxx:181
 AliMUONRawStreamTracker.cxx:182
 AliMUONRawStreamTracker.cxx:183
 AliMUONRawStreamTracker.cxx:184
 AliMUONRawStreamTracker.cxx:185
 AliMUONRawStreamTracker.cxx:186
 AliMUONRawStreamTracker.cxx:187
 AliMUONRawStreamTracker.cxx:188
 AliMUONRawStreamTracker.cxx:189
 AliMUONRawStreamTracker.cxx:190
 AliMUONRawStreamTracker.cxx:191
 AliMUONRawStreamTracker.cxx:192
 AliMUONRawStreamTracker.cxx:193
 AliMUONRawStreamTracker.cxx:194
 AliMUONRawStreamTracker.cxx:195
 AliMUONRawStreamTracker.cxx:196
 AliMUONRawStreamTracker.cxx:197
 AliMUONRawStreamTracker.cxx:198
 AliMUONRawStreamTracker.cxx:199
 AliMUONRawStreamTracker.cxx:200
 AliMUONRawStreamTracker.cxx:201
 AliMUONRawStreamTracker.cxx:202
 AliMUONRawStreamTracker.cxx:203
 AliMUONRawStreamTracker.cxx:204
 AliMUONRawStreamTracker.cxx:205
 AliMUONRawStreamTracker.cxx:206
 AliMUONRawStreamTracker.cxx:207
 AliMUONRawStreamTracker.cxx:208
 AliMUONRawStreamTracker.cxx:209
 AliMUONRawStreamTracker.cxx:210
 AliMUONRawStreamTracker.cxx:211
 AliMUONRawStreamTracker.cxx:212
 AliMUONRawStreamTracker.cxx:213
 AliMUONRawStreamTracker.cxx:214
 AliMUONRawStreamTracker.cxx:215
 AliMUONRawStreamTracker.cxx:216
 AliMUONRawStreamTracker.cxx:217
 AliMUONRawStreamTracker.cxx:218
 AliMUONRawStreamTracker.cxx:219
 AliMUONRawStreamTracker.cxx:220
 AliMUONRawStreamTracker.cxx:221
 AliMUONRawStreamTracker.cxx:222
 AliMUONRawStreamTracker.cxx:223
 AliMUONRawStreamTracker.cxx:224
 AliMUONRawStreamTracker.cxx:225
 AliMUONRawStreamTracker.cxx:226
 AliMUONRawStreamTracker.cxx:227
 AliMUONRawStreamTracker.cxx:228
 AliMUONRawStreamTracker.cxx:229
 AliMUONRawStreamTracker.cxx:230
 AliMUONRawStreamTracker.cxx:231
 AliMUONRawStreamTracker.cxx:232
 AliMUONRawStreamTracker.cxx:233
 AliMUONRawStreamTracker.cxx:234
 AliMUONRawStreamTracker.cxx:235
 AliMUONRawStreamTracker.cxx:236
 AliMUONRawStreamTracker.cxx:237
 AliMUONRawStreamTracker.cxx:238
 AliMUONRawStreamTracker.cxx:239
 AliMUONRawStreamTracker.cxx:240
 AliMUONRawStreamTracker.cxx:241
 AliMUONRawStreamTracker.cxx:242
 AliMUONRawStreamTracker.cxx:243
 AliMUONRawStreamTracker.cxx:244
 AliMUONRawStreamTracker.cxx:245
 AliMUONRawStreamTracker.cxx:246
 AliMUONRawStreamTracker.cxx:247
 AliMUONRawStreamTracker.cxx:248
 AliMUONRawStreamTracker.cxx:249
 AliMUONRawStreamTracker.cxx:250
 AliMUONRawStreamTracker.cxx:251
 AliMUONRawStreamTracker.cxx:252
 AliMUONRawStreamTracker.cxx:253
 AliMUONRawStreamTracker.cxx:254
 AliMUONRawStreamTracker.cxx:255
 AliMUONRawStreamTracker.cxx:256
 AliMUONRawStreamTracker.cxx:257
 AliMUONRawStreamTracker.cxx:258
 AliMUONRawStreamTracker.cxx:259
 AliMUONRawStreamTracker.cxx:260
 AliMUONRawStreamTracker.cxx:261
 AliMUONRawStreamTracker.cxx:262
 AliMUONRawStreamTracker.cxx:263
 AliMUONRawStreamTracker.cxx:264
 AliMUONRawStreamTracker.cxx:265
 AliMUONRawStreamTracker.cxx:266
 AliMUONRawStreamTracker.cxx:267
 AliMUONRawStreamTracker.cxx:268
 AliMUONRawStreamTracker.cxx:269
 AliMUONRawStreamTracker.cxx:270
 AliMUONRawStreamTracker.cxx:271
 AliMUONRawStreamTracker.cxx:272
 AliMUONRawStreamTracker.cxx:273
 AliMUONRawStreamTracker.cxx:274
 AliMUONRawStreamTracker.cxx:275
 AliMUONRawStreamTracker.cxx:276
 AliMUONRawStreamTracker.cxx:277
 AliMUONRawStreamTracker.cxx:278
 AliMUONRawStreamTracker.cxx:279
 AliMUONRawStreamTracker.cxx:280
 AliMUONRawStreamTracker.cxx:281
 AliMUONRawStreamTracker.cxx:282
 AliMUONRawStreamTracker.cxx:283
 AliMUONRawStreamTracker.cxx:284
 AliMUONRawStreamTracker.cxx:285
 AliMUONRawStreamTracker.cxx:286
 AliMUONRawStreamTracker.cxx:287
 AliMUONRawStreamTracker.cxx:288
 AliMUONRawStreamTracker.cxx:289
 AliMUONRawStreamTracker.cxx:290
 AliMUONRawStreamTracker.cxx:291
 AliMUONRawStreamTracker.cxx:292
 AliMUONRawStreamTracker.cxx:293
 AliMUONRawStreamTracker.cxx:294
 AliMUONRawStreamTracker.cxx:295
 AliMUONRawStreamTracker.cxx:296
 AliMUONRawStreamTracker.cxx:297
 AliMUONRawStreamTracker.cxx:298
 AliMUONRawStreamTracker.cxx:299
 AliMUONRawStreamTracker.cxx:300
 AliMUONRawStreamTracker.cxx:301
 AliMUONRawStreamTracker.cxx:302
 AliMUONRawStreamTracker.cxx:303
 AliMUONRawStreamTracker.cxx:304
 AliMUONRawStreamTracker.cxx:305
 AliMUONRawStreamTracker.cxx:306
 AliMUONRawStreamTracker.cxx:307
 AliMUONRawStreamTracker.cxx:308
 AliMUONRawStreamTracker.cxx:309
 AliMUONRawStreamTracker.cxx:310
 AliMUONRawStreamTracker.cxx:311
 AliMUONRawStreamTracker.cxx:312
 AliMUONRawStreamTracker.cxx:313
 AliMUONRawStreamTracker.cxx:314
 AliMUONRawStreamTracker.cxx:315
 AliMUONRawStreamTracker.cxx:316
 AliMUONRawStreamTracker.cxx:317
 AliMUONRawStreamTracker.cxx:318
 AliMUONRawStreamTracker.cxx:319
 AliMUONRawStreamTracker.cxx:320
 AliMUONRawStreamTracker.cxx:321
 AliMUONRawStreamTracker.cxx:322
 AliMUONRawStreamTracker.cxx:323
 AliMUONRawStreamTracker.cxx:324
 AliMUONRawStreamTracker.cxx:325
 AliMUONRawStreamTracker.cxx:326
 AliMUONRawStreamTracker.cxx:327
 AliMUONRawStreamTracker.cxx:328
 AliMUONRawStreamTracker.cxx:329
 AliMUONRawStreamTracker.cxx:330
 AliMUONRawStreamTracker.cxx:331
 AliMUONRawStreamTracker.cxx:332
 AliMUONRawStreamTracker.cxx:333
 AliMUONRawStreamTracker.cxx:334
 AliMUONRawStreamTracker.cxx:335
 AliMUONRawStreamTracker.cxx:336
 AliMUONRawStreamTracker.cxx:337
 AliMUONRawStreamTracker.cxx:338
 AliMUONRawStreamTracker.cxx:339
 AliMUONRawStreamTracker.cxx:340
 AliMUONRawStreamTracker.cxx:341
 AliMUONRawStreamTracker.cxx:342
 AliMUONRawStreamTracker.cxx:343
 AliMUONRawStreamTracker.cxx:344
 AliMUONRawStreamTracker.cxx:345
 AliMUONRawStreamTracker.cxx:346
 AliMUONRawStreamTracker.cxx:347
 AliMUONRawStreamTracker.cxx:348
 AliMUONRawStreamTracker.cxx:349
 AliMUONRawStreamTracker.cxx:350
 AliMUONRawStreamTracker.cxx:351
 AliMUONRawStreamTracker.cxx:352
 AliMUONRawStreamTracker.cxx:353
 AliMUONRawStreamTracker.cxx:354
 AliMUONRawStreamTracker.cxx:355
 AliMUONRawStreamTracker.cxx:356
 AliMUONRawStreamTracker.cxx:357
 AliMUONRawStreamTracker.cxx:358
 AliMUONRawStreamTracker.cxx:359
 AliMUONRawStreamTracker.cxx:360
 AliMUONRawStreamTracker.cxx:361
 AliMUONRawStreamTracker.cxx:362
 AliMUONRawStreamTracker.cxx:363
 AliMUONRawStreamTracker.cxx:364
 AliMUONRawStreamTracker.cxx:365
 AliMUONRawStreamTracker.cxx:366
 AliMUONRawStreamTracker.cxx:367
 AliMUONRawStreamTracker.cxx:368
 AliMUONRawStreamTracker.cxx:369
 AliMUONRawStreamTracker.cxx:370
 AliMUONRawStreamTracker.cxx:371
 AliMUONRawStreamTracker.cxx:372
 AliMUONRawStreamTracker.cxx:373
 AliMUONRawStreamTracker.cxx:374
 AliMUONRawStreamTracker.cxx:375
 AliMUONRawStreamTracker.cxx:376
 AliMUONRawStreamTracker.cxx:377
 AliMUONRawStreamTracker.cxx:378
 AliMUONRawStreamTracker.cxx:379
 AliMUONRawStreamTracker.cxx:380
 AliMUONRawStreamTracker.cxx:381
 AliMUONRawStreamTracker.cxx:382
 AliMUONRawStreamTracker.cxx:383
 AliMUONRawStreamTracker.cxx:384
 AliMUONRawStreamTracker.cxx:385
 AliMUONRawStreamTracker.cxx:386
 AliMUONRawStreamTracker.cxx:387
 AliMUONRawStreamTracker.cxx:388
 AliMUONRawStreamTracker.cxx:389
 AliMUONRawStreamTracker.cxx:390
 AliMUONRawStreamTracker.cxx:391
 AliMUONRawStreamTracker.cxx:392
 AliMUONRawStreamTracker.cxx:393
 AliMUONRawStreamTracker.cxx:394
 AliMUONRawStreamTracker.cxx:395
 AliMUONRawStreamTracker.cxx:396
 AliMUONRawStreamTracker.cxx:397
 AliMUONRawStreamTracker.cxx:398
 AliMUONRawStreamTracker.cxx:399
 AliMUONRawStreamTracker.cxx:400
 AliMUONRawStreamTracker.cxx:401
 AliMUONRawStreamTracker.cxx:402
 AliMUONRawStreamTracker.cxx:403
 AliMUONRawStreamTracker.cxx:404
 AliMUONRawStreamTracker.cxx:405
 AliMUONRawStreamTracker.cxx:406
 AliMUONRawStreamTracker.cxx:407
 AliMUONRawStreamTracker.cxx:408
 AliMUONRawStreamTracker.cxx:409
 AliMUONRawStreamTracker.cxx:410
 AliMUONRawStreamTracker.cxx:411
 AliMUONRawStreamTracker.cxx:412
 AliMUONRawStreamTracker.cxx:413
 AliMUONRawStreamTracker.cxx:414
 AliMUONRawStreamTracker.cxx:415
 AliMUONRawStreamTracker.cxx:416
 AliMUONRawStreamTracker.cxx:417
 AliMUONRawStreamTracker.cxx:418
 AliMUONRawStreamTracker.cxx:419
 AliMUONRawStreamTracker.cxx:420
 AliMUONRawStreamTracker.cxx:421
 AliMUONRawStreamTracker.cxx:422
 AliMUONRawStreamTracker.cxx:423
 AliMUONRawStreamTracker.cxx:424
 AliMUONRawStreamTracker.cxx:425
 AliMUONRawStreamTracker.cxx:426
 AliMUONRawStreamTracker.cxx:427
 AliMUONRawStreamTracker.cxx:428
 AliMUONRawStreamTracker.cxx:429
 AliMUONRawStreamTracker.cxx:430
 AliMUONRawStreamTracker.cxx:431
 AliMUONRawStreamTracker.cxx:432
 AliMUONRawStreamTracker.cxx:433
 AliMUONRawStreamTracker.cxx:434
 AliMUONRawStreamTracker.cxx:435
 AliMUONRawStreamTracker.cxx:436
 AliMUONRawStreamTracker.cxx:437
 AliMUONRawStreamTracker.cxx:438
 AliMUONRawStreamTracker.cxx:439
 AliMUONRawStreamTracker.cxx:440
 AliMUONRawStreamTracker.cxx:441
 AliMUONRawStreamTracker.cxx:442
 AliMUONRawStreamTracker.cxx:443
 AliMUONRawStreamTracker.cxx:444
 AliMUONRawStreamTracker.cxx:445
 AliMUONRawStreamTracker.cxx:446
 AliMUONRawStreamTracker.cxx:447
 AliMUONRawStreamTracker.cxx:448
 AliMUONRawStreamTracker.cxx:449
 AliMUONRawStreamTracker.cxx:450
 AliMUONRawStreamTracker.cxx:451
 AliMUONRawStreamTracker.cxx:452
 AliMUONRawStreamTracker.cxx:453
 AliMUONRawStreamTracker.cxx:454
 AliMUONRawStreamTracker.cxx:455
 AliMUONRawStreamTracker.cxx:456
 AliMUONRawStreamTracker.cxx:457
 AliMUONRawStreamTracker.cxx:458
 AliMUONRawStreamTracker.cxx:459
 AliMUONRawStreamTracker.cxx:460
 AliMUONRawStreamTracker.cxx:461
 AliMUONRawStreamTracker.cxx:462
 AliMUONRawStreamTracker.cxx:463
 AliMUONRawStreamTracker.cxx:464
 AliMUONRawStreamTracker.cxx:465
 AliMUONRawStreamTracker.cxx:466
 AliMUONRawStreamTracker.cxx:467
 AliMUONRawStreamTracker.cxx:468
 AliMUONRawStreamTracker.cxx:469
 AliMUONRawStreamTracker.cxx:470
 AliMUONRawStreamTracker.cxx:471
 AliMUONRawStreamTracker.cxx:472
 AliMUONRawStreamTracker.cxx:473
 AliMUONRawStreamTracker.cxx:474