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 MUONTimeRawStreamTrigger.C
/// \brief Macro for checking the timing (speed) performace of the two different trigger decoders.
///
/// \author Artur Szostak <artursz@iafrica.com>
///
/// This macro is used to check the timing (speed) performance of the existing
/// offline decoder for the trigger DDLs and also for the new high performance
/// decoder. It can be invoked as follows:
/// 
///  $ aliroot
/// .L $ALICE_ROOT/MUON/MUONTimeRawStreamTrigger.C+
///  MUONTimeRawStreamTrigger(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 "AliMUONRawStreamTrigger.h"
#include "AliMUONRawStreamTriggerHP.h"
#include "AliMUONDarcHeader.h"
#include "AliMUONRegHeader.h"
#include "AliMUONLocalStruct.h"
#include "AliMUONDDLTrigger.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;
};


// local structure information to store
struct AliLocalStructInfo
{
	UChar_t fId;
	UChar_t fDec;
	Bool_t fTrigY;
	UChar_t fYPos;
	UChar_t fSXDev;
	UChar_t fXDev;
	UChar_t fXPos;
	Bool_t fTriggerY;
	Bool_t fTriggerX;
};


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("MUONTRG", 0, 1);
		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 CountMaxStructs(AliBufferInfo* list)
{
	/// Counts the maximum number of local structures possible

	UInt_t total = 0;
	AliBufferInfo* current = list;
	while (current != NULL)
	{
		total += current->fBufferSize / 5;
		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 TimeUsingOldDecoder(AliBufferInfo* list, AliLocalStructInfo* buffer, UInt_t maxBufferSize)
{
	/// Perform a timing using the old decoder.

	AliRawReaderMemory rawReader;
	AliMUONRawStreamTrigger 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();

		rawStream.First();
		
		TArrayS fXPattern;
		TArrayS fYPattern;

		while ( rawStream.Next(buffer[i].fId, buffer[i].fDec, buffer[i].fTrigY,
		                       buffer[i].fYPos, buffer[i].fSXDev, buffer[i].fXDev,
		                       buffer[i].fXPos, buffer[i].fTriggerY, buffer[i].fTriggerX,
		                       fXPattern, fYPattern)
		      )
		{
			if (i < maxBufferSize-1) i++;
		}

		current = current->fNext;
	}

	return timer.RealTime();
}


Double_t TimeUsingNewDecoder(AliBufferInfo* list, AliLocalStructInfo* buffer, UInt_t maxBufferSize)
{
	/// Perform a timing using the new decoder.

	AliRawReaderMemory rawReader;
	AliMUONRawStreamTriggerHP 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();

		rawStream.First();

		const AliMUONRawStreamTriggerHP::AliLocalStruct* local = NULL;
		while ( (local = rawStream.Next()) != NULL )
		{
			if (i < maxBufferSize)
			{
				buffer[i].fId = local->GetId();
				buffer[i].fDec = local->GetDec();
				buffer[i].fTrigY = local->GetTrigY();
				buffer[i].fYPos = local->GetYPos();
				buffer[i].fSXDev = local->GetSXDev();
				buffer[i].fXDev = local->GetXDev();
				buffer[i].fXPos = local->GetXPos();
				buffer[i].fTriggerY = local->GetTriggerY();
				buffer[i].fTriggerX = local->GetTriggerX();
				i++;
			}
		}

		current = current->fNext;
	}

	return timer.RealTime();
}


Double_t TimeUsingNewDecoderOldInterface(AliBufferInfo* list, AliLocalStructInfo* buffer, UInt_t maxBufferSize)
{
	/// Perform a timing using the new decoder but the old Next() method
	/// as the interface.

	AliRawReaderMemory rawReader;
	AliMUONRawStreamTriggerHP 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();

		rawStream.First();
		
		TArrayS fXPattern;
		TArrayS fYPattern;

		while ( rawStream.Next(buffer[i].fId, buffer[i].fDec, buffer[i].fTrigY,
		                       buffer[i].fYPos, buffer[i].fSXDev, buffer[i].fXDev,
		                       buffer[i].fXPos, buffer[i].fTriggerY, buffer[i].fTriggerX,
		                       fXPattern, fYPattern)
		      )
		{
			if (i < maxBufferSize-1) i++;
		}

		current = current->fNext;
	}

	return timer.RealTime();
}


