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$

/// \ingroup macros
/// \file MUONRawStreamTracker.C
/// \brief Macro for reading tracker raw data
///
/// \author Ch. Finck, Subatech Febuary
///
/// Added example routines to show how to use the interface of the high
/// performance decoder AliMUONRawStreamTrackerHP.
/// by  Artur Szostak <artursz@iafrica.com>
///
/// This macro is interfaced with AliRawReader for RAW
///
/// There are 2 ways of reading the data: 
/// - one where each intermediate structure (block, dsp, buspatch) is looped over
/// - and one, using an iterator, where we're directly accessing the pad informations 
/// (charge).
///


#if !defined(__CINT__) || defined(__MAKECINT__)

// RAW includes
#include "AliRawReader.h"

// MUON includes
#include "AliMUONRawStreamTrackerHP.h"
#include "TStopwatch.h"
#include "AliRawDataErrorLog.h"
#include "Riostream.h"
#include "AliMUONLogger.h"

#endif

void MUONRawStreamTrackerExpert(TString fileName = "./", Int_t maxEvent = 1000,  
                                Int_t minDDL = 0, Int_t maxDDL = 19)
{
  /// This routine shows how to use the decoder's expert interface.
  
  TStopwatch timer;
  timer.Start(kTRUE);
  
  AliRawReader* rawReader = AliRawReader::Create(fileName.Data());
  
  // raw stream
  AliMUONRawStreamTrackerHP rawStream(rawReader);
  
  // light weight interfaces to headers
  const AliMUONRawStreamTrackerHP::AliBlockHeader*      blkHeader  = 0x0;
  const AliMUONRawStreamTrackerHP::AliDspHeader*        dspHeader  = 0x0;
  const AliMUONRawStreamTrackerHP::AliBusPatch*         busStruct  = 0x0;
  
  //   Loop over events  
  Int_t iEvent = 0;
  Int_t dataSize;
  
  while (rawReader->NextEvent()) {
    
    if (iEvent == maxEvent)
      break;
    
    printf("Event %d\n",iEvent++);
    
    // read DDL while < 20 DDL
    while(rawStream.NextDDL()) {
      
      if (rawStream.GetDDL() < minDDL || rawStream.GetDDL() > maxDDL)
        continue;
      
      printf("\niDDL %d\n", rawStream.GetDDL());
      
      // loop over block structure
      Int_t nBlock = rawStream.GetBlockCount();
      for(Int_t iBlock = 0; iBlock < nBlock ;iBlock++){
        
        blkHeader = rawStream.GetBlockHeader(iBlock);
        printf("Block %d Total length %d\n",iBlock,blkHeader->GetTotalLength());
       
        // loop over DSP structure
        Int_t nDsp = rawStream.GetDspCount(iBlock);
        for(Int_t iDsp = 0; iDsp < nDsp ;iDsp++){   //DSP loop
          
          dspHeader =  blkHeader->GetDspHeader(iDsp);
          printf("Dsp %d length %d error word %d\n",iDsp,dspHeader->GetTotalLength(), dspHeader->GetErrorWord());
          
          // loop over BusPatch structure
          Int_t nBusPatch = rawStream.GetBusPatchCount(iBlock, iDsp);
          for(Int_t iBusPatch = 0; iBusPatch < nBusPatch; iBusPatch++) {  
            
            busStruct = dspHeader->GetBusPatch(iBusPatch);
            
            // loop over data
            dataSize = busStruct->GetLength();
            for (Int_t iData = 0; iData < dataSize; iData++) {
              
              Int_t  manuId    = busStruct->GetManuId(iData);
              Int_t  channelId = busStruct->GetChannelId(iData);
              Int_t  charge    = busStruct->GetCharge(iData);
              printf("buspatch %5d manuI %4d channel %3d charge %4d\n", 
                     busStruct->GetBusPatchId(),
                     manuId, 
                     channelId, charge);
            } // iData
          } // iBusPatch
        } // iDsp
      } // iBlock
    } // NextDDL
  }// NextEvent
  
  delete rawReader;
  timer.Print();
}


