ROOT logo
//////////////////////////////////////////////////////////////////
// 								//
//	readACORDERawData.C macro 				//
//								//
//	Reads the information of ACORDE from raw data file 	//
//	from the 4-32-words (SL0 & MCN mode)			//
//	and draws four histograms (2 by each mode)		//
// 								//
//	Author: Mario Rodriguez Cahuantzi			//
//	E-MaiL: mario.rocah@gmail.com, mrodrigu@mail.cern.ch	//
//								//
//	Created: July 1st. 2010 @ FCFM -BUAP, Puebla, MX	//
//	Last update: created from old AcoReco.C	macro		//
// 								//
//////////////////////////////////////////////////////////////////

void readACORDERawData(char* fileName)
{

	TStopwatch timer;
  	timer.Start();
	// Pointer to rawReader class

  	AliRawReader* rawReader = new AliRawReaderRoot(fileName); 
	
	// Pointer to rawData of Acorde

  	AliACORDERawStream* rawStream  = new AliACORDERawStream(rawReader);    
	
	// Create some histograms

  	TH1F *h1 = new TH1F("h1","ACORDE - Single Muon Hits (SL0)",60,-0.5,59.5);
  	TH1F *h2 = new TH1F("h2","ACORDE - Multiplicity of Acorde Modules (SL0)",61,-1,60);
  	TH1F *h3 = new TH1F("h3","ACORDE - Single Muon Hits (MCN)",60,-0.5,59.5);
  	TH1F *h4 = new TH1F("h4","ACORDE - Multiplicity of Acorde Modules (MCN)",61,-1,60);
	
	// Declare some counters
	
  	size_t contSingle=0;
  	size_t contMulti=0;
  	UInt_t acorde_word[4]; // array to store the 4-words
  	bool word_sl0[60],word_mcn[60]; // boolean array if some hit in module
  	UInt_t shiftword; // shift word

  	for(Int_t m=0;m<60;m++) {word_sl0[m]=0;word_mcn[m]=0;}
  
 
  	Int_t nEvents = rawStream->GetNEvents(fileName);
  
  	printf("File: %s, Number of events: %d \n",fileName,nEvents);


	// Loop over all the events

	for (Int_t i=1; i<=nEvents; i++) 
	{

       		if (!rawReader->NextEvent()) break;
		rawStream->Reset();
		if (!rawStream->Next()) continue;

		acorde_word[0] = rawStream->GetWord(0);
		acorde_word[1] = rawStream->GetWord(1);
		acorde_word[2] = rawStream->GetWord(2);
		acorde_word[3] = rawStream->GetWord(3);

		shiftword = acorde_word[0];
		for(Int_t iaco=0;iaco<30;iaco++)
		{
			word_sl0[iaco] = shiftword & 1;
			shiftword>>=1;
		}
	
		shiftword = acorde_word[1];
		for(Int_t iaco=30;iaco<60;iaco++)
		{
			word_sl0[iaco] = shiftword & 1;
			shiftword>>=1;
		}

		shiftword=acorde_word[2];
		for(Int_t iaco=0;iaco<30;iaco++)
		{
			word_mcn[iaco] = shiftword & 1;
			shiftword>>=1;
		}

		shiftword=acorde_word[3];
		for(Int_t iaco=30;iaco<60;iaco++)
		{
			word_mcn[iaco] = shiftword & 1;
			shiftword>>=1;
		}

		contSingle=0;	
		for(Int_t iaco=0;iaco<60;iaco++) 
		{
			if(word_sl0[iaco]==1) 
			{
				h1->Fill(iaco);
				contSingle++;
			}
		
		}h2->Fill(contSingle);
		contMulti=0;
		for(Int_t iaco=0;iaco<60;iaco++) 
		{
			if(word_mcn[iaco]==1) 
			{
				h3->Fill(iaco);
				contMulti++;
			}
		
		}h4->Fill(contMulti);

	}

	TCanvas *acorde = new TCanvas("ACORDE","ACORDE-Histograms from Raw-Data",1);
	acorde->Divide(2,2);
	acorde->cd(1);
	h1->GetXaxis()->SetTitle("No. of module");
	h1->GetYaxis()->SetTitle("No. of Hits");
	h1->SetFillColor(kRed);
	h1->Draw();

	acorde->cd(2);
	gPad->SetLogy();
	h2->GetXaxis()->SetTitle("No. of fired modules");
	h2->GetYaxis()->SetTitle("No. of events");
	h2->SetFillColor(kBlue);
	h2->Draw();

	acorde->cd(3);
	h3->GetXaxis()->SetTitle("No. of module");
	h3->GetYaxis()->SetTitle("No. of events");
	h3->SetFillColor(kRed);
	h3->Draw();

	acorde->cd(4);
	gPad->SetLogy();
	h4->GetXaxis()->SetTitle("No. of fired modules");
	h4->GetYaxis()->SetTitle("No. of events");
	h4->SetFillColor(kBlue);
	h4->Draw();
	

	delete rawReader;
	delete rawStream;

	timer.Stop();
	timer.Print();
}
 readACORDERawData.C:1
 readACORDERawData.C:2
 readACORDERawData.C:3
 readACORDERawData.C:4
 readACORDERawData.C:5
 readACORDERawData.C:6
 readACORDERawData.C:7
 readACORDERawData.C:8
 readACORDERawData.C:9
 readACORDERawData.C:10
 readACORDERawData.C:11
 readACORDERawData.C:12
 readACORDERawData.C:13
 readACORDERawData.C:14
 readACORDERawData.C:15
 readACORDERawData.C:16
 readACORDERawData.C:17
 readACORDERawData.C:18
 readACORDERawData.C:19
 readACORDERawData.C:20
 readACORDERawData.C:21
 readACORDERawData.C:22
 readACORDERawData.C:23
 readACORDERawData.C:24
 readACORDERawData.C:25
 readACORDERawData.C:26
 readACORDERawData.C:27
 readACORDERawData.C:28
 readACORDERawData.C:29
 readACORDERawData.C:30
 readACORDERawData.C:31
 readACORDERawData.C:32
 readACORDERawData.C:33
 readACORDERawData.C:34
 readACORDERawData.C:35
 readACORDERawData.C:36
 readACORDERawData.C:37
 readACORDERawData.C:38
 readACORDERawData.C:39
 readACORDERawData.C:40
 readACORDERawData.C:41
 readACORDERawData.C:42
 readACORDERawData.C:43
 readACORDERawData.C:44
 readACORDERawData.C:45
 readACORDERawData.C:46
 readACORDERawData.C:47
 readACORDERawData.C:48
 readACORDERawData.C:49
 readACORDERawData.C:50
 readACORDERawData.C:51
 readACORDERawData.C:52
 readACORDERawData.C:53
 readACORDERawData.C:54
 readACORDERawData.C:55
 readACORDERawData.C:56
 readACORDERawData.C:57
 readACORDERawData.C:58
 readACORDERawData.C:59
 readACORDERawData.C:60
 readACORDERawData.C:61
 readACORDERawData.C:62
 readACORDERawData.C:63
 readACORDERawData.C:64
 readACORDERawData.C:65
 readACORDERawData.C:66
 readACORDERawData.C:67
 readACORDERawData.C:68
 readACORDERawData.C:69
 readACORDERawData.C:70
 readACORDERawData.C:71
 readACORDERawData.C:72
 readACORDERawData.C:73
 readACORDERawData.C:74
 readACORDERawData.C:75
 readACORDERawData.C:76
 readACORDERawData.C:77
 readACORDERawData.C:78
 readACORDERawData.C:79
 readACORDERawData.C:80
 readACORDERawData.C:81
 readACORDERawData.C:82
 readACORDERawData.C:83
 readACORDERawData.C:84
 readACORDERawData.C:85
 readACORDERawData.C:86
 readACORDERawData.C:87
 readACORDERawData.C:88
 readACORDERawData.C:89
 readACORDERawData.C:90
 readACORDERawData.C:91
 readACORDERawData.C:92
 readACORDERawData.C:93
 readACORDERawData.C:94
 readACORDERawData.C:95
 readACORDERawData.C:96
 readACORDERawData.C:97
 readACORDERawData.C:98
 readACORDERawData.C:99
 readACORDERawData.C:100
 readACORDERawData.C:101
 readACORDERawData.C:102
 readACORDERawData.C:103
 readACORDERawData.C:104
 readACORDERawData.C:105
 readACORDERawData.C:106
 readACORDERawData.C:107
 readACORDERawData.C:108
 readACORDERawData.C:109
 readACORDERawData.C:110
 readACORDERawData.C:111
 readACORDERawData.C:112
 readACORDERawData.C:113
 readACORDERawData.C:114
 readACORDERawData.C:115
 readACORDERawData.C:116
 readACORDERawData.C:117
 readACORDERawData.C:118
 readACORDERawData.C:119
 readACORDERawData.C:120
 readACORDERawData.C:121
 readACORDERawData.C:122
 readACORDERawData.C:123
 readACORDERawData.C:124
 readACORDERawData.C:125
 readACORDERawData.C:126
 readACORDERawData.C:127
 readACORDERawData.C:128
 readACORDERawData.C:129
 readACORDERawData.C:130
 readACORDERawData.C:131
 readACORDERawData.C:132
 readACORDERawData.C:133
 readACORDERawData.C:134
 readACORDERawData.C:135
 readACORDERawData.C:136
 readACORDERawData.C:137
 readACORDERawData.C:138
 readACORDERawData.C:139
 readACORDERawData.C:140
 readACORDERawData.C:141
 readACORDERawData.C:142
 readACORDERawData.C:143
 readACORDERawData.C:144
 readACORDERawData.C:145
 readACORDERawData.C:146
 readACORDERawData.C:147
 readACORDERawData.C:148
 readACORDERawData.C:149
 readACORDERawData.C:150
 readACORDERawData.C:151
 readACORDERawData.C:152
 readACORDERawData.C:153