Record changes.
[u/mrichter/AliRoot.git] / T0 / AliT0CalibViewer.C
CommitLineData
79de2f45 1/* $Id$ */
2
3
4#if !defined(__CINT__)
5#include "TControlBar.h"
6#include "TString.h"
7#include "TRandom.h"
8#include "TH1F.h"
9#include "TF1.h"
10#include "TCanvas.h"
11
12#include "AliRun.h"
13#include "AliT0CalibData.h"
14#include "AliT0AlignData.h"
15#include "AliCDBMetaData.h"
16#include "AliCDBId.h"
17#include "AliCDBEntry.h"
18#include "AliCDBManager.h"
19#include "AliCDBStorage.h"
20#endif
21TFile *gFile=0;
22
23void AliT0CalibViewer()
24{
25 TControlBar *menu = new TControlBar("vertical","T0 CalibViewer");
26 menu->AddButton("Open file","OpenFile()",
27 "Open file");
28 menu->AddButton("Draw CFD","DrawCFD()",
29 "Draw all CFD");
30 menu->AddButton("Draw LED","DrawLED()",
31 "Draw all LED");
32 menu->AddButton("Draw LED-CFD","DrawLEDminCFD()",
33 "Draw LED-CFD");
34 menu->AddButton("Draw QTC","DrawQTC()",
35 "Draw all QTC");
36 menu->AddButton("Draw CFDvsQTC","DrawCFDvsQTC()",
37 "Draw CFD vs QTC");
38 menu->AddButton("Draw CFDvsLED","DrawCFDvsLED()",
39 "Draw CFD vs LED-CFD");
40 menu->Show();
41}
42void OpenFile()
43{
44
45const char *ft[]={"T0 raw files","t0tree*.root","All files","*",0,0};
46 TString dir(".");
47 TGFileInfo fi; fi.fFileTypes=ft; fi.fIniDir=StrDup(dir);
48 new TGFileDialog(gClient->GetRoot(), 0x0, kFDOpen, &fi);
49
50 if(!fi.fFilename) return;
51 if(gFile){ gFile->Close(); gFile=0;}
52
53 gFile=TFile::Open(fi.fFilename);
54
55}
56
57//------------------------------------------------------------------------
58void DrawCFD()
59{
60 Int_t npeaks = 20;
61 Int_t sigma=3.;
62 Bool_t down=false;
63 Int_t index[20];
64
65 TCanvas *c1 = new TCanvas("c1", "c1",0,48,1280,951);
66 c1->Divide(4,3);
67 gStyle->SetOptFit(1111);
68 //c1->Divide(2,2);
69 Char_t buf1[10];
70 for (Int_t i=0; i<12; i++)
71 {
72 c1->cd(i+1);
73 sprintf(buf1,"T0_C_%i_CFD",i+1);
74 TH1F *cfd = (TH1F*) gFile->Get(buf1);
75 // cfd->Draw();
76 TSpectrum *s = new TSpectrum(2*npeaks,1);
77 Int_t nfound = s->Search(cfd,sigma," ",0.05);
78 cout<<"Found "<<nfound<<" peaks sigma "<<sigma<<endl;;
79 if(nfound!=0){
80 Float_t *xpeak = s->GetPositionX();
81 TMath::Sort(nfound, xpeak, index,down);
82 Float_t xp = xpeak[index[0]];
83 Int_t xbin = cfd->GetXaxis()->FindBin(xp);
84 Float_t yp = cfd->GetBinContent(xbin);
85 cout<<"xbin = "<<xbin<<"\txpeak = "<<xpeak[1]<<"\typeak = "<<yp<<endl;
86 Float_t hmax = xp+3*sigma;
87 Float_t hmin = xp-3*sigma;
88 cout<<hmin<< " "<<hmax<<endl;
89 cfd->GetXaxis()->SetRange(hmin-20,hmax+20);
90 // cout<<" cfd range "<<mean<<" rms "<<rms<<" "<<hmin<<" "<<hmax<<endl;
91 TF1 *g1 = new TF1("g1", "gaus", hmin, hmax);
92 // cfd->Fit("g1","R");
93 cfd->Draw();
94 }
95 }
96
97}
98//------------------------------------------------------------------------
99void DrawLED()
100{
101 Int_t npeaks = 10;
102 Int_t sigma=10.;
103 Bool_t down=false;
104 Int_t index[20];
105
106 TCanvas *c1 = new TCanvas("c1", "c1",0,48,1280,951);
107 c1->Divide(4,3);
108
109 Char_t buf1[20];
110 for (Int_t i=0; i<12; i++)
111 {
112 c1->cd(i+1);
113 sprintf(buf1,"T0_C_%i_LED",i+1);
114 TH1F *cfd = (TH1F*) gFile->Get(buf1);
115 cfd->Draw();
116 TSpectrum *s = new TSpectrum(2*npeaks,1);
117 Int_t nfound = s->Search(cfd,sigma," ",0.2);
118 cout<<"Found "<<nfound<<" peaks sigma "<<sigma<<endl;;
119 if(nfound!=0) {
120 Float_t *xpeak = s->GetPositionX();
121 TMath::Sort(nfound, xpeak, index,down);
122 Float_t xp = xpeak[index[0]];
123 Int_t xbin = cfd->GetXaxis()->FindBin(xp);
124 Float_t yp = cfd->GetBinContent(xbin);
125 cout<<"xbin = "<<xbin<<"\txpeak = "<<xpeak[index[0]]<<"\typeak = "<<yp<<endl;
126 Float_t hmin=xp-3*sigma;
127 Float_t hmax =xp+3*sigma;
128 cfd->GetXaxis()->SetRange(hmin,hmax);
129 TF1 *g1 = new TF1("g1", "gaus", hmin, hmax);
130 cfd->Fit("g1","R");
131 // cfd->Draw();
132
133 }
134
135 }
136}
137
138//------------------------------------------------------------------------
139void DrawQTC()
140{
141
142 TCanvas *c1 = new TCanvas("c1", "QTC",0,48,1280,951);
143 // c1->Divide(4,3);
144 c1->Divide(2,3);
145
146 Char_t buf1[10];
147 for (Int_t i=0; i<12; i++)
148 {
149 c1->cd(i+1);
150 sprintf(buf1,"QTC%i",i+1);
151 TH1F *qtc = (TH1F*) gFile->Get(buf1);
152 Float_t mean = qtc->GetMean();
153 Float_t rms = qtc->GetRMS();
154 Float_t hminR=mean - 0.1*mean;
155 Float_t hmaxR =mean + 0.1*mean;
156 qtc->GetXaxis()->SetRange(hminR,hmaxR);
157 Float_t hmin=mean - 3*rms;
158 Float_t hmax =mean + 3*rms;
159 qtc->GetXaxis()->SetRange(hmin,hmax);
160 // TF1 *g2 = new TF1("g2", "gaus", hmin, hmax);
161 // qtc->Fit("g2","RQ");
162 qtc->Draw();
163 }
164
165
166}
167
168//------------------------------------------------------------------------
169void DrawLEDminCFD()
170{
171 Int_t npeaks = 10;
172 Int_t sigma=10.;
173 Bool_t down=false;
174 Int_t index[20];
175
176 TCanvas *c1 = new TCanvas("c1", "c1",0,48,1280,951);
177 c1->Divide(4,3);
178
179 Char_t buf1[20];
180 for (Int_t i=0; i<12; i++)
181 {
182 c1->cd(i+1);
183 sprintf(buf1,"LED-CFD%i",i+1);
184 TH1F *cfd = (TH1F*) gFile->Get(buf1);
185 cfd->Draw();
186 TSpectrum *s = new TSpectrum(2*npeaks,1);
187 Int_t nfound = s->Search(cfd,sigma," ",0.2);
188 cout<<"Found "<<nfound<<" peaks sigma "<<sigma<<endl;;
189 if(nfound!=0) {
190 Float_t *xpeak = s->GetPositionX();
191 TMath::Sort(nfound, xpeak, index,down);
192 Float_t xp = xpeak[index[0]];
193 Int_t xbin = cfd->GetXaxis()->FindBin(xp);
194 Float_t yp = cfd->GetBinContent(xbin);
195 cout<<"xbin = "<<xbin<<"\txpeak = "<<xpeak[index[0]]<<"\typeak = "<<yp<<endl;
196 Float_t hmin=xp-3*sigma;
197 Float_t hmax =xp+3*sigma;
198 cfd->GetXaxis()->SetRange(hmin,hmax);
199 TF1 *g1 = new TF1("g1", "gaus", hmin, hmax);
200 cfd->Fit("g1","RQ");
201
202
203 }
204
205 }
206 /*
207 TCanvas *c1 = new TCanvas("c1", "c1",0,48,1280,951);
208 c1->Divide(2,2);
209 Char_t buf1[10];
210 for (Int_t i=0; i<4; i++)
211 {
212 c1->cd(i+1);
213 sprintf(buf1,"LED-CFD%i",i+1);
214 TH1F *cfd = (TH1F*) file->Get(buf1);
215 // cout<<buf1<<" "<<cfd<<endl;
216 // cfd->Draw();
217 // cfd->GetXaxis()->SetRange(0,100);
218 Float_t mean = cfd->GetMean();
219 Float_t rms = cfd->GetRMS();
220 Float_t hmin=mean - 3*rms;
221 Float_t hmax =mean + 3*rms;
222 cfd->GetXaxis()->SetRange(hmin-10,hmax+10);
223 cout<<" cfd range "<<mean<<" rms "<<rms<<" "<<hmin<<" "<<hmax<<endl;
224 // TF1 *g1 = new TF1("g1", "gaus", hmin, hmax);
225 // cfd->Fit("g1","RQ");
226 cfd->Draw();
227 }
228 */
229
230}
231//------------------------------------------------------------------------
232void DrawCFDvsQTC()
233{
234 Int_t npeaks = 20;
235 Int_t sigma=3.;
236 Bool_t down=false;
237
238 Int_t index[20];
239 Char_t buf1[10], buf2[10];
240
241 TCanvas *c1 = new TCanvas("c1", "c1",0,48,1280,951);
242 gStyle->SetOptStat(0);
243 c1->Divide(3,2);
244
245 for (Int_t i=0; i<5; i++)
246 {
247 c1->cd(i+1);
248 sprintf(buf1,"T0_C_%i_CFD",i+1);
249 sprintf(buf2,"CFDvsQTC%i",i+1);
250 cout<<buf1<<" "<<buf2<<endl;
251 TH2F *qtc_cfd = (TH2F*) gFile->Get(buf2);
252 TH1F *cfd = (TH1F*) gFile->Get(buf1);
253 // cfd->Draw();
254 TSpectrum *s = new TSpectrum(2*npeaks,1);
255 Int_t nfound = s->Search(cfd,sigma," ",0.05);
256 cout<<"Found "<<nfound<<" peaks sigma "<<sigma<<endl;;
257 if(nfound!=0){
258 Float_t *xpeak = s->GetPositionX();
259 TMath::Sort(nfound, xpeak, index,down);
260 Float_t xp = xpeak[index[0]];
261 Int_t xbin = cfd->GetXaxis()->FindBin(xp);
262 Float_t yp = cfd->GetBinContent(xbin);
263 cout<<"xbin = "<<xbin<<"\txpeak = "<<xpeak[1]<<"\typeak = "<<yp<<endl;
264 Float_t hmax = xp+10*sigma;
265 Float_t hmin = xp-10*sigma;
266 cout<<hmin<< " "<<hmax<<endl;
267 // cfd->GetXaxis()->SetRange(hmin,hmax);
268 // TF1 *g1 = new TF1("g1", "gaus", hmin, hmax);
269 // cfd->Fit("g1","R");
270 Int_t hminbin= qtc_cfd->GetXaxis()->GetFirst();
271 Int_t hmaxbin= qtc_cfd->GetXaxis()->GetLast();
272 Int_t nbins= qtc_cfd->GetXaxis()->GetNbins();
273 cout<<" qtc_cfd "<<hminbin<<" "<<hmaxbin<<" "<<nbins<<endl;
274 // qtc_cfd->Draw();
275 TProfile *pr_y = qtc_cfd->ProfileX();
276
277 pr_y->SetMaximum(hmax);
278 pr_y->SetMinimum(hmin);
279 Int_t np=nbins/20;
280 Double_t *xx = new Double_t[np];
281 Double_t *yy = new Double_t[np];
282 Int_t ng=0;
283 Double_t yg=0;
284 for (Int_t ip=1; ip<nbins; ip++)
285 {
286 if(ip%20 != 0 ) {
287 if (pr_y->GetBinContent(ip) !=0)
288 yg +=pr_y->GetBinContent(ip);
289 // cout<<ng<<" "<<pr_y->GetBinContent(ip)<<" "<<yg<<endl;
290 ng++;}
291 else {
292 xx[ip/20] = Float_t (ip);
293 yy[ip/20] = yg/ng;
294 yg=0;
295 ng=0;
296 // cout<<ip<<" "<<ip/20<<" "<< xx[ip/20]<<" "<< yy[ip/20]<<endl;
297 }
298 }
299 TH2F *hr = new TH2F("hr"," ",np,0,nbins, np, hmin, hmax);
300 hr->Draw();
301 TGraph *gr = new TGraph(np,xx,yy);
302 gr->SetMinimum(hmin);
303 gr->SetMaximum(hmax);
304 gr->SetMarkerStyle(20);
305 gr->Draw("P");
306 // delete [] xx;
307 // delete [] yy;
308
309 // pr_y->Rebin(10);
310 // pr_y->Draw();
311
312 }
313
314 }
315
316
317}
318//------------------------------------------------------------------------
319void DrawCFDvsLED()
320{
321 Int_t runNumber=1098;
322
323 Int_t npeaks = 20;
324 Int_t sigma=2.;
325 Char_t buf1[10], buf2[10];
326
327 for (Int_t i=0; i<1; i++)
328 {
329 // c1->cd(i+1);
330 sprintf(buf1,"T0_C_%i_CFD",i+1);
331 sprintf(buf2,"CFD_LED%i",i+1);
332
333 TH2F *qtc_cfd = (TH2F*) gFile->Get(buf2);
334 TH1F *cfd = (TH1F*) gFile->Get(buf1);
335 // cfd->Draw();
336 TSpectrum *s = new TSpectrum(2*npeaks,1);
337 Int_t nfound = s->Search(cfd,sigma," ",0.05);
338 cout<<"Found "<<nfound<<" peaks sigma "<<sigma<<endl;;
339 if(nfound!=0){
340 Double_t max=0.0;
341 Double_t tabmax[2] = {0.0, 0.0};
342 Float_t *xpeak = s->GetPositionX();
343 for(Int_t k=0; k<1 ;k++)
344 {
345 Float_t xp = xpeak[k];
346 Int_t xbin = cfd->GetXaxis()->FindBin(xp);
347 Float_t yp = cfd->GetBinContent(xbin);
348 cout<<"xbin = "<<xbin<<"\txpeak = "<<xpeak[k]<<"\typeak = "<<yp<<endl;
349 }
350 Float_t hmin=xp-10*sigma;
351 Float_t hmax =xp+10*sigma;
352 cout<<hmin<< " "<<hmax<<endl;
353 // cfd->GetXaxis()->SetRange(hmin,hmax);
354 // TF1 *g1 = new TF1("g1", "gaus", hmin, hmax);
355 // cfd->Fit("g1","R");
356 Int_t hminbin= qtc_cfd->GetXaxis()->GetFirst();
357 Int_t hmaxbin= qtc_cfd->GetXaxis()->GetLast();
358 Int_t nbins= qtc_cfd->GetXaxis()->GetNbins();
359 cout<<" qtc_cfd "<<hminbin<<" "<<hmaxbin<<" "<<nbins<<endl;
360 // qtc_cfd->Draw();
361 TProfile *pr_y = qtc_cfd->ProfileX();
362
363 pr_y->SetMaximum(hmax);
364 pr_y->SetMinimum(hmin);
365 Int_t np=nbins/20;
366 Double_t *xx = new Double_t[np];
367 Double_t *yy = new Double_t[np];
368 Int_t ng=0;
369 Double_t yg=0;
370 for (Int_t ip=1; ip<nbins; ip++)
371 {
372 if(ip%20 != 0 ) {
373 if (pr_y->GetBinContent(ip) !=0)
374 yg +=pr_y->GetBinContent(ip);
375 // cout<<ng<<" "<<pr_y->GetBinContent(ip)<<" "<<yg<<endl;
376 ng++;}
377 else {
378 xx[ip/20] = Float_t (ip);
379 yy[ip/20] = yg/ng;
380 yg=0;
381 ng=0;
382 cout<<ip<<" "<<ip/20<<" "<< xx[ip/20]<<" "<< yy[ip/20]<<endl;
383 }
384 }
385 TH2F *hr = new TH2F("hr"," ",np,0,nbins, np, hmin, hmax);
386 hr->Draw();
387 TGraph *gr = new TGraph(np,xx,yy);
388 gr->SetMinimum(hmin);
389 gr->SetMaximum(hmax);
390 gr->Draw("P");
391 delete [] xx;
392 delete [] yy;
393
394 // pr_y->Rebin(10);
395 // pr_y->Draw();
396
397 }
398
399 }
400
401
402}