Now AliGenACORDE::SetNumberOfParticles is included
[u/mrichter/AliRoot.git] / ACORDE / AcoReco.C
CommitLineData
bd438c48 1//_____________________________________________________//
2// //
3// This macro reads ACORDE Raw-Rootfied files //
4// and draws Histograms of Acorde's Bitpattern //
5// //
6// Author: //
7// //
8// Mario Rodriguez Cahuantzi <mrodrigu@mail.cern.ch> //
9// //
10// Also comments to: //
11// //
12// Mario Sitta <sitta@to.infn.it> //
13// Arturo Fernandez <afernan@mail.cern.ch> //
14// Luciano Diaz <luciano.diaz@nucleares.unam.mx> //
15// Eleazar Cuautle <ecuautle@nucleares.unam.mx> //
16//____________________________________________________ //
17
18
19#include <TClonesArray.h>
20#include <stdio.h>
21
22//void AcoReco(char* fileName="08000020614001.20.root")
23void AcoReco(char* fileName)
24{
25 TStopwatch timer;
26 timer.Start();
27 AliRawReader* rawReader = new AliRawReaderRoot(fileName);
28 AliRawReader* rCount = new AliRawReaderRoot(fileName);
29 AliACORDERawStream* rawStream = new AliACORDERawStream(rawReader);
30 TH1D *h1 = new TH1D("h1","ACORDE - Single Muon Hits",60,1,60);
31 TH1D *h2 = new TH1D("h2","ACORDE - Hit Multiplicity",60,1,60);
32 size_t contSingle=0;
33 size_t contMulti=0;
34 UInt_t dy[4];
35 bool kroSingle[60],kroMulti[60];
36 UInt_t tmpDy;
37 Int_t dyma[60],DyM,nEvents=0;
38 for(Int_t m=0;m<60;m++) {kroSingle[m]=0;kroMulti[m]=0;dyma[m]=0;}
39
40
41 Int_t nEvents = rawStream->GetNEvents(fileName);
42
43 printf("Numero de eventos: %d \n",nEvents);
44
45for (Int_t i=1; i<=nEvents; i++)
46{
b7f06c9d 47
48// printf("No Event %d",i);
49 if (!rawReader->NextEvent()) break;
bd438c48 50 rawStream->Reset();
b7f06c9d 51 // printf("No Event %d",i);
52
53 if (!rawStream->Next()) continue;
bd438c48 54 dy[0]=rawStream->GetWord(0);
55 dy[1]=rawStream->GetWord(1);
56 dy[2]=rawStream->GetWord(2);
57 dy[3]=rawStream->GetWord(3);
58 tmpDy=dy[0];
59 for(Int_t r=0;r<30;++r)
60 {
61 kroSingle[r] = tmpDy & 1;
62 tmpDy>>=1;
63 }
64 tmpDy=dy[1];
65 for(Int_t r=30;r<60;++r)
66 {
67 kroSingle[r] = tmpDy & 1;
68 tmpDy>>=1;
69 }
70 tmpDy=dy[2];
71 for(Int_t r=0;r<30;++r)
72 {
73 kroMulti[r] = tmpDy & 1;
74 tmpDy>>=1;
75 }
76 tmpDy=dy[3];
77 for(Int_t r=30;r<60;++r)
78 {
79 kroMulti[r] = tmpDy & 1;
80 tmpDy>>=1;
81 }
82 contSingle=0;
83 for(Int_t r=0;r<60;++r)
84 {
85 if(kroSingle[r]==1)
86 {
87 dyma[r]=dyma[r]+1;
88 h1->Fill(r+1);
89 contSingle=contSingle+1;
90 }
91
92 }h2->Fill(contSingle);
93}
94
95TCanvas *acorde = new TCanvas("ACORDE","ACORDE-Hist-Real Data",1);
96acorde->Divide(2,1);
97acorde->cd(1);
98h1->GetXaxis()->SetTitle("No. of Channel");
99h1->GetYaxis()->SetTitle("No. of Hits");
100h1->SetFillColor(kRed);
101h1->Draw();
102acorde->cd(2);
103gPad->SetLogy();
104h2->GetXaxis()->SetTitle("No. of Modules");
105h2->GetYaxis()->SetTitle("Multiplicity");
106h2->SetFillColor(kBlue);
107h2->Draw();
108
109delete rawReader;
110delete rawStream;
111timer.Stop();
112timer.Print();
113}