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 gAlice->GetRunLoader();
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);
138 for(det=0;det<3;det++){
139 digDet->AddAt(new TClonesArray((its->DetType(det)->
140 GetDigitClassName()).Data(),1000),det);
141 br = treeD->GetBranch(branchname[det]);
142 br->SetAddress(&((*digDet)[det]));
148 for(i=istart;i<iend;i++){
151 for(det=0;det<3;det++){
152 ((TClonesArray*)(digDet->At(det)))->Clear();
153 br = treeD->GetBranch(branchname[det]);
154 br->SetAddress(&((*digDet)[det]));
156 for(module=0;module<nmodules;module++){
157 for(j=0;j<3;j++) ((TClonesArray*)(digDet->At(j)))->Clear();
158 treeD->GetEvent(module);
159 digits = (TClonesArray*) (digDet->At(0)); // SPD only.
160 ndig = digits->GetEntriesFast();
161 for(dig=0;dig<ndig;dig++){
162 d = (AliITSdigit*) digits->At(dig);
163 row = d->GetCoord1();
164 column = d->GetCoord1();
165 signal = d->GetSignal();
166 //cout <<"event="<<i<< " ndig="<< ndig<< " mod="
167 //<<module<<" row="<<row<<" col="<<column<< " sig="
169 FillHistograms(module,row,column,signal);