ROOT logo
/**************************************************************************
 * This file is property of and copyright by the ALICE HLT Project        *
 * All rights reserved.                                                   *
 *                                                                        *
 * Primary Authors:                                                       *
 *   Artur Szostak <artursz@iafrica.com>                                  *
 *                                                                        *
 * 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.                  *
 **************************************************************************/

/// \ingroup macros
/// \file MUONTimeRawStreamTracker.C
/// \brief Macro for checking the timing (speed) performance of the tracker decoder.
///
/// \author Artur Szostak <artursz@iafrica.com>
///
/// This macro is used to check the timing (speed) performance of the 
/// decoder for the tracker DDLs. It can be invoked as follows:
/// 
///  $ aliroot
/// .L $ALICE_ROOT/MUON/MUONTimeRawStreamTracker.C+
///  MUONTimeRawStreamTracker(filename, maxEvent);
///
/// where \em filename is the name of a file containing the raw data, or alternatively
/// the directory containing rawX (X being an integer) paths with the raw DDL
/// data. The \em maxEvent value is the maximum event to process (default set to
/// 1000). Thus the macro will time the algorithm for all events in the range
/// [0 .. maxEvent-1].
///

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

#include "AliCodeTimer.h"

// MUON includes
#include "AliMUONRawStreamTrackerHP.h"
#include "AliMUONDspHeader.h"
#include "AliMUONBlockHeader.h"
#include "AliMUONBusStruct.h"
#include "AliMUONDDLTracker.h"

// RAW includes
#include "AliRawReader.h"
#include "AliRawReaderMemory.h"
#include "AliRawDataHeader.h"

#include "TStopwatch.h"
#include "TMath.h"
#include "Riostream.h"

#endif


// Linked list node for buffer structures.
struct AliBufferInfo
{
	AliBufferInfo* fNext;
	Int_t fEquipId;
	UInt_t fBufferSize;
	UChar_t* fBuffer;
};


// Digit information to store
struct AliDigitInfo
{
	UShort_t fManuId;
	UShort_t fAdc;
	UChar_t fChannelId;
};


UInt_t LoadFiles(AliBufferInfo*& list, TString fileName = "./", Int_t maxEvent = 1000)
{
	/// Reads in the DDL files into memory buffers as a linked list.

	AliRawReader* rawReader = AliRawReader::Create(fileName.Data()); 

	if (rawReader == NULL)
	{
		cerr << "ERROR: Could not create AliRawReader." << endl;
		delete rawReader;
		return 0;
	}

	UInt_t count = 0;
	Int_t iEvent = 0;
	list = NULL;
	while (rawReader->NextEvent())
	{
		if (iEvent++ >= maxEvent) break;

		rawReader->Select("MUONTRK", 0, 19);
		while (rawReader->ReadHeader())
		{
			AliBufferInfo* info = new AliBufferInfo;
			if (info == NULL)
			{
				cerr << "ERROR: Out of memory, sorry. You should limit the number of events read in." << endl;
				delete rawReader;
				return count;
			}
			info->fNext = list;
			info->fEquipId = rawReader->GetEquipmentId();
			info->fBufferSize = rawReader->GetDataSize() + sizeof(AliRawDataHeader);
			info->fBuffer = new UChar_t[info->fBufferSize];
			if (info->fBuffer == NULL)
			{
				cerr << "ERROR: Out of memory, sorry. You should limit the number of events read in." << endl;
				delete rawReader;
				return count;
			}
			list = info;
			
			// Copy the header.
			memcpy(info->fBuffer, rawReader->GetDataHeader(), sizeof(AliRawDataHeader));

			// Now copy the payload.
			if (! rawReader->ReadNext(
						info->fBuffer + sizeof(AliRawDataHeader),
						info->fBufferSize - sizeof(AliRawDataHeader)
					)
			   )
			{
				cerr << "ERROR: Failed to read from AliRawReader." << endl;
			}
			count++;
		}
	}

	delete rawReader;
	return count;
}


UInt_t CountMaxDigits(AliBufferInfo* list)
{
	/// Counts the maximum number of digits possible in all the buffers.

	UInt_t total = 0;
	AliBufferInfo* current = list;
	while (current != NULL)
	{
		total += current->fBufferSize;
		current = current->fNext;
	}
	return total;
}


void ReleaseBuffers(AliBufferInfo* list)
{
	/// Deletes the memory allocated for the linked list of buffers.

	AliBufferInfo* current = list;
	while (current != NULL)
	{
		AliBufferInfo* tmp = current;
		current = current->fNext;
		delete [] tmp->fBuffer;
		delete tmp;
	}
}


Double_t TimeDecoderBusPatchIteration(AliBufferInfo* list, AliDigitInfo* buffer, UInt_t maxBufferSize)
{
	/// Perform a timing using the new decoder using the "next bus patch" iteration

	AliRawReaderMemory rawReader;
	AliMUONRawStreamTrackerHP rawStream(&rawReader);
	rawReader.NextEvent();

	TStopwatch timer;
	timer.Start(kTRUE);

	UInt_t i = 0;
	AliBufferInfo* current = list;
	while (current != NULL)
	{
		rawReader.SetMemory(current->fBuffer, current->fBufferSize);
		rawReader.SetEquipmentID(current->fEquipId);
		rawReader.Reset();

		UShort_t manuId, adc;
		UChar_t manuChannel;

		rawStream.First();

		const AliMUONRawStreamTrackerHP::AliBusPatch* buspatch = NULL;
		while ((buspatch = rawStream.Next()) != NULL)
		{
			for (UInt_t j = 0; j < buspatch->GetDataCount(); j++)
			{
				buspatch->GetData(j, manuId, manuChannel, adc);
				if (i < maxBufferSize)
				{
					buffer[i].fManuId = manuId;
					buffer[i].fAdc = adc;
					buffer[i].fChannelId = manuChannel;
					i++;
				}
			}
		}

		current = current->fNext;
	}

	return timer.RealTime();
}


