3 #if !defined(__CINT__) || defined(__MAKECINT__)
5 #include <TClassTable.h>
11 #include "TObjArray.h"
16 #include "TParticle.h"
17 #include "TStopwatch.h"
22 #include "AliCascadeVertex.h"
25 #include "AliHeader.h"
26 #include "AliConfig.h"
27 #include "AliRunLoader.h"
28 #include "AliITSLoader.h"
30 #include "AliITSdigit.h"
31 #include "AliITSgeom.h"
35 TH2I *BeamSpot[ndets];
36 //----------------------------------------------------------------------
37 void SetUPHistograms(){
38 // Define the histograms to be filled
40 Char_t name[10],title[50];
43 sprintf(name,"BeamSpot%d",i);
44 sprintf(title,"Beam Spot for SPD %d detectors row-column values",i);
45 BeamSpot[i] = new TH2I(name,title,256,0.,256.,160,0.,160.);
48 //----------------------------------------------------------------------
49 void FillHistograms(Int_t module,Int_t row,Int_t colm,Int_t signal){
50 // Fill the histograms
52 if(module<0 || module>=ndets) return;
53 BeamSpot[module]->Fill((Double_t) row,(Double_t) colm,(Double_t) signal);
55 //----------------------------------------------------------------------
56 void DisplayHistograms(){
57 // Display the histograms
59 TCanvas *c0 = new TCanvas("c0","SPD Digits",400,10,600,700);
62 //----------------------------------------------------------------------
63 void AliITSDigitPlot(Int_t istart=0,Int_t iend=-1,
64 const char *filename="galice.root"){
65 // Macro to plot digits from many events
67 // Int_t istart Starting event number
68 // Int_t iend Last event number, =-1 all
73 if (gClassTable->GetID("AliRun") < 0) {
74 gROOT->ProcessLine(".x $(ALICE_ROOT)/macros/loadlibs.C");
77 delete AliRunLoader::Instance();
82 Int_t nevents=0,nmodules=0,retval=0;
83 Int_t i,j,module,dig,ndig,row,column,signal,det;
90 TClonesArray *digits = 0;
92 TObjArray *digDet = 0;
93 Char_t *branchname[3] = {"ITSDigitsSPD","ITSDigitsSDD","ITSDigitsSSD"};
95 rl = AliRunLoader::Open(filename);
97 cerr<<"Error, can not open file "<<filename<<endl;
100 retval = rl->LoadgAlice();
102 cerr<<"Error, LoadgAlice returned error"<<endl;
105 gAlice = rl->GetAliRun();
106 retval = rl->LoadHeader();
108 cerr<<"Error, LoadHeader returned error"<<endl;
111 ld = (AliITSLoader*) rl->GetLoader("ITSLoader");
113 cerr<<"Error, ITS loader not found"<<endl;
116 its = (AliITS*) gAlice->GetModule("ITS");
118 cerr <<"Error, No AliDetector ITS found on file"<<endl;
121 gm = its->GetITSgeom();
123 cerr <<"Error, AliITSgeom not initilized in module ITS"<<endl;
126 nevents = rl->GetNumberOfEvents();
127 if(iend>nevents) iend = nevents;
128 if(iend<0) iend = nevents;
129 if(iend<=istart){delete rl; return;}
130 nmodules = gm->GetIndexMax();
131 ld->GetDigitsDataLoader()->Load("read");
134 cerr <<"Error, could not get TreeD="<<treeD << endl;
137 digDet = new TObjArray(3);
139 for(det=0;det<3;det++){
140 digDet->AddAt(new TClonesArray(its->GetDetTypeSim()->
141 GetDigitClassName(det),1000),det);
142 br = treeD->GetBranch(branchname[det]);
143 br->SetAddress(&((*digDet)[det]));
149 for(i=istart;i<iend;i++){
152 for(det=0;det<3;det++){
153 ((TClonesArray*)(digDet->At(det)))->Clear();
154 br = treeD->GetBranch(branchname[det]);
155 br->SetAddress(&((*digDet)[det]));
157 for(module=0;module<nmodules;module++){
158 for(j=0;j<3;j++) ((TClonesArray*)(digDet->At(j)))->Clear();
159 treeD->GetEvent(module);
160 digits = (TClonesArray*) (digDet->At(0)); // SPD only.
161 ndig = digits->GetEntriesFast();
162 for(dig=0;dig<ndig;dig++){
163 d = (AliITSdigit*) digits->At(dig);
164 row = d->GetCoord1();
165 column = d->GetCoord1();
166 signal = d->GetSignal();
167 //cout <<"event="<<i<< " ndig="<< ndig<< " mod="
168 //<<module<<" row="<<row<<" col="<<column<< " sig="
170 FillHistograms(module,row,column,signal);