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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (show annotations) (download)
Mon Mar 13 14:49:31 2006 UTC (18 years, 8 months ago) by mocchiut
Branch: MAIN
CVS Tags: v1r02
Changes since 1.2: +5 -3 lines
Bug: include files from YODA from the wrong directory, fixed.

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

  ViewVC Help
Powered by ViewVC 1.1.23