Double_t TimeDecoderChannelIteration(AliBufferInfo* list, AliDigitInfo* buffer, UInt_t maxBufferSize, Bool_t skipParityErrors)
{
	/// Perform a timing using the "next channel" iteration
  
	AliRawReaderMemory rawReader;
	AliMUONRawStreamTrackerHP rawStream(&rawReader);
	rawReader.NextEvent();

	TStopwatch timer;
	timer.Start(kTRUE);

	UInt_t i = 0;
	AliBufferInfo* current = list;
	while (current != NULL)
	{
		rawReader.SetMemory(current->fBuffer, current->fBufferSize);
		rawReader.SetEquipmentID(current->fEquipId);
		rawReader.Reset();

		Int_t busPatch;
		UShort_t manuId, adc;
		UChar_t manuChannel;

		rawStream.First();

		while ( rawStream.Next(busPatch,manuId,manuChannel,adc,skipParityErrors) )
		{
			if (i < maxBufferSize)
			{
				buffer[i].fManuId = manuId;
				buffer[i].fAdc = adc;
				buffer[i].fChannelId = manuChannel;
				i++;
			}
		}

		current = current->fNext;
	}

	return timer.RealTime();
}

void MUONTimeRawStreamTrackerDumb(TString fileName)
{
  AliCodeTimer::Instance()->Reset();
  
  // first check we can open the stream
  AliRawReader* reader = AliRawReader::Create(fileName.Data());
  if (!reader)
  {
    cerr << "Cannot create reader from " << fileName.Data() << endl;
    return;
  }
  
  AliMUONRawStreamTrackerHP stream(reader);
  
  Int_t busPatch;
  UShort_t manuId, adc;
  UChar_t manuChannel;
  
  while ( reader->NextEvent() ) 
  {
    stream.First();
    
    while ( stream.Next(busPatch,manuId,manuChannel,adc) ) 
    {
      adc *= 2;
    }
  }
  
  AliCodeTimer::Instance()->Print();
}


void MUONTimeRawStreamTracker(TString fileName = "./", Int_t maxEvent = 1000)
{
	/// Performs a timing of decoder

	AliBufferInfo* list = NULL;
	UInt_t bufferCount = LoadFiles(list, fileName, maxEvent);
	if (bufferCount == 0)
	{
		cerr << "ERROR: No DDL files found or read in." << endl;
		return;
	}

	UInt_t maxBufferSize = CountMaxDigits(list);
	AliDigitInfo* buffer = new AliDigitInfo[maxBufferSize];
	if (buffer == NULL)
	{
		ReleaseBuffers(list);
		cerr << "ERROR: Out of memory, sorry. You should limit the number of events read in." << endl;
		return;
	}
	Double_t bpTimes[100];
	for (Int_t i = 0; i < 100; i++)
	{
		cout << "Timing decoder: bus patch iteration " << i+1 << " of 100" << endl;
		bpTimes[i] = TimeDecoderBusPatchIteration(list, buffer, maxBufferSize);
	}
	Double_t channelTimes[100];
	for (Int_t i = 0; i < 100; i++)
	{
		cout << "Timing decoder: channel iteration w/ parity check" << i+1 << " of 100" << endl;
		channelTimes[i] = TimeDecoderChannelIteration(list, buffer, maxBufferSize,kTRUE);
	}
	Double_t channelTimes2[100];
	for (Int_t i = 0; i < 100; i++)
	{
		cout << "Timing decoder: channel iteration w/o parity check" << i+1 << " of 100" << endl;
		channelTimes2[i] = TimeDecoderChannelIteration(list, buffer, maxBufferSize,kFALSE);
	}
  
	ReleaseBuffers(list);
	delete buffer;

	Double_t bpTime = TMath::Mean(100, bpTimes) / Double_t(bufferCount);
	Double_t bpTimeErr = TMath::RMS(100, bpTimes) / Double_t(bufferCount);
	Double_t channelTime = TMath::Mean(100, channelTimes) / Double_t(bufferCount);
	Double_t channelTimeErr = TMath::RMS(100, channelTimes) / Double_t(bufferCount);
	Double_t channelTime2 = TMath::Mean(100, channelTimes2) / Double_t(bufferCount);
	Double_t channelTime2Err = TMath::RMS(100, channelTimes2) / Double_t(bufferCount);

	cout << "Average processing time per DDL for:" << endl;
	cout << "   bus patch iteration                    = " << bpTime*1e6 << " +/- " << bpTimeErr*1e6/TMath::Sqrt(100) << " micro seconds" << endl;
	cout << "   channel iteration with parity check    = " << channelTime*1e6 << " +/- " << channelTimeErr*1e6/TMath::Sqrt(100) << " micro seconds" << endl;
	cout << "   channel iteration without parity check = " << channelTime2*1e6 << " +/- " << channelTime2Err*1e6/TMath::Sqrt(100) << " micro seconds" << endl;
}

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