]>
Commit | Line | Data |
---|---|---|
b5f2577c | 1 | ////////////////////////////////////////////////////////////////// |
2 | // // | |
3 | // readACORDERawData.C macro // | |
4 | // // | |
5 | // Reads the information of ACORDE from raw data file // | |
6 | // from the 4-32-words (SL0 & MCN mode) // | |
7 | // and draws four histograms (2 by each mode) // | |
8 | // // | |
9 | // Author: Mario Rodriguez Cahuantzi // | |
10 | // E-MaiL: mario.rocah@gmail.com, mrodrigu@mail.cern.ch // | |
11 | // // | |
12 | // Created: July 1st. 2010 @ FCFM -BUAP, Puebla, MX // | |
13 | // Last update: created from old AcoReco.C macro // | |
14 | // // | |
15 | ////////////////////////////////////////////////////////////////// | |
16 | ||
17 | void readACORDERawData(char* fileName) | |
18 | { | |
19 | ||
20 | TStopwatch timer; | |
21 | timer.Start(); | |
22 | // Pointer to rawReader class | |
23 | ||
24 | AliRawReader* rawReader = new AliRawReaderRoot(fileName); | |
25 | ||
26 | // Pointer to rawData of Acorde | |
27 | ||
28 | AliACORDERawStream* rawStream = new AliACORDERawStream(rawReader); | |
29 | ||
30 | // Create some histograms | |
31 | ||
32 | TH1F *h1 = new TH1F("h1","ACORDE - Single Muon Hits (SL0)",60,-0.5,59.5); | |
33 | TH1F *h2 = new TH1F("h2","ACORDE - Multiplicity of Acorde Modules (SL0)",61,-1,60); | |
34 | TH1F *h3 = new TH1F("h3","ACORDE - Single Muon Hits (MCN)",60,-0.5,59.5); | |
35 | TH1F *h4 = new TH1F("h4","ACORDE - Multiplicity of Acorde Modules (MCN)",61,-1,60); | |
36 | ||
37 | // Declare some counters | |
38 | ||
39 | size_t contSingle=0; | |
40 | size_t contMulti=0; | |
41 | UInt_t acorde_word[4]; // array to store the 4-words | |
42 | bool word_sl0[60],word_mcn[60]; // boolean array if some hit in module | |
43 | UInt_t shiftword; // shift word | |
44 | ||
45 | for(Int_t m=0;m<60;m++) {word_sl0[m]=0;word_mcn[m]=0;} | |
46 | ||
47 | ||
48 | Int_t nEvents = rawStream->GetNEvents(fileName); | |
49 | ||
50 | printf("File: %s, Number of events: %d \n",fileName,nEvents); | |
51 | ||
52 | ||
53 | // Loop over all the events | |
54 | ||
55 | for (Int_t i=1; i<=nEvents; i++) | |
56 | { | |
57 | ||
58 | if (!rawReader->NextEvent()) break; | |
59 | rawStream->Reset(); | |
60 | if (!rawStream->Next()) continue; | |
61 | ||
62 | acorde_word[0] = rawStream->GetWord(0); | |
63 | acorde_word[1] = rawStream->GetWord(1); | |
64 | acorde_word[2] = rawStream->GetWord(2); | |
65 | acorde_word[3] = rawStream->GetWord(3); | |
66 | ||
67 | shiftword = acorde_word[0]; | |
68 | for(Int_t iaco=0;iaco<30;iaco++) | |
69 | { | |
70 | word_sl0[iaco] = shiftword & 1; | |
71 | shiftword>>=1; | |
72 | } | |
73 | ||
74 | shiftword = acorde_word[1]; | |
75 | for(Int_t iaco=30;iaco<60;iaco++) | |
76 | { | |
77 | word_sl0[iaco] = shiftword & 1; | |
78 | shiftword>>=1; | |
79 | } | |
80 | ||
81 | shiftword=acorde_word[2]; | |
82 | for(Int_t iaco=0;iaco<30;iaco++) | |
83 | { | |
84 | word_mcn[iaco] = shiftword & 1; | |
85 | shiftword>>=1; | |
86 | } | |
87 | ||
88 | shiftword=acorde_word[3]; | |
89 | for(Int_t iaco=30;iaco<60;iaco++) | |
90 | { | |
91 | word_mcn[iaco] = shiftword & 1; | |
92 | shiftword>>=1; | |
93 | } | |
94 | ||
95 | contSingle=0; | |
96 | for(Int_t iaco=0;iaco<60;iaco++) | |
97 | { | |
98 | if(word_sl0[iaco]==1) | |
99 | { | |
100 | h1->Fill(iaco); | |
101 | contSingle++; | |
102 | } | |
103 | ||
104 | }h2->Fill(contSingle); | |
105 | contMulti=0; | |
106 | for(Int_t iaco=0;iaco<60;iaco++) | |
107 | { | |
108 | if(word_mcn[iaco]==1) | |
109 | { | |
110 | h3->Fill(iaco); | |
111 | contMulti++; | |
112 | } | |
113 | ||
114 | }h4->Fill(contMulti); | |
115 | ||
116 | } | |
117 | ||
118 | TCanvas *acorde = new TCanvas("ACORDE","ACORDE-Histograms from Raw-Data",1); | |
119 | acorde->Divide(2,2); | |
120 | acorde->cd(1); | |
121 | h1->GetXaxis()->SetTitle("No. of module"); | |
122 | h1->GetYaxis()->SetTitle("No. of Hits"); | |
123 | h1->SetFillColor(kRed); | |
124 | h1->Draw(); | |
125 | ||
126 | acorde->cd(2); | |
127 | gPad->SetLogy(); | |
128 | h2->GetXaxis()->SetTitle("No. of fired modules"); | |
129 | h2->GetYaxis()->SetTitle("No. of events"); | |
130 | h2->SetFillColor(kBlue); | |
131 | h2->Draw(); | |
132 | ||
133 | acorde->cd(3); | |
134 | h3->GetXaxis()->SetTitle("No. of module"); | |
135 | h3->GetYaxis()->SetTitle("No. of events"); | |
136 | h3->SetFillColor(kRed); | |
137 | h3->Draw(); | |
138 | ||
139 | acorde->cd(4); | |
140 | gPad->SetLogy(); | |
141 | h4->GetXaxis()->SetTitle("No. of fired modules"); | |
142 | h4->GetYaxis()->SetTitle("No. of events"); | |
143 | h4->SetFillColor(kBlue); | |
144 | h4->Draw(); | |
145 | ||
146 | ||
147 | delete rawReader; | |
148 | delete rawStream; | |
149 | ||
150 | timer.Stop(); | |
151 | timer.Print(); | |
152 | } |