/[PAMELA software]/quicklook/calo/FQLOOK/macros/FCaloQLOOK.cxx
ViewVC logotype

Contents of /quicklook/calo/FQLOOK/macros/FCaloQLOOK.cxx

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.8 - (show annotations) (download)
Tue May 23 13:28:22 2006 UTC (18 years, 6 months ago) by mocchiut
Branch: MAIN
CVS Tags: v1r07
Changes since 1.7: +162 -9 lines
Small bug corrected and new 'expert' figures added

1 //
2 // Check for possible errors and shows raw distribution of variables coming from the DSP (no calibrations needed) - Emiliano Mocchiutti
3 //
4 // FCaloQLOOK.c version 1.07 (2006-05-23)
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.06 - 1.07 (2006-05-23): Don't print warning in case of latchup not recognized from the status word, fixed. Added "expert" figures from 21 to 28 which appears only in the
11 // case of latchup alarm.
12 //
13 // 1.05 - 1.06 (2006-03-22): Add optimize flag in compiling the script!
14 //
15 // 1.04 - 1.05 (2006-03-22): Corrected wrong .C files.
16 //
17 // 1.03 - 1.04 (2006-03-20): Documentation updated.
18 //
19 // 1.02 - 1.03 (2006-03-20): Changed name of shared libraries (from FCaloQLOOK_cxx.so to libFCaloQLOOK.so).
20 //
21 // 1.01 - 1.02 (2006-03-13): Include files from YODA without "event" directory.
22 //
23 // 1.00 - 1.01 (2006-02-28): Works on YODA v6 output (single file), does not require anymore calocommon package.
24 //
25 // 0.00 - 1.00 (2006-02-28): Clone of CaloQLOOK.c (ground software).
26 //
27 #include <iostream>
28 #include <fstream>
29 //
30 #include <TObject.h>
31 #include <TString.h>
32 #include <TFile.h>
33 #include <TCanvas.h>
34 #include <TH1.h>
35 #include <TH1F.h>
36 #include <TH2D.h>
37 #include <TLatex.h>
38 #include <TPad.h>
39 #include <TPolyLine.h>
40 #include <TStyle.h>
41 #include <TSystem.h>
42 //
43 #include <PamelaRun.h>
44 #include <physics/calorimeter/CalorimeterEvent.h>
45 //
46 #include <FCaloQLOOKfun.h>
47 //
48 using namespace std;
49 //
50 void stringcopy(TString& s1, const TString& s2, Int_t from=0, Int_t to=0){
51 if ( to == 0 ){
52 Int_t t2length = s2.Length();
53 s1 = "";
54 to = t2length;
55 };
56 for (Int_t i = from; i<to; i++){
57 s1.Append(s2[i],1);
58 };
59 }
60 void stringappend(TString& s1, const TString& s2){
61 Int_t t2length = s2.Length();
62 for (Int_t i = 0; i<t2length; i++){
63 s1.Append(s2[i],1);
64 };
65 }
66
67 TString getFilename(const TString filename){
68 const string fil = (const char*)filename;
69 Int_t posiz = fil.find("dw_");
70 if ( posiz == -1 ) posiz = fil.find("DW_");
71 if ( posiz == -1 ) return 0;
72 Int_t posiz2 = posiz+13;
73 TString file2;
74 stringcopy(file2,filename,posiz,posiz2);
75 TString pdat(".dat");
76 stringappend(file2,pdat);
77 return file2;
78 }
79
80 void FCaloQLOOK(TString filename, Int_t fromevent=0, Int_t toevent=0, TString outDir="", TString saveas = "ps"){
81 gStyle->SetPaperSize(19.,25.);
82 const char* startingdir = gSystem->WorkingDirectory();
83 if ( !strcmp(outDir.Data(),"") ) outDir = startingdir;
84 //
85 //
86 ifstream myfile;
87 myfile.open(filename.Data());
88 if ( !myfile ){
89 printf(" %s :no such file, exiting...\n\n",filename.Data());
90 return;
91 };
92 myfile.close();
93 //
94 TFile *File = new TFile(filename.Data());
95 TTree *tr = (TTree*)File->Get("Physics");
96 if ( !tr ) {
97 printf(" Physics : no such tree in %s \n",filename.Data());
98 printf(" Exiting, are you sure this is a LEVEL0 not corrupted file? \n\n");
99 return;
100 };
101 //
102 // Define variables
103 //
104 Float_t ctshitthr = 0.65;
105 Float_t cbasethr = 0.95;
106 Float_t cdexythr = 0.995;
107 Float_t cdexycthr = 0.95;
108 //
109 pamela::calorimeter::CalorimeterEvent *ce = 0;
110 pamela::EventHeader *eh = 0;
111 pamela::PscuHeader *ph = 0;
112 //
113 UInt_t found;
114 tr->SetBranchStatus("*",0,&found); //disable all branches
115 //
116 found = 0;
117 tr->SetBranchStatus("iev*",1,&found);
118 // printf("enabled %i branches \n",found);
119 found = 0;
120 tr->SetBranchStatus("dexy*",1,&found);
121 // printf("enabled %i branches \n",found);
122 found = 0;
123 tr->SetBranchStatus("stwerr*",1,&found);
124 // printf("enabled %i branches \n",found);
125 found = 0;
126 tr->SetBranchStatus("perror*",1,&found);
127 // printf("enabled %i branches \n",found);
128 found = 0;
129 tr->SetBranchStatus("cal*",1,&found);
130 // printf("enabled %i branches \n",found);
131 found = 0;
132 tr->SetBranchStatus("base*",1,&found);
133 //printf("enabled %i branches \n",found);
134 found = 0;
135 tr->SetBranchStatus("Pscu*",1,&found);
136 //printf("enabled %i branches \n",found);
137 found = 0;
138 tr->SetBranchStatus("Calorimeter*",1,&found);
139 //printf("calo enabled %i branches \n",found);
140 found = 0;
141 tr->SetBranchStatus("Header*",1,&found);
142 //printf("head enabled %i branches \n",found);
143 //
144 tr->SetBranchAddress("Calorimeter", &ce);
145 tr->SetBranchAddress("Header", &eh);
146 //
147 Long64_t nevents = tr->GetEntries();
148 if ( nevents < 1 ) {
149 printf("The file is empty!\n");
150 return;
151 };
152 Int_t const size = nevents;
153 Double_t iev2[size+1];
154 Int_t ver[4][23], lver[4][23],shit[4][11], rshit[4][11], se,bl, pl, fulldiff[4],cshit, cpre[4],nullsh[4][11], lalarm[4];
155 se = 0;
156 pl = 0;
157 Float_t allbase = 0.;
158 Int_t tshit, trshit, compdata,rawdata, errorfull, calevn1, calevn2, calevn3, calevn4, pshit[4][11];
159 tshit = 0;
160 trshit = 0;
161 char *sezione;
162 Bool_t check = false;
163 sezione = "";
164 stringstream errore;
165 errore.str("");
166 //
167 TString fififile = getFilename(filename);
168 const char *file = fififile;
169 //
170 // book histograms
171 //
172 TH1F *h1;
173 TH1F *h1r;
174 TH1F *hdiff;
175 TH1F *Baseline;
176 TH1F *Dexy;
177 TH1F *Dexyc;
178 TH1F *Calstriphit;
179 TH1F *calev01;
180 TH1F *calev23;
181 TH1F *calev03;
182 TH1F *lupstw[4];
183 TH1F *lup[4];
184 TH2D *calev2;
185
186 h1 = new TH1F("C7","Strips hit, compress mode",100,0.,200.);
187 h1r = new TH1F("C8","Strips hit, raw mode",100,-1,1);
188 h1r->SetBit(TH1F::kCanRebin);
189 hdiff = new TH1F("C6","Differences in full mode",100,-3,3);
190 hdiff->SetBit(TH1F::kCanRebin);
191 Baseline = new TH1F("C9","baselines",100,0,3);
192 Baseline->SetBit(TH1F::kCanRebin);
193 Dexy = new TH1F("C12","dexy",100,0.,37000.);
194 Dexyc = new TH1F("C10","dexyc",100,0,3);
195 Dexyc->SetBit(TH1F::kCanRebin);
196 Calstriphit = new TH1F("C11","calstriphit[1:4]",100,0.,200.);
197
198 calev01 = new TH1F("C3","|calevnum(1)-calevnum(2)|",100,0,1);
199 calev01->SetBit(TH1F::kCanRebin);
200 calev23 = new TH1F("C4","|calevnum(3)-calevnum(4)|",100,0,1);
201 calev23->SetBit(TH1F::kCanRebin);
202 calev03 = new TH1F("C5","|calevnum(1)-calevnum(4)|",100,0,1);
203 calev03->SetBit(TH1F::kCanRebin);
204 calev2 = new TH2D("C2","calevnum(2)%iev",3000,0.,2.,100,0.,2.);
205 calev2->SetBit(TH2D::kCanRebin);
206
207 stringstream oss;
208 stringstream noss;
209 for ( Int_t i=0; i<4; i++){
210 oss.str("");
211 oss << "OBT stw latch up section " << i;
212 noss.str("");
213 noss << "C" << 21+i;
214 lupstw[i] = new TH1F(noss.str().c_str(),oss.str().c_str(),100,-1,1);
215 lupstw[i]->SetBit(TH1F::kCanRebin);
216 oss.str("");
217 oss << "OBT no stw latch up section " << i;
218 noss.str("");
219 noss << "C" << 25+i;
220 lup[i] = new TH1F(noss.str().c_str(),oss.str().c_str(),100,-1,1);
221 lup[i]->SetBit(TH1F::kCanRebin);
222 };
223
224 //
225 // run over each event and take out some variables
226 //
227 if ( fromevent > toevent && toevent ){
228 printf("It must be fromevent < toevent \n");
229 return;
230 };
231
232
233 if ( fromevent > nevents+1 || fromevent < 0 ) {
234 printf("You can choose fromevent between 0 (all) and %i \n",(int)nevents+1);
235 return;
236 };
237
238 if ( toevent > nevents+1 || toevent < 0 ) {
239 printf("You can choose toevent between 0 (all) and %i \n",(int)nevents+1);
240 return;
241 };
242 Int_t minevent = 0;
243 Int_t maxevent = 0;
244 if ( fromevent == 0 ) {
245 minevent = 0;
246 maxevent = nevents -1;
247 } else {
248 minevent = fromevent - 1;
249 if ( toevent > 0 ){
250 maxevent = toevent - 1;
251 } else {
252 maxevent = fromevent - 1;
253 };
254 };
255
256 for (Int_t k = 0; k < 4; k++ ){
257 for (Int_t m = 0; m < 23 ; m++ ){
258 ver[k][m] = 0 ;
259 lver[k][m] = 0 ;
260 cpre[k]=0;
261 if ( m < 11 ) {
262 pshit[k][m] = 0;
263 nullsh[k][m] = 0;
264 };
265 lalarm[k] = 0;
266 };
267 };
268 Int_t pdone, bdone;
269 pdone = 0;
270 bdone = 0;
271 bool isCOMP = 0;
272 bool isFULL = 0;
273 bool isRAW = 0;
274 Int_t alldexy=0;
275 Int_t alldexy2=0;
276 Int_t stri=0;
277 Int_t fcheck = 0;
278 Int_t cestw=0;
279 Int_t cmask = 127 ;
280 compdata = 0;
281 rawdata = 0;
282 errorfull = 0;
283 calevn1 = 0;
284 calevn2 = 0;
285 calevn3 = 0;
286 calevn4 = 0;
287 fulldiff[0] = 0;
288 fulldiff[1] = 0;
289 fulldiff[2] = 0;
290 fulldiff[3] = 0;
291 printf("\n Processed events: \n\n");
292 unsigned short int calev0=0;
293 unsigned short int oldcalev0;
294 unsigned short int calev1=0;
295 unsigned short int oldcalev1;
296 unsigned short int calevv2=0;
297 unsigned short int oldcalev2;
298 unsigned short int calev3=0;
299 unsigned short int oldcalev3;
300 Int_t i = minevent;
301 Float_t headc = 0.;
302 Float_t headco = 0.;
303 Bool_t h1rcheck = false;
304 Int_t intshit = 0;
305 Int_t outtshit = 0;
306 Int_t incshit = 0;
307 Int_t outcshit = 0;
308 Int_t inbase = 0;
309 Int_t outbase = 0;
310 Int_t indexy = 0;
311 Int_t outdexy = 0;
312 Int_t indexyc = 0;
313 Int_t outdexyc = 0;
314 Int_t obt = 0;
315 Int_t minobt[4];
316 Int_t maxobt[4];
317 Int_t swminobt[4];
318 Int_t swmaxobt[4];
319 Bool_t firstobt[4];
320 Bool_t swfirstobt[4];
321 for ( Int_t i = 0; i<4; i++){
322 minobt[i] = 0;
323 maxobt[i] = 0;
324 swminobt[i] = 0;
325 swmaxobt[i] = 0;
326 firstobt[i] = true;
327 swfirstobt[i] = true;
328 };
329 while ( i < maxevent+1){
330 tshit = 0;
331 trshit = 0;
332 tr->GetEntry(i);
333 iev2[i] = ce->iev;
334 //
335 ph = eh->GetPscuHeader();
336 headco = headc;
337 headc = ph->GetCounter();
338 obt = ph->GetOrbitalTime();
339 calevn1 += (int)abs((int)(ce->calevnum[0]-ce->calevnum[1]));
340 calevn2 += (int)abs((int)(ce->calevnum[2]-ce->calevnum[3]));
341 calevn3 += (int)abs((int)(ce->calevnum[0]-ce->calevnum[3]));
342 calev01->Fill(abs((int)(ce->calevnum[0]-ce->calevnum[1])));
343 calev23->Fill(abs((int)(ce->calevnum[2]-ce->calevnum[3])));
344 calev03->Fill(abs((int)(ce->calevnum[0]-ce->calevnum[3])));
345 unsigned short calvnm2 = (unsigned short)ce->calevnum[2];
346 calev2->Fill(ce->iev,calvnm2);
347 calevn4 += (int)ce->calevnum[2];
348 oldcalev0 = calev0;
349 calev0 = (int)ce->calevnum[0];
350 oldcalev1 = calev1;
351 calev1 = (int)ce->calevnum[1];
352 oldcalev2 = calevv2;
353 calevv2 = (int)ce->calevnum[2];
354 oldcalev3 = calev3;
355 calev3 = (int)ce->calevnum[3];
356 goto jumpprintout;
357 if ( (headc - headco -1.) == 0. && ((calev0 - oldcalev0 - 1) > 0 || (calev1 - oldcalev1 - 1) > 0 || (calevv2 - oldcalev2 - 1) > 0 || (calev3 - oldcalev3 - 1) > 0) ){
358 if ( i != minevent ) {
359 printf(" %f 0 Event %i: %i\n",headco,i,oldcalev0);
360 printf(" %f 0 Event %i: %i\n",headc,i+1,calev0);
361 printf(" %f 1 Event %i: %i\n",headco,i,oldcalev1);
362 printf(" %f 1 Event %i: %i\n",headc,i+1,calev1);
363 printf(" %f 2 Event %i: %i\n",headco,i,oldcalev2);
364 printf(" %f 2 Event %i: %i\n",headc,i+1,calevv2);
365 printf(" %f 3 Event %i: %i\n",headco,i,oldcalev3);
366 printf(" %f 3 Event %i: %i\n",headc,i+1,calev3);
367 isRAW = 0;
368 if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;
369 if ( (calev0 - oldcalev0 - 1) > 0 && !isRAW && ce->perror[0] != 129 && oldcalev0 != 0) {
370 ver[0][10]++;
371 };
372 isRAW = 0;
373 if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;
374 if ( (calev1 - oldcalev1 - 1) > 0 && !isRAW && ce->perror[1] != 129 && oldcalev1 != 0 ){
375 ver[1][10]++;
376 };
377 isRAW = 0;
378 if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;
379 if ( (calevv2 - oldcalev2 - 1) > 0 && !isRAW && ce->perror[2] != 129 && oldcalev2 != 0 ){
380 ver[2][10]++;
381 };
382 isRAW = 0;
383 if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;
384 if ( (calev3 - oldcalev3 - 1) > 0 && !isRAW && ce->perror[3] != 129 && oldcalev3 != 0 ){
385 ver[3][10]++;
386 };
387 }
388 };
389 jumpprintout:
390 memcpy(shit, nullsh, sizeof(nullsh));
391 memcpy(rshit, nullsh, sizeof(nullsh));
392 for (Int_t l = 0; l < 2; l++ ){
393 for (Int_t ii = 0; ii < 22; ii++){
394 if (l == 0 && ii%2 == 0){
395 se = 3;
396 pl = ii/2;
397 pdone = 0;
398 };
399 if (l == 0 && ii%2 != 0){
400 se = 2;
401 pl = (ii-1)/2;
402 pdone = 0;
403 };
404 if (l == 1 && ii%2 == 0){
405 se = 0;
406 pl = ii/2;
407 pdone = 0;
408 };
409 if (l == 1 && ii%2 != 0){
410 se = 1;
411 pl = (ii-1)/2;
412 pdone = 0;
413 };
414
415 isCOMP = 0;
416 isFULL = 0;
417 isRAW = 0;
418 if ( ce->stwerr[se] & (1 << 16) ) isCOMP = 1;
419 if ( ce->stwerr[se] & (1 << 17) ) isFULL = 1;
420 if ( ce->stwerr[se] & (1 << 3) ) isRAW = 1;
421 bl = -1;
422 for (Int_t kk = 0; kk < 96 ; kk++ ){
423 if ( kk%16 == 0 ){
424 bdone = 0;
425 bl++;
426 allbase = ce->base[l][ii][bl];
427 alldexy=0;
428 alldexy2=0;
429 stri=0;
430 for (Int_t e = 0; e < 16 ; e++ ){
431 stri = e + 16 * bl;
432 alldexy += (int)ce->dexyc[l][ii][stri];
433 alldexy2 += (int)ce->dexy[l][ii][stri];
434 };
435 };
436 if ( !isRAW ) {
437 //
438 if ( !pdone ){
439 if ( (ce->base[l][ii][bl]>32000 || ce->base[l][ii][bl] == 0 ) && ( alldexy > 512000 || alldexy == 0) && ce->perror[se] == 0 ) {
440 pdone = 1;
441 pshit[se][pl]++ ;
442 if ( (ce->stwerr[se] & (1 << 4)) == 0 ) {
443 lalarm[se]++;
444 lup[se]->Fill(obt);
445 if ( firstobt[se] ) minobt[se] = obt;
446 if ( obt > maxobt[se] ) maxobt[se] = obt;
447 };
448 lver[se][2]++ ;
449 };
450 }
451 //
452 if ( !bdone ){
453 Baseline->Fill(ce->base[l][ii][bl]);
454 if ( ce->base[l][ii][bl] > 2000. && ce->base[l][ii][bl] < 4500. ){
455 inbase++;
456 } else {
457 outbase++;
458 };
459 bdone = 1;
460 };
461 //
462 if (ce->dexyc[l][ii][kk] > 0 ) {
463 shit[se][pl]++ ;
464 compdata = 1;
465 };
466 //
467 if ( isFULL ) {
468 if ( ce->dexy[l][ii][kk] > 0 && ce->dexy[l][ii][kk] < 32000 ) {
469 rshit[se][pl]++ ;
470 rawdata = 1;
471 };
472 Dexy->Fill(ce->dexy[l][ii][kk]);
473 if ( ce->dexy[l][ii][kk] < 2000. || ce->dexy[l][ii][kk] > 5000. ) {
474 outdexy++;
475 } else {
476 indexy++;
477 };
478 if ( ce->dexyc[l][ii][kk]>0 && (ce->dexy[l][ii][kk]-ce->dexyc[l][ii][kk]) != 0 && ce->perror[se] != 132 && (ce->base[l][ii][bl] == 0 || ce->base[l][ii][bl] >32000) ){
479 hdiff->Fill(ce->dexyc[l][ii][kk]-ce->dexy[l][ii][kk]);
480 fulldiff[se]++;
481 errorfull = 1;
482 };
483 };
484 //
485 Dexyc->Fill(ce->dexyc[l][ii][kk]);
486 if ( ce->dexyc[l][ii][kk] != 0. && ( ce->dexyc[l][ii][kk] < 2000. || ce->dexyc[l][ii][kk] > 5000. ) ) {
487 outdexyc++;
488 } else {
489 indexyc++;
490 };
491 //
492 if (ce->dexyc[l][ii][kk] < 0 ) ver[se][21]++ ;
493 //
494 if ( allbase == 0. || allbase > 32000.) {
495 fcheck = 0;
496 for (Int_t nn = bl*16; nn < (bl+1)*16 ; nn++){
497 if ( ce->dexyc[l][ii][nn] > 0. && ce->dexyc[l][ii][nn] < 32000. ) fcheck++;
498 };
499 if ( fcheck ) {
500 cpre[se]++;
501 allbase = 1.;
502 };
503 };
504 //
505 } else {
506 if ( !pdone ){
507 if ( (alldexy2>512000 || alldexy2 == 0) && ce->perror[se] == 0 ) {
508 pdone = 1;
509 pshit[se][pl]++ ;
510 if ( (ce->stwerr[se] & (1 << 4)) == 0 ){
511 lalarm[se]++;
512 lup[se]->Fill(obt);
513 if ( firstobt[se] ) minobt[se] = obt;
514 if ( obt > maxobt[se] ) maxobt[se] = obt;
515 };
516 lver[se][2]++ ;
517 };
518 };
519 if ( ce->dexy[l][ii][kk] > 0 && ce->dexy[l][ii][kk] < 32000 ) {
520 rshit[se][pl]++ ;
521 rawdata = 1;
522 };
523 Dexy->Fill(ce->dexy[l][ii][kk]);
524 if ( ce->dexy[l][ii][kk] < 2000. || ce->dexy[l][ii][kk] > 5000. ) {
525 outdexy++;
526 } else {
527 indexy++;
528 };
529 };
530 };
531 };
532 };
533 cshit = 0;
534 for (Int_t k = 0; k < 4 ; k++ ){
535 isCOMP = 0;
536 isFULL = 0;
537 if ( ce->stwerr[se] & (1 << 16) ) isCOMP = 1;
538 if ( ce->stwerr[se] & (1 << 17) ) isFULL = 1;
539 if ( isCOMP ) ver[k][16]++;
540 if ( isFULL ) ver[k][17]++;
541 cshit += (int)ce->calstriphit[k];
542 cestw=0;
543 if ( ce->stwerr[k] ) cestw = ce->stwerr[k] & cmask ;
544 if ( cestw ){
545 if ( cestw & (1 << 0) ) ver[k][6]++ ;
546 if ( cestw & (1 << 1) ) ver[k][5]++ ;
547 if ( cestw & (1 << 2) ) ver[k][4]++ ;
548 if ( cestw & (1 << 3) ) ver[k][3]++ ;
549 if ( cestw & (1 << 4) ){
550 ver[k][2]++ ;
551 lupstw[k]->Fill(obt);
552 if ( swfirstobt[k] ) swminobt[k] = obt;
553 if ( obt > swmaxobt[k] ) swmaxobt[k] = obt;
554 };
555 if ( cestw & (1 << 5) ) ver[k][1]++ ;
556 if ( cestw & (1 << 6) ) ver[k][0]++ ;
557 };
558 if ( ce->perror[k] != 0. ){
559 if (ce->perror[k] == 128) ver[k][7]++ ;
560 if (ce->perror[k] == 129) ver[k][8]++ ;
561 if (ce->perror[k] == 132) ver[k][11]++ ;
562 if (ce->perror[k] == 133) ver[k][12]++ ;
563 if (ce->perror[k] == 134) ver[k][13]++ ;
564 if (ce->perror[k] == 135) ver[k][14]++ ;
565 if (ce->perror[k] == 136) ver[k][15]++ ;
566 if (ce->perror[k] == 139) ver[k][18]++ ;
567 if (ce->perror[k] == 140) ver[k][19]++ ;
568 if (ce->perror[k] == 141) ver[k][20]++ ;
569 if (ce->perror[k] == 142) ver[k][22]++ ;
570 };
571 for (Int_t kk = 0; kk < 11 ; kk++ ){
572 tshit += shit[k][kk];
573 trshit += rshit[k][kk];
574 };
575 };
576 Calstriphit->Fill(cshit);
577 if ( (cshit > 0 && cshit < 25) || (cshit > 40 && cshit < 80) ){
578 incshit++;
579 } else {
580 outcshit++;
581 };
582 if ( tshit>0 ) h1->Fill(tshit);
583 if ( (tshit > 0 && tshit < 25) || (tshit > 40 && tshit < 80) ){
584 intshit++;
585 } else {
586 outtshit++;
587 };
588 if ( trshit>0 ) {
589 h1r->Fill(trshit);
590 if ( trshit < 4210 ){
591 h1rcheck = true;
592 // printf("ma come... trshit %i \n",trshit);
593 };
594 };
595 if ( i%1000 == 0 && i > 0 ) printf("%iK\n",i/1000);
596 i++;
597 };
598 printf("\n");
599
600 //
601 // output figures, first sheet:
602 //
603 gStyle->SetOptDate(0);
604 gStyle->SetOptStat(1111);
605 TCanvas *figura = new TCanvas("Calorimeter_Detector_Report_1/3", "Calorimeter_Detector_Report_1/3", 1100, 900);
606 figura->SetFillColor(10);
607 figura->Range(0,0,100,100);
608 errore.str("");
609 errore << "EXPERT -- File: " << file;
610 errore << " ";
611 TLatex *t=new TLatex();
612 t->SetTextFont(32);
613 t->SetTextColor(1);
614 t->SetTextAlign(12);
615 t->SetTextSize(0.015);
616 t->DrawLatex(2.,99.,errore.str().c_str());
617 TPad *pd5;
618 TPad *pd6;
619 TPad *pd7;
620 TPad *pd8;
621 TPad *pad1;
622 TPad *pad2;
623 TPad *pad3;
624 TPad *pad4;
625 TPad *pd1;
626 TPad *pd2;
627 TPad *pd3;
628 TPad *pd4;
629 //
630 Double_t h1max;
631 TPolyLine *banda1;
632 TPolyLine *banda2;
633 Float_t ctshit = 0;
634 Float_t ccshit = 0;
635 Float_t cbase = 0;
636 Float_t cdexy = 0;
637 Float_t cdexyc = 0;
638 //
639 if ( compdata && rawdata ){
640 ctshit = (float)intshit/((float)outtshit + (float)intshit);
641 Int_t pd5col = 10;
642 Int_t pd6col = 10;
643 if ( ctshit < ctshitthr ) {
644 check = true;
645 pd5col = 45;
646 };
647 if ( h1rcheck ) {
648 check = true;
649 pd6col = 45;
650 };
651 pd5 = new TPad("pd5","This is pad5",0.51,0.51,0.98,0.98,pd5col);
652 pd6 = new TPad("pd6","This is pad6",0.51,0.02,0.98,0.49,pd6col);
653 pd5->SetTicks();
654 pd6->SetTicks();
655 pd5->Range(0,0,100,100);
656 pd6->Range(0,0,100,100);
657 figura->cd();
658 pd5->Draw();
659 pd5->cd();
660 h1->SetXTitle("Number of hit (dexyc>0)");
661 h1->SetYTitle("Number of events");
662 h1->Draw();
663 //
664 h1max = h1->GetMaximum()*1.05;
665 Double_t xc[4] = {0.,25.,25.,0.};
666 Double_t yc[4] = {0.,0.,h1max,h1max};
667 banda1 = new TPolyLine(4,xc,yc);
668 banda1->SetLineColor(5);
669 banda1->SetFillColor(5);
670 banda1->SetLineWidth(1);
671 banda1->Draw("fSAME");
672 Double_t xd[4] = {40.,80.,80.,40.};
673 Double_t yd[4] = {0.,0.,h1max,h1max};
674 banda2 = new TPolyLine(4,xd,yd);
675 banda2->SetLineColor(5);
676 banda2->SetFillColor(5);
677 banda2->SetLineWidth(1);
678 banda2->Draw("fSAME");
679 h1->Draw("SAME");
680 //
681 figura->cd();
682 pd6->Draw();
683 pd6->cd();
684 gPad->SetLogy();
685 h1r->SetXTitle("Number of hit (dexy>0)");
686 h1r->SetYTitle("Number of events");
687 h1r->Draw();
688 h1max = h1r->GetMaximum()*2.05;
689 Double_t xg[4] = {4220.,4230.,4230.,4220.};
690 Double_t yg[4] = {0.,0.,h1max,h1max};
691 banda1 = new TPolyLine(4,xg,yg);
692 banda1->SetLineColor(5);
693 banda1->SetFillColor(5);
694 banda1->SetLineWidth(1);
695 banda1->Draw("fSAME");
696 h1r->Draw("SAME");
697 };
698 if ( (compdata && !rawdata) || (!compdata && rawdata) ){
699 if ( tshit !=0 ) {
700 ctshit = (float)intshit/((float)outtshit + (float)intshit);
701 Int_t pd5col = 10;
702 if ( ctshit < ctshitthr ) {
703 check = true;
704 pd5col = 45;
705 };
706 pd5 = new TPad("pd5","This is pad5",0.51,0.02,0.98,0.98,pd5col);
707 pd5->Range(0,0,100,100);
708 pd5->SetTicks();
709 pd5->Draw();
710 pd5->cd();
711 h1->SetXTitle("Number of hit (dexyc>0)");
712 h1->SetYTitle("Number of events");
713 h1->Draw();
714 h1max = h1->GetMaximum()*1.05;
715 Double_t xe[4] = {0.,25.,25.,0.};
716 Double_t ye[4] = {0.,0.,h1max,h1max};
717 banda1 = new TPolyLine(4,xe,ye);
718 banda1->SetLineColor(5);
719 banda1->SetFillColor(5);
720 banda1->SetLineWidth(1);
721 banda1->Draw("fSAME");
722 Double_t xf[4] = {40.,80.,80.,40.};
723 Double_t yf[4] = {0.,0.,h1max,h1max};
724 banda2 = new TPolyLine(4,xf,yf);
725 banda2->SetLineColor(5);
726 banda2->SetFillColor(5);
727 banda2->SetLineWidth(1);
728 banda2->Draw("fSAME");
729 h1->Draw("SAME");
730 };
731 if ( trshit !=0 ) {
732 Int_t pd5col = 10;
733 if ( h1rcheck ) {
734 check = true;
735 pd5col = 45;
736 };
737 pd5 = new TPad("pd5","This is pad5",0.51,0.02,0.98,0.98,pd5col);
738 pd5->Range(0,0,100,100);
739 pd5->SetTicks();
740 pd5->Draw();
741 pd5->cd();
742 gPad->SetLogy();
743 h1r->SetXTitle("Number of hit (dexyc>0 or dexy>0)");
744 h1r->SetYTitle("Number of events");
745 h1r->Draw();
746 h1max = h1r->GetMaximum()*2.05;
747 Double_t xh[4] = {4220.,4230.,4230.,4220.};
748 Double_t yh[4] = {0.,0.,h1max,h1max};
749 banda1 = new TPolyLine(4,xh,yh);
750 banda1->SetLineColor(5);
751 banda1->SetFillColor(5);
752 banda1->SetLineWidth(1);
753 banda1->Draw("fSAME");
754 h1r->Draw("SAME");
755 };
756 };
757 if ( !errorfull ) {
758 if ( calevn1 || calevn2 || calevn3 ) {
759 pd1 = new TPad("pd1","This is pad1",0.02,0.51,0.24,0.98,45);
760 pd2 = new TPad("pd2","This is pad2",0.26,0.51,0.49,0.98,45);
761 pd3 = new TPad("pd3","This is pad3",0.02,0.02,0.24,0.49,45);
762 pd4 = new TPad("pd4","This is pad4",0.26,0.02,0.49,0.49,45);
763 figura->cd();
764 // printf("ou2! \n");
765 check = true;
766 pd1->Range(0,0,100,100);
767 pd2->Range(0,0,100,100);
768 pd3->Range(0,0,100,100);
769 pd4->Range(0,0,100,100);
770 pd1->Draw();
771 pd2->Draw();
772 pd3->Draw();
773 pd4->Draw();
774
775 pd1->cd();
776 gPad->SetLogy();
777 calev01->SetXTitle("delta calevnum 1-2");
778 calev01->SetYTitle("Number of events");
779 calev01->Draw();
780
781 pd2->cd();
782 gPad->SetLogy();
783 calev23->SetXTitle("delta calevnum 3-4");
784 calev23->SetYTitle("Number of events");
785 calev23->Draw();
786
787 pd3->cd();
788 gPad->SetLogy();
789 calev03->SetXTitle("delta calevnum 1-4");
790 calev03->SetYTitle("Number of events");
791 calev03->Draw();
792
793 pd4->cd();
794 calev2->SetYTitle("calevnum 2");
795 calev2->SetXTitle("iev");
796 calev2->Draw();
797 } else {
798 if ( calevn4 ) {
799 pd3 = new TPad("pd3","This is pad3",0.02,0.02,0.49,0.98,10);
800 figura->cd();
801 pd3->Range(0,0,100,100);
802 pd3->Draw();
803 pd3->cd();
804 calev2->SetYTitle("calevnum 2");
805 calev2->SetXTitle("iev");
806 calev2->Draw();
807 } else {
808 figura->cd();
809 t=new TLatex();
810 t->SetTextFont(32);
811 t->SetTextColor(1);
812 t->SetTextSize(0.04);
813 t->SetTextAlign(12);
814 t->DrawLatex(10.,49.,"No calevnum infos from DSP");
815 };
816 };
817 } else {
818 figura->cd();
819 check = true;
820 // printf("nou! \n");
821 pd1 = new TPad("pd1","This is pad1",0.02,0.02,0.49,0.98,45);
822 pd1->Range(0,0,100,100);
823 pd1->Draw();
824 pd1->cd();
825 gPad->SetLogy();
826 hdiff->SetXTitle("Differences in FULL mode");
827 hdiff->SetYTitle("Number of events");
828 hdiff->Draw();
829 };
830
831 //
832 // output figures, second sheet:
833 //
834 TCanvas *figura2 = new TCanvas("Calorimeter_Detector_Report_2/3","Calorimeter_Detector_Report_2/3", 1100, 900);
835 if ( compdata ){
836 Int_t pd1col = 10;
837 Int_t pd2col = 10;
838 Int_t pd3col = 10;
839 Int_t pd4col = 10;
840 if ( (outdexy+indexy) ) {
841 cdexy = (float)indexy/((float)outdexy + (float)indexy);
842 if ( cdexy < cdexythr ) {
843 check = true;
844 pd4col = 45;
845 };
846 };
847 if ( (outcshit+incshit) ) {
848 ccshit = (float)incshit/((float)outcshit + (float)incshit);
849 if ( ccshit < ctshitthr ) {
850 check = true;
851 pd3col = 45;
852 };
853 };
854 if ( (outdexyc+indexyc) ) {
855 cdexyc = (float)indexyc/((float)outdexyc + (float)indexyc);
856 if ( cdexyc < cdexycthr ) {
857 check = true;
858 pd2col = 45;
859 };
860 };
861 if ( (outbase+inbase) ) {
862 cbase = (float)inbase/((float)outbase + (float)inbase);
863 if ( cbase < cbasethr ) {
864 check = true;
865 pd1col = 45;
866 };
867 };
868 figura2->SetFillColor(10);
869 figura2->Range(0,0,100,100);
870 errore.str("");
871 errore << "EXPERT -- File: " << file;
872 errore << " ";
873 t=new TLatex();
874 t->SetTextFont(32);
875 t->SetTextColor(1);
876 t->SetTextAlign(12);
877 t->SetTextSize(0.015);
878 t->DrawLatex(2.,99.,errore.str().c_str());
879 pd1 = new TPad("pd1","This is pad1",0.02,0.51,0.49,0.98,pd1col);
880 pd2 = new TPad("pd2","This is pad2",0.51,0.51,0.98,0.98,pd2col);
881 pd3 = new TPad("pd3","This is pad3",0.02,0.02,0.49,0.49,pd3col);
882 pd4 = new TPad("pd4","This is pad4",0.51,0.02,0.98,0.49,pd4col);
883 figura2->cd();
884 pd1->Range(0,0,100,100);
885 pd2->Range(0,0,100,100);
886 pd3->Range(0,0,100,100);
887 pd4->Range(0,0,100,100);
888 pd1->SetTicks();
889 pd2->SetTicks();
890 pd3->SetTicks();
891 pd4->SetTicks();
892 pd1->Draw();
893 pd2->Draw();
894 pd3->Draw();
895 pd4->Draw();
896 pd1->cd();
897 Baseline->SetXTitle("ADC channels");
898 Baseline->SetYTitle("Number of events");
899 Baseline->Draw();
900 h1max = Baseline->GetMaximum()*1.05;
901 Double_t xc[4] = {2000.,4500.,4500.,2000.};
902 Double_t yc[4] = {0.,0.,h1max,h1max};
903 banda1 = new TPolyLine(4,xc,yc);
904 banda1->SetLineColor(5);
905 banda1->SetFillColor(5);
906 banda1->SetLineWidth(1);
907 banda1->Draw("fSAME");
908 Baseline->Draw("SAME");
909 //
910 pd2->cd();
911 gPad->SetLogy();
912 Dexyc->SetXTitle("ADC channels");
913 Dexyc->SetYTitle("Number of events");
914 Dexyc->Draw();
915 h1max = Dexyc->GetMaximum()*2.05;
916 Double_t xe[4] = {2000.,5000.,5000.,2000.};
917 Double_t ye[4] = {0.,0.,h1max,h1max};
918 banda1 = new TPolyLine(4,xe,ye);
919 banda1->SetLineColor(5);
920 banda1->SetFillColor(5);
921 banda1->SetLineWidth(1);
922 banda1->Draw("fSAME");
923 Double_t xj[4] = {0.,40.,40.,0.};
924 Double_t yj[4] = {0.,0.,h1max,h1max};
925 banda2 = new TPolyLine(4,xj,yj);
926 banda2->SetLineColor(5);
927 banda2->SetFillColor(5);
928 banda2->SetLineWidth(1);
929 banda2->Draw("fSAME");
930 Dexyc->Draw("SAME");
931 //
932 pd3->cd();
933 Calstriphit->SetXTitle("Number of hit");
934 Calstriphit->SetYTitle("Number of events");
935 Calstriphit->Draw();
936 h1max = Calstriphit->GetMaximum()*1.05;
937 Double_t xg[4] = {0.,25.,25.,0.};
938 Double_t yg[4] = {0.,0.,h1max,h1max};
939 banda1 = new TPolyLine(4,xg,yg);
940 banda1->SetLineColor(5);
941 banda1->SetFillColor(5);
942 banda1->SetLineWidth(1);
943 banda1->Draw("fSAME");
944 Double_t xh[4] = {40.,80.,80.,40.};
945 Double_t yh[4] = {0.,0.,h1max,h1max};
946 banda2 = new TPolyLine(4,xh,yh);
947 banda2->SetLineColor(5);
948 banda2->SetFillColor(5);
949 banda2->SetLineWidth(1);
950 banda2->Draw("fSAME");
951 Calstriphit->Draw("SAME");
952 //
953 pd4->cd();
954 Dexy->SetXTitle("ADC channels");
955 Dexy->SetYTitle("Number of events");
956 Dexy->Draw();
957 h1max = Dexy->GetMaximum()*1.05;
958 Double_t xd[4] = {2000.,5000.,5000.,2000.};
959 Double_t yd[4] = {0.,0.,h1max,h1max};
960 banda1 = new TPolyLine(4,xd,yd);
961 banda1->SetLineColor(5);
962 banda1->SetFillColor(5);
963 banda1->SetLineWidth(1);
964 banda1->Draw("fSAME");
965 Dexy->Draw("SAME");
966 } else {
967 Int_t pd4col = 10;
968 if ( (outdexy+indexy) ) {
969 cdexy = (float)indexy/((float)outdexy + (float)indexy);
970 if ( cdexy < cdexythr ) {
971 check = true;
972 pd4col = 45;
973 };
974 };
975 figura2->SetFillColor(10);
976 figura2->Range(0,0,100,100);
977 errore.str("");
978 errore << "EXPERT -- File: " << file;
979 errore << " ";
980 t=new TLatex();
981 t->SetTextFont(32);
982 t->SetTextColor(1);
983 t->SetTextAlign(12);
984 t->SetTextSize(0.015);
985 t->DrawLatex(2.,99.,errore.str().c_str());
986 pd4 = new TPad("pd4","This is pad4",0.02,0.02,0.98,0.98,pd4col);
987 figura2->cd();
988 pd4->Range(0,0,100,100);
989 pd4->SetTicks();
990 pd4->Draw();
991 //
992 pd4->cd();
993 Dexy->SetXTitle("ADC channels");
994 Dexy->SetYTitle("Number of events");
995 Dexy->Draw();
996 h1max = Dexy->GetMaximum()*1.05;
997 Double_t xd[4] = {2000.,5000.,5000.,2000.};
998 Double_t yd[4] = {0.,0.,h1max,h1max};
999 banda1 = new TPolyLine(4,xd,yd);
1000 banda1->SetLineColor(5);
1001 banda1->SetFillColor(5);
1002 banda1->SetLineWidth(1);
1003 banda1->Draw("fSAME");
1004 Dexy->Draw("SAME");
1005 };
1006 //
1007 TCanvas *figura3 = 0;
1008 Bool_t printfigure3 = false;
1009 for (Int_t i = 0; i<4; i++){
1010 if ( ver[i][2] || lver[i][2] ){
1011 printfigure3 = true;
1012 break;
1013 };
1014 };
1015 if ( printfigure3 ){
1016 figura3 = new TCanvas("Calorimeter_Detector_Report_2bis/3","Calorimeter_Detector_Report_2bis/3", 1100, 900);
1017 figura3->SetFillColor(10);
1018 figura3->Range(0,0,100,100);
1019 errore.str("");
1020 errore << "EXPERT -- File: " << file;
1021 errore << " ";
1022 t=new TLatex();
1023 t->SetTextFont(32);
1024 t->SetTextColor(1);
1025 t->SetTextAlign(12);
1026 t->SetTextSize(0.015);
1027 t->DrawLatex(2.,99.,errore.str().c_str());
1028 pd1 = new TPad("pd1","This is pad1",0.02,0.51,0.49,0.73,45);
1029 pd5 = new TPad("pd5","This is pad5",0.02,0.76,0.49,0.98,45);
1030 pd2 = new TPad("pd2","This is pad2",0.51,0.51,0.98,0.73,45);
1031 pd6 = new TPad("pd6","This is pad6",0.51,0.76,0.98,0.98,45);
1032 pd3 = new TPad("pd3","This is pad3",0.02,0.02,0.49,0.23,45);
1033 pd7 = new TPad("pd7","This is pad7",0.02,0.26,0.49,0.49,45);
1034 pd4 = new TPad("pd4","This is pad4",0.51,0.02,0.98,0.23,45);
1035 pd8 = new TPad("pd8","This is pad8",0.51,0.26,0.98,0.49,45);
1036 figura3->cd();
1037 pd1->Range(0,0,100,100);
1038 pd2->Range(0,0,100,100);
1039 pd3->Range(0,0,100,100);
1040 pd4->Range(0,0,100,100);
1041 pd1->SetTicks();
1042 pd2->SetTicks();
1043 pd3->SetTicks();
1044 pd4->SetTicks();
1045 pd1->Draw();
1046 pd2->Draw();
1047 pd3->Draw();
1048 pd4->Draw();
1049 pd5->Range(0,0,100,100);
1050 pd6->Range(0,0,100,100);
1051 pd7->Range(0,0,100,100);
1052 pd8->Range(0,0,100,100);
1053 pd5->SetTicks();
1054 pd6->SetTicks();
1055 pd7->SetTicks();
1056 pd8->SetTicks();
1057 pd5->Draw();
1058 pd6->Draw();
1059 pd7->Draw();
1060 pd8->Draw();
1061 pd1->cd();
1062 lup[0]->SetAxisRange((Double_t)minobt[0]*0.9,(Double_t)maxobt[0]*1.1,"X");
1063 lup[0]->Draw();
1064 pd5->cd();
1065 lupstw[0]->SetAxisRange((Double_t)swminobt[0]*0.9,(Double_t)swmaxobt[0]*1.1,"X");
1066 lupstw[0]->Draw();
1067 pd2->cd();
1068 lup[1]->SetAxisRange((Double_t)minobt[1]*0.9,(Double_t)maxobt[1]*1.1,"X");
1069 lup[1]->Draw();
1070 pd6->cd();
1071 lupstw[1]->SetAxisRange((Double_t)swminobt[1]*0.9,(Double_t)swmaxobt[1]*1.1,"X");
1072 lupstw[1]->Draw();
1073 pd3->cd();
1074 lup[2]->SetAxisRange((Double_t)minobt[2]*0.9,(Double_t)maxobt[2]*1.1,"X");
1075 lup[2]->Draw();
1076 pd7->cd();
1077 lupstw[2]->SetAxisRange((Double_t)swminobt[2]*0.9,(Double_t)swmaxobt[2]*1.1,"X");
1078 lupstw[2]->Draw();
1079 pd4->cd();
1080 lup[3]->SetAxisRange((Double_t)minobt[3]*0.9,(Double_t)maxobt[3]*1.1,"X");
1081 lup[3]->Draw();
1082 pd8->cd();
1083 lupstw[3]->SetAxisRange((Double_t)swminobt[3]*0.9,(Double_t)swmaxobt[3]*1.1,"X");
1084 lupstw[3]->Draw();
1085 };
1086 //
1087 // output figures, report sheet:
1088 //
1089 TCanvas *rapporto= new TCanvas("Calorimeter_Detector_Report_3/3", "Calorimeter_Detector_Report_3/3", 1100, 900);
1090 rapporto->SetFillColor(10);
1091 rapporto->Range(0,0,100,100);
1092 t=new TLatex();
1093 t->SetTextFont(32);
1094 t->SetTextColor(1);
1095 t->SetTextSize(0.05);
1096 t->SetTextAlign(12);
1097 // t->DrawLatex(33.,95.,"Calorimeter quick look: ");
1098 errore.str("");
1099 errore << "BASIC: C1 - File: " << file;
1100 errore << " ";
1101 t->SetTextSize(0.02);
1102 t->DrawLatex(2.,99.,errore.str().c_str());
1103
1104 pad1 = new TPad("pad1","This is pad1",0.02,0.47,0.49,0.90,19);
1105 pad2 = new TPad("pad2","This is pad2",0.51,0.47,0.98,0.90,19);
1106 pad3 = new TPad("pad3","This is pad3",0.02,0.02,0.49,0.45,19);
1107 pad4 = new TPad("pad4","This is pad4",0.51,0.02,0.98,0.45,19);
1108 pad1->Range(0,0,100,100);
1109 pad2->Range(0,0,100,100);
1110 pad3->Range(0,0,100,100);
1111 pad4->Range(0,0,100,100);
1112
1113 pad1->Draw();
1114 pad2->Draw();
1115 pad3->Draw();
1116 pad4->Draw();
1117
1118 for (Int_t i = 0; i < 4; i++){
1119 if (i == 2)
1120 {
1121 pad1->cd() ;
1122 sezione = "** Section YE (x even) **";
1123 }
1124 if (i == 3)
1125 {
1126 pad2->cd();
1127 sezione = "** Section YO (x odd) **";
1128 }
1129 if (i == 0)
1130 {
1131 pad3->cd();
1132 sezione = "** Section XE (y odd) **";
1133 }
1134 if (i == 1)
1135 {
1136 pad4->cd();
1137 sezione = "** Section XO (y even) **";
1138 }
1139 t->SetTextFont(32);
1140 t->SetTextColor(1);
1141 t->SetTextSize(0.05);
1142 t->SetTextAlign(12);
1143 t->DrawLatex(33.,97.,sezione);
1144 t->SetTextSize(0.05);
1145 for (Int_t j = 0; j < 23; j++){
1146 if ( ver[i][j] || lver[i][j] ) {
1147 t->SetTextColor(50);
1148 if (j == 0) {
1149 errore.str("");
1150 errore << "* DSP ack error: " << ver[i][j];
1151 errore << " time(s)";
1152 t->DrawLatex(2.,30.,errore.str().c_str());
1153 check = true;
1154 }
1155 if (j == 1) {
1156 errore.str("");
1157 errore << "* Temperature alarm: " << ver[i][j];
1158 errore << " time(s)";
1159 t->DrawLatex(2.,74.,errore.str().c_str());
1160 check = true;
1161 }
1162 if (j == 2) {
1163 // printf("boh! lalarm[%i] = %i \n",i,lalarm[i]);
1164 if ( lalarm[i] ){
1165 errore.str("");
1166 errore << "* Latch up: " << ver[i][j];
1167 errore << " (" << lalarm[i];
1168 errore << " NOT rec!): ";
1169 t->DrawLatex(2.,70.,errore.str().c_str());
1170 check = true;
1171 } else {
1172 errore.str("");
1173 errore << "* Latch up alarm: " << ver[i][j];
1174 errore << " time(s). View(s): ";
1175 t->DrawLatex(2.,70.,errore.str().c_str());
1176 check = true;
1177 };
1178 errore.str("");
1179 errore << "(" << lver[i][j];
1180 errore << " view(s))";
1181 t->DrawLatex(27.,65.,errore.str().c_str());
1182 Float_t inc=1.;
1183 for (Int_t e = 0; e < 11; e++){
1184 if ( pshit[i][e] ) {
1185 errore.str("");
1186 errore << " " << (e+1);
1187 errore << " ";
1188 t->DrawLatex(52.+inc,69.,errore.str().c_str());
1189 Int_t numer = pshit[i][e];
1190 errore.str("");
1191 errore << " (" << numer;
1192 errore << ") ";
1193 t->SetTextAngle(-70);
1194 t->DrawLatex(55.+inc,67.,errore.str().c_str());
1195 t->SetTextAngle(0);
1196 inc += 4.;
1197 }
1198 }
1199 }
1200 if (j == 3) {
1201 errore.str("");
1202 errore << "RAW mode: " << ver[i][j];
1203 errore << " time(s)";
1204 t->SetTextColor(32);
1205 t->DrawLatex(2.,90.,errore.str().c_str());
1206 }
1207 if (j == 4) {
1208 errore.str("");
1209 errore << "* CMD length error: " << ver[i][j];
1210 errore << " time(s)";
1211 t->DrawLatex(2.,66.,errore.str().c_str());
1212 check = true;
1213 }
1214 if (j == 5) {
1215 errore.str("");
1216 errore << "* Execution error: " << ver[i][j];
1217 errore << " time(s)";
1218 t->DrawLatex(2.,62.,errore.str().c_str());
1219 check = true;
1220 }
1221 if (j == 6) {
1222 errore.str("");
1223 errore << "* CRC error (st. word): " << ver[i][j];
1224 errore << " time(s)";
1225 t->DrawLatex(2.,58.,errore.str().c_str());
1226 check = true;
1227 }
1228 if (j == 7) {
1229 errore.str("");
1230 errore << "View or command not recognized: " << ver[i][j];
1231 errore << " time(s)";
1232 t->DrawLatex(2.,54.,errore.str().c_str());
1233 check = true;
1234 }
1235 if (j == 8) {
1236 errore.str("");
1237 errore << "Missing section: " << ver[i][j];
1238 errore << " time(s)";
1239 t->DrawLatex(2.,50.,errore.str().c_str());
1240 check = true;
1241 }
1242 if (j == 10) {
1243 errore.str("");
1244 errore << "Calevnum jump: " << ver[i][j];
1245 errore << " time(s)";
1246 t->DrawLatex(2.,42.,errore.str().c_str());
1247 check = true;
1248 }
1249 if (j == 11) {
1250 errore.str("");
1251 errore << "CRC error (data): " << ver[i][j];
1252 errore << " time(s)";
1253 t->DrawLatex(2.,38.,errore.str().c_str());
1254 check = true;
1255 }
1256 if (j == 12) {
1257 errore.str("");
1258 errore << "Length problems in RAW mode: " << ver[i][j];
1259 errore << " time(s)";
1260 t->DrawLatex(2.,34.,errore.str().c_str());
1261 check = true;
1262 }
1263 if (j == 13) {
1264 errore.str("");
1265 errore << "Length problems in COMPRESS mode: " << ver[i][j];
1266 errore << " time(s)";
1267 t->DrawLatex(2.,34.,errore.str().c_str());
1268 check = true;
1269 }
1270 if (j == 14) {
1271 errore.str("");
1272 errore << "Length problems in FULL mode: " << ver[i][j];
1273 errore << " time(s)";
1274 t->DrawLatex(2.,26.,errore.str().c_str());
1275 check = true;
1276 }
1277 if (j == 15) {
1278 errore.str("");
1279 errore << "Acquisition mode problems: " << ver[i][j];
1280 errore << " time(s)";
1281 t->DrawLatex(2.,22.,errore.str().c_str());
1282 check = true;
1283 }
1284 if (j == 16) {
1285 errore.str("");
1286 errore << "COMPRESS mode: " << ver[i][j];
1287 errore << " time(s)";
1288 t->SetTextColor(32);
1289 t->DrawLatex(2.,86.,errore.str().c_str());
1290 }
1291 if (j == 17) {
1292 errore.str("");
1293 errore << "FULL mode: " << ver[i][j];
1294 errore << " time(s)";
1295 t->SetTextColor(32);
1296 t->DrawLatex(2.,82.,errore.str().c_str());
1297 }
1298 if (j == 18) {
1299 errore.str("");
1300 errore << "Problems with coding: " << ver[i][j];
1301 errore << " time(s)";
1302 t->DrawLatex(2.,18.,errore.str().c_str());
1303 check = true;
1304 }
1305 if (j == 19) {
1306 errore.str("");
1307 errore << "Pedestal checksum wrong: " << ver[i][j];
1308 errore << " time(s)";
1309 t->DrawLatex(2.,14.,errore.str().c_str());
1310 check = true;
1311 }
1312 if (j == 20) {
1313 errore.str("");
1314 errore << "Thresholds checksum wrong: " << ver[i][j];
1315 errore << " time(s)";
1316 t->DrawLatex(2.,10.,errore.str().c_str());
1317 check = true;
1318 }
1319 if (j == 21) {
1320 errore.str("");
1321 errore << "WARNING! DEXYC < 0: " << ver[i][j];
1322 errore << " time(s)";
1323 t->DrawLatex(2.,6.,errore.str().c_str());
1324 check = true;
1325 }
1326 if (j == 22) {
1327 errore.str("");
1328 errore << "Packet length is zero (YODA input error), skipped: " << ver[i][j];
1329 errore << " time(s)";
1330 t->DrawLatex(2.,3.,errore.str().c_str());
1331 check = true;
1332 };
1333 };
1334 };
1335 t->SetTextColor(50);
1336 if ( fulldiff[i] !=0 ) {
1337 check = true;
1338 errore.str("");
1339 errore << "Full mode, differences between RAW and COMPRESS mode: " << fulldiff[i];
1340 errore << " time(s)";
1341 t->DrawLatex(2.,46.,errore.str().c_str());
1342 };
1343 if ( cpre[i] !=0 ) {
1344 errore.str("");
1345 errore << "Preamplifier fully transmitted: " << cpre[i];
1346 errore << " time(s)";
1347 t->SetTextColor(32);
1348 t->DrawLatex(2.,78.,errore.str().c_str());
1349 };
1350 };
1351 rapporto->cd();
1352 t->SetTextFont(32);
1353 t->SetTextColor(1);
1354 t->SetTextSize(0.05);
1355 t->SetTextAlign(12);
1356 t->DrawLatex(22.,95.,"Calorimeter quick look: ");
1357 //printf("check %i \n",check);
1358 if ( check ){
1359 t->SetTextColor(50);
1360 t->DrawLatex(60.,95.," WARNING, CHECK! ");
1361 printf("cdexyc %f cdexy %f ctshit %f cbase %f \n",cdexyc,cdexy,ctshit,cbase);
1362 } else {
1363 t->SetTextColor(32);
1364 t->DrawLatex(60.,95.," OK! ");
1365 };
1366 //
1367 const string fil = (const char*)filename;
1368 Int_t posiz = fil.find("dw_");
1369 if ( posiz == -1 ) posiz = fil.find("DW_");
1370 Int_t posiz2 = posiz+13;
1371 TString file2;
1372 stringcopy(file2,filename,posiz,posiz2);
1373 //
1374 const char *figrec = file2;
1375 const char *outdir = outDir;
1376 stringstream figsave;
1377 stringstream figsave1;
1378 stringstream figsave2;
1379 const char *format = saveas;
1380 if ( !strcmp(format,"ps") ) {
1381 figsave.str("");
1382 figsave << outdir << "/" ;
1383 figsave << figrec << "_qlook.";
1384 figsave << format << "(";
1385 rapporto->Print(figsave.str().c_str(),"Landscape");
1386 figsave1.str("");
1387 figsave1 << outdir << "/" ;
1388 figsave1 << figrec << "_qlook.";
1389 figsave1 << format;
1390 figura->Print(figsave1.str().c_str(),"Landscape");
1391 figsave2.str("");
1392 figsave2 << outdir << "/" ;
1393 figsave2 << figrec << "_qlook.";
1394 if ( printfigure3 ){
1395 figsave2 << format;
1396 figura2->Print(figsave2.str().c_str(),"Landscape");
1397 figsave2.str("");
1398 figsave2 << outdir << "/" ;
1399 figsave2 << figrec << "_qlook.";
1400 figsave2 << format << ")";
1401 figura3->Print(figsave2.str().c_str(),"Landscape");
1402 } else {
1403 figsave2 << format << ")";;
1404 figura2->Print(figsave2.str().c_str(),"Landscape");
1405 };
1406 } else {
1407 figsave.str("");
1408 figsave << outdir << "/" ;
1409 figsave << figrec << "_qlook1.";
1410 figsave << format;
1411 figura->SaveAs(figsave.str().c_str());
1412 figsave.str("");
1413 figsave << outdir << "/" ;
1414 figsave << figrec << "_qlook2.";
1415 figsave << format;
1416 figura2->SaveAs(figsave.str().c_str());
1417 if ( printfigure3 ){
1418 figsave.str("");
1419 figsave << outdir << "/" ;
1420 figsave << figrec << "_qlook2bis.";
1421 figsave << format;
1422 figura3->SaveAs(figsave.str().c_str());
1423 };
1424 figsave.str("");
1425 figsave << outdir << "/" ;
1426 figsave << figrec << "_qlook3.";
1427 figsave << format;
1428 rapporto->SaveAs(figsave.str().c_str());
1429 };
1430 }
1431

  ViewVC Help
Powered by ViewVC 1.1.23