void MUONRawStreamTrackerExpert2(TString fileName = "./", Int_t maxEvent = 1000,  
                                Int_t minDDL = 0, Int_t maxDDL = 19)
{
  /// This routine shows an alternate way to iterate over the DDL structures
  /// compared to MUONRawStreamTrackerExpert().
  
  TStopwatch timer;
  timer.Start(kTRUE);
  
  AliRawReader* rawReader = AliRawReader::Create(fileName.Data());
  
  // raw stream
  AliMUONRawStreamTrackerHP rawStream(rawReader);
  
  // light weight interfaces to headers
  const AliMUONRawStreamTrackerHP::AliBlockHeader*      blkHeader  = 0x0;
  const AliMUONRawStreamTrackerHP::AliDspHeader*        dspHeader  = 0x0;
  const AliMUONRawStreamTrackerHP::AliBusPatch*         busStruct  = 0x0;
  
  //   Loop over events  
  Int_t iEvent = 0;
  Int_t dataSize;
  
  while (rawReader->NextEvent()) {
    
    if (iEvent == maxEvent)
      break;
    
    printf("Event %d\n",iEvent++);
    
    // read DDL while < 20 DDL
    while(rawStream.NextDDL()) {
      
      if (rawStream.GetDDL() < minDDL || rawStream.GetDDL() > maxDDL)
        continue;
      
      printf("\niDDL %d\n", rawStream.GetDDL());
      
      // loop over block structure
      Int_t nBlock = rawStream.GetBlockCount();
      for(Int_t iBlock = 0; iBlock < nBlock ;iBlock++){
        
        blkHeader = rawStream.GetBlockHeader(iBlock);
        printf("Block %d Total length %d\n",iBlock,blkHeader->GetTotalLength());
       
        // loop over DSP structure
        Int_t nDsp = rawStream.GetDspCount(iBlock);
        for(Int_t iDsp = 0; iDsp < nDsp ;iDsp++){   //DSP loop
          
          dspHeader =  rawStream.GetDspHeader(iBlock, iDsp);
          printf("Dsp %d length %d error word %d\n",iDsp,dspHeader->GetTotalLength(), dspHeader->GetErrorWord());
          
          // loop over BusPatch structure
          Int_t nBusPatch = rawStream.GetBusPatchCount(iBlock, iDsp);
          for(Int_t iBusPatch = 0; iBusPatch < nBusPatch; iBusPatch++) {  
            
            busStruct = rawStream.GetBusPatch(iBlock, iDsp, iBusPatch);
            
            // loop over data
            dataSize = busStruct->GetLength();
            for (Int_t iData = 0; iData < dataSize; iData++) {
              
              Int_t  manuId    = busStruct->GetManuId(iData);
              Int_t  channelId = busStruct->GetChannelId(iData);
              Int_t  charge    = busStruct->GetCharge(iData);
              printf("buspatch %5d manuI %4d channel %3d charge %4d\n", 
                     busStruct->GetBusPatchId(),
                     manuId, 
                     channelId, charge);
            } // iData
          } // iBusPatch
        } // iDsp
      } // iBlock
    } // NextDDL
  }// NextEvent
  
  delete rawReader;
  timer.Print();
}


void MUONRawStreamTrackerExpert3(TString fileName = "./", Int_t maxEvent = 1000,  
                                Int_t minDDL = 0, Int_t maxDDL = 19)
{
  /// This routine shows yet another alternate way to iterate over the DDL
  /// structures compared to MUONRawStreamTrackerExpert().
  
  TStopwatch timer;
  timer.Start(kTRUE);
  
  AliRawReader* rawReader = AliRawReader::Create(fileName.Data());
  
  // raw stream
  AliMUONRawStreamTrackerHP rawStream(rawReader);
  
  // light weight interfaces to headers
  const AliMUONRawStreamTrackerHP::AliBlockHeader*      blkHeader  = 0x0;
  const AliMUONRawStreamTrackerHP::AliDspHeader*        dspHeader  = 0x0;
  const AliMUONRawStreamTrackerHP::AliBusPatch*         busStruct  = 0x0;
  
  //   Loop over events  
  Int_t iEvent = 0;
  Int_t dataSize;
  
  while (rawReader->NextEvent()) {
    
    if (iEvent == maxEvent)
      break;
    
    printf("Event %d\n",iEvent++);
    
    // read DDL while < 20 DDL
    while(rawStream.NextDDL()) {
      
      if (rawStream.GetDDL() < minDDL || rawStream.GetDDL() > maxDDL)
        continue;
      
      printf("\niDDL %d\n", rawStream.GetDDL());
      
      // loop over block structure
      Int_t iBlock = 0;
      blkHeader = rawStream.GetFirstBlockHeader();
      while (blkHeader != NULL)
      {
        printf("Block %d Total length %d\n",iBlock,blkHeader->GetTotalLength());
       
        // loop over DSP structure
        Int_t iDsp = 0;
        dspHeader = blkHeader->GetFirstDspHeader();
        while (dspHeader != NULL)
        {
          printf("Dsp %d length %d error word %d\n",iDsp,dspHeader->GetTotalLength(), dspHeader->GetErrorWord());
          
          // loop over BusPatch structure
          Int_t iBusPatch = 0;
          busStruct = dspHeader->GetFirstBusPatch();
          while (busStruct != NULL)
          {
            // loop over data
            dataSize = busStruct->GetLength();
            for (Int_t iData = 0; iData < dataSize; iData++) {
              
              Int_t  manuId    = busStruct->GetManuId(iData);
              Int_t  channelId = busStruct->GetChannelId(iData);
              Int_t  charge    = busStruct->GetCharge(iData);
              printf("buspatch %5d manuI %4d channel %3d charge %4d\n", 
                     busStruct->GetBusPatchId(),
                     manuId, 
                     channelId, charge);
            } // iData
            busStruct = busStruct->Next();
            iBusPatch++;
          } // iBusPatch
          dspHeader = dspHeader->Next();
          iDsp++;
        } // iDsp
        blkHeader = blkHeader->Next();
        iBlock++;
      } // iBlock
    } // NextDDL
  }// NextEvent
  
  delete rawReader;
  timer.Print();
}