void Loop(const char* filename, Bool_t newDecoder)
{
  AliCodeTimerAutoGeneral(Form("Loop %s",(newDecoder ? "NEW":"OLD")),);
  
  AliRawReader* reader = AliRawReader::Create(filename);
  
  AliMUONVRawStreamTrigger* stream;
  
  if ( newDecoder ) 
  {
    stream = new AliMUONRawStreamTriggerHP(reader);
  }
  else
  {
    stream = new AliMUONRawStreamTrigger(reader);
  }

  UChar_t id;
  UChar_t dec;
  Bool_t trigY;
  UChar_t yPos;
  UChar_t sXDev;
  UChar_t xDev;
  UChar_t xPos;
  Bool_t triggerY;
  Bool_t triggerX;
  TArrayS xPattern;
  TArrayS yPattern;
  
  while ( reader->NextEvent() )
  {
    stream->First();
    
    while ( stream->Next(id, dec, trigY, yPos, sXDev, xDev, xPos,
		         triggerY, triggerX, xPattern, yPattern) )
    {
      id *= 2;
    }
  }
  
  delete stream;
  delete reader;
}


void MUONTimeRawStreamTriggerDumb(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;
  }
  delete reader;
  
  // now start the timing per se
  
  Loop(fileName,kFALSE);
  
  Loop(fileName,kTRUE);
  
  AliCodeTimer::Instance()->Print();
}


void MUONTimeRawStreamTrigger(TString fileName = "./", Int_t maxEvent = 1000)
{
	/// Performs a timing of old and new decoders and reports this.

	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 = CountMaxStructs(list);
	AliLocalStructInfo* buffer = new AliLocalStructInfo[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 oldTimes[100];
	for (Int_t i = 0; i < 100; i++)
	{
		cout << "Timing old decoder: timing iteration " << i+1 << " of 100" << endl;
		oldTimes[i] = TimeUsingOldDecoder(list, buffer, maxBufferSize);
	}
	Double_t newTimes[100];
	for (Int_t i = 0; i < 100; i++)
	{
		cout << "Timing new decoder: timing iteration " << i+1 << " of 100" << endl;
		newTimes[i] = TimeUsingNewDecoder(list, buffer, maxBufferSize);
	}
	Double_t newTimes2[100];
	for (Int_t i = 0; i < 100; i++)
	{
		cout << "Timing new decoder with old interface: timing iteration " << i+1 << " of 100" << endl;
		newTimes2[i] = TimeUsingNewDecoderOldInterface(list, buffer, maxBufferSize);
	}

	ReleaseBuffers(list);
	delete buffer;

	Double_t oldTime = TMath::Mean(100, oldTimes) / Double_t(bufferCount);
	Double_t oldTimeErr = TMath::RMS(100, oldTimes) / Double_t(bufferCount);
	Double_t newTime = TMath::Mean(100, newTimes) / Double_t(bufferCount);
	Double_t newTimeErr = TMath::RMS(100, newTimes) / Double_t(bufferCount);
	Double_t newTime2 = TMath::Mean(100, newTimes2) / Double_t(bufferCount);
	Double_t newTime2Err = TMath::RMS(100, newTimes2) / Double_t(bufferCount);

	cout << "Average processing time per DDL for:" << endl;
	cout << "                   Old decoder = " << oldTime*1e6 << " +/- " << oldTimeErr*1e6/TMath::Sqrt(100) << " micro seconds" << endl;
	cout << "                   New decoder = " << newTime*1e6 << " +/- " << newTimeErr*1e6/TMath::Sqrt(100) << " micro seconds" << endl;
	cout << "New decoder with old interface = " << newTime2*1e6 << " +/- " << newTime2Err*1e6/TMath::Sqrt(100) << " micro seconds" << endl;
}

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