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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.8 by mocchiut, Tue May 23 13:28:22 2006 UTC revision 1.24 by mocchiut, Tue Aug 11 14:20:01 2009 UTC
# Line 1  Line 1 
1  //  //
2  //   Check for possible errors and shows raw distribution of variables coming from the DSP (no calibrations needed) - Emiliano Mocchiutti  //   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)  //   FCaloQLOOK.c      version 1.14  (2006-09-29)
5  //  //
6  //   The only input needed is the path to the directory created by YODA for the data file you want to analyze.  //   The only input needed is the path to the directory created by YODA for the data file you want to analyze.
7  //  //
8  //   Changelog:  //   Changelog:
9  //  //
10    //   1.13 - 1.14 (2006-09-29): Flag the last entry in the txt file, count missing section when checking for DSP entries correspondence.
11    //
12    //   1.12 - 1.13 (2006-09-28): Give wrong number of events in compress mode, fixed.
13    //
14    //   1.11 - 1.12 (2006-09-22): Check for different number of events, put output in a file and write down errors for each event. Fixed jumpev bug.
15    //
16    //   1.09 - 1.11 (2006-07-17): Adapted to flight conditions.
17    //
18    //   1.07 - 1.09 (2006-05-29): Fixed bug in output filename when input is not in the form DW_YYMMDD_NNN. Bug in latchup alarm not coming from the status word, fixed.
19    //
20  //   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  //   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
21  //                             case of latchup alarm.  //                             case of latchup alarm.
22  //  //
# Line 26  Line 36 
36  //  //
37  #include <iostream>  #include <iostream>
38  #include <fstream>  #include <fstream>
39    #include <cstdlib>
40  //  //
41  #include <TObject.h>  #include <TObject.h>
42  #include <TString.h>  #include <TString.h>
43  #include <TFile.h>  #include <TFile.h>
44    #include <TROOT.h>
45  #include <TCanvas.h>  #include <TCanvas.h>
46  #include <TH1.h>  #include <TH1.h>
47  #include <TH1F.h>  #include <TH1F.h>
# Line 39  Line 51 
51  #include <TPolyLine.h>  #include <TPolyLine.h>
52  #include <TStyle.h>  #include <TStyle.h>
53  #include <TSystem.h>  #include <TSystem.h>
54    #include <TApplication.h>
55  //  //
56  #include <PamelaRun.h>  #include <PamelaRun.h>
57  #include <physics/calorimeter/CalorimeterEvent.h>  #include <physics/calorimeter/CalorimeterEvent.h>
# Line 65  void stringappend(TString& s1, const TSt Line 78  void stringappend(TString& s1, const TSt
78  }  }
79    
80  TString getFilename(const TString filename){  TString getFilename(const TString filename){
81    const string fil = (const char*)filename;    //
82    Int_t posiz = fil.find("dw_");    const string fil = gSystem->BaseName(filename.Data());
83    if ( posiz == -1 ) posiz = fil.find("DW_");    Int_t posiz = fil.find(".root");
84    if ( posiz == -1 ) return 0;    //
   Int_t posiz2 = posiz+13;  
85    TString file2;    TString file2;
86    stringcopy(file2,filename,posiz,posiz2);    if ( posiz == -1 ){
87    TString pdat(".dat");      file2 = gSystem->BaseName(filename.Data());
88    stringappend(file2,pdat);    } else {
89        Int_t posiz2 = 0;
90        stringcopy(file2,gSystem->BaseName(filename.Data()),posiz2,posiz);
91        TString pdat(".pam");
92        stringappend(file2,pdat);  
93      };
94    return file2;    return file2;
95  }  }
96    
97  void FCaloQLOOK(TString filename, Int_t fromevent=0, Int_t toevent=0, TString outDir="", TString saveas = "ps"){  void sighandler(UInt_t pkt_num, UInt_t obt, UInt_t entry, UInt_t section, UInt_t totev, Bool_t &evdone){
98      if ( !evdone ){    
99        printf("\n\n=================================================\n");
100        printf("PSCU-Pkt N. %u - OBT %u ms\n",pkt_num,obt);
101        printf("Total events %u\n",totev);
102        printf("(ROOT-tree entry %u )\n",entry);
103        if ( (totev-1) == entry ) printf("NOTICE: this is last entry! \n");
104        printf("=================================================\n");
105        evdone = true;
106      };
107      TString sec = "UNKNOWN";
108      if ( section == 0 ) sec = "XE";
109      if ( section == 1 ) sec = "XO";
110      if ( section == 2 ) sec = "YE";
111      if ( section == 3 ) sec = "YO";
112      printf(" Section %s (DSP n. %i) message: ",sec.Data(),section);
113    };
114    
115    void FCaloQLOOK(TString filename, Int_t fromevent=0, Int_t toevent=0, TString outDir="", TString saveas = "png", Bool_t iactive =false, Bool_t w4i=false){
116    gStyle->SetPaperSize(19.,25.);    gStyle->SetPaperSize(19.,25.);
117    const char* startingdir = gSystem->WorkingDirectory();    const char* startingdir = gSystem->WorkingDirectory();
118      //  printf(" basename is %s \n",gSystem->BaseName(filename.Data()));
119      //  printf(" getfilename is %s \n",getFilename(filename).Data());
120    if ( !strcmp(outDir.Data(),"") ) outDir = startingdir;    if ( !strcmp(outDir.Data(),"") ) outDir = startingdir;
121    //    //
122      TApplication *app = 0;
123      if ( iactive ) app = new TApplication("app",0,0);
124    //    //
125    ifstream myfile;    ifstream myfile;
126    myfile.open(filename.Data());    myfile.open(filename.Data());
# Line 103  void FCaloQLOOK(TString filename, Int_t Line 142  void FCaloQLOOK(TString filename, Int_t
142    //    //
143    Float_t ctshitthr = 0.65;    Float_t ctshitthr = 0.65;
144    Float_t cbasethr = 0.95;    Float_t cbasethr = 0.95;
145    Float_t cdexythr = 0.995;    //  Float_t cdexythr = 0.995;
146      Float_t cdexythr = 0.95;
147      //Float_t cdexythr = 0.90;
148    Float_t cdexycthr = 0.95;    Float_t cdexycthr = 0.95;
149      Float_t h1rth = 0.90;
150      Int_t calevnth = 13;
151    //    //
152    pamela::calorimeter::CalorimeterEvent *ce = 0;    pamela::calorimeter::CalorimeterEvent *ce = 0;
153    pamela::EventHeader *eh = 0;    pamela::EventHeader *eh = 0;
# Line 151  void FCaloQLOOK(TString filename, Int_t Line 194  void FCaloQLOOK(TString filename, Int_t
194    };    };
195    Int_t const size = nevents;    Int_t const size = nevents;
196    Double_t iev2[size+1];    Double_t iev2[size+1];
197    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];    //aumentata la lunghezza di ver, prima era 23
198      Int_t ver[4][24], lver[4][23],shit[4][11], rshit[4][11], se,bl, pl, fulldiff[4],cshit, cpre[4],nullsh[4][11], lalarm[4];
199    se = 0;    se = 0;
200    pl = 0;        pl = 0;    
201    Float_t allbase = 0.;    Float_t allbase = 0.;
202    Int_t tshit, trshit, compdata,rawdata, errorfull, calevn1, calevn2, calevn3, calevn4, pshit[4][11];    Int_t tshit, trshit, compdata,rawdata, errorfull, calevn1, calevn2, calevn3, calevn4, pshit[4][11];
203    tshit = 0;    tshit = 0;
204    trshit = 0;    trshit = 0;
205    char *sezione;    const char *sezione = "";
206    Bool_t check = false;        Bool_t check = false;    
207    sezione = "";    //  sezione = "";
208    stringstream errore;    stringstream errore;
209    errore.str("");    errore.str("");
210    //    //
# Line 190  void FCaloQLOOK(TString filename, Int_t Line 234  void FCaloQLOOK(TString filename, Int_t
234    hdiff->SetBit(TH1F::kCanRebin);    hdiff->SetBit(TH1F::kCanRebin);
235    Baseline = new TH1F("C9","baselines",100,0,3);    Baseline = new TH1F("C9","baselines",100,0,3);
236    Baseline->SetBit(TH1F::kCanRebin);    Baseline->SetBit(TH1F::kCanRebin);
237    Dexy = new TH1F("C12","dexy",100,0.,37000.);    Dexy = new TH1F("C12","dexy",100,0.,10000.);
238    Dexyc = new TH1F("C10","dexyc",100,0,3);    Dexy->SetBit(TH1F::kCanRebin);
239    Dexyc->SetBit(TH1F::kCanRebin);    Dexyc = new TH1F("C10","dexyc",100,-100.,37000.);
240    //  Dexyc->SetBit(TH1F::kCanRebin);
241    Calstriphit = new TH1F("C11","calstriphit[1:4]",100,0.,200.);    Calstriphit = new TH1F("C11","calstriphit[1:4]",100,0.,200.);
242            
243    calev01 = new TH1F("C3","|calevnum(1)-calevnum(2)|",100,0,1);    calev01 = new TH1F("C3","|calevnum(1)-calevnum(2)|",100,0,1);
# Line 252  void FCaloQLOOK(TString filename, Int_t Line 297  void FCaloQLOOK(TString filename, Int_t
297        maxevent = fromevent - 1;        maxevent = fromevent - 1;
298      };      };
299    };    };
300          //azzera i tipi di errore
301    for (Int_t k = 0; k < 4; k++ ){    for (Int_t k = 0; k < 4; k++ ){
302      for (Int_t m = 0; m < 23 ; m++ ){      for (Int_t m = 0; m < 23 ; m++ ){
303        ver[k][m] = 0 ;        ver[k][m] = 0 ;
# Line 264  void FCaloQLOOK(TString filename, Int_t Line 309  void FCaloQLOOK(TString filename, Int_t
309        };        };
310        lalarm[k] = 0;        lalarm[k] = 0;
311      };      };
312        //il 23 lo azzero cosi per non modificare le altre variabili
313        ver[k][23]=0;
314    };    };
315    Int_t pdone, bdone;    Int_t pdone, bdone;
316    pdone = 0;    pdone = 0;
317    bdone = 0;    bdone = 0;
318    bool isCOMP = 0;    bool isCOMP = false;
319    bool isFULL = 0;    bool isFULL = false;
320    bool isRAW = 0;    bool isRAW = false;
321    Int_t alldexy=0;    Int_t alldexy=0;
322    Int_t alldexy2=0;    Int_t alldexy2=0;
323    Int_t stri=0;    Int_t planebases=0;
324      //  Int_t stri=0;
325    Int_t fcheck = 0;    Int_t fcheck = 0;
326    Int_t cestw=0;    Int_t cestw=0;
327    Int_t cmask = 127 ;    Int_t cmask = 127 ;
# Line 288  void FCaloQLOOK(TString filename, Int_t Line 336  void FCaloQLOOK(TString filename, Int_t
336    fulldiff[1] = 0;    fulldiff[1] = 0;
337    fulldiff[2] = 0;    fulldiff[2] = 0;
338    fulldiff[3] = 0;      fulldiff[3] = 0;  
339    printf("\n Processed events: \n\n");    //  printf("\n Processed events: \n\n");
340      printf("\n Start processing: \n\n");
341    unsigned short int calev0=0;    unsigned short int calev0=0;
342    unsigned short int oldcalev0;    unsigned short int oldcalev0;
343    unsigned short int calev1=0;    unsigned short int calev1=0;
# Line 298  void FCaloQLOOK(TString filename, Int_t Line 347  void FCaloQLOOK(TString filename, Int_t
347    unsigned short int calev3=0;    unsigned short int calev3=0;
348    unsigned short int oldcalev3;    unsigned short int oldcalev3;
349    Int_t i = minevent;    Int_t i = minevent;
350    Float_t headc = 0.;    UInt_t headc = 0;
351    Float_t headco = 0.;    UInt_t headco = 0;
352    Bool_t h1rcheck = false;    Bool_t h1rcheck = false;
353      Int_t h1rin = 0;
354      Int_t h1rout = 0;
355    Int_t intshit = 0;    Int_t intshit = 0;
356    Int_t outtshit = 0;    Int_t outtshit = 0;
357    Int_t incshit = 0;    Int_t incshit = 0;
# Line 311  void FCaloQLOOK(TString filename, Int_t Line 362  void FCaloQLOOK(TString filename, Int_t
362    Int_t outdexy = 0;    Int_t outdexy = 0;
363    Int_t indexyc = 0;    Int_t indexyc = 0;
364    Int_t outdexyc = 0;    Int_t outdexyc = 0;
365    Int_t obt = 0;    UInt_t obt = 0;
366    Int_t minobt[4];    UInt_t minobt[4];
367    Int_t maxobt[4];    UInt_t maxobt[4];
368    Int_t swminobt[4];    UInt_t swminobt[4];
369    Int_t swmaxobt[4];    UInt_t swmaxobt[4];
370    Bool_t firstobt[4];    Bool_t firstobt[4];
371    Bool_t swfirstobt[4];    Bool_t swfirstobt[4];
372    for ( Int_t i = 0; i<4; i++){    for ( Int_t i = 0; i<4; i++){
# Line 326  void FCaloQLOOK(TString filename, Int_t Line 377  void FCaloQLOOK(TString filename, Int_t
377      firstobt[i] = true;      firstobt[i] = true;
378      swfirstobt[i] = true;      swfirstobt[i] = true;
379    };    };
380      Bool_t evdone = false;
381      //
382    while ( i < maxevent+1){    while ( i < maxevent+1){
383        evdone = false;
384      tshit = 0;      tshit = 0;
385      trshit = 0;      trshit = 0;
386      tr->GetEntry(i);      tr->GetEntry(i);
387    
388      iev2[i] = ce->iev;          iev2[i] = ce->iev;    
389      //      //
390      ph = eh->GetPscuHeader();      ph = eh->GetPscuHeader();
391      headco = headc;      headco = headc;
392      headc = ph->GetCounter();      headc = ph->GetCounter();
393      obt = ph->GetOrbitalTime();      obt = ph->GetOrbitalTime();
394      calevn1 += (int)abs((int)(ce->calevnum[0]-ce->calevnum[1]));  
395      calevn2 += (int)abs((int)(ce->calevnum[2]-ce->calevnum[3]));      if ( (int)abs((int)(ce->calevnum[0]-ce->calevnum[1])) ) calevn1++;
396      calevn3 += (int)abs((int)(ce->calevnum[0]-ce->calevnum[3]));      if ( (int)abs((int)(ce->calevnum[2]-ce->calevnum[3])) ) calevn2++;
397        if ( (int)abs((int)(ce->calevnum[0]-ce->calevnum[3])) ) calevn3++;
398      calev01->Fill(abs((int)(ce->calevnum[0]-ce->calevnum[1])));      calev01->Fill(abs((int)(ce->calevnum[0]-ce->calevnum[1])));
399      calev23->Fill(abs((int)(ce->calevnum[2]-ce->calevnum[3])));      calev23->Fill(abs((int)(ce->calevnum[2]-ce->calevnum[3])));
400      calev03->Fill(abs((int)(ce->calevnum[0]-ce->calevnum[3])));      calev03->Fill(abs((int)(ce->calevnum[0]-ce->calevnum[3])));
# Line 353  void FCaloQLOOK(TString filename, Int_t Line 409  void FCaloQLOOK(TString filename, Int_t
409      calevv2 = (int)ce->calevnum[2];      calevv2 = (int)ce->calevnum[2];
410      oldcalev3 = calev3;      oldcalev3 = calev3;
411      calev3 = (int)ce->calevnum[3];      calev3 = (int)ce->calevnum[3];
412      goto jumpprintout;      //    goto jumpprintout;
413      if ( (headc - headco -1.) == 0. && ((calev0 - oldcalev0 - 1) > 0 || (calev1 - oldcalev1 - 1) > 0 || (calevv2 - oldcalev2 - 1) > 0 || (calev3 - oldcalev3 - 1) > 0) ){      if ( (headc - headco -1) == 0. && ((calev0 - oldcalev0 - 1) > 0 || (calev1 - oldcalev1 - 1) > 0 || (calevv2 - oldcalev2 - 1) > 0 || (calev3 - oldcalev3 - 1) > 0) ){
414        if ( i != minevent ) {        if ( i != minevent ) {
415          printf(" %f 0 Event %i: %i\n",headco,i,oldcalev0);  //      printf(" %f 0 Event %i: %i\n",headco,i,oldcalev0);
416          printf(" %f 0 Event %i: %i\n",headc,i+1,calev0);            //      printf(" %f 0 Event %i: %i\n",headc,i+1,calev0);          
417          printf(" %f 1 Event %i: %i\n",headco,i,oldcalev1);  //      printf(" %f 1 Event %i: %i\n",headco,i,oldcalev1);
418          printf(" %f 1 Event %i: %i\n",headc,i+1,calev1);            //      printf(" %f 1 Event %i: %i\n",headc,i+1,calev1);          
419          printf(" %f 2 Event %i: %i\n",headco,i,oldcalev2);  //      printf(" %f 2 Event %i: %i\n",headco,i,oldcalev2);
420          printf(" %f 2 Event %i: %i\n",headc,i+1,calevv2);            //      printf(" %f 2 Event %i: %i\n",headc,i+1,calevv2);          
421          printf(" %f 3 Event %i: %i\n",headco,i,oldcalev3);  //      printf(" %f 3 Event %i: %i\n",headco,i,oldcalev3);
422          printf(" %f 3 Event %i: %i\n",headc,i+1,calev3);          //      printf(" %f 3 Event %i: %i\n",headc,i+1,calev3);        
423          isRAW = 0;          isRAW = 0;
424          if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;                  if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;        
425          if ( (calev0 - oldcalev0 - 1) > 0 && !isRAW && ce->perror[0] != 129 && oldcalev0 != 0) {          if ( (calev0 - oldcalev0 - 1) > 0 && !isRAW && ce->perror[0] != 129 && oldcalev0 != 0) {
426            ver[0][10]++;            ver[0][10]++;
427              sighandler(headc,obt,i,0,nevents,evdone);
428              printf(" jump in the counter calev is %i oldcalev was %i \n",calev0,oldcalev0);
429          };          };
430          isRAW = 0;          isRAW = 0;
431          if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;                  if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;        
432          if ( (calev1 - oldcalev1 - 1) > 0 && !isRAW && ce->perror[1] != 129 && oldcalev1 != 0 ){          if ( (calev1 - oldcalev1 - 1) > 0 && !isRAW && ce->perror[1] != 129 && oldcalev1 != 0 ){
433            ver[1][10]++;            ver[1][10]++;
434              sighandler(headc,obt,i,1,nevents,evdone);
435              printf(" jump in the counter calev is %i oldcalev was %i \n",calev1,oldcalev1);
436          };          };
437          isRAW = 0;          isRAW = 0;
438          if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;                  if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;        
439          if ( (calevv2 - oldcalev2 - 1) > 0 && !isRAW && ce->perror[2] != 129 && oldcalev2 != 0 ){          if ( (calevv2 - oldcalev2 - 1) > 0 && !isRAW && ce->perror[2] != 129 && oldcalev2 != 0 ){
440            ver[2][10]++;            ver[2][10]++;
441              sighandler(headc,obt,i,2,nevents,evdone);
442              printf(" jump in the counter calev is %i oldcalev was %i \n",calevv2,oldcalev2);
443          };          };
444          isRAW = 0;          isRAW = 0;
445          if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;                  if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;        
446          if ( (calev3 - oldcalev3 - 1) > 0 && !isRAW && ce->perror[3] != 129 && oldcalev3 != 0 ){          if ( (calev3 - oldcalev3 - 1) > 0 && !isRAW && ce->perror[3] != 129 && oldcalev3 != 0 ){
447            ver[3][10]++;            ver[3][10]++;
448              sighandler(headc,obt,i,3,nevents,evdone);
449              printf(" jump in the counter calev is %i oldcalev was %i \n",calev3,oldcalev3);
450          };          };
451        }        };
452      };      };
453    jumpprintout:      //  jumpprintout:
454      memcpy(shit, nullsh, sizeof(nullsh));      memcpy(shit, nullsh, sizeof(nullsh));
455      memcpy(rshit, nullsh, sizeof(nullsh));      memcpy(rshit, nullsh, sizeof(nullsh));
456      for (Int_t l = 0; l < 2; l++ ){      for (Int_t l = 0; l < 2; l++ ){
# Line 410  void FCaloQLOOK(TString filename, Int_t Line 474  void FCaloQLOOK(TString filename, Int_t
474            se = 1;            se = 1;
475            pl = (ii-1)/2;            pl = (ii-1)/2;
476            pdone = 0;            pdone = 0;
477          };          };              
478                            isCOMP = false;
479          isCOMP = 0;          isFULL = false;
480          isFULL = 0;          isRAW = false;
481          isRAW = 0;          if ( ce->stwerr[se] & (1 << 16) ) isCOMP = true;
482          if ( ce->stwerr[se] & (1 << 16) ) isCOMP = 1;          if ( ce->stwerr[se] & (1 << 17) ) isFULL = true;
483          if ( ce->stwerr[se] & (1 << 17) ) isFULL = 1;          if ( ce->stwerr[se] & (1 << 3) ) isRAW = true;
         if ( ce->stwerr[se] & (1 << 3) ) isRAW = 1;  
484          bl = -1;          bl = -1;
485          for (Int_t kk = 0; kk < 96 ; kk++ ){          for (Int_t kk = 0; kk < 96 ; kk++ ){
486            if ( kk%16 == 0 ){            if ( kk%16 == 0 ){
487              bdone = 0;              bdone = 0;
488              bl++;              bl++;
489              allbase = ce->base[l][ii][bl];              allbase = ce->base[l][ii][bl];
490                //      alldexy=0;
491                //      alldexy2=0;
492                //      stri=0;
493                //      for (Int_t e = 0; e < 16 ; e++ ){
494                //        stri = e + 16 * bl;
495                //        alldexy += (int)ce->dexyc[l][ii][stri];
496                //        alldexy2 += (int)ce->dexy[l][ii][stri];
497                //      };
498              };
499              //
500              if ( kk == 0 ){
501                planebases = 0;
502              alldexy=0;              alldexy=0;
503              alldexy2=0;              alldexy2=0;
504              stri=0;              for (Int_t e = 0; e < 96 ; e++ ){
505              for (Int_t e = 0; e < 16 ; e++ ){                if ( e < 6 ) planebases += (int)ce->base[l][ii][e];
506                stri = e + 16 * bl;                alldexy += (int)ce->dexyc[l][ii][e];
507                alldexy += (int)ce->dexyc[l][ii][stri];                alldexy2 += (int)ce->dexy[l][ii][e];
               alldexy2 += (int)ce->dexy[l][ii][stri];  
508              };              };
509            };            };
510              //
511            if ( !isRAW ) {            if ( !isRAW ) {
512              //              //
513              if ( !pdone ){              if ( !pdone ){
514                if ( (ce->base[l][ii][bl]>32000 || ce->base[l][ii][bl] == 0 ) && ( alldexy > 512000 ||  alldexy == 0) && ce->perror[se] == 0 ) {                //              if ( (ce->base[l][ii][bl]>32000 || ce->base[l][ii][bl] == 0 ) && ( alldexy > 512000 ||  alldexy == 0) && ce->perror[se] == 0 ) {
515                  if ( (planebases>192000 || planebases == 0 ) && ( alldexy > 3072000 ||  alldexy == 0) && ce->perror[se] == 0 ) {
516                  pdone = 1;                  pdone = 1;
517                  pshit[se][pl]++ ;                  pshit[se][pl]++ ;
518                  if ( (ce->stwerr[se] & (1 << 4)) == 0 ) {                  if ( (ce->stwerr[se] & (1 << 4)) == 0 ) {
# Line 446  void FCaloQLOOK(TString filename, Int_t Line 522  void FCaloQLOOK(TString filename, Int_t
522                    if ( obt > maxobt[se] ) maxobt[se] = obt;                    if ( obt > maxobt[se] ) maxobt[se] = obt;
523                  };                  };
524                  lver[se][2]++ ;                          lver[se][2]++ ;        
525                    if ( lver[se][2] == 1000 ){
526                      sighandler(headc,obt,i,se,nevents,evdone);
527                      printf(" latch up (data) in DSP mode alldexy %i planebases %i \n",alldexy,planebases);
528                      printf(" WARNING TOO MANY LATCHUP ERRORS ON DATA FOR THIS SECTION \n");
529                      printf(" THEY WILL NOT BE DISPLAYED HERE ANYMORE FOR THIS FILE! \n");
530                    };
531                    if ( lver[se][2] < 1000 ){
532                      sighandler(headc,obt,i,se,nevents,evdone);
533                      printf(" latch up (data) in DSP mode alldexy %i planebases %i \n",alldexy,planebases);
534                    };
535                };                };
536              }              }
537              //              //
538              if ( !bdone ){              if ( !bdone ){
539                Baseline->Fill(ce->base[l][ii][bl]);                Baseline->Fill(ce->base[l][ii][bl]);
540                if ( ce->base[l][ii][bl] > 2000. && ce->base[l][ii][bl] < 4500. ){                if ( ce->base[l][ii][bl] > 2000. && ce->base[l][ii][bl] < 5500. ){
541                  inbase++;                  inbase++;
542                } else {                } else {
543                  outbase++;                  outbase++;
# Line 489  void FCaloQLOOK(TString filename, Int_t Line 575  void FCaloQLOOK(TString filename, Int_t
575                indexyc++;                                            indexyc++;                            
576              };              };
577              //              //
578              if (ce->dexyc[l][ii][kk] < 0 ) ver[se][21]++ ;              if (ce->dexyc[l][ii][kk] < 0 ){
579                  ver[se][21]++ ;
580                  sighandler(headc,obt,i,se,nevents,evdone);
581                  printf(" negative ADC values!! ce->dexyc[%i][%i][%i] = %f \n",l,ii,kk,ce->dexyc[l][ii][kk]);
582                };
583              //              //
584              if ( allbase == 0. || allbase > 32000.) {              if ( allbase == 0. || allbase > 32000.) {
585                fcheck = 0;                fcheck = 0;
# Line 504  void FCaloQLOOK(TString filename, Int_t Line 594  void FCaloQLOOK(TString filename, Int_t
594              //              //
595            } else {            } else {
596              if ( !pdone ){              if ( !pdone ){
597                if ( (alldexy2>512000 || alldexy2 == 0) && ce->perror[se] == 0 ) {                if ( ( alldexy2 > 3072000 ||  alldexy2 == 0) && ce->perror[se] == 0 ) {
598                    //            if ( (alldexy2>512000 || alldexy2 == 0) && ce->perror[se] == 0 )
599                  pdone = 1;                  pdone = 1;
600                  pshit[se][pl]++ ;                                          pshit[se][pl]++ ;                        
601                  if ( (ce->stwerr[se] & (1 << 4)) == 0 ){                  if ( (ce->stwerr[se] & (1 << 4)) == 0 ){
# Line 514  void FCaloQLOOK(TString filename, Int_t Line 605  void FCaloQLOOK(TString filename, Int_t
605                    if ( obt > maxobt[se] ) maxobt[se] = obt;                    if ( obt > maxobt[se] ) maxobt[se] = obt;
606                  };                  };
607                  lver[se][2]++ ;                  lver[se][2]++ ;
608                    if ( lver[se][2] == 1000 ){
609                      sighandler(headc,obt,i,se,nevents,evdone);
610                      printf(" latch up (data) in RAW mode alldexy2 %i \n",alldexy2);
611                      printf(" WARNING TOO MANY LATCHUP ERRORS ON DATA FOR THIS SECTION \n");
612                      printf(" THEY WILL NOT BE DISPLAYED HERE ANYMORE FOR THIS FILE! \n");
613                    };
614                    if ( lver[se][2] < 1000 ){
615                      sighandler(headc,obt,i,se,nevents,evdone);
616                      printf(" latch up (data) in RAW mode alldexy2 %i \n",alldexy2);
617                    };
618                };                };
619              };              };
620              if ( ce->dexy[l][ii][kk] > 0 && ce->dexy[l][ii][kk] < 32000 ) {              if ( ce->dexy[l][ii][kk] > 0 && ce->dexy[l][ii][kk] < 32000 ) {
# Line 532  void FCaloQLOOK(TString filename, Int_t Line 633  void FCaloQLOOK(TString filename, Int_t
633      };      };
634      cshit = 0;      cshit = 0;
635      for (Int_t k = 0; k < 4 ; k++ ){      for (Int_t k = 0; k < 4 ; k++ ){
636        isCOMP = 0;        isCOMP = false;
637        isFULL = 0;        isFULL = false;
638        if ( ce->stwerr[se] & (1 << 16) ) isCOMP = 1;        cestw=0;// queste righe qui
639        if ( ce->stwerr[se] & (1 << 17) ) isFULL = 1;        if ( ce->stwerr[k] ) cestw =  ce->stwerr[k] & cmask ;//
640          if ( ce->stwerr[k] & (1 << 16) && !(cestw & (1 << 3)) ) isCOMP = true;
641          if ( ce->stwerr[k] & (1 << 17) && !(cestw & (1 << 3)) ) isFULL = true;
642          //
643        if ( isCOMP ) ver[k][16]++;        if ( isCOMP ) ver[k][16]++;
644        if ( isFULL ) ver[k][17]++;        if ( isFULL ) ver[k][17]++;
645        cshit += (int)ce->calstriphit[k];        cshit += (int)ce->calstriphit[k];
       cestw=0;  
       if ( ce->stwerr[k] ) cestw =  ce->stwerr[k] & cmask ;  
646        if ( cestw ){        if ( cestw ){
647          if ( cestw & (1 << 0) ) ver[k][6]++ ;          if ( cestw & (1 << 0) ){
648          if ( cestw & (1 << 1) ) ver[k][5]++ ;            ver[k][6]++ ;
649          if ( cestw & (1 << 2) ) ver[k][4]++ ;            sighandler(headc,obt,i,k,nevents,evdone);
650          if ( cestw & (1 << 3) ) ver[k][3]++ ;            printf(" CRC error (st. word) \n");
651            };
652            if ( cestw & (1 << 1) ){
653              ver[k][5]++ ;
654              sighandler(headc,obt,i,k,nevents,evdone);
655              printf(" execution error \n");
656            };
657            if ( cestw & (1 << 2) ){
658              ver[k][4]++ ;
659              sighandler(headc,obt,i,k,nevents,evdone);
660              printf(" CMD length error \n");
661            };
662            if ( cestw & (1 << 3) ) ver[k][3]++ ; // raw mode
663          if ( cestw & (1 << 4) ){          if ( cestw & (1 << 4) ){
664            ver[k][2]++ ;            ver[k][2]++ ;
665              if ( ver[k][2] == 1000 ){
666                sighandler(headc,obt,i,k,nevents,evdone);
667                printf(" latch up alarm (st. word)\n");
668                printf(" WARNING TOO MANY LATCHUP ERRORS ON DATA FOR THIS SECTION \n");
669                printf(" THEY WILL NOT BE DISPLAYED HERE ANYMORE FOR THIS FILE! \n");
670              };
671              if ( ver[k][2] < 1000 ){
672                sighandler(headc,obt,i,k,nevents,evdone);
673                printf(" latch up alarm (st. word)\n");
674              };
675            lupstw[k]->Fill(obt);            lupstw[k]->Fill(obt);
676            if ( swfirstobt[k] ) swminobt[k] = obt;            if ( swfirstobt[k] ) swminobt[k] = obt;
677            if ( obt > swmaxobt[k] ) swmaxobt[k] = obt;            if ( obt > swmaxobt[k] ) swmaxobt[k] = obt;
678          };          };
679          if ( cestw & (1 << 5) ) ver[k][1]++ ;          if ( cestw & (1 << 5) ){
680          if ( cestw & (1 << 6) ) ver[k][0]++ ;                      ver[k][1]++ ;
681        };            sighandler(headc,obt,i,k,nevents,evdone);
682              printf(" temperature alarm  \n");
683            };
684            if ( cestw & (1 << 6) ){
685              ver[k][0]++ ;        
686              sighandler(headc,obt,i,k,nevents,evdone);
687              printf(" DSP ack error \n");
688            };
689          };// controllo se ci sono errori crc se perr=0 ok!
690          if (  ce->stwerr[k] == 0 && ce->perror[k] == 0 ) ver[k][8]++ ;
691        if ( ce->perror[k] != 0. ){        if ( ce->perror[k] != 0. ){
692          if (ce->perror[k] == 128) ver[k][7]++ ;          if (ce->perror[k] == 128){
693          if (ce->perror[k] == 129) ver[k][8]++ ;            ver[k][7]++ ;
694          if (ce->perror[k] == 132) ver[k][11]++ ;            sighandler(headc,obt,i,k,nevents,evdone);
695          if (ce->perror[k] == 133) ver[k][12]++ ;            printf(" view or command not recognized \n");
696          if (ce->perror[k] == 134) ver[k][13]++ ;          };
697          if (ce->perror[k] == 135) ver[k][14]++ ;          if (ce->perror[k] == 129){
698          if (ce->perror[k] == 136) ver[k][15]++ ;            ver[k][8]++ ;
699          if (ce->perror[k] == 139) ver[k][18]++ ;            sighandler(headc,obt,i,k,nevents,evdone);
700          if (ce->perror[k] == 140) ver[k][19]++ ;            printf(" missing section \n");
701          if (ce->perror[k] == 141) ver[k][20]++ ;          };
702          if (ce->perror[k] == 142) ver[k][22]++ ;          if (ce->perror[k] == 132){
703              ver[k][11]++ ;
704              if ( ver[k][11] < 30 ){
705                sighandler(headc,obt,i,k,nevents,evdone);
706                printf(" CRC error (data) \n");
707              };
708              if ( ver[k][11] == 30 ){
709                sighandler(headc,obt,i,k,nevents,evdone);
710                printf(" CRC error (data) \n");
711                printf(" WARNING TOO MANY CRC ERRORS ON DATA FOR THIS SECTION \n");
712                printf(" THEY WILL NOT BE DISPLAYED HERE ANYMORE FOR THIS FILE! \n");
713              };
714            };
715            if (ce->perror[k] == 133){
716              ver[k][12]++ ;
717              sighandler(headc,obt,i,k,nevents,evdone);
718              printf(" length problems in RAW mode \n");
719            };
720            if (ce->perror[k] == 134){
721              ver[k][13]++ ;
722              sighandler(headc,obt,i,k,nevents,evdone);
723              printf(" length problems in COMPRESS mode \n");
724            };
725            if (ce->perror[k] == 135){
726              ver[k][14]++ ;
727              sighandler(headc,obt,i,k,nevents,evdone);
728              printf(" length problems in FULL mode \n");
729            };
730            if (ce->perror[k] == 136){
731              ver[k][15]++ ;
732              sighandler(headc,obt,i,k,nevents,evdone);
733              printf(" acquisition mode problems \n");
734            };
735            if (ce->perror[k] == 139){
736              ver[k][18]++ ;
737              sighandler(headc,obt,i,k,nevents,evdone);
738              printf(" problems with coding\n");
739            };
740            if (ce->perror[k] == 140){
741              ver[k][19]++ ;
742              sighandler(headc,obt,i,k,nevents,evdone);
743              printf(" pedestal checksum wrong\n");
744            };
745            if (ce->perror[k] == 141){
746              ver[k][20]++ ;
747              sighandler(headc,obt,i,k,nevents,evdone);
748              printf(" thresholds checksum wrong\n");
749            };
750            if (ce->perror[k] == 142){
751              ver[k][22]++ ;
752              sighandler(headc,obt,i,k,nevents,evdone);
753              printf(" packet length is zero (YODA input error), skipped\n");
754            };
755            //aggiunto questo errore
756            if (ce->perror[k] == 143){
757              ver[k][23]++ ;
758              sighandler(headc,obt,i,k,nevents,evdone);
759              printf(" corrupted packet lenght \n");
760            };
761        };        };
762        for (Int_t kk = 0; kk < 11 ; kk++ ){        for (Int_t kk = 0; kk < 11 ; kk++ ){
763          tshit += shit[k][kk];          tshit += shit[k][kk];
764          trshit += rshit[k][kk];          trshit += rshit[k][kk];
765        };        };
766      };        };  
767      Calstriphit->Fill(cshit);      if (isCOMP || isFULL){
768      if ( (cshit > 0 && cshit < 25) || (cshit > 40 && cshit < 80) ){        Calstriphit->Fill(cshit);
769        incshit++;        //    if ( (cshit > 0 && cshit < 25) || (cshit > 40 && cshit < 80) ){
770      } else {        //
771        outcshit++;        //cambiata la banda di soglia  ora 5  prima era 10
772      };        //
773      if ( tshit>0 ) h1->Fill(tshit);        if ( (cshit > 5 && cshit < 100) ){
774      if ( (tshit > 0 && tshit < 25) || (tshit > 40 && tshit < 80) ){          incshit++;
775        intshit++;        } else {
776      } else {          outcshit++;
777        outtshit++;        };
778          //
779          if ( tshit>0 ) h1->Fill(tshit);
780          //    if ( (tshit > 0 && tshit < 25) || (tshit > 40 && tshit < 80) ){
781          //cambiata la soglia ora 5  prima era 10
782          if ( (tshit > 5 && tshit < 100) ){
783            intshit++;
784          } else {
785            outtshit++;
786          };
787      };      };
788      if ( trshit>0 ) {      if ( trshit>0 ) {
789        h1r->Fill(trshit);        h1r->Fill(trshit);
790        if ( trshit < 4210 ){        if ( trshit < 4210 ){
791          h1rcheck = true;          h1rout++;
792          //              printf("ma come... trshit %i \n",trshit);          //              printf("ma come... trshit %i \n",trshit);
793          } else {
794            h1rin++;
795        };        };
796      };      };
797      if ( i%1000 == 0 && i > 0 ) printf("%iK\n",i/1000);      //    if ( i%1000 == 0 && i > 0 ) printf("%iK\n",i/1000);
798      i++;      i++;
799    };    };
800    printf("\n");    printf("\n");
801          printf("\n end processing. \n\n");
802      if ( (float)h1rout/((float)h1rin+(float)h1rout) > h1rth ){
803        h1rcheck = true;
804      };    
805    //    //
806    //  output figures, first sheet:    //  output figures, first sheet:
807    //    //
# Line 662  void FCaloQLOOK(TString filename, Int_t Line 867  void FCaloQLOOK(TString filename, Int_t
867      h1->Draw();      h1->Draw();
868      //      //
869      h1max = h1->GetMaximum()*1.05;      h1max = h1->GetMaximum()*1.05;
870      Double_t xc[4] = {0.,25.,25.,0.};  
871        //cambiata banda  prima era 10  ora 5
872        Double_t xc[4] = {5.,100.,100.,5.};
873      Double_t yc[4] = {0.,0.,h1max,h1max};      Double_t yc[4] = {0.,0.,h1max,h1max};
874      banda1 = new TPolyLine(4,xc,yc);      banda1 = new TPolyLine(4,xc,yc);
875      banda1->SetLineColor(5);      banda1->SetLineColor(5);
876      banda1->SetFillColor(5);      banda1->SetFillColor(5);
877      banda1->SetLineWidth(1);      banda1->SetLineWidth(1);
878      banda1->Draw("fSAME");      banda1->Draw("fSAME");
879      Double_t xd[4] = {40.,80.,80.,40.};    //  Double_t xd[4] = {40.,80.,80.,40.};
880      Double_t yd[4] = {0.,0.,h1max,h1max};     // Double_t yd[4] = {0.,0.,h1max,h1max};
881      banda2 = new TPolyLine(4,xd,yd);     // banda2 = new TPolyLine(4,xd,yd);
882      banda2->SetLineColor(5);     // banda2->SetLineColor(5);
883      banda2->SetFillColor(5);     // banda2->SetFillColor(5);
884      banda2->SetLineWidth(1);     // banda2->SetLineWidth(1);
885      banda2->Draw("fSAME");      //banda2->Draw("fSAME");
886      h1->Draw("SAME");      h1->Draw("SAME");
887      //      //
888      figura->cd();      figura->cd();
# Line 712  void FCaloQLOOK(TString filename, Int_t Line 919  void FCaloQLOOK(TString filename, Int_t
919        h1->SetYTitle("Number of events");        h1->SetYTitle("Number of events");
920        h1->Draw();        h1->Draw();
921        h1max = h1->GetMaximum()*1.05;        h1max = h1->GetMaximum()*1.05;
922        Double_t xe[4] = {0.,25.,25.,0.};        //cambiato banda, prima era 10,ora 5
923          Double_t xe[4] = {5.,100.,100.,5.};
924        Double_t ye[4] = {0.,0.,h1max,h1max};        Double_t ye[4] = {0.,0.,h1max,h1max};
925        banda1 = new TPolyLine(4,xe,ye);        banda1 = new TPolyLine(4,xe,ye);
926        banda1->SetLineColor(5);        banda1->SetLineColor(5);
927        banda1->SetFillColor(5);        banda1->SetFillColor(5);
928        banda1->SetLineWidth(1);        banda1->SetLineWidth(1);
929        banda1->Draw("fSAME");        banda1->Draw("fSAME");
930        Double_t xf[4] = {40.,80.,80.,40.};       // Double_t xf[4] = {40.,80.,80.,40.};
931        Double_t yf[4] = {0.,0.,h1max,h1max};       // Double_t yf[4] = {0.,0.,h1max,h1max};
932        banda2 = new TPolyLine(4,xf,yf);       // banda2 = new TPolyLine(4,xf,yf);
933        banda2->SetLineColor(5);       // banda2->SetLineColor(5);
934        banda2->SetFillColor(5);       // banda2->SetFillColor(5);
935        banda2->SetLineWidth(1);      //  banda2->SetLineWidth(1);
936        banda2->Draw("fSAME");       // banda2->Draw("fSAME");
937        h1->Draw("SAME");        h1->Draw("SAME");
938      };      };
939      if ( trshit !=0 ) {      if ( trshit !=0 ) {
# Line 755  void FCaloQLOOK(TString filename, Int_t Line 963  void FCaloQLOOK(TString filename, Int_t
963      };      };
964    };    };
965    if ( !errorfull ) {    if ( !errorfull ) {
966      if ( calevn1 || calevn2 || calevn3 ) {      if ( calevn1 > calevnth || calevn2 > calevnth || calevn3 > calevnth ) {
967        pd1 = new TPad("pd1","This is pad1",0.02,0.51,0.24,0.98,45);        pd1 = new TPad("pd1","This is pad1",0.02,0.51,0.24,0.98,45);
968        pd2 = new TPad("pd2","This is pad2",0.26,0.51,0.49,0.98,45);        pd2 = new TPad("pd2","This is pad2",0.26,0.51,0.49,0.98,45);
969        pd3 = new TPad("pd3","This is pad3",0.02,0.02,0.24,0.49,45);        pd3 = new TPad("pd3","This is pad3",0.02,0.02,0.24,0.49,45);
# Line 898  void FCaloQLOOK(TString filename, Int_t Line 1106  void FCaloQLOOK(TString filename, Int_t
1106      Baseline->SetYTitle("Number of events");      Baseline->SetYTitle("Number of events");
1107      Baseline->Draw();      Baseline->Draw();
1108      h1max = Baseline->GetMaximum()*1.05;      h1max = Baseline->GetMaximum()*1.05;
1109      Double_t xc[4] = {2000.,4500.,4500.,2000.};      Double_t xc[4] = {2000.,5500.,5500.,2000.};
1110      Double_t yc[4] = {0.,0.,h1max,h1max};      Double_t yc[4] = {0.,0.,h1max,h1max};
1111      banda1 = new TPolyLine(4,xc,yc);      banda1 = new TPolyLine(4,xc,yc);
1112      banda1->SetLineColor(5);      banda1->SetLineColor(5);
# Line 930  void FCaloQLOOK(TString filename, Int_t Line 1138  void FCaloQLOOK(TString filename, Int_t
1138      Dexyc->Draw("SAME");      Dexyc->Draw("SAME");
1139      //      //
1140      pd3->cd();      pd3->cd();
1141    //    gPad->SetLogy();
1142      Calstriphit->SetXTitle("Number of hit");      Calstriphit->SetXTitle("Number of hit");
1143      Calstriphit->SetYTitle("Number of events");      Calstriphit->SetYTitle("Number of events");
1144      Calstriphit->Draw();      Calstriphit->Draw();
1145      h1max = Calstriphit->GetMaximum()*1.05;      h1max = Calstriphit->GetMaximum()*1.05;
1146      Double_t xg[4] = {0.,25.,25.,0.};  
1147        //banda di sogla portata a 5, prima era a 10
1148        Double_t xg[4] = {5.,100.,100.,5.};
1149      Double_t yg[4] = {0.,0.,h1max,h1max};      Double_t yg[4] = {0.,0.,h1max,h1max};
1150      banda1 = new TPolyLine(4,xg,yg);      banda1 = new TPolyLine(4,xg,yg);
1151      banda1->SetLineColor(5);      banda1->SetLineColor(5);
1152      banda1->SetFillColor(5);      banda1->SetFillColor(5);
1153      banda1->SetLineWidth(1);      banda1->SetLineWidth(1);
1154      banda1->Draw("fSAME");      banda1->Draw("fSAME");
1155      Double_t xh[4] = {40.,80.,80.,40.};    //  Double_t xh[4] = {40.,80.,80.,40.};
1156      Double_t yh[4] = {0.,0.,h1max,h1max};    //  Double_t yh[4] = {0.,0.,h1max,h1max};
1157      banda2 = new TPolyLine(4,xh,yh);    //  banda2 = new TPolyLine(4,xh,yh);
1158      banda2->SetLineColor(5);    //  banda2->SetLineColor(5);
1159      banda2->SetFillColor(5);    //  banda2->SetFillColor(5);
1160      banda2->SetLineWidth(1);    //  banda2->SetLineWidth(1);
1161      banda2->Draw("fSAME");    //  banda2->Draw("fSAME");
1162      Calstriphit->Draw("SAME");      Calstriphit->Draw("SAME");
1163      //      //
1164      pd4->cd();      pd4->cd();
1165        gPad->SetLogy();
1166      Dexy->SetXTitle("ADC channels");      Dexy->SetXTitle("ADC channels");
1167      Dexy->SetYTitle("Number of events");      Dexy->SetYTitle("Number of events");
1168      Dexy->Draw();      Dexy->Draw();
1169      h1max = Dexy->GetMaximum()*1.05;      //    h1max = Dexy->GetMaximum()*1.05;
1170        h1max = Dexy->GetMaximum()*2.05;
1171      Double_t xd[4] = {2000.,5000.,5000.,2000.};      Double_t xd[4] = {2000.,5000.,5000.,2000.};
1172      Double_t yd[4] = {0.,0.,h1max,h1max};      Double_t yd[4] = {0.,0.,h1max,h1max};
1173      banda1 = new TPolyLine(4,xd,yd);      banda1 = new TPolyLine(4,xd,yd);
# Line 990  void FCaloQLOOK(TString filename, Int_t Line 1203  void FCaloQLOOK(TString filename, Int_t
1203      pd4->Draw();      pd4->Draw();
1204      //      //
1205      pd4->cd();      pd4->cd();
1206        gPad->SetLogy();
1207      Dexy->SetXTitle("ADC channels");      Dexy->SetXTitle("ADC channels");
1208      Dexy->SetYTitle("Number of events");      Dexy->SetYTitle("Number of events");
1209      Dexy->Draw();      Dexy->Draw();
1210      h1max = Dexy->GetMaximum()*1.05;      //    h1max = Dexy->GetMaximum()*1.05;
1211        h1max = Dexy->GetMaximum()*2.05;
1212      Double_t xd[4] = {2000.,5000.,5000.,2000.};      Double_t xd[4] = {2000.,5000.,5000.,2000.};
1213      Double_t yd[4] = {0.,0.,h1max,h1max};      Double_t yd[4] = {0.,0.,h1max,h1max};
1214      banda1 = new TPolyLine(4,xd,yd);      banda1 = new TPolyLine(4,xd,yd);
# Line 1059  void FCaloQLOOK(TString filename, Int_t Line 1274  void FCaloQLOOK(TString filename, Int_t
1274      pd7->Draw();      pd7->Draw();
1275      pd8->Draw();      pd8->Draw();
1276      pd1->cd();      pd1->cd();
1277      lup[0]->SetAxisRange((Double_t)minobt[0]*0.9,(Double_t)maxobt[0]*1.1,"X");      lup[0]->SetAxisRange((Double_t)min(minobt[0],swminobt[0])*0.9,(Double_t)max(maxobt[0],swmaxobt[0])*1.1,"X");
1278        lup[0]->SetXTitle("OBT");
1279        lup[0]->SetYTitle("Number of events");
1280      lup[0]->Draw();      lup[0]->Draw();
1281      pd5->cd();      pd5->cd();
1282      lupstw[0]->SetAxisRange((Double_t)swminobt[0]*0.9,(Double_t)swmaxobt[0]*1.1,"X");      lupstw[0]->SetAxisRange((Double_t)min(minobt[0],swminobt[0])*0.9,(Double_t)max(maxobt[0],swmaxobt[0])*1.1,"X");
1283        //    lupstw[0]->SetAxisRange((Double_t)swminobt[0]*0.9,(Double_t)swmaxobt[0]*1.1,"X");
1284        lupstw[0]->SetXTitle("OBT");
1285        lupstw[0]->SetYTitle("Number of events");
1286      lupstw[0]->Draw();      lupstw[0]->Draw();
1287      pd2->cd();      pd2->cd();
1288      lup[1]->SetAxisRange((Double_t)minobt[1]*0.9,(Double_t)maxobt[1]*1.1,"X");      lup[1]->SetAxisRange((Double_t)min(minobt[1],swminobt[1])*0.9,(Double_t)max(maxobt[1],swmaxobt[1])*1.1,"X");
1289        //    lup[1]->SetAxisRange((Double_t)minobt[1]*0.9,(Double_t)maxobt[1]*1.1,"X");
1290        lup[1]->SetXTitle("OBT");
1291        lup[1]->SetYTitle("Number of events");
1292      lup[1]->Draw();      lup[1]->Draw();
1293      pd6->cd();      pd6->cd();
1294      lupstw[1]->SetAxisRange((Double_t)swminobt[1]*0.9,(Double_t)swmaxobt[1]*1.1,"X");      lupstw[1]->SetAxisRange((Double_t)min(minobt[1],swminobt[1])*0.9,(Double_t)max(maxobt[1],swmaxobt[1])*1.1,"X");
1295        //    lupstw[1]->SetAxisRange((Double_t)swminobt[1]*0.9,(Double_t)swmaxobt[1]*1.1,"X");
1296        lupstw[1]->SetXTitle("OBT");
1297        lupstw[1]->SetYTitle("Number of events");
1298      lupstw[1]->Draw();      lupstw[1]->Draw();
1299      pd3->cd();      pd3->cd();
1300      lup[2]->SetAxisRange((Double_t)minobt[2]*0.9,(Double_t)maxobt[2]*1.1,"X");      lup[2]->SetAxisRange((Double_t)min(minobt[2],swminobt[2])*0.9,(Double_t)max(maxobt[2],swmaxobt[2])*1.1,"X");
1301        //    lup[2]->SetAxisRange((Double_t)minobt[2]*0.9,(Double_t)maxobt[2]*1.1,"X");
1302        lup[2]->SetXTitle("OBT");
1303        lup[2]->SetYTitle("Number of events");
1304      lup[2]->Draw();      lup[2]->Draw();
1305      pd7->cd();      pd7->cd();
1306      lupstw[2]->SetAxisRange((Double_t)swminobt[2]*0.9,(Double_t)swmaxobt[2]*1.1,"X");      lupstw[2]->SetAxisRange((Double_t)min(minobt[2],swminobt[2])*0.9,(Double_t)max(maxobt[2],swmaxobt[2])*1.1,"X");
1307        //    lupstw[2]->SetAxisRange((Double_t)swminobt[2]*0.9,(Double_t)swmaxobt[2]*1.1,"X");
1308        lupstw[2]->SetXTitle("OBT");
1309        lupstw[2]->SetYTitle("Number of events");
1310      lupstw[2]->Draw();      lupstw[2]->Draw();
1311      pd4->cd();      pd4->cd();
1312      lup[3]->SetAxisRange((Double_t)minobt[3]*0.9,(Double_t)maxobt[3]*1.1,"X");      lup[3]->SetAxisRange((Double_t)min(minobt[3],swminobt[3])*0.9,(Double_t)max(maxobt[3],swmaxobt[3])*1.1,"X");
1313        //    lup[3]->SetAxisRange((Double_t)minobt[3]*0.9,(Double_t)maxobt[3]*1.1,"X");
1314        lup[3]->SetXTitle("OBT");
1315        lup[3]->SetYTitle("Number of events");
1316      lup[3]->Draw();      lup[3]->Draw();
1317      pd8->cd();      pd8->cd();
1318      lupstw[3]->SetAxisRange((Double_t)swminobt[3]*0.9,(Double_t)swmaxobt[3]*1.1,"X");      lupstw[3]->SetAxisRange((Double_t)min(minobt[3],swminobt[3])*0.9,(Double_t)max(maxobt[3],swmaxobt[3])*1.1,"X");
1319        //    lupstw[3]->SetAxisRange((Double_t)swminobt[3]*0.9,(Double_t)swmaxobt[3]*1.1,"X");
1320        lupstw[3]->SetXTitle("OBT");
1321        lupstw[3]->SetYTitle("Number of events");
1322      lupstw[3]->Draw();      lupstw[3]->Draw();
1323    };    };
1324    //    //
# Line 1114  void FCaloQLOOK(TString filename, Int_t Line 1352  void FCaloQLOOK(TString filename, Int_t
1352    pad2->Draw();    pad2->Draw();
1353    pad3->Draw();    pad3->Draw();
1354    pad4->Draw();    pad4->Draw();
1355      //
1356      Bool_t redevent = true;
1357      //
1358      if ( ver[0][3]+ver[0][16]+ver[0][17]+ver[0][8] == ver[1][3]+ver[1][16]+ver[1][17]+ver[1][8] && ver[1][3]+ver[1][16]+ver[1][17]+ver[1][8] == ver[2][3]+ver[2][16]+ver[2][17]+ver[2][8] && ver[2][3]+ver[2][16]+ver[2][17]+ver[2][8] == ver[3][3]+ver[3][16]+ver[3][17]+ver[3][8] ){
1359        redevent = false;
1360      };
1361      if ( redevent ) check = true;
1362      //
1363    for (Int_t i = 0; i < 4; i++){    for (Int_t i = 0; i < 4; i++){
1364      if (i == 2)      if (i == 2)
1365        {        {
# Line 1142  void FCaloQLOOK(TString filename, Int_t Line 1387  void FCaloQLOOK(TString filename, Int_t
1387      t->SetTextAlign(12);      t->SetTextAlign(12);
1388      t->DrawLatex(33.,97.,sezione);      t->DrawLatex(33.,97.,sezione);
1389      t->SetTextSize(0.05);      t->SetTextSize(0.05);
1390      for (Int_t j = 0; j < 23; j++){      //aggiunto un errore jmax=23
1391        for (Int_t j = 0; j < 24; j++){
1392        if ( ver[i][j] || lver[i][j] ) {        if ( ver[i][j] || lver[i][j] ) {
1393          t->SetTextColor(50);          t->SetTextColor(50);
1394          if (j == 0) {          if (j == 0) {
# Line 1201  void FCaloQLOOK(TString filename, Int_t Line 1447  void FCaloQLOOK(TString filename, Int_t
1447            errore.str("");            errore.str("");
1448            errore << "RAW mode: " << ver[i][j];            errore << "RAW mode: " << ver[i][j];
1449            errore << " time(s)";            errore << " time(s)";
1450            t->SetTextColor(32);            if ( !redevent ) t->SetTextColor(32);
1451            t->DrawLatex(2.,90.,errore.str().c_str());            t->DrawLatex(2.,90.,errore.str().c_str());
1452          }          }
1453          if (j == 4) {          if (j == 4) {
# Line 1237  void FCaloQLOOK(TString filename, Int_t Line 1483  void FCaloQLOOK(TString filename, Int_t
1483            errore << "Missing section: " << ver[i][j];            errore << "Missing section: " << ver[i][j];
1484            errore << " time(s)";            errore << " time(s)";
1485            t->DrawLatex(2.,50.,errore.str().c_str());            t->DrawLatex(2.,50.,errore.str().c_str());
1486            check = true;            if ( ver[i][j] > 3 ) check = true;
1487          }          }
1488          if (j == 10) {          if (j == 10) {
1489            errore.str("");            errore.str("");
1490            errore << "Calevnum jump: " << ver[i][j];            errore << "Calevnum jump: " << ver[i][j];
1491            errore << " time(s)";            errore << " time(s)";
1492            t->DrawLatex(2.,42.,errore.str().c_str());            t->DrawLatex(2.,42.,errore.str().c_str());
1493            check = true;            if ( ver[i][j] > 3 ) check = true;
1494          }          }
1495          if (j == 11) {          if (j == 11) {
1496            errore.str("");            errore.str("");
1497            errore << "CRC error (data): " << ver[i][j];            errore << "CRC error (data): " << ver[i][j];
1498            errore << " time(s)";            errore << " time(s)";
1499            t->DrawLatex(2.,38.,errore.str().c_str());            t->DrawLatex(2.,38.,errore.str().c_str());
1500            check = true;            if ( ver[i][j] > 10 ) check = true;
1501          }          }
1502          if (j == 12) {          if (j == 12) {
1503            errore.str("");            errore.str("");
# Line 1285  void FCaloQLOOK(TString filename, Int_t Line 1531  void FCaloQLOOK(TString filename, Int_t
1531            errore.str("");            errore.str("");
1532            errore << "COMPRESS mode: " << ver[i][j];            errore << "COMPRESS mode: " << ver[i][j];
1533            errore << " time(s)";            errore << " time(s)";
1534            t->SetTextColor(32);            if ( !redevent ) t->SetTextColor(32);
1535            t->DrawLatex(2.,86.,errore.str().c_str());            t->DrawLatex(2.,86.,errore.str().c_str());
1536          }          }
1537          if (j == 17) {          if (j == 17) {
1538            errore.str("");            errore.str("");
1539            errore << "FULL mode: " << ver[i][j];            errore << "FULL mode: " << ver[i][j];
1540            errore << " time(s)";            errore << " time(s)";
1541            t->SetTextColor(32);            if ( !redevent ) t->SetTextColor(32);
1542            t->DrawLatex(2.,82.,errore.str().c_str());            t->DrawLatex(2.,82.,errore.str().c_str());
1543          }          }
1544          if (j == 18) {          if (j == 18) {
# Line 1330  void FCaloQLOOK(TString filename, Int_t Line 1576  void FCaloQLOOK(TString filename, Int_t
1576            t->DrawLatex(2.,3.,errore.str().c_str());            t->DrawLatex(2.,3.,errore.str().c_str());
1577            check = true;            check = true;
1578          };          };
1579        };          //aggiunto questo errore
1580      };          if (j == 23) {
1581              errore.str("");
1582              errore << "Corrupted packet lenght " << ver[i][j];
1583              errore << " time(s) ";
1584              t->DrawLatex(2.,2.,errore.str().c_str());
1585              check = true;
1586            };
1587          };
1588        };
1589      t->SetTextColor(50);      t->SetTextColor(50);
1590      if ( fulldiff[i] !=0 ) {      if ( fulldiff[i] !=0 ) {
1591        check = true;        check = true;
# Line 1358  void FCaloQLOOK(TString filename, Int_t Line 1612  void FCaloQLOOK(TString filename, Int_t
1612    if ( check ){    if ( check ){
1613      t->SetTextColor(50);      t->SetTextColor(50);
1614      t->DrawLatex(60.,95.," WARNING, CHECK! ");        t->DrawLatex(60.,95.," WARNING, CHECK! ");  
     printf("cdexyc %f cdexy %f ctshit %f cbase %f \n",cdexyc,cdexy,ctshit,cbase);  
1615    } else {    } else {
1616      t->SetTextColor(32);      t->SetTextColor(32);
1617      t->DrawLatex(60.,95.," OK! ");            t->DrawLatex(60.,95.," OK! ");      
1618    };    };
1619      printf("cdexyc %f cdexy %f ctshit %f cbase %f \n",cdexyc,cdexy,ctshit,cbase);
1620    //    //
1621    const string fil = (const char*)filename;    //  const string fil = (const char*)filename;
1622    Int_t posiz = fil.find("dw_");    //  Int_t posiz = fil.find("dw_");
1623    if ( posiz == -1 ) posiz = fil.find("DW_");    //  if ( posiz == -1 ) posiz = fil.find("DW_");
1624    Int_t posiz2 = posiz+13;    //  Int_t posiz2 = posiz+13;
1625    TString file2;    //  TString file2;
1626    stringcopy(file2,filename,posiz,posiz2);    //  stringcopy(file2,filename,posiz,posiz2);
1627    //    //
1628      const string fil = gSystem->BaseName(filename.Data());
1629      Int_t posiz = fil.find(".root");
1630      //
1631      TString file2;
1632      if ( posiz == -1 ){
1633        file2 = gSystem->BaseName(filename.Data());
1634      } else {
1635        Int_t posiz2 = 0;
1636        stringcopy(file2,gSystem->BaseName(filename.Data()),posiz2,posiz);
1637      };
1638    const char *figrec = file2;    const char *figrec = file2;
1639      //
1640    const char *outdir = outDir;    const char *outdir = outDir;
1641    stringstream figsave;        stringstream figsave;    
1642    stringstream figsave1;        stringstream figsave1;    
# Line 1380  void FCaloQLOOK(TString filename, Int_t Line 1645  void FCaloQLOOK(TString filename, Int_t
1645    if ( !strcmp(format,"ps") ) {    if ( !strcmp(format,"ps") ) {
1646      figsave.str("");      figsave.str("");
1647      figsave << outdir << "/" ;      figsave << outdir << "/" ;
1648      figsave << figrec << "_qlook.";      figsave << figrec << "_CaloQLOOK.";
1649      figsave << format << "(";      figsave << format << "(";
1650      rapporto->Print(figsave.str().c_str(),"Landscape");          rapporto->Print(figsave.str().c_str(),"Landscape");    
1651      figsave1.str("");      figsave1.str("");
1652      figsave1 << outdir << "/" ;      figsave1 << outdir << "/" ;
1653      figsave1 << figrec << "_qlook.";      figsave1 << figrec << "_CaloQLOOK.";
1654      figsave1 << format;      figsave1 << format;
1655      figura->Print(figsave1.str().c_str(),"Landscape");      figura->Print(figsave1.str().c_str(),"Landscape");
1656      figsave2.str("");      figsave2.str("");
1657      figsave2 << outdir << "/" ;      figsave2 << outdir << "/" ;
1658      figsave2 << figrec << "_qlook.";      figsave2 << figrec << "_CaloQLOOK.";
1659      if ( printfigure3 ){      if ( printfigure3 ){
1660        figsave2 << format;        figsave2 << format;
1661        figura2->Print(figsave2.str().c_str(),"Landscape");        figura2->Print(figsave2.str().c_str(),"Landscape");
1662        figsave2.str("");        figsave2.str("");
1663        figsave2 << outdir << "/" ;        figsave2 << outdir << "/" ;
1664        figsave2 << figrec << "_qlook.";        figsave2 << figrec << "_CaloQLOOK.";
1665        figsave2 << format << ")";        figsave2 << format << ")";
1666        figura3->Print(figsave2.str().c_str(),"Landscape");        figura3->Print(figsave2.str().c_str(),"Landscape");
1667      } else {      } else {
# Line 1406  void FCaloQLOOK(TString filename, Int_t Line 1671  void FCaloQLOOK(TString filename, Int_t
1671    } else {    } else {
1672      figsave.str("");      figsave.str("");
1673      figsave << outdir << "/" ;      figsave << outdir << "/" ;
1674      figsave << figrec << "_qlook1.";      figsave << figrec << "_CaloQLOOK1.";
1675      figsave << format;      figsave << format;
1676      figura->SaveAs(figsave.str().c_str());      figura->SaveAs(figsave.str().c_str());
1677      figsave.str("");      figsave.str("");
1678      figsave << outdir << "/" ;      figsave << outdir << "/" ;
1679      figsave << figrec << "_qlook2.";      figsave << figrec << "_CaloQLOOK2.";
1680      figsave << format;      figsave << format;
1681      figura2->SaveAs(figsave.str().c_str());      figura2->SaveAs(figsave.str().c_str());
1682      if ( printfigure3 ){      if ( printfigure3 ){
1683        figsave.str("");        figsave.str("");
1684        figsave << outdir << "/" ;        figsave << outdir << "/" ;
1685        figsave << figrec << "_qlook2bis.";        figsave << figrec << "_CaloQLOOK2bis.";
1686        figsave << format;        figsave << format;
1687        figura3->SaveAs(figsave.str().c_str());        figura3->SaveAs(figsave.str().c_str());
1688      };      };
1689      figsave.str("");      figsave.str("");
1690      figsave << outdir << "/" ;      figsave << outdir << "/" ;
1691      figsave << figrec << "_qlook3.";      figsave << figrec << "_CaloQLOOK3.";
1692      figsave << format;      figsave << format;
1693      rapporto->SaveAs(figsave.str().c_str());          rapporto->SaveAs(figsave.str().c_str());    
1694    };    };
1695      if ( iactive && w4i ){
1696        while ( gROOT->GetListOfCanvases()->FindObject(rapporto) || gROOT->GetListOfCanvases()->FindObject(figura3) || gROOT->GetListOfCanvases()->FindObject(figura2) || gROOT->GetListOfCanvases()->FindObject(figura) ){
1697          gSystem->ProcessEvents();
1698          gSystem->Sleep(10);
1699        };
1700      };
1701  }  }
   

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.24

  ViewVC Help
Powered by ViewVC 1.1.23