void MUONRawStreamTrackerSimple(TString fileName = "./", Int_t maxEvent = 1000)
{
  /// This routine shows how to use the high performance decoder's simple interface.

  TStopwatch timer;
  timer.Start(kTRUE);
  
  AliRawReader* rawReader = AliRawReader::Create(fileName.Data());
  
  // raw stream
  AliMUONRawStreamTrackerHP rawStream(rawReader);    
  
  //   Loop over events  
  Int_t iEvent = 0;
  
  while (rawReader->NextEvent()) {
    
    if (iEvent == maxEvent)
      break;
    
    printf("Event %d\n",iEvent++);
    
    Int_t busPatch;
    UShort_t manuId, adc;
    UChar_t manuChannel;
    
    rawStream.First();
    
    while ( rawStream.Next(busPatch,manuId,manuChannel,adc) )
    {      
      printf("buspatch %5d manuI %4d channel %3d charge %4d\n", 
             busPatch,manuId,manuChannel, adc);
    }
  }
  
  delete rawReader;
  timer.Print();
}


void ShowErrors(const AliRawReader& rawReader)
{
  for ( Int_t i = 0; i < rawReader.GetNumberOfErrorLogs(); ++i )
  {
    AliRawDataErrorLog* error = rawReader.GetErrorLog(i);
    error->Print();
  }

  cout << Form("Number of error logs : %d (%d events)",
               rawReader.GetNumberOfErrorLogs(),
               rawReader.GetNumberOfEvents()) << endl;
}


void MUONRawStreamTrackerSimple2(TString fileName = "./", Int_t maxEvent = 1000)
{
  /// This routine is an alternative to MUONRawStreamTrackerSimple() which is even faster.

  TStopwatch timer;
  timer.Start(kTRUE);
  
  AliRawReader* rawReader = AliRawReader::Create(fileName.Data());
  
  // raw stream
  AliMUONRawStreamTrackerHP rawStream(rawReader);
  rawStream.EnableRawReaderErrorLogger();
  
  //   Loop over events  
  Int_t iEvent = 0;
  
  while (rawReader->NextEvent()) {
    
    if (iEvent == maxEvent)
      break;
    
    printf("Event %d\n",iEvent++);
    
    UShort_t manuId, adc;
    UChar_t manuChannel;
    
    rawStream.First();
    const AliMUONRawStreamTrackerHP::AliBusPatch* buspatch = NULL;
    while ((buspatch = rawStream.Next()) != NULL)
    {
      for (UInt_t i = 0; i < buspatch->GetDataCount(); i++)
      {
        buspatch->GetData(i, manuId, manuChannel, adc);
        printf("buspatch %5d manuI %4d channel %3d charge %4d\n", 
               buspatch->GetBusPatchId(), manuId, manuChannel, adc);
      }
    }
  }

  ShowErrors(*rawReader);
  
  delete rawReader;
  timer.Print();
}

void MUONRawStreamTrackerErrorCount(TString fileName = "collection://filelist", Int_t maxEvent = -1)
{
  /// This routine is just a loop to get the error log at the end
  
  TStopwatch timer;
  timer.Start(kTRUE);
  
  AliRawReader* rawReader = AliRawReader::Create(fileName.Data());
  
  // raw stream
  AliMUONRawStreamTrackerHP rawStream(rawReader);
  rawStream.DisableWarnings();    

  AliMUONLogger logger;
  
  rawStream.EnableMUONErrorLogger();  
  rawStream.SetMUONErrorLogger(&logger);    
  rawStream.SetLoggingDetailLevel(AliMUONRawStreamTrackerHP::kMediumErrorDetail);
  
  //   Loop over events  
  Int_t iEvent = 0;
  
  while (rawReader->NextEvent()) 
  {    
    if (iEvent == maxEvent) break;
    
    rawStream.First();

    const AliMUONRawStreamTrackerHP::AliBusPatch* buspatch = NULL;
    
    while ((buspatch = rawStream.Next()) != NULL)
    {
    }
    
    ++iEvent;
  }
  
  logger.Print();
  
//  ShowErrors(*rawReader);

  delete rawReader;
  timer.Print();
}

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