/[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.2 - (show annotations) (download)
Mon Mar 13 09:01:23 2006 UTC (18 years, 8 months ago) by mocchiut
Branch: MAIN
Changes since 1.1: +7 -1 lines
First calorimeter flight quick look release

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

  ViewVC Help
Powered by ViewVC 1.1.23