]>
Commit | Line | Data |
---|---|---|
29d63bb9 | 1 | #if !defined(__CINT__) || defined(__MAKECINT__) |
2 | #include <TCanvas.h> | |
3 | #include <TClassTable.h> | |
4 | #include <TGraph.h> | |
5 | #include <TGraph2D.h> | |
6 | #include <TGeoManager.h> | |
7 | #include <TH1.h> | |
5801bd60 | 8 | #include <TH2.h> |
9 | #include <TLatex.h> | |
10 | #include <TStyle.h> | |
29d63bb9 | 11 | #include <TInterpreter.h> |
29d63bb9 | 12 | #include "AliGeomManager.h" |
13 | #include "AliHeader.h" | |
14 | #include "AliITS.h" | |
15 | #include "AliITSDetTypeRec.h" | |
7285ac7a | 16 | #include "AliITSgeomTGeo.h" |
29d63bb9 | 17 | #include "AliITSRecPoint.h" |
18 | #include "AliRun.h" | |
19 | #endif | |
20 | ||
7285ac7a | 21 | Int_t ShowITSRecPoints(Int_t nevfordisp=0){ |
29d63bb9 | 22 | /////////////////////////////////////////////////////////////////////// |
23 | // Macro to check clusters in the 6 ITS layers // | |
24 | // Provides: // | |
25 | // 6 canvases with 9 plots each (1 canvas for each layer) // | |
26 | // 3 canvases with cluster XY coordinates for the first 3 events // | |
27 | /////////////////////////////////////////////////////////////////////// | |
28 | ||
29 | if (gClassTable->GetID("AliRun") < 0) { | |
30 | gInterpreter->ExecuteMacro("loadlibs.C"); | |
31 | } | |
29d63bb9 | 32 | |
33 | // retrives geometry | |
34 | if(!gGeoManager){ | |
35 | AliGeomManager::LoadGeometry("geometry.root"); | |
36 | } | |
37 | ||
38 | AliRunLoader* rl = AliRunLoader::Open("galice.root"); | |
39 | if (rl == 0x0){ | |
40 | cerr<<"Can not open session RL=NULL"<< endl; | |
41 | return -1; | |
42 | } | |
29d63bb9 | 43 | |
44 | AliITSLoader* ITSloader = (AliITSLoader*) rl->GetLoader("ITSLoader"); | |
45 | if(!ITSloader){ | |
46 | cerr<<"ITS loader not found"<<endl; | |
47 | return -1; | |
48 | } | |
49 | ITSloader->LoadRecPoints("read"); | |
50 | ||
51 | Float_t cluglo[3]={0.,0.,0.}; | |
29d63bb9 | 52 | AliITSDetTypeRec* detTypeRec = new AliITSDetTypeRec(); |
29d63bb9 | 53 | |
7285ac7a | 54 | Int_t totmod=AliITSgeomTGeo::GetNModules(); |
55 | Int_t modmin=AliITSgeomTGeo::GetModuleIndex(1,1,1); | |
56 | Int_t modmax=AliITSgeomTGeo::GetNModules()-1; | |
57 | ||
29d63bb9 | 58 | Float_t xlim[6]={4.5,7.5,16.,26.,40.,45.}; |
59 | Float_t zlim[6]={15.,15.,22.,30.,45.,55.}; | |
60 | ||
97e78ca8 | 61 | TH1F* hlayer=new TH1F("hlayer","",6,-0.5,5.5); |
29d63bb9 | 62 | TH1F** hmod=new TH1F*[6]; |
63 | TH1F** hxl=new TH1F*[6]; | |
64 | TH1F** hzl=new TH1F*[6]; | |
65 | TH1F** hxg=new TH1F*[6]; | |
66 | TH1F** hyg=new TH1F*[6]; | |
67 | TH1F** hzg=new TH1F*[6]; | |
68 | TH1F** hr=new TH1F*[6]; | |
69 | TH1F** hphi=new TH1F*[6]; | |
5801bd60 | 70 | TH2F** hzphi=new TH2F*[6]; |
29d63bb9 | 71 | TH1F** hq=new TH1F*[6]; |
5801bd60 | 72 | TH1F** hdrtime=new TH1F*[6]; |
73 | ||
29d63bb9 | 74 | Char_t name[10]; |
75 | for(Int_t iLay=0;iLay<6;iLay++){ | |
76 | sprintf(name,"hmod%d",iLay+1); | |
77 | hmod[iLay]=new TH1F(name,"",totmod,modmin-0.5,modmax+0.5); | |
78 | hmod[iLay]->GetXaxis()->SetTitle("Module"); | |
79 | hmod[iLay]->GetXaxis()->CenterTitle(); | |
80 | sprintf(name,"hxloc%d",iLay+1); | |
81 | hxl[iLay]=new TH1F(name,"",100,-4.,4.); | |
82 | hxl[iLay]->GetXaxis()->SetTitle("Xloc (cm)"); | |
83 | hxl[iLay]->GetXaxis()->CenterTitle(); | |
84 | sprintf(name,"hzloc%d",iLay+1); | |
85 | hzl[iLay]=new TH1F(name,"",100,-4.,4.); | |
86 | hzl[iLay]->GetXaxis()->SetTitle("Zloc (cm)"); | |
87 | hzl[iLay]->GetXaxis()->CenterTitle(); | |
88 | sprintf(name,"hxgl%d",iLay+1); | |
89 | hxg[iLay]=new TH1F(name,"",100,-xlim[iLay],xlim[iLay]); | |
90 | hxg[iLay]->GetXaxis()->SetTitle("Xglob (cm)"); | |
91 | hxg[iLay]->GetXaxis()->CenterTitle(); | |
92 | sprintf(name,"hygl%d",iLay+1); | |
93 | hyg[iLay]=new TH1F(name,"",100,-xlim[iLay],xlim[iLay]); | |
94 | hyg[iLay]->GetXaxis()->SetTitle("Yglob (cm)"); | |
95 | hyg[iLay]->GetXaxis()->CenterTitle(); | |
96 | sprintf(name,"hzgl%d",iLay+1); | |
97 | hzg[iLay]=new TH1F(name,"",100,-zlim[iLay],zlim[iLay]); | |
98 | hzg[iLay]->GetXaxis()->SetTitle("Zglob (cm)"); | |
99 | hzg[iLay]->GetXaxis()->CenterTitle(); | |
100 | sprintf(name,"hr%d",iLay+1); | |
101 | hr[iLay]=new TH1F(name,"",100,0.,50.); | |
102 | hr[iLay]->GetXaxis()->SetTitle("r (cm)"); | |
103 | hr[iLay]->GetXaxis()->CenterTitle(); | |
104 | sprintf(name,"hphi%d",iLay+1); | |
105 | hphi[iLay]=new TH1F(name,"",100,-TMath::Pi(),TMath::Pi()); | |
106 | hphi[iLay]->GetXaxis()->SetTitle("#varphi (rad)"); | |
107 | hphi[iLay]->GetXaxis()->CenterTitle(); | |
108 | sprintf(name,"hq%d",iLay+1); | |
109 | hq[iLay]=new TH1F(name,"",100,0.,300.); | |
110 | hq[iLay]->GetXaxis()->SetTitle("Charge (keV)"); | |
111 | hq[iLay]->GetXaxis()->CenterTitle(); | |
5801bd60 | 112 | sprintf(name,"hdtim%d",iLay+1); |
113 | hdrtime[iLay]=new TH1F(name,"",100,0.,7000.); | |
114 | hdrtime[iLay]->GetXaxis()->SetTitle("Drift Time (ns)"); | |
115 | hdrtime[iLay]->GetXaxis()->CenterTitle(); | |
116 | sprintf(name,"hzphi%d",iLay+1); | |
117 | hzphi[iLay]=new TH2F(name,Form("Layer %d",iLay+1),50,-TMath::Pi(),TMath::Pi(),50,-zlim[iLay],zlim[iLay]); | |
118 | hzphi[iLay]->GetXaxis()->SetTitle("#varphi (rad)"); | |
119 | hzphi[iLay]->GetYaxis()->SetTitle("Zglob (cm)"); | |
120 | hzphi[iLay]->SetStats(0); | |
29d63bb9 | 121 | } |
122 | ||
7285ac7a | 123 | TGraph *gptsXY=new TGraph(0); |
124 | TGraph *gptsRZ=new TGraph(0); | |
125 | ||
29d63bb9 | 126 | Int_t totev=rl->GetNumberOfEvents(); |
127 | printf("Total Number of events = %d\n",totev); | |
128 | ||
129 | for(Int_t iev=0;iev<totev;iev++){ | |
130 | rl->GetEvent(iev); | |
131 | TTree *TR = ITSloader->TreeR(); | |
132 | TClonesArray *ITSrec = detTypeRec->RecPoints(); | |
133 | TBranch *branch = 0; | |
134 | if(TR && ITSrec){ | |
135 | branch = ITSloader->TreeR()->GetBranch("ITSRecPoints"); | |
136 | if(branch)branch->SetAddress(&ITSrec); | |
137 | } | |
4e247ed3 | 138 | if(iev%100==0) printf("Event #%d\n",iev); |
29d63bb9 | 139 | |
140 | ||
141 | Int_t ipt=0; | |
7285ac7a | 142 | for (Int_t mod=modmin; mod<=modmax; mod++){ |
143 | detTypeRec->ResetRecPoints(); | |
144 | branch->GetEvent(mod); | |
145 | Int_t nrecp = ITSrec->GetEntries(); | |
146 | if(nrecp>0){ | |
147 | for(Int_t irec=0;irec<nrecp;irec++) { | |
148 | AliITSRecPoint *recp = (AliITSRecPoint*)ITSrec->At(irec); | |
149 | Int_t lay=recp->GetLayer(); | |
150 | hlayer->Fill(lay); | |
151 | recp->GetGlobalXYZ(cluglo); | |
152 | Float_t rad=TMath::Sqrt(cluglo[0]*cluglo[0]+cluglo[1]*cluglo[1]); | |
153 | Float_t phi=TMath::ATan2(cluglo[1],cluglo[0]); | |
154 | if(iev==nevfordisp){ | |
155 | gptsXY->SetPoint(ipt,cluglo[0],cluglo[1]); | |
156 | if(cluglo[1]>0) gptsRZ->SetPoint(ipt,cluglo[2],rad); | |
157 | else gptsRZ->SetPoint(ipt,cluglo[2],-rad); | |
158 | ipt++; | |
29d63bb9 | 159 | } |
7285ac7a | 160 | hmod[lay]->Fill(mod); |
161 | hzl[lay]->Fill(recp->GetDetLocalZ()); | |
162 | hxl[lay]->Fill(recp->GetDetLocalX()); | |
163 | hzg[lay]->Fill(cluglo[2]); | |
164 | hyg[lay]->Fill(cluglo[1]); | |
165 | hxg[lay]->Fill(cluglo[0]); | |
166 | hr[lay]->Fill(rad); | |
167 | hphi[lay]->Fill(phi); | |
168 | hq[lay]->Fill(recp->GetQ()); | |
5801bd60 | 169 | hdrtime[lay]->Fill(recp->GetDriftTime()); |
170 | hzphi[lay]->Fill(phi,cluglo[2]); | |
29d63bb9 | 171 | } |
172 | } | |
173 | } | |
174 | } | |
7285ac7a | 175 | |
29d63bb9 | 176 | TCanvas **c=new TCanvas*[6]; |
177 | Char_t ctit[30]; | |
178 | for(Int_t iLay=0;iLay<6;iLay++){ | |
179 | sprintf(name,"can%d",iLay+1); | |
180 | sprintf(ctit,"Layer %d",iLay+1); | |
181 | c[iLay]=new TCanvas(name,ctit,1200,900); | |
182 | c[iLay]->Divide(3,3,0.001,0.001); | |
183 | c[iLay]->cd(1); | |
184 | hmod[iLay]->Draw(); | |
185 | c[iLay]->cd(2); | |
186 | hxl[iLay]->Draw(); | |
187 | c[iLay]->cd(3); | |
188 | hzl[iLay]->Draw(); | |
189 | c[iLay]->cd(4); | |
190 | hxg[iLay]->Draw(); | |
191 | c[iLay]->cd(5); | |
192 | hyg[iLay]->Draw(); | |
193 | c[iLay]->cd(6); | |
194 | hzg[iLay]->Draw(); | |
195 | c[iLay]->cd(7); | |
196 | hr[iLay]->Draw(); | |
197 | c[iLay]->cd(8); | |
198 | hphi[iLay]->Draw(); | |
199 | c[iLay]->cd(9); | |
200 | hq[iLay]->Draw(); | |
201 | } | |
202 | ||
5801bd60 | 203 | TCanvas* cdrtim=new TCanvas("cdrtim","SDD drift time",1000,600); |
204 | cdrtim->Divide(2,1); | |
205 | cdrtim->cd(1); | |
206 | hdrtime[2]->Draw(); | |
207 | cdrtim->cd(2); | |
208 | hdrtime[3]->Draw(); | |
209 | ||
210 | gStyle->SetPalette(1); | |
211 | TLatex* tstat=new TLatex(); | |
212 | tstat->SetNDC(); | |
213 | TCanvas* cspd=new TCanvas("cspd","SPD",1000,600); | |
214 | cspd->Divide(2,1); | |
215 | cspd->cd(1); | |
216 | hzphi[0]->Draw("colz"); | |
217 | tstat->DrawLatex(0.6,0.92,Form("# Clusters = %d",int(hzphi[0]->GetEntries()))); | |
218 | cspd->cd(2); | |
219 | hzphi[1]->Draw("colz"); | |
220 | tstat->DrawLatex(0.6,0.92,Form("# Clusters = %d",int(hzphi[1]->GetEntries()))); | |
221 | ||
222 | TCanvas* csdd=new TCanvas("csdd","SDD",1000,600); | |
223 | csdd->Divide(2,1); | |
224 | csdd->cd(1); | |
225 | hzphi[2]->Draw("colz"); | |
226 | tstat->DrawLatex(0.6,0.92,Form("# Clusters = %d",int(hzphi[2]->GetEntries()))); | |
227 | csdd->cd(2); | |
228 | hzphi[3]->Draw("colz"); | |
229 | tstat->DrawLatex(0.6,0.92,Form("# Clusters = %d",int(hzphi[3]->GetEntries()))); | |
230 | ||
231 | TCanvas* cssd=new TCanvas("cssd","SSD",1000,600); | |
232 | cssd->Divide(2,1); | |
233 | cssd->cd(1); | |
234 | hzphi[4]->Draw("colz"); | |
235 | tstat->DrawLatex(0.6,0.92,Form("# Clusters = %d",int(hzphi[4]->GetEntries()))); | |
236 | cssd->cd(2); | |
237 | hzphi[5]->Draw("colz"); | |
238 | tstat->DrawLatex(0.6,0.92,Form("# Clusters = %d",int(hzphi[5]->GetEntries()))); | |
239 | ||
29d63bb9 | 240 | TCanvas *cev0; |
7285ac7a | 241 | sprintf(ctit,"Event %d XY",nevfordisp); |
242 | cev0=new TCanvas("cev0",ctit,600,600); | |
243 | if(gptsXY->GetN()>0){ | |
244 | gptsXY->SetMarkerStyle(7); | |
245 | gptsXY->SetTitle(0); | |
246 | gptsXY->Draw("AP"); | |
247 | gptsXY->GetXaxis()->SetTitle("Xglob"); | |
248 | gptsXY->GetYaxis()->SetTitle("Yglob"); | |
249 | } | |
29d63bb9 | 250 | |
251 | TCanvas *cev1; | |
7285ac7a | 252 | sprintf(ctit,"Event %d Zr",nevfordisp); |
253 | cev1=new TCanvas("cev1",ctit,600,600); | |
254 | if(gptsRZ->GetN()>0){ | |
255 | gptsRZ->SetMarkerStyle(7); | |
256 | gptsRZ->SetTitle(0); | |
257 | gptsRZ->Draw("AP"); | |
258 | gptsRZ->GetXaxis()->SetTitle("Zglob"); | |
259 | gptsRZ->GetYaxis()->SetTitle("Radius"); | |
260 | } | |
29d63bb9 | 261 | |
262 | return 0; | |
263 | } | |
264 | ||
265 |