/[PAMELA software]/calo/flight/FQLOOK/macros/FCaloCHKCALIB.cxx
ViewVC logotype

Contents of /calo/flight/FQLOOK/macros/FCaloCHKCALIB.cxx

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (show annotations) (download)
Wed Mar 22 15:04:11 2006 UTC (18 years, 8 months ago) by mocchiut
Branch: MAIN
CVS Tags: v1r06, v1r07
Changes since 1.6: +3 -1 lines
Added -O flag

1 //
2 // Check the calorimter calibrations - Emiliano Mocchiutti
3 //
4 // FCaloCHKCALIB.c version 1.06 (2006-03-22)
5 //
6 // The only input needed is the path to the directory created by YODA for the data file you want to analyze.
7 //
8 // Changelog:
9 //
10 // 1.05 - 1.06 (2006-03-22): Add optimize flag in compiling the script!
11 //
12 // 1.04 - 1.05 (2006-03-22): Corrected wrong .C files.
13 //
14 // 1.03 - 1.04 (2006-03-20): Documentation updated.
15 //
16 // 1.02 - 1.03 (2006-03-20): Changed name of shared libraries (for example from FCaloQLOOK_cxx.so to libFCaloQLOOK.so).
17 //
18 // 1.01 - 1.02 (2006-03-13): Include files from YODA without "event" directory.
19 //
20 // 1.00 - 1.01 (2006-03-02): Works on YODA v6 output (single file), does not require anymore calocommon package.
21 //
22 // 0.00 - 1.00 (2006-03-02): Clone of CaloCHKCALIB.c
23 //
24 #include <iostream>
25 #include <fstream>
26 //
27 #include <TTree.h>
28 #include <TObject.h>
29 #include <TString.h>
30 #include <TFile.h>
31 #include <TCanvas.h>
32 #include <TH1.h>
33 #include <TPolyLine.h>
34 #include <TH1F.h>
35 #include <TH2D.h>
36 #include <TLatex.h>
37 #include <TPad.h>
38 #include <TPaveLabel.h>
39 #include <TStyle.h>
40 #include <TSystem.h>
41 //
42 #include <CalibCalPedEvent.h>
43 //
44 using namespace std;
45 //
46 void stringcopy(TString& s1, const TString& s2, Int_t from=0, Int_t to=0){
47 if ( to == 0 ){
48 Int_t t2length = s2.Length();
49 s1 = "";
50 to = t2length;
51 };
52 for (Int_t i = from; i<to; i++){
53 s1.Append(s2[i],1);
54 };
55 }
56 void stringappend(TString& s1, const TString& s2){
57 Int_t t2length = s2.Length();
58 for (Int_t i = 0; i<t2length; i++){
59 s1.Append(s2[i],1);
60 };
61 }
62
63 TString getFilename(const TString filename){
64 const string fil = (const char*)filename;
65 Int_t posiz = fil.find("dw_");
66 if ( posiz == -1 ) posiz = fil.find("DW_");
67 if ( posiz == -1 ) return 0;
68 Int_t posiz2 = posiz+13;
69 TString file2;
70 stringcopy(file2,filename,posiz,posiz2);
71 TString pdat(".dat");
72 stringappend(file2,pdat);
73 return file2;
74 }
75
76 typedef struct Calib {
77 Int_t iev;
78 Int_t cstwerr[4];
79 Float_t cperror[4];
80 Float_t mip[2][22][96];
81 Float_t calped[2][22][96];
82 Float_t calgood[2][22][96];
83 Float_t calthr[2][22][6];
84 Float_t calrms[2][22][96];
85 Float_t calbase[2][22][6];
86 Float_t calvar[2][22][6];
87 Float_t calpuls[2][22][96];
88 } calib;
89
90 void FCaloCHKCALIB(TString filename, Long64_t calibnumber = 0, TString outDir = "", Int_t figmatra = 0, TString saveas = "ps"){
91 gStyle->SetPaperSize(19.,25.);
92 //
93 Float_t ccalrmsthr=0.99;
94 Float_t ccalpedthr=0.99;
95 Float_t ccalbadthr=0.005;
96 Float_t ccalthrthr=0.98;
97 Float_t ccalvarthr=0.99;
98 Float_t ccalbasthr=0.99;
99 //
100 Float_t ccalrms;
101 Float_t ccalped;
102 Float_t ccalbad;
103 Float_t ccalthr;
104 Float_t ccalvar;
105 Float_t ccalbas;
106 //
107 struct Calib calib;
108 stringstream titolo;
109 stringstream xviewev;
110 stringstream yviewev;
111 const char* startingdir = gSystem->WorkingDirectory();
112 if ( !strcmp(outDir.Data(),"") ) outDir = startingdir;
113 TString fififile = getFilename(filename);
114 const char *file;
115 file = fififile;
116 //
117 ifstream myfile;
118 myfile.open(filename.Data());
119 if ( !myfile ){
120 printf(" %s :no such file, exiting...\n\n",filename.Data());
121 return;
122 };
123 myfile.close();
124 //
125 TFile *File = new TFile(filename.Data());
126 //
127 TTree *tr = (TTree*)File->Get("CalibCalPed");
128 if ( !tr ) {
129 printf(" CalibCalPed : no such tree in %s \n",filename.Data());
130 printf(" Exiting, are you sure this is a LEVEL0 not corrupted file? \n\n");
131 return;
132 };
133 pamela::CalibCalPedEvent *ce = 0;
134 //
135 UInt_t found;
136 tr->SetBranchStatus("*",0,&found); //disable all branches
137 //
138 found = 0;
139 tr->SetBranchStatus("iev*",1,&found);
140 found = 0;
141 tr->SetBranchStatus("cstwerr*",1,&found);
142 // printf("enabled %i branches \n",found);
143 found = 0;
144 tr->SetBranchStatus("cperror*",1,&found);
145 //printf("enabled %i branches \n",found);
146 found = 0;
147 tr->SetBranchStatus("cal*",1,&found);
148 //printf("enabled %i branches \n",found);
149 found = 0;
150 tr->SetBranchStatus("CalibCalPed*",1,&found);
151 //printf("enabled %i branches \n",found);
152 //
153 tr->SetBranchAddress("CalibCalPed", &ce);
154 //
155 Long64_t ncalibs = tr->GetEntries();
156 if ( ncalibs == 0 ){
157 printf(" No calibrations in this files! \n Exiting... \n");
158 return;
159 };
160 printf("\n This file contains %i entries which corrispond to %i calibrations \n\n",(int)ncalibs,(int)ncalibs/4);
161 Long64_t minev = 0;
162 Long64_t maxev = ncalibs;
163 if ( calibnumber ){
164 minev = (calibnumber - 1)* 4;
165 maxev = minev + 4;
166 };
167 TCanvas *figura1;
168 TCanvas *figura2 = 0;
169 TCanvas *figura3;
170 TCanvas *rapporto = 0;
171 Int_t cmask = 127 ;
172 Int_t cestw = 0;
173 Int_t ver[4][23];
174 //
175 for (Int_t k = 0; k < 4; k++ ){
176 for (Int_t m = 0; m < 23 ; m++ ){
177 ver[k][m] = 0 ;
178 };
179 };
180 //
181 //
182 const string fil = (const char*)filename;
183 Int_t posiz = fil.find("dw_");
184 if ( posiz == -1 ) posiz = fil.find("DW_");
185 Int_t posiz2 = posiz+13;
186 TString file2;
187 stringcopy(file2,filename,posiz,posiz2);
188 //
189 const char *figrec = file2;
190 const char *outdir = outDir;
191 const char *format = saveas;
192 stringstream figsave;
193 stringstream figsave1;
194 stringstream figsave2;
195 //
196 // to check or not to check? this is the problem...
197 //
198 Bool_t check = false;
199 //
200 for (Int_t ci = minev; ci < maxev ; ci+=4){
201 //
202 Int_t incalrms = 0;
203 Int_t outcalrms = 0;
204 Int_t totcalbad = 0;
205 Int_t incalped = 0;
206 Int_t outcalped = 0;
207 Int_t incalthr = 0;
208 Int_t outcalthr = 0;
209 Int_t incalvar = 0;
210 Int_t outcalvar = 0;
211 Int_t incalbas = 0;
212 Int_t outcalbas = 0;
213 //
214 for ( Int_t s=0 ; s<4 ;s++ ){
215 tr->GetEntry(ci+s);
216 calib.iev = ce->iev;
217 //
218 //
219 //
220 cestw = 0;
221 if ( ce->cstwerr[s] ){
222 cestw = ce->cstwerr[s] & cmask ;
223 ver[s][16]++;
224 };
225 if ( cestw ){
226 if ( cestw & (1 << 0) ) ver[s][6]++ ;
227 if ( cestw & (1 << 1) ) ver[s][5]++ ;
228 if ( cestw & (1 << 2) ) ver[s][4]++ ;
229 if ( cestw & (1 << 3) ) ver[s][3]++ ;
230 if ( cestw & (1 << 4) ) ver[s][2]++ ;
231 if ( cestw & (1 << 5) ) ver[s][1]++ ;
232 if ( cestw & (1 << 6) ) ver[s][0]++ ;
233 };
234 if ( ce->cperror[s] != 0. ){
235 if (ce->cperror[s] == 128) ver[s][7]++ ;
236 if (ce->cperror[s] == 129) ver[s][8]++ ;
237 if (ce->cperror[s] == 130) {
238 ver[s][9]++ ;
239 ver[s][16]--;
240 };
241 if (ce->cperror[s] == 132) ver[s][11]++ ;
242 if (ce->cperror[s] == 140) ver[s][19]++ ;
243 if (ce->cperror[s] == 141) ver[s][20]++ ;
244 if (ce->cperror[s] == 142) ver[s][22]++ ;
245 };
246 //
247 for ( Int_t d=0 ; d<11 ;d++ ){
248 Int_t pre = -1;
249 for ( Int_t j=0; j<96 ;j++){
250 if ( j%16 == 0 ) pre++;
251 if ( s == 2 ){
252 calib.calped[0][2*d+1][j] = ce->calped[3][d][j];
253 calib.cstwerr[3] = ce->cstwerr[3];
254 calib.cperror[3] = ce->cperror[3];
255 calib.calgood[0][2*d+1][j] = ce->calgood[3][d][j];
256 calib.calthr[0][2*d+1][pre] = ce->calthr[3][d][pre];
257 calib.calrms[0][2*d+1][j] = ce->calrms[3][d][j];
258 calib.calbase[0][2*d+1][pre] = ce->calbase[3][d][pre];
259 calib.calvar[0][2*d+1][pre] = ce->calvar[3][d][pre];
260 };
261 if ( s == 3 ){
262 calib.calped[0][2*d][j] = ce->calped[1][d][j];
263 calib.cstwerr[1] = ce->cstwerr[1];
264 calib.cperror[1] = ce->cperror[1];
265 calib.calgood[0][2*d][j] = ce->calgood[1][d][j];
266 calib.calthr[0][2*d][pre] = ce->calthr[1][d][pre];
267 calib.calrms[0][2*d][j] = ce->calrms[1][d][j];
268 calib.calbase[0][2*d][pre] = ce->calbase[1][d][pre];
269 calib.calvar[0][2*d][pre] = ce->calvar[1][d][pre];
270 };
271 if ( s == 0 ){
272 calib.calped[1][2*d][j] = ce->calped[0][d][j];
273 calib.cstwerr[0] = ce->cstwerr[0];
274 calib.cperror[0] = ce->cperror[0];
275 calib.calgood[1][2*d][j] = ce->calgood[0][d][j];
276 calib.calthr[1][2*d][pre] = ce->calthr[0][d][pre];
277 calib.calrms[1][2*d][j] = ce->calrms[0][d][j];
278 calib.calbase[1][2*d][pre] = ce->calbase[0][d][pre];
279 calib.calvar[1][2*d][pre] = ce->calvar[0][d][pre];
280 };
281 if ( s == 1 ){
282 calib.calped[1][2*d+1][j] = ce->calped[2][d][j];
283 calib.cstwerr[2] = ce->cstwerr[2];
284 calib.cperror[2] = ce->cperror[2];
285 calib.calgood[1][2*d+1][j] = ce->calgood[2][d][j];
286 calib.calthr[1][2*d+1][pre] = ce->calthr[2][d][pre];
287 calib.calrms[1][2*d+1][j] = ce->calrms[2][d][j];
288 calib.calbase[1][2*d+1][pre] = ce->calbase[2][d][pre];
289 calib.calvar[1][2*d+1][pre] = ce->calvar[2][d][pre];
290 };
291 };
292 };
293 };
294 //
295 // Book the histograms:
296 //
297 //
298 Int_t i = (ci-minev)/4;
299 xviewev.str("");
300 xviewev << "x-view event " << (i+1);
301 yviewev.str("");
302 yviewev << "y-view event " << (i+1);
303 TH2F *Xview = new TH2F(xviewev.str().c_str(),"",96,-0.5,95.5,22,-0.5,21.5);
304 TH2F *Yview = new TH2F(yviewev.str().c_str(),"",96,-0.5,95.5,22,-0.5,21.5);
305 //
306 // figures:
307 //
308 gDirectory->Delete("C14");
309 gDirectory->Delete("C15");
310 gDirectory->Delete("C16");
311 TH1F *calped = new TH1F("C14","calped",4230,-3.5,4227.5);
312 TH1F *calrms = new TH1F("C15","calrms",4230,-3.5,4228.5);
313 TH1F *calbad = new TH1F("C16","calgood",4230,-3.5,4228.5);
314 //
315 gDirectory->Delete("C17");
316 gDirectory->Delete("C18");
317 gDirectory->Delete("C19");
318 TH1F *calthr = new TH1F("C17","calthr",271,-4.5,268.5);
319 TH1F *calvar = new TH1F("C18","calvar",271,-4.5,268.5);
320 TH1F *calbase = new TH1F("C19","calbase",271,-4.5,268.5);
321 //
322 Int_t bgcolor = 10;
323 TPad *pd1 = 0;
324 TPad *pd2 = 0;
325 TPad *palette = 0;
326 TLatex *t=new TLatex();
327 if ( figmatra ){
328 figura2 = new TCanvas("Calorimeter:_strip_RMS", "Calorimeter:_strip_RMS", 750, 650);
329 figura2->SetFillColor(10);
330 figura2->Range(0,0,100,100);
331 bgcolor = 10;
332 pd1 = new TPad("pd1","This is pad1",0.02,0.05,0.88,0.49,bgcolor);
333 pd2 = new TPad("pd2","This is pad2",0.02,0.51,0.88,0.95,bgcolor);
334 palette = new TPad("palette","This is palette",0.90,0.05,0.98,0.90,bgcolor);
335 figura2->cd();
336 gStyle->SetOptStat("");
337 t=new TLatex();
338 t->SetTextFont(32);
339 t->SetTextColor(1);
340 t->SetTextSize(0.03);
341 t->SetTextAlign(12);
342 t->DrawLatex(90.,92.5,"ADC ch.");
343 pd1->Range(0,0,100,100);
344 pd2->Range(0,0,100,100);
345 palette->Range(0,0,100,100);
346 pd1->SetTicks();
347 pd2->SetTicks();
348 pd1->Draw();
349 pd2->Draw();
350 palette->Draw();
351 palette->cd();
352 // palette
353 TPaveLabel *box1 = new TPaveLabel(2,2,98,14,"OFF","");
354 box1->SetTextFont(32);
355 box1->SetTextColor(1);
356 box1->SetTextSize(0.25);
357 box1->SetFillColor(10);
358 box1->Draw();
359 TPaveLabel *box2 = new TPaveLabel(2,16,98,28,"0-1.5","");
360 box2->SetTextFont(32);
361 box2->SetTextColor(1);
362 box2->SetTextSize(0.25);
363 box2->SetFillColor(38);
364 box2->Draw();
365 TPaveLabel *box3 = new TPaveLabel(2,30,98,42,"1.5-4","");
366 box3->SetTextFont(32);
367 box3->SetTextColor(1);
368 box3->SetTextSize(0.25);
369 box3->SetFillColor(4);
370 box3->Draw();
371 TPaveLabel *box4 = new TPaveLabel(2,44,98,56,"4-6.5","");
372 box4->SetTextFont(32);
373 box4->SetTextColor(1);
374 box4->SetTextSize(0.25);
375 box4->SetFillColor(3);
376 box4->Draw();
377 TPaveLabel *box5 = new TPaveLabel(2,58,98,70,"6.5-11.5","");
378 box5->SetTextFont(32);
379 box5->SetTextColor(1);
380 box5->SetTextSize(0.25);
381 box5->SetFillColor(2);
382 box5->Draw();
383 TPaveLabel *box6 = new TPaveLabel(2,72,98,84,">11.5","");
384 box6->SetTextFont(32);
385 box6->SetTextColor(1);
386 box6->SetTextSize(0.25);
387 box6->SetFillColor(6);
388 box6->Draw();
389 TPaveLabel *box7 = new TPaveLabel(2,86,98,98,"BAD","");
390 box7->SetTextFont(32);
391 box7->SetTextColor(10);
392 box7->SetTextSize(0.25);
393 box7->SetFillColor(1);
394 box7->Draw();
395 //
396 pd1->cd();
397 gStyle->SetOptStat("");
398 Xview->SetXTitle("strip");
399 Xview->SetYTitle("X - plane");
400 Xview->GetYaxis()->SetTitleOffset(0.5);
401 Xview->SetFillColor(bgcolor);
402 Xview->Fill(1.,1.,1.);
403 Xview->Draw("box");
404 pd1->Update();
405 pd2->cd();
406 gStyle->SetOptStat("");
407 Yview->SetXTitle("strip");
408 Yview->SetYTitle("Y - plane");
409 Yview->GetYaxis()->SetTitleOffset(0.5);
410 Yview->SetFillColor(bgcolor);
411 Yview->Fill(1.,1.,1.);
412 Yview->Draw("box");
413 pd2->Update();
414 };
415 //
416 // run over views and planes
417 //
418 Int_t j = 0;
419 Int_t g = 0;
420 gStyle->SetOptStat("");
421 for (Int_t m = 0; m < 22; m++){
422 for (Int_t l = 0; l < 2; l++){
423 for (Int_t n = 0; n < 96; n++){
424 //
425 calped->Fill((float)j,calib.calped[l][m][n]);
426 if ( (calib.calped[l][m][n] > 700. || calib.calped[l][m][n] < -700.) && (j < 4032 || j > 4048) ){
427 outcalped++;
428 } else {
429 incalped++;
430 };
431 calrms->Fill((float)j,(calib.calrms[l][m][n]/4.));
432 if ( (calib.calrms[l][m][n]/4.) > 7. || (calib.calrms[l][m][n]/4.) < 1. ){
433 outcalrms++;
434 } else {
435 incalrms++;
436 };
437 calbad->Fill((float)j,(float)calib.calgood[l][m][n]);
438 if ( calib.calgood[l][m][n] ) totcalbad++;
439 //
440 if ( n < 6 ){
441 calthr->Fill((float)g,(float)calib.calthr[l][m][n]);
442 if ( calib.calthr[l][m][n] > 21. || calib.calthr[l][m][n] < 12. ){
443 outcalthr++;
444 } else {
445 incalthr++;
446 };
447 calvar->Fill((float)g,(float)calib.calvar[l][m][n]);
448 if ( calib.calvar[l][m][n] > 8. || calib.calvar[l][m][n] < 1. ){
449 outcalvar++;
450 } else {
451 incalvar++;
452 };
453 calbase->Fill((float)g,(float)calib.calbase[l][m][n]);
454 if ( calib.calbase[l][m][n] > 4500. || calib.calbase[l][m][n] < 2000. ){
455 outcalbas++;
456 } else {
457 incalbas++;
458 };
459 g++;
460 };
461 //
462 j++;
463 //
464 if ( figmatra ){
465 figura2->cd();
466 xviewev.str("");
467 xviewev << "x-view " << i;
468 xviewev << " event " << n;
469 xviewev << " " << m;
470 xviewev << " " << l;
471 yviewev.str("");
472 yviewev << "y-view " << i;
473 yviewev << " event " << n;
474 yviewev << " " << m;
475 yviewev << " " << l;
476 TH2F *Xview = new TH2F(xviewev.str().c_str(),"",96,-0.5,95.5,22,-0.5,21.5);
477 TH2F *Yview = new TH2F(yviewev.str().c_str(),"",96,-0.5,95.5,22,-0.5,21.5);
478 if ( calib.calrms[l][m][n] > 0 ){
479 Xview->SetFillColor(38);
480 Yview->SetFillColor(38);
481 };
482 if ( calib.calrms[l][m][n] > 6 ){
483 Xview->SetFillColor(4);
484 Yview->SetFillColor(4);
485 };
486 if ( calib.calrms[l][m][n] > 16 ){
487 Xview->SetFillColor(3);
488 Yview->SetFillColor(3);
489 };
490 if ( calib.calrms[l][m][n] > 26 ){
491 Xview->SetFillColor(2);
492 Yview->SetFillColor(2);
493 };
494 if ( calib.calrms[l][m][n] > 46 ){
495 Xview->SetFillColor(6);
496 Yview->SetFillColor(6);
497 };
498 if ( calib.calrms[l][m][n] <= 0 || calib.calrms[l][m][n] >30000 || calib.calped[l][m][n]>25000){
499 Xview->SetFillColor(10);
500 Yview->SetFillColor(10);
501 };
502 if ( calib.calgood[l][m][n] != 0 ){
503 Xview->SetFillColor(1);
504 Yview->SetFillColor(1);
505 };
506 if ( l == 0 ) {
507 Xview->Fill(n,m,1.);
508 pd1->cd();
509 Xview->Draw("box same");
510 };
511 if ( l == 1 ) {
512 Yview->Fill(n,m,1.);
513 pd2->cd();
514 Yview->Draw("box same");
515 };
516 };
517 };
518 };
519 };
520 if ( figmatra ){
521 figura2->cd();
522 gStyle->SetOptStat("");
523 gStyle->SetOptDate(0);
524 t=new TLatex();
525 t->SetTextFont(32);
526 t->SetTextColor(1);
527 t->SetTextSize(0.03);
528 t->SetTextAlign(12);
529 titolo.str("");
530 titolo << "C13 - Calorimeter: strip RMS - file ";
531 titolo << file;
532 titolo << " - calibration number ";
533 titolo << (i+1);
534 t->DrawLatex(0.5,97.,titolo.str().c_str());
535 pd1->Update();
536 pd2->Update();
537 figura2->Update();
538 };
539 //
540 figura1 = new TCanvas("Calorimeter_calped_calrms_calgood", "Calorimeter_calped_calrms_calgood", 750, 950);
541 figura1->SetFillColor(10);
542 figura1->Range(0,0,100,100);
543 //
544 ccalped = (float)incalped/((float)outcalped + (float)incalped);
545 Int_t f1pd1col = 10;
546 if ( ccalped < ccalpedthr ) {
547 check = true;
548 f1pd1col = 45;
549 };
550 //
551 ccalrms = (float)incalrms/((float)outcalrms + (float)incalrms);
552 Int_t f1pd2col = 10;
553 if ( ccalrms < ccalrmsthr ) {
554 check = true;
555 f1pd2col = 45;
556 };
557 //
558 ccalbad = (float)totcalbad/4224.;
559 Int_t f1pd3col = 10;
560 if ( ccalbad > ccalbadthr ) {
561 check = true;
562 f1pd3col = 45;
563 };
564 //
565 TPad *f1pd1 = new TPad("f1pd1","This is f1pad1",0.02,0.684,0.98,0.95,f1pd1col);
566 TPad *f1pd2 = new TPad("f1pd2","This is f1pad2",0.02,0.367,0.98,0.634,f1pd2col);
567 TPad *f1pd3 = new TPad("f1pd3","This is f1pad3",0.02,0.05,0.98,0.317,f1pd3col);
568 figura1->Clear();
569 figura1->cd();
570 f1pd1->SetTicks();
571 f1pd2->SetTicks();
572 f1pd3->SetTicks();
573 f1pd1->Draw();
574 f1pd2->Draw();
575 f1pd3->Draw();
576 figura1->Draw();
577 figura3 = new TCanvas("Calorimeter_calthr_calvar_calbase", "Calorimeter_calthr_calvar_calbase", 750, 950);
578 figura3->SetFillColor(10);
579 figura3->Range(0,0,100,100);
580 //
581 ccalthr = (float)incalthr/((float)outcalthr + (float)incalthr);
582 Int_t f3pd1col = 10;
583 if ( ccalthr < ccalthrthr ) {
584 check = true;
585 f3pd1col = 45;
586 };
587 //
588 ccalvar = (float)incalvar/((float)outcalvar + (float)incalvar);
589 Int_t f3pd2col = 10;
590 if ( ccalvar < ccalvarthr ) {
591 check = true;
592 f3pd2col = 45;
593 };
594 //
595 ccalbas = (float)incalbas/((float)outcalbas + (float)incalbas);
596 Int_t f3pd3col = 10;
597 if ( ccalbas < ccalbasthr ) {
598 check = true;
599 f3pd3col = 45;
600 };
601 //
602 TPad *f3pd1 = new TPad("f3pd1","This is f3pad1",0.02,0.684,0.98,0.95,f3pd1col);
603 TPad *f3pd2 = new TPad("f3pd2","This is f3pad2",0.02,0.367,0.98,0.634,f3pd2col);
604 TPad *f3pd3 = new TPad("f3pd3","This is f3pad3",0.02,0.05,0.98,0.317,f3pd3col);
605 figura3->Clear();
606 figura3->cd();
607 f3pd1->SetTicks();
608 f3pd2->SetTicks();
609 f3pd3->SetTicks();
610 f3pd1->Draw();
611 f3pd2->Draw();
612 f3pd3->Draw();
613 figura3->Draw();
614 //
615 gStyle->SetOptStat("N");
616 figura1->cd();
617 gStyle->SetNdivisions(322,"x");
618 t=new TLatex();
619 t->SetTextFont(32);
620 t->SetTextColor(1);
621 t->SetTextSize(0.025);
622 t->SetTextAlign(12);
623 titolo.str("");
624 titolo << "EXPERT - Calorimeter: calped/calrms/calgood - file ";
625 titolo << file;
626 titolo << " - calibration number ";
627 titolo << (i+1);
628 t->DrawLatex(0.5,97.,titolo.str().c_str());
629 t->SetTextSize(0.03);
630 f1pd1->cd();
631 //
632 calped->GetXaxis()->SetNdivisions(322);
633 calped->SetXTitle("strip");
634 calped->SetYTitle("ADC channels");
635 calped->Draw();
636 TPolyLine *banda1;
637 Double_t xc[4] = {0.,4224.,4224.,0.};
638 Double_t yc[4] = {-700.,-700.,700.,700.};
639 banda1 = new TPolyLine(4,xc,yc);
640 banda1->SetLineColor(5);
641 banda1->SetFillColor(5);
642 banda1->SetLineWidth(1);
643 banda1->Draw("fSAME");
644 TPolyLine *banda2;
645 Double_t xc2[4] = {4031.5,4047.5,4047.5,4031.5};
646 Double_t yc2[4] = {-2500.,-2500.,28000.,28000.};
647 banda2 = new TPolyLine(4,xc2,yc2);
648 banda2->SetLineColor(5);
649 banda2->SetFillColor(5);
650 banda2->SetLineWidth(1);
651 banda2->Draw("fSAME");
652 calped->Draw("SAME");
653 f1pd2->cd();
654 f1pd2->SetLogy();
655 calrms->GetXaxis()->SetNdivisions(322);
656 calrms->Draw();
657 Double_t xd[4] = {0.,4224.,4224.,0.};
658 Double_t yd[4] = {1.,1.,7.,7.};
659 banda1 = new TPolyLine(4,xd,yd);
660 banda1->SetLineColor(5);
661 banda1->SetFillColor(5);
662 banda1->SetLineWidth(1);
663 banda1->Draw("fSAME");
664 calrms->SetXTitle("strip");
665 calrms->SetYTitle("ADC channels");
666 calrms->Draw("SAME");
667 f1pd3->cd();
668 gStyle->SetNdivisions(344,"x");
669 calbad->GetXaxis()->SetNdivisions(322);
670 calbad->Draw();
671 calbad->SetXTitle("strip");
672 calbad->SetYTitle("0=good 255=bad");
673 f1pd1->Update();
674 f1pd2->Update();
675 f1pd3->Update();
676 figura1->Update();
677 //
678 figura3->cd();
679 gStyle->SetNdivisions(644,"x");
680 t=new TLatex();
681 t->SetTextFont(32);
682 t->SetTextColor(1);
683 t->SetTextSize(0.025);
684 t->SetTextAlign(12);
685 titolo.str("");
686 titolo << "EXPERT - Calorimeter: calthr/calvar/calbase - file ";
687 titolo << file;
688 titolo << " - calibration number ";
689 titolo << (i+1);
690 t->DrawLatex(0.5,97.,titolo.str().c_str());
691 t->SetTextSize(0.03);
692 //
693 f3pd1->cd();
694 calthr->GetXaxis()->SetNdivisions(644);
695 calthr->SetXTitle("pre-amplifier");
696 calthr->SetYTitle("ADC channels");
697 calthr->Draw();
698 Double_t xe[4] = {0.,264.,264.,0.};
699 Double_t ye[4] = {12.,12.,21.,21.};
700 banda1 = new TPolyLine(4,xe,ye);
701 banda1->SetLineColor(5);
702 banda1->SetFillColor(5);
703 banda1->SetLineWidth(1);
704 banda1->Draw("fSAME");
705 calthr->Draw("SAME");
706 f3pd2->cd();
707 calvar->GetXaxis()->SetNdivisions(644);
708 calvar->SetXTitle("pre-amplifier");
709 calvar->SetYTitle("ADC channels");
710 calvar->Draw();
711 Double_t xt[4] = {0.,264.,264.,0.};
712 Double_t yt[4] = {1.,1.,8.,8.};
713 banda1 = new TPolyLine(4,xt,yt);
714 banda1->SetLineColor(5);
715 banda1->SetFillColor(5);
716 banda1->SetLineWidth(1);
717 banda1->Draw("fSAME");
718 calvar->Draw("SAME");
719 f3pd3->cd();
720 calbase->GetXaxis()->SetNdivisions(644);
721 calbase->SetXTitle("pre-amplifier");
722 calbase->SetYTitle("ADC channels");
723 calbase->Draw();
724 Double_t xg[4] = {0.,264.,264.,0.};
725 Double_t yg[4] = {2000.,2000.,4500.,4500.};
726 banda1 = new TPolyLine(4,xg,yg);
727 banda1->SetLineColor(5);
728 banda1->SetFillColor(5);
729 banda1->SetLineWidth(1);
730 banda1->Draw("fSAME");
731 calbase->Draw("SAME");
732 f3pd1->Update();
733 f3pd2->Update();
734 f3pd3->Update();
735 figura3->Update();
736 //
737 //
738 //
739 if ( ci == maxev-4 ) {
740 //
741 // report sheet:
742 //
743 stringstream errore;
744 rapporto= new TCanvas("Calorimeter calibration report", "Calorimeter calibration report", 750, 950);
745 rapporto->cd();
746 rapporto->SetFillColor(10);
747 rapporto->Range(0,0,100,100);
748 t=new TLatex();
749 t->SetTextFont(32);
750 t->SetTextColor(1);
751 t->SetTextSize(0.035);
752 t->SetTextAlign(12);
753 errore.str("");
754 errore << "BASIC - C20 - Calibrations in file: " << file;
755 errore << " ";
756 t->SetTextSize(0.02);
757 t->DrawLatex(2.,99.,errore.str().c_str());
758 //
759 TPad *pad1;
760 TPad *pad2;
761 TPad *pad3;
762 TPad *pad4;
763 pad1 = new TPad("pad1","This is pad1",0.02,0.47,0.49,0.90,19);
764 pad2 = new TPad("pad2","This is pad2",0.51,0.47,0.98,0.90,19);
765 pad3 = new TPad("pad3","This is pad3",0.02,0.02,0.49,0.45,19);
766 pad4 = new TPad("pad4","This is pad4",0.51,0.02,0.98,0.45,19);
767 pad1->Range(0,0,100,100);
768 pad2->Range(0,0,100,100);
769 pad3->Range(0,0,100,100);
770 pad4->Range(0,0,100,100);
771 //
772 pad1->Draw();
773 pad2->Draw();
774 pad3->Draw();
775 pad4->Draw();
776 //
777 char *sezione = 0;
778 for (Int_t si = 0; si < 4; si++){
779 if (si == 2)
780 {
781 pad1->cd() ;
782 sezione = "** Section YE (x even) **";
783 }
784 if (si == 3)
785 {
786 pad2->cd();
787 sezione = "** Section YO (x odd) **";
788 }
789 if (si == 0)
790 {
791 pad3->cd();
792 sezione = "** Section XE (y odd) **";
793 }
794 if (si == 1)
795 {
796 pad4->cd();
797 sezione = "** Section XO (y even) **";
798 }
799 t->SetTextFont(32);
800 t->SetTextColor(1);
801 t->SetTextSize(0.05);
802 t->SetTextAlign(12);
803 t->DrawLatex(33.,97.,sezione);
804 t->SetTextSize(0.05);
805 for (Int_t j = 0; j < 23; j++){
806 if ( ver[si][j] ) {
807 t->SetTextColor(50);
808 if (j == 0) {
809 errore.str("");
810 errore << "* DSP ack error: " << ver[si][j];
811 errore << " time(s)";
812 t->DrawLatex(2.,30.,errore.str().c_str());
813 check = true;
814 }
815 if (j == 1) {
816 errore.str("");
817 errore << "* Temperature alarm: " << ver[si][j];
818 errore << " time(s)";
819 t->DrawLatex(2.,74.,errore.str().c_str());
820 check = true;
821 }
822 if (j == 2) {
823 errore.str("");
824 errore << "* Latch up alarm: " << ver[si][j];
825 errore << " time(s).";
826 t->DrawLatex(2.,65.,errore.str().c_str());
827 check = true;
828 }
829 if (j == 3) {
830 errore.str("");
831 errore << "RAW mode: " << ver[si][j];
832 errore << " time(s)";
833 t->SetTextColor(38);
834 t->DrawLatex(2.,90.,errore.str().c_str());
835 }
836 if (j == 4) {
837 errore.str("");
838 errore << "* CMD length error: " << ver[si][j];
839 errore << " time(s)";
840 t->DrawLatex(2.,66.,errore.str().c_str());
841 check = true;
842 }
843 if (j == 5) {
844 errore.str("");
845 errore << "* Execution error: " << ver[si][j];
846 errore << " time(s)";
847 t->DrawLatex(2.,62.,errore.str().c_str());
848 check = true;
849 }
850 if (j == 6) {
851 errore.str("");
852 errore << "* CRC error (st. word): " << ver[si][j];
853 errore << " time(s)";
854 t->DrawLatex(2.,58.,errore.str().c_str());
855 check = true;
856 }
857 if (j == 7) {
858 errore.str("");
859 errore << "View or command not recognized: " << ver[si][j];
860 errore << " time(s)";
861 t->DrawLatex(2.,54.,errore.str().c_str());
862 check = true;
863 }
864 //
865 if (j == 8) {
866 errore.str("");
867 errore << "Missing section: " << ver[si][j];
868 errore << " time(s)";
869 t->DrawLatex(2.,50.,errore.str().c_str());
870 check = true;
871 }
872 if (j == 9) {
873 errore.str("");
874 errore << "RAW MODE COMMAND: " << ver[si][j];
875 errore << " time(s)";
876 t->DrawLatex(2.,42.,errore.str().c_str());
877 }
878 if (j == 11) {
879 errore.str("");
880 errore << "CRC error (data): " << ver[si][j];
881 errore << " time(s)";
882 t->DrawLatex(2.,38.,errore.str().c_str());
883 check = true;
884 }
885 if (j == 16) {
886 errore.str("");
887 errore << "Number of calibrations: " << ver[si][j];
888 t->SetTextColor(38);
889 t->DrawLatex(2.,86.,errore.str().c_str());
890 }
891 if (j == 19) {
892 errore.str("");
893 errore << "Pedestal checksum wrong: " << ver[si][j];
894 errore << " time(s)";
895 t->DrawLatex(2.,14.,errore.str().c_str());
896 check = true;
897 }
898 if (j == 20) {
899 errore.str("");
900 errore << "Thresholds checksum wrong: " << ver[si][j];
901 errore << " time(s)";
902 t->DrawLatex(2.,10.,errore.str().c_str());
903 check = true;
904 }
905 if (j == 22) {
906 errore.str("");
907 errore << "Packet length is zero (YODA input error), skipped: " << ver[si][j];
908 errore << " time(s)";
909 t->DrawLatex(2.,3.,errore.str().c_str());
910 check = true;
911 };
912 };
913 };
914 };
915 rapporto->cd();
916 t->SetTextFont(32);
917 t->SetTextColor(1);
918 t->SetTextSize(0.035);
919 t->SetTextAlign(12);
920 t->DrawLatex(7.,95.,"Calorimeter CALIBRATION quick look: ");
921 //printf("vediamo: ccalped %f ccalrms %f ccalbad %f ccalthr %f ccalvar %f ccalbas %f \n",ccalped,ccalrms,ccalbad,ccalthr,ccalvar,ccalbas);
922 if ( check ) {
923 t->SetTextColor(50);
924 t->DrawLatex(65.,95.,"WARNING, CHECK!");
925 t->SetTextColor(1);
926 } else {
927 t->SetTextColor(38);
928 t->DrawLatex(65.,95.,"OK!");
929 t->SetTextColor(1);
930 };
931 rapporto->Update();
932 };
933 //
934 if ( !strcmp(format,"ps") ) {
935 if ( ci == minev ) {
936 figsave.str("");
937 figsave << outdir << "/" ;
938 figsave << figrec << "_chkcalib.";
939 figsave << format;
940 figsave << "(";
941 };
942 if ( figmatra ) {
943 figura2->Print(figsave.str().c_str(),"Portrait");
944 if ( ci == minev ) {
945 figsave.str("");
946 figsave << outdir << "/" ;
947 figsave << figrec << "_chkcalib.";
948 figsave << format;
949 };
950 };
951 //
952 figura1->Print(figsave.str().c_str(),"Portrait");
953 if ( ci == minev ) {
954 figsave.str("");
955 figsave << outdir << "/" ;
956 figsave << figrec << "_chkcalib.";
957 figsave << format;
958 };
959 //
960 figura3->Print(figsave.str().c_str(),"Portrait");
961 //
962 if ( ci == maxev-4 ) {
963 figsave.str("");
964 figsave << outdir << "/" ;
965 figsave << figrec << "_chkcalib.";
966 figsave << format;
967 figsave << ")";
968 rapporto->Print(figsave.str().c_str(),"Portrait");
969 };
970 } else {
971 if ( figmatra ) {
972 figsave.str("");
973 figsave << outdir << "/" ;
974 figsave << figrec << "_chkcalib1_";
975 figsave << (i+1) << ".";
976 figsave << format;
977 figura2->SaveAs(figsave.str().c_str());
978 };
979 //
980 figsave1.str("");
981 figsave1 << outdir << "/" ;
982 figsave1 << figrec << "_chkcalib2_";
983 figsave1 << (i+1) << ".";
984 figsave1 << format;
985 figura1->SaveAs(figsave1.str().c_str());
986 //
987 figsave2.str("");
988 figsave2 << outdir << "/" ;
989 figsave2 << figrec << "_chkcalib3_";
990 figsave2 << (i+1) << ".";
991 figsave2 << format;
992 figura3->SaveAs(figsave2.str().c_str());
993 //
994 if ( ci == maxev-4 ) {
995 figsave.str("");
996 figsave << outdir << "/" ;
997 figsave << figrec << "_chkcalib_report.";
998 figsave << format;
999 rapporto->SaveAs(figsave.str().c_str());
1000 };
1001 };
1002 };
1003 printf("\n");
1004 return;
1005 }

  ViewVC Help
Powered by ViewVC 1.1.23