/[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.7 by mocchiut, Wed Mar 22 15:04:11 2006 UTC revision 1.23 by mocchiut, Mon Sep 22 20:12:28 2008 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.06  (2006-03-22)  //   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
21    //                             case of latchup alarm.
22    //
23  //   1.05 - 1.06 (2006-03-22): Add optimize flag in compiling the script!  //   1.05 - 1.06 (2006-03-22): Add optimize flag in compiling the script!
24  //  //
25  //   1.04 - 1.05 (2006-03-22): Corrected wrong .C files.  //   1.04 - 1.05 (2006-03-22): Corrected wrong .C files.
# Line 27  Line 40 
40  #include <TObject.h>  #include <TObject.h>
41  #include <TString.h>  #include <TString.h>
42  #include <TFile.h>  #include <TFile.h>
43    #include <TROOT.h>
44  #include <TCanvas.h>  #include <TCanvas.h>
45  #include <TH1.h>  #include <TH1.h>
46  #include <TH1F.h>  #include <TH1F.h>
# Line 36  Line 50 
50  #include <TPolyLine.h>  #include <TPolyLine.h>
51  #include <TStyle.h>  #include <TStyle.h>
52  #include <TSystem.h>  #include <TSystem.h>
53    #include <TApplication.h>
54  //  //
55  #include <PamelaRun.h>  #include <PamelaRun.h>
56  #include <physics/calorimeter/CalorimeterEvent.h>  #include <physics/calorimeter/CalorimeterEvent.h>
# Line 62  void stringappend(TString& s1, const TSt Line 77  void stringappend(TString& s1, const TSt
77  }  }
78    
79  TString getFilename(const TString filename){  TString getFilename(const TString filename){
80    const string fil = (const char*)filename;    //
81    Int_t posiz = fil.find("dw_");    const string fil = gSystem->BaseName(filename.Data());
82    if ( posiz == -1 ) posiz = fil.find("DW_");    Int_t posiz = fil.find(".root");
83    if ( posiz == -1 ) return 0;    //
   Int_t posiz2 = posiz+13;  
84    TString file2;    TString file2;
85    stringcopy(file2,filename,posiz,posiz2);    if ( posiz == -1 ){
86    TString pdat(".dat");      file2 = gSystem->BaseName(filename.Data());
87    stringappend(file2,pdat);    } else {
88        Int_t posiz2 = 0;
89        stringcopy(file2,gSystem->BaseName(filename.Data()),posiz2,posiz);
90        TString pdat(".pam");
91        stringappend(file2,pdat);  
92      };
93    return file2;    return file2;
94  }  }
95    
96  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){
97      if ( !evdone ){    
98        printf("\n\n=================================================\n");
99        printf("PSCU-Pkt N. %u - OBT %u ms\n",pkt_num,obt);
100        printf("Total events %u\n",totev);
101        printf("(ROOT-tree entry %u )\n",entry);
102        if ( (totev-1) == entry ) printf("NOTICE: this is last entry! \n");
103        printf("=================================================\n");
104        evdone = true;
105      };
106      TString sec = "UNKNOWN";
107      if ( section == 0 ) sec = "XE";
108      if ( section == 1 ) sec = "XO";
109      if ( section == 2 ) sec = "YE";
110      if ( section == 3 ) sec = "YO";
111      printf(" Section %s (DSP n. %i) message: ",sec.Data(),section);
112    };
113    
114    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){
115    gStyle->SetPaperSize(19.,25.);    gStyle->SetPaperSize(19.,25.);
116    const char* startingdir = gSystem->WorkingDirectory();    const char* startingdir = gSystem->WorkingDirectory();
117      //  printf(" basename is %s \n",gSystem->BaseName(filename.Data()));
118      //  printf(" getfilename is %s \n",getFilename(filename).Data());
119    if ( !strcmp(outDir.Data(),"") ) outDir = startingdir;    if ( !strcmp(outDir.Data(),"") ) outDir = startingdir;
120    //    //
121      TApplication *app = 0;
122      if ( iactive ) app = new TApplication("app",0,0);
123    //    //
124    ifstream myfile;    ifstream myfile;
125    myfile.open(filename.Data());    myfile.open(filename.Data());
# Line 100  void FCaloQLOOK(TString filename, Int_t Line 141  void FCaloQLOOK(TString filename, Int_t
141    //    //
142    Float_t ctshitthr = 0.65;    Float_t ctshitthr = 0.65;
143    Float_t cbasethr = 0.95;    Float_t cbasethr = 0.95;
144    Float_t cdexythr = 0.995;    //  Float_t cdexythr = 0.995;
145      Float_t cdexythr = 0.95;
146      //Float_t cdexythr = 0.90;
147    Float_t cdexycthr = 0.95;    Float_t cdexycthr = 0.95;
148      Float_t h1rth = 0.90;
149      Int_t calevnth = 13;
150    //    //
151    pamela::calorimeter::CalorimeterEvent *ce = 0;    pamela::calorimeter::CalorimeterEvent *ce = 0;
152    pamela::EventHeader *eh = 0;    pamela::EventHeader *eh = 0;
# Line 148  void FCaloQLOOK(TString filename, Int_t Line 193  void FCaloQLOOK(TString filename, Int_t
193    };    };
194    Int_t const size = nevents;    Int_t const size = nevents;
195    Double_t iev2[size+1];    Double_t iev2[size+1];
196    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
197      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];
198    se = 0;    se = 0;
199    pl = 0;        pl = 0;    
200    Float_t allbase = 0.;    Float_t allbase = 0.;
# Line 176  void FCaloQLOOK(TString filename, Int_t Line 222  void FCaloQLOOK(TString filename, Int_t
222    TH1F *calev01;    TH1F *calev01;
223    TH1F *calev23;    TH1F *calev23;
224    TH1F *calev03;    TH1F *calev03;
225      TH1F *lupstw[4];
226      TH1F *lup[4];
227    TH2D *calev2;    TH2D *calev2;
228    
229    h1 = new TH1F("C7","Strips hit, compress mode",100,0.,200.);    h1 = new TH1F("C7","Strips hit, compress mode",100,0.,200.);
# Line 185  void FCaloQLOOK(TString filename, Int_t Line 233  void FCaloQLOOK(TString filename, Int_t
233    hdiff->SetBit(TH1F::kCanRebin);    hdiff->SetBit(TH1F::kCanRebin);
234    Baseline = new TH1F("C9","baselines",100,0,3);    Baseline = new TH1F("C9","baselines",100,0,3);
235    Baseline->SetBit(TH1F::kCanRebin);    Baseline->SetBit(TH1F::kCanRebin);
236    Dexy = new TH1F("C12","dexy",100,0.,37000.);    Dexy = new TH1F("C12","dexy",100,0.,10000.);
237    Dexyc = new TH1F("C10","dexyc",100,0,3);    Dexy->SetBit(TH1F::kCanRebin);
238    Dexyc->SetBit(TH1F::kCanRebin);    Dexyc = new TH1F("C10","dexyc",100,-100.,37000.);
239    //  Dexyc->SetBit(TH1F::kCanRebin);
240    Calstriphit = new TH1F("C11","calstriphit[1:4]",100,0.,200.);    Calstriphit = new TH1F("C11","calstriphit[1:4]",100,0.,200.);
241            
242    calev01 = new TH1F("C3","|calevnum(1)-calevnum(2)|",100,0,1);    calev01 = new TH1F("C3","|calevnum(1)-calevnum(2)|",100,0,1);
# Line 198  void FCaloQLOOK(TString filename, Int_t Line 247  void FCaloQLOOK(TString filename, Int_t
247    calev03->SetBit(TH1F::kCanRebin);    calev03->SetBit(TH1F::kCanRebin);
248    calev2 = new TH2D("C2","calevnum(2)%iev",3000,0.,2.,100,0.,2.);    calev2 = new TH2D("C2","calevnum(2)%iev",3000,0.,2.,100,0.,2.);
249    calev2->SetBit(TH2D::kCanRebin);    calev2->SetBit(TH2D::kCanRebin);
250        
251      stringstream oss;
252      stringstream noss;
253      for ( Int_t i=0; i<4; i++){
254        oss.str("");
255        oss << "OBT stw latch up section " << i;
256        noss.str("");
257        noss << "C" << 21+i;
258        lupstw[i] = new TH1F(noss.str().c_str(),oss.str().c_str(),100,-1,1);
259        lupstw[i]->SetBit(TH1F::kCanRebin);
260        oss.str("");
261        oss << "OBT no stw latch up section " << i;
262        noss.str("");
263        noss << "C" << 25+i;
264        lup[i] = new TH1F(noss.str().c_str(),oss.str().c_str(),100,-1,1);
265        lup[i]->SetBit(TH1F::kCanRebin);
266      };
267    
268    //    //
269    // run over each event and take out some variables    // run over each event and take out some variables
270    //    //
# Line 230  void FCaloQLOOK(TString filename, Int_t Line 296  void FCaloQLOOK(TString filename, Int_t
296        maxevent = fromevent - 1;        maxevent = fromevent - 1;
297      };      };
298    };    };
299          //azzera i tipi di errore
300    for (Int_t k = 0; k < 4; k++ ){    for (Int_t k = 0; k < 4; k++ ){
301      for (Int_t m = 0; m < 23 ; m++ ){      for (Int_t m = 0; m < 23 ; m++ ){
302        ver[k][m] = 0 ;        ver[k][m] = 0 ;
# Line 242  void FCaloQLOOK(TString filename, Int_t Line 308  void FCaloQLOOK(TString filename, Int_t
308        };        };
309        lalarm[k] = 0;        lalarm[k] = 0;
310      };      };
311        //il 23 lo azzero cosi per non modificare le altre variabili
312        ver[k][23]=0;
313    };    };
314    Int_t pdone, bdone;    Int_t pdone, bdone;
315    pdone = 0;    pdone = 0;
316    bdone = 0;    bdone = 0;
317    bool isCOMP = 0;    bool isCOMP = false;
318    bool isFULL = 0;    bool isFULL = false;
319    bool isRAW = 0;    bool isRAW = false;
320    Int_t alldexy=0;    Int_t alldexy=0;
321    Int_t alldexy2=0;    Int_t alldexy2=0;
322    Int_t stri=0;    Int_t planebases=0;
323      //  Int_t stri=0;
324    Int_t fcheck = 0;    Int_t fcheck = 0;
325    Int_t cestw=0;    Int_t cestw=0;
326    Int_t cmask = 127 ;    Int_t cmask = 127 ;
# Line 266  void FCaloQLOOK(TString filename, Int_t Line 335  void FCaloQLOOK(TString filename, Int_t
335    fulldiff[1] = 0;    fulldiff[1] = 0;
336    fulldiff[2] = 0;    fulldiff[2] = 0;
337    fulldiff[3] = 0;      fulldiff[3] = 0;  
338    printf("\n Processed events: \n\n");    //  printf("\n Processed events: \n\n");
339      printf("\n Start processing: \n\n");
340    unsigned short int calev0=0;    unsigned short int calev0=0;
341    unsigned short int oldcalev0;    unsigned short int oldcalev0;
342    unsigned short int calev1=0;    unsigned short int calev1=0;
# Line 276  void FCaloQLOOK(TString filename, Int_t Line 346  void FCaloQLOOK(TString filename, Int_t
346    unsigned short int calev3=0;    unsigned short int calev3=0;
347    unsigned short int oldcalev3;    unsigned short int oldcalev3;
348    Int_t i = minevent;    Int_t i = minevent;
349    Float_t headc = 0.;    UInt_t headc = 0;
350    Float_t headco = 0.;    UInt_t headco = 0;
351    Bool_t h1rcheck = false;    Bool_t h1rcheck = false;
352      Int_t h1rin = 0;
353      Int_t h1rout = 0;
354    Int_t intshit = 0;    Int_t intshit = 0;
355    Int_t outtshit = 0;    Int_t outtshit = 0;
356    Int_t incshit = 0;    Int_t incshit = 0;
# Line 289  void FCaloQLOOK(TString filename, Int_t Line 361  void FCaloQLOOK(TString filename, Int_t
361    Int_t outdexy = 0;    Int_t outdexy = 0;
362    Int_t indexyc = 0;    Int_t indexyc = 0;
363    Int_t outdexyc = 0;    Int_t outdexyc = 0;
364      UInt_t obt = 0;
365      UInt_t minobt[4];
366      UInt_t maxobt[4];
367      UInt_t swminobt[4];
368      UInt_t swmaxobt[4];
369      Bool_t firstobt[4];
370      Bool_t swfirstobt[4];
371      for ( Int_t i = 0; i<4; i++){
372        minobt[i] = 0;
373        maxobt[i] = 0;
374        swminobt[i] = 0;
375        swmaxobt[i] = 0;
376        firstobt[i] = true;
377        swfirstobt[i] = true;
378      };
379      Bool_t evdone = false;
380      //
381    while ( i < maxevent+1){    while ( i < maxevent+1){
382        evdone = false;
383      tshit = 0;      tshit = 0;
384      trshit = 0;      trshit = 0;
385      tr->GetEntry(i);      tr->GetEntry(i);
386    
387      iev2[i] = ce->iev;          iev2[i] = ce->iev;    
388      //      //
389      ph = eh->GetPscuHeader();      ph = eh->GetPscuHeader();
390      headco = headc;      headco = headc;
391      headc = ph->GetCounter();      headc = ph->GetCounter();
392      calevn1 += (int)abs((int)(ce->calevnum[0]-ce->calevnum[1]));      obt = ph->GetOrbitalTime();
393      calevn2 += (int)abs((int)(ce->calevnum[2]-ce->calevnum[3]));  
394      calevn3 += (int)abs((int)(ce->calevnum[0]-ce->calevnum[3]));      if ( (int)abs((int)(ce->calevnum[0]-ce->calevnum[1])) ) calevn1++;
395        if ( (int)abs((int)(ce->calevnum[2]-ce->calevnum[3])) ) calevn2++;
396        if ( (int)abs((int)(ce->calevnum[0]-ce->calevnum[3])) ) calevn3++;
397      calev01->Fill(abs((int)(ce->calevnum[0]-ce->calevnum[1])));      calev01->Fill(abs((int)(ce->calevnum[0]-ce->calevnum[1])));
398      calev23->Fill(abs((int)(ce->calevnum[2]-ce->calevnum[3])));      calev23->Fill(abs((int)(ce->calevnum[2]-ce->calevnum[3])));
399      calev03->Fill(abs((int)(ce->calevnum[0]-ce->calevnum[3])));      calev03->Fill(abs((int)(ce->calevnum[0]-ce->calevnum[3])));
# Line 315  void FCaloQLOOK(TString filename, Int_t Line 408  void FCaloQLOOK(TString filename, Int_t
408      calevv2 = (int)ce->calevnum[2];      calevv2 = (int)ce->calevnum[2];
409      oldcalev3 = calev3;      oldcalev3 = calev3;
410      calev3 = (int)ce->calevnum[3];      calev3 = (int)ce->calevnum[3];
411      goto jumpprintout;      //    goto jumpprintout;
412      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) ){
413        if ( i != minevent ) {        if ( i != minevent ) {
414          printf(" %f 0 Event %i: %i\n",headco,i,oldcalev0);  //      printf(" %f 0 Event %i: %i\n",headco,i,oldcalev0);
415          printf(" %f 0 Event %i: %i\n",headc,i+1,calev0);            //      printf(" %f 0 Event %i: %i\n",headc,i+1,calev0);          
416          printf(" %f 1 Event %i: %i\n",headco,i,oldcalev1);  //      printf(" %f 1 Event %i: %i\n",headco,i,oldcalev1);
417          printf(" %f 1 Event %i: %i\n",headc,i+1,calev1);            //      printf(" %f 1 Event %i: %i\n",headc,i+1,calev1);          
418          printf(" %f 2 Event %i: %i\n",headco,i,oldcalev2);  //      printf(" %f 2 Event %i: %i\n",headco,i,oldcalev2);
419          printf(" %f 2 Event %i: %i\n",headc,i+1,calevv2);            //      printf(" %f 2 Event %i: %i\n",headc,i+1,calevv2);          
420          printf(" %f 3 Event %i: %i\n",headco,i,oldcalev3);  //      printf(" %f 3 Event %i: %i\n",headco,i,oldcalev3);
421          printf(" %f 3 Event %i: %i\n",headc,i+1,calev3);          //      printf(" %f 3 Event %i: %i\n",headc,i+1,calev3);        
422          isRAW = 0;          isRAW = 0;
423          if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;                  if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;        
424          if ( (calev0 - oldcalev0 - 1) > 0 && !isRAW && ce->perror[0] != 129 && oldcalev0 != 0) {          if ( (calev0 - oldcalev0 - 1) > 0 && !isRAW && ce->perror[0] != 129 && oldcalev0 != 0) {
425            ver[0][10]++;            ver[0][10]++;
426              sighandler(headc,obt,i,0,nevents,evdone);
427              printf(" jump in the counter calev is %i oldcalev was %i \n",calev0,oldcalev0);
428          };          };
429          isRAW = 0;          isRAW = 0;
430          if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;                  if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;        
431          if ( (calev1 - oldcalev1 - 1) > 0 && !isRAW && ce->perror[1] != 129 && oldcalev1 != 0 ){          if ( (calev1 - oldcalev1 - 1) > 0 && !isRAW && ce->perror[1] != 129 && oldcalev1 != 0 ){
432            ver[1][10]++;            ver[1][10]++;
433              sighandler(headc,obt,i,1,nevents,evdone);
434              printf(" jump in the counter calev is %i oldcalev was %i \n",calev1,oldcalev1);
435          };          };
436          isRAW = 0;          isRAW = 0;
437          if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;                  if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;        
438          if ( (calevv2 - oldcalev2 - 1) > 0 && !isRAW && ce->perror[2] != 129 && oldcalev2 != 0 ){          if ( (calevv2 - oldcalev2 - 1) > 0 && !isRAW && ce->perror[2] != 129 && oldcalev2 != 0 ){
439            ver[2][10]++;            ver[2][10]++;
440              sighandler(headc,obt,i,2,nevents,evdone);
441              printf(" jump in the counter calev is %i oldcalev was %i \n",calevv2,oldcalev2);
442          };          };
443          isRAW = 0;          isRAW = 0;
444          if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;                  if ( ce->stwerr[0] & (1 << 3)) isRAW = 1;        
445          if ( (calev3 - oldcalev3 - 1) > 0 && !isRAW && ce->perror[3] != 129 && oldcalev3 != 0 ){          if ( (calev3 - oldcalev3 - 1) > 0 && !isRAW && ce->perror[3] != 129 && oldcalev3 != 0 ){
446            ver[3][10]++;            ver[3][10]++;
447              sighandler(headc,obt,i,3,nevents,evdone);
448              printf(" jump in the counter calev is %i oldcalev was %i \n",calev3,oldcalev3);
449          };          };
450        }        };
451      };      };
452    jumpprintout:      //  jumpprintout:
453      memcpy(shit, nullsh, sizeof(nullsh));      memcpy(shit, nullsh, sizeof(nullsh));
454      memcpy(rshit, nullsh, sizeof(nullsh));      memcpy(rshit, nullsh, sizeof(nullsh));
455      for (Int_t l = 0; l < 2; l++ ){      for (Int_t l = 0; l < 2; l++ ){
# Line 372  void FCaloQLOOK(TString filename, Int_t Line 473  void FCaloQLOOK(TString filename, Int_t
473            se = 1;            se = 1;
474            pl = (ii-1)/2;            pl = (ii-1)/2;
475            pdone = 0;            pdone = 0;
476          };          };              
477                            isCOMP = false;
478          isCOMP = 0;          isFULL = false;
479          isFULL = 0;          isRAW = false;
480          isRAW = 0;          if ( ce->stwerr[se] & (1 << 16) ) isCOMP = true;
481          if ( ce->stwerr[se] & (1 << 16) ) isCOMP = 1;          if ( ce->stwerr[se] & (1 << 17) ) isFULL = true;
482          if ( ce->stwerr[se] & (1 << 17) ) isFULL = 1;          if ( ce->stwerr[se] & (1 << 3) ) isRAW = true;
         if ( ce->stwerr[se] & (1 << 3) ) isRAW = 1;  
483          bl = -1;          bl = -1;
484          for (Int_t kk = 0; kk < 96 ; kk++ ){          for (Int_t kk = 0; kk < 96 ; kk++ ){
485            if ( kk%16 == 0 ){            if ( kk%16 == 0 ){
486              bdone = 0;              bdone = 0;
487              bl++;              bl++;
488              allbase = ce->base[l][ii][bl];              allbase = ce->base[l][ii][bl];
489                //      alldexy=0;
490                //      alldexy2=0;
491                //      stri=0;
492                //      for (Int_t e = 0; e < 16 ; e++ ){
493                //        stri = e + 16 * bl;
494                //        alldexy += (int)ce->dexyc[l][ii][stri];
495                //        alldexy2 += (int)ce->dexy[l][ii][stri];
496                //      };
497              };
498              //
499              if ( kk == 0 ){
500                planebases = 0;
501              alldexy=0;              alldexy=0;
502              alldexy2=0;              alldexy2=0;
503              stri=0;              for (Int_t e = 0; e < 96 ; e++ ){
504              for (Int_t e = 0; e < 16 ; e++ ){                if ( e < 6 ) planebases += (int)ce->base[l][ii][e];
505                stri = e + 16 * bl;                alldexy += (int)ce->dexyc[l][ii][e];
506                alldexy += (int)ce->dexyc[l][ii][stri];                alldexy2 += (int)ce->dexy[l][ii][e];
               alldexy2 += (int)ce->dexy[l][ii][stri];  
507              };              };
508            };            };
509              //
510            if ( !isRAW ) {            if ( !isRAW ) {
511              //              //
512              if ( !pdone ){              if ( !pdone ){
513                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 ) {
514                  if ( (planebases>192000 || planebases == 0 ) && ( alldexy > 3072000 ||  alldexy == 0) && ce->perror[se] == 0 ) {
515                  pdone = 1;                  pdone = 1;
516                  pshit[se][pl]++ ;                  pshit[se][pl]++ ;
517                  if ( (ce->stwerr[se] & (1 << 4)) == 0 ) lalarm[se]++;                  if ( (ce->stwerr[se] & (1 << 4)) == 0 ) {
518                  lver[se][2]++ ;                    lalarm[se]++;
519                      lup[se]->Fill(obt);
520                      if ( firstobt[se] ) minobt[se] = obt;
521                      if ( obt > maxobt[se] ) maxobt[se] = obt;
522                    };
523                    lver[se][2]++ ;        
524                    if ( lver[se][2] == 1000 ){
525                      sighandler(headc,obt,i,se,nevents,evdone);
526                      printf(" latch up (data) in DSP mode alldexy %i planebases %i \n",alldexy,planebases);
527                      printf(" WARNING TOO MANY LATCHUP ERRORS ON DATA FOR THIS SECTION \n");
528                      printf(" THEY WILL NOT BE DISPLAYED HERE ANYMORE FOR THIS FILE! \n");
529                    };
530                    if ( lver[se][2] < 1000 ){
531                      sighandler(headc,obt,i,se,nevents,evdone);
532                      printf(" latch up (data) in DSP mode alldexy %i planebases %i \n",alldexy,planebases);
533                    };
534                };                };
535              }              }
536              //              //
537              if ( !bdone ){              if ( !bdone ){
538                Baseline->Fill(ce->base[l][ii][bl]);                Baseline->Fill(ce->base[l][ii][bl]);
539                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. ){
540                  inbase++;                  inbase++;
541                } else {                } else {
542                  outbase++;                  outbase++;
# Line 446  void FCaloQLOOK(TString filename, Int_t Line 574  void FCaloQLOOK(TString filename, Int_t
574                indexyc++;                                            indexyc++;                            
575              };              };
576              //              //
577              if (ce->dexyc[l][ii][kk] < 0 ) ver[se][21]++ ;              if (ce->dexyc[l][ii][kk] < 0 ){
578                  ver[se][21]++ ;
579                  sighandler(headc,obt,i,se,nevents,evdone);
580                  printf(" negative ADC values!! ce->dexyc[%i][%i][%i] = %f \n",l,ii,kk,ce->dexyc[l][ii][kk]);
581                };
582              //              //
583              if ( allbase == 0. || allbase > 32000.) {              if ( allbase == 0. || allbase > 32000.) {
584                fcheck = 0;                fcheck = 0;
# Line 461  void FCaloQLOOK(TString filename, Int_t Line 593  void FCaloQLOOK(TString filename, Int_t
593              //              //
594            } else {            } else {
595              if ( !pdone ){              if ( !pdone ){
596                if ( (alldexy2>512000 || alldexy2 == 0) && ce->perror[se] == 0 ) {                if ( ( alldexy2 > 3072000 ||  alldexy2 == 0) && ce->perror[se] == 0 ) {
597                    //            if ( (alldexy2>512000 || alldexy2 == 0) && ce->perror[se] == 0 )
598                  pdone = 1;                  pdone = 1;
599                  pshit[se][pl]++ ;                                          pshit[se][pl]++ ;                        
600                  if ( (ce->stwerr[se] & (1 << 4)) == 0 ) lalarm[se]++;                  if ( (ce->stwerr[se] & (1 << 4)) == 0 ){
601                      lalarm[se]++;
602                      lup[se]->Fill(obt);
603                      if ( firstobt[se] ) minobt[se] = obt;
604                      if ( obt > maxobt[se] ) maxobt[se] = obt;
605                    };
606                  lver[se][2]++ ;                  lver[se][2]++ ;
607                    if ( lver[se][2] == 1000 ){
608                      sighandler(headc,obt,i,se,nevents,evdone);
609                      printf(" latch up (data) in RAW mode alldexy2 %i \n",alldexy2);
610                      printf(" WARNING TOO MANY LATCHUP ERRORS ON DATA FOR THIS SECTION \n");
611                      printf(" THEY WILL NOT BE DISPLAYED HERE ANYMORE FOR THIS FILE! \n");
612                    };
613                    if ( lver[se][2] < 1000 ){
614                      sighandler(headc,obt,i,se,nevents,evdone);
615                      printf(" latch up (data) in RAW mode alldexy2 %i \n",alldexy2);
616                    };
617                };                };
618              };              };
619              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 484  void FCaloQLOOK(TString filename, Int_t Line 632  void FCaloQLOOK(TString filename, Int_t
632      };      };
633      cshit = 0;      cshit = 0;
634      for (Int_t k = 0; k < 4 ; k++ ){      for (Int_t k = 0; k < 4 ; k++ ){
635        isCOMP = 0;        isCOMP = false;
636        isFULL = 0;        isFULL = false;
637        if ( ce->stwerr[se] & (1 << 16) ) isCOMP = 1;        cestw=0;// queste righe qui
638        if ( ce->stwerr[se] & (1 << 17) ) isFULL = 1;        if ( ce->stwerr[k] ) cestw =  ce->stwerr[k] & cmask ;//
639          if ( ce->stwerr[k] & (1 << 16) && !(cestw & (1 << 3)) ) isCOMP = true;
640          if ( ce->stwerr[k] & (1 << 17) && !(cestw & (1 << 3)) ) isFULL = true;
641          //
642        if ( isCOMP ) ver[k][16]++;        if ( isCOMP ) ver[k][16]++;
643        if ( isFULL ) ver[k][17]++;        if ( isFULL ) ver[k][17]++;
644        cshit += (int)ce->calstriphit[k];        cshit += (int)ce->calstriphit[k];
       cestw=0;  
       if ( ce->stwerr[k] ) cestw =  ce->stwerr[k] & cmask ;  
645        if ( cestw ){        if ( cestw ){
646          if ( cestw & (1 << 0) ) ver[k][6]++ ;          if ( cestw & (1 << 0) ){
647          if ( cestw & (1 << 1) ) ver[k][5]++ ;            ver[k][6]++ ;
648          if ( cestw & (1 << 2) ) ver[k][4]++ ;            sighandler(headc,obt,i,k,nevents,evdone);
649          if ( cestw & (1 << 3) ) ver[k][3]++ ;            printf(" CRC error (st. word) \n");
650          if ( cestw & (1 << 4) ) ver[k][2]++ ;          };
651          if ( cestw & (1 << 5) ) ver[k][1]++ ;          if ( cestw & (1 << 1) ){
652          if ( cestw & (1 << 6) ) ver[k][0]++ ;                      ver[k][5]++ ;
653        };            sighandler(headc,obt,i,k,nevents,evdone);
654              printf(" execution error \n");
655            };
656            if ( cestw & (1 << 2) ){
657              ver[k][4]++ ;
658              sighandler(headc,obt,i,k,nevents,evdone);
659              printf(" CMD length error \n");
660            };
661            if ( cestw & (1 << 3) ) ver[k][3]++ ; // raw mode
662            if ( cestw & (1 << 4) ){
663              ver[k][2]++ ;
664              if ( ver[k][2] == 1000 ){
665                sighandler(headc,obt,i,k,nevents,evdone);
666                printf(" latch up alarm (st. word)\n");
667                printf(" WARNING TOO MANY LATCHUP ERRORS ON DATA FOR THIS SECTION \n");
668                printf(" THEY WILL NOT BE DISPLAYED HERE ANYMORE FOR THIS FILE! \n");
669              };
670              if ( ver[k][2] < 1000 ){
671                sighandler(headc,obt,i,k,nevents,evdone);
672                printf(" latch up alarm (st. word)\n");
673              };
674              lupstw[k]->Fill(obt);
675              if ( swfirstobt[k] ) swminobt[k] = obt;
676              if ( obt > swmaxobt[k] ) swmaxobt[k] = obt;
677            };
678            if ( cestw & (1 << 5) ){
679              ver[k][1]++ ;
680              sighandler(headc,obt,i,k,nevents,evdone);
681              printf(" temperature alarm  \n");
682            };
683            if ( cestw & (1 << 6) ){
684              ver[k][0]++ ;        
685              sighandler(headc,obt,i,k,nevents,evdone);
686              printf(" DSP ack error \n");
687            };
688          };// controllo se ci sono errori crc se perr=0 ok!
689          if (  ce->stwerr[k] == 0 && ce->perror[k] == 0 ) ver[k][8]++ ;
690        if ( ce->perror[k] != 0. ){        if ( ce->perror[k] != 0. ){
691          if (ce->perror[k] == 128) ver[k][7]++ ;          if (ce->perror[k] == 128){
692          if (ce->perror[k] == 129) ver[k][8]++ ;            ver[k][7]++ ;
693          if (ce->perror[k] == 132) ver[k][11]++ ;            sighandler(headc,obt,i,k,nevents,evdone);
694          if (ce->perror[k] == 133) ver[k][12]++ ;            printf(" view or command not recognized \n");
695          if (ce->perror[k] == 134) ver[k][13]++ ;          };
696          if (ce->perror[k] == 135) ver[k][14]++ ;          if (ce->perror[k] == 129){
697          if (ce->perror[k] == 136) ver[k][15]++ ;            ver[k][8]++ ;
698          if (ce->perror[k] == 139) ver[k][18]++ ;            sighandler(headc,obt,i,k,nevents,evdone);
699          if (ce->perror[k] == 140) ver[k][19]++ ;            printf(" missing section \n");
700          if (ce->perror[k] == 141) ver[k][20]++ ;          };
701          if (ce->perror[k] == 142) ver[k][22]++ ;          if (ce->perror[k] == 132){
702              ver[k][11]++ ;
703              if ( ver[k][11] < 30 ){
704                sighandler(headc,obt,i,k,nevents,evdone);
705                printf(" CRC error (data) \n");
706              };
707              if ( ver[k][11] == 30 ){
708                sighandler(headc,obt,i,k,nevents,evdone);
709                printf(" CRC error (data) \n");
710                printf(" WARNING TOO MANY CRC ERRORS ON DATA FOR THIS SECTION \n");
711                printf(" THEY WILL NOT BE DISPLAYED HERE ANYMORE FOR THIS FILE! \n");
712              };
713            };
714            if (ce->perror[k] == 133){
715              ver[k][12]++ ;
716              sighandler(headc,obt,i,k,nevents,evdone);
717              printf(" length problems in RAW mode \n");
718            };
719            if (ce->perror[k] == 134){
720              ver[k][13]++ ;
721              sighandler(headc,obt,i,k,nevents,evdone);
722              printf(" length problems in COMPRESS mode \n");
723            };
724            if (ce->perror[k] == 135){
725              ver[k][14]++ ;
726              sighandler(headc,obt,i,k,nevents,evdone);
727              printf(" length problems in FULL mode \n");
728            };
729            if (ce->perror[k] == 136){
730              ver[k][15]++ ;
731              sighandler(headc,obt,i,k,nevents,evdone);
732              printf(" acquisition mode problems \n");
733            };
734            if (ce->perror[k] == 139){
735              ver[k][18]++ ;
736              sighandler(headc,obt,i,k,nevents,evdone);
737              printf(" problems with coding\n");
738            };
739            if (ce->perror[k] == 140){
740              ver[k][19]++ ;
741              sighandler(headc,obt,i,k,nevents,evdone);
742              printf(" pedestal checksum wrong\n");
743            };
744            if (ce->perror[k] == 141){
745              ver[k][20]++ ;
746              sighandler(headc,obt,i,k,nevents,evdone);
747              printf(" thresholds checksum wrong\n");
748            };
749            if (ce->perror[k] == 142){
750              ver[k][22]++ ;
751              sighandler(headc,obt,i,k,nevents,evdone);
752              printf(" packet length is zero (YODA input error), skipped\n");
753            };
754            //aggiunto questo errore
755            if (ce->perror[k] == 143){
756              ver[k][23]++ ;
757              sighandler(headc,obt,i,k,nevents,evdone);
758              printf(" corrupted packet lenght \n");
759            };
760        };        };
761        for (Int_t kk = 0; kk < 11 ; kk++ ){        for (Int_t kk = 0; kk < 11 ; kk++ ){
762          tshit += shit[k][kk];          tshit += shit[k][kk];
763          trshit += rshit[k][kk];          trshit += rshit[k][kk];
764        };        };
765      };        };  
766      Calstriphit->Fill(cshit);      if (isCOMP || isFULL){
767      if ( (cshit > 0 && cshit < 25) || (cshit > 40 && cshit < 80) ){        Calstriphit->Fill(cshit);
768        incshit++;        //    if ( (cshit > 0 && cshit < 25) || (cshit > 40 && cshit < 80) ){
769      } else {        //
770        outcshit++;        //cambiata la banda di soglia  ora 5  prima era 10
771      };        //
772      if ( tshit>0 ) h1->Fill(tshit);        if ( (cshit > 5 && cshit < 100) ){
773      if ( (tshit > 0 && tshit < 25) || (tshit > 40 && tshit < 80) ){          incshit++;
774        intshit++;        } else {
775      } else {          outcshit++;
776        outtshit++;        };
777          //
778          if ( tshit>0 ) h1->Fill(tshit);
779          //    if ( (tshit > 0 && tshit < 25) || (tshit > 40 && tshit < 80) ){
780          //cambiata la soglia ora 5  prima era 10
781          if ( (tshit > 5 && tshit < 100) ){
782            intshit++;
783          } else {
784            outtshit++;
785          };
786      };      };
787      if ( trshit>0 ) {      if ( trshit>0 ) {
788        h1r->Fill(trshit);        h1r->Fill(trshit);
789        if ( trshit < 4210 ){        if ( trshit < 4210 ){
790          h1rcheck = true;          h1rout++;
791          //              printf("ma come... trshit %i \n",trshit);          //              printf("ma come... trshit %i \n",trshit);
792          } else {
793            h1rin++;
794        };        };
795      };      };
796      if ( i%1000 == 0 && i > 0 ) printf("%iK\n",i/1000);      //    if ( i%1000 == 0 && i > 0 ) printf("%iK\n",i/1000);
797      i++;      i++;
798    };    };
799    printf("\n");    printf("\n");
800          printf("\n end processing. \n\n");
801      if ( (float)h1rout/((float)h1rin+(float)h1rout) > h1rth ){
802        h1rcheck = true;
803      };    
804    //    //
805    //  output figures, first sheet:    //  output figures, first sheet:
806    //    //
# Line 563  void FCaloQLOOK(TString filename, Int_t Line 820  void FCaloQLOOK(TString filename, Int_t
820    t->DrawLatex(2.,99.,errore.str().c_str());    t->DrawLatex(2.,99.,errore.str().c_str());
821    TPad *pd5;    TPad *pd5;
822    TPad *pd6;    TPad *pd6;
823      TPad *pd7;
824      TPad *pd8;
825    TPad *pad1;    TPad *pad1;
826    TPad *pad2;    TPad *pad2;
827    TPad *pad3;    TPad *pad3;
# Line 607  void FCaloQLOOK(TString filename, Int_t Line 866  void FCaloQLOOK(TString filename, Int_t
866      h1->Draw();      h1->Draw();
867      //      //
868      h1max = h1->GetMaximum()*1.05;      h1max = h1->GetMaximum()*1.05;
869      Double_t xc[4] = {0.,25.,25.,0.};  
870        //cambiata banda  prima era 10  ora 5
871        Double_t xc[4] = {5.,100.,100.,5.};
872      Double_t yc[4] = {0.,0.,h1max,h1max};      Double_t yc[4] = {0.,0.,h1max,h1max};
873      banda1 = new TPolyLine(4,xc,yc);      banda1 = new TPolyLine(4,xc,yc);
874      banda1->SetLineColor(5);      banda1->SetLineColor(5);
875      banda1->SetFillColor(5);      banda1->SetFillColor(5);
876      banda1->SetLineWidth(1);      banda1->SetLineWidth(1);
877      banda1->Draw("fSAME");      banda1->Draw("fSAME");
878      Double_t xd[4] = {40.,80.,80.,40.};    //  Double_t xd[4] = {40.,80.,80.,40.};
879      Double_t yd[4] = {0.,0.,h1max,h1max};     // Double_t yd[4] = {0.,0.,h1max,h1max};
880      banda2 = new TPolyLine(4,xd,yd);     // banda2 = new TPolyLine(4,xd,yd);
881      banda2->SetLineColor(5);     // banda2->SetLineColor(5);
882      banda2->SetFillColor(5);     // banda2->SetFillColor(5);
883      banda2->SetLineWidth(1);     // banda2->SetLineWidth(1);
884      banda2->Draw("fSAME");      //banda2->Draw("fSAME");
885      h1->Draw("SAME");      h1->Draw("SAME");
886      //      //
887      figura->cd();      figura->cd();
# Line 657  void FCaloQLOOK(TString filename, Int_t Line 918  void FCaloQLOOK(TString filename, Int_t
918        h1->SetYTitle("Number of events");        h1->SetYTitle("Number of events");
919        h1->Draw();        h1->Draw();
920        h1max = h1->GetMaximum()*1.05;        h1max = h1->GetMaximum()*1.05;
921        Double_t xe[4] = {0.,25.,25.,0.};        //cambiato banda, prima era 10,ora 5
922          Double_t xe[4] = {5.,100.,100.,5.};
923        Double_t ye[4] = {0.,0.,h1max,h1max};        Double_t ye[4] = {0.,0.,h1max,h1max};
924        banda1 = new TPolyLine(4,xe,ye);        banda1 = new TPolyLine(4,xe,ye);
925        banda1->SetLineColor(5);        banda1->SetLineColor(5);
926        banda1->SetFillColor(5);        banda1->SetFillColor(5);
927        banda1->SetLineWidth(1);        banda1->SetLineWidth(1);
928        banda1->Draw("fSAME");        banda1->Draw("fSAME");
929        Double_t xf[4] = {40.,80.,80.,40.};       // Double_t xf[4] = {40.,80.,80.,40.};
930        Double_t yf[4] = {0.,0.,h1max,h1max};       // Double_t yf[4] = {0.,0.,h1max,h1max};
931        banda2 = new TPolyLine(4,xf,yf);       // banda2 = new TPolyLine(4,xf,yf);
932        banda2->SetLineColor(5);       // banda2->SetLineColor(5);
933        banda2->SetFillColor(5);       // banda2->SetFillColor(5);
934        banda2->SetLineWidth(1);      //  banda2->SetLineWidth(1);
935        banda2->Draw("fSAME");       // banda2->Draw("fSAME");
936        h1->Draw("SAME");        h1->Draw("SAME");
937      };      };
938      if ( trshit !=0 ) {      if ( trshit !=0 ) {
# Line 700  void FCaloQLOOK(TString filename, Int_t Line 962  void FCaloQLOOK(TString filename, Int_t
962      };      };
963    };    };
964    if ( !errorfull ) {    if ( !errorfull ) {
965      if ( calevn1 || calevn2 || calevn3 ) {      if ( calevn1 > calevnth || calevn2 > calevnth || calevn3 > calevnth ) {
966        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);
967        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);
968        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 843  void FCaloQLOOK(TString filename, Int_t Line 1105  void FCaloQLOOK(TString filename, Int_t
1105      Baseline->SetYTitle("Number of events");      Baseline->SetYTitle("Number of events");
1106      Baseline->Draw();      Baseline->Draw();
1107      h1max = Baseline->GetMaximum()*1.05;      h1max = Baseline->GetMaximum()*1.05;
1108      Double_t xc[4] = {2000.,4500.,4500.,2000.};      Double_t xc[4] = {2000.,5500.,5500.,2000.};
1109      Double_t yc[4] = {0.,0.,h1max,h1max};      Double_t yc[4] = {0.,0.,h1max,h1max};
1110      banda1 = new TPolyLine(4,xc,yc);      banda1 = new TPolyLine(4,xc,yc);
1111      banda1->SetLineColor(5);      banda1->SetLineColor(5);
# Line 875  void FCaloQLOOK(TString filename, Int_t Line 1137  void FCaloQLOOK(TString filename, Int_t
1137      Dexyc->Draw("SAME");      Dexyc->Draw("SAME");
1138      //      //
1139      pd3->cd();      pd3->cd();
1140    //    gPad->SetLogy();
1141      Calstriphit->SetXTitle("Number of hit");      Calstriphit->SetXTitle("Number of hit");
1142      Calstriphit->SetYTitle("Number of events");      Calstriphit->SetYTitle("Number of events");
1143      Calstriphit->Draw();      Calstriphit->Draw();
1144      h1max = Calstriphit->GetMaximum()*1.05;      h1max = Calstriphit->GetMaximum()*1.05;
1145      Double_t xg[4] = {0.,25.,25.,0.};  
1146        //banda di sogla portata a 5, prima era a 10
1147        Double_t xg[4] = {5.,100.,100.,5.};
1148      Double_t yg[4] = {0.,0.,h1max,h1max};      Double_t yg[4] = {0.,0.,h1max,h1max};
1149      banda1 = new TPolyLine(4,xg,yg);      banda1 = new TPolyLine(4,xg,yg);
1150      banda1->SetLineColor(5);      banda1->SetLineColor(5);
1151      banda1->SetFillColor(5);      banda1->SetFillColor(5);
1152      banda1->SetLineWidth(1);      banda1->SetLineWidth(1);
1153      banda1->Draw("fSAME");      banda1->Draw("fSAME");
1154      Double_t xh[4] = {40.,80.,80.,40.};    //  Double_t xh[4] = {40.,80.,80.,40.};
1155      Double_t yh[4] = {0.,0.,h1max,h1max};    //  Double_t yh[4] = {0.,0.,h1max,h1max};
1156      banda2 = new TPolyLine(4,xh,yh);    //  banda2 = new TPolyLine(4,xh,yh);
1157      banda2->SetLineColor(5);    //  banda2->SetLineColor(5);
1158      banda2->SetFillColor(5);    //  banda2->SetFillColor(5);
1159      banda2->SetLineWidth(1);    //  banda2->SetLineWidth(1);
1160      banda2->Draw("fSAME");    //  banda2->Draw("fSAME");
1161      Calstriphit->Draw("SAME");      Calstriphit->Draw("SAME");
1162      //      //
1163      pd4->cd();      pd4->cd();
1164        gPad->SetLogy();
1165      Dexy->SetXTitle("ADC channels");      Dexy->SetXTitle("ADC channels");
1166      Dexy->SetYTitle("Number of events");      Dexy->SetYTitle("Number of events");
1167      Dexy->Draw();      Dexy->Draw();
1168      h1max = Dexy->GetMaximum()*1.05;      //    h1max = Dexy->GetMaximum()*1.05;
1169        h1max = Dexy->GetMaximum()*2.05;
1170      Double_t xd[4] = {2000.,5000.,5000.,2000.};      Double_t xd[4] = {2000.,5000.,5000.,2000.};
1171      Double_t yd[4] = {0.,0.,h1max,h1max};      Double_t yd[4] = {0.,0.,h1max,h1max};
1172      banda1 = new TPolyLine(4,xd,yd);      banda1 = new TPolyLine(4,xd,yd);
# Line 935  void FCaloQLOOK(TString filename, Int_t Line 1202  void FCaloQLOOK(TString filename, Int_t
1202      pd4->Draw();      pd4->Draw();
1203      //      //
1204      pd4->cd();      pd4->cd();
1205        gPad->SetLogy();
1206      Dexy->SetXTitle("ADC channels");      Dexy->SetXTitle("ADC channels");
1207      Dexy->SetYTitle("Number of events");      Dexy->SetYTitle("Number of events");
1208      Dexy->Draw();      Dexy->Draw();
1209      h1max = Dexy->GetMaximum()*1.05;      //    h1max = Dexy->GetMaximum()*1.05;
1210        h1max = Dexy->GetMaximum()*2.05;
1211      Double_t xd[4] = {2000.,5000.,5000.,2000.};      Double_t xd[4] = {2000.,5000.,5000.,2000.};
1212      Double_t yd[4] = {0.,0.,h1max,h1max};      Double_t yd[4] = {0.,0.,h1max,h1max};
1213      banda1 = new TPolyLine(4,xd,yd);      banda1 = new TPolyLine(4,xd,yd);
# Line 949  void FCaloQLOOK(TString filename, Int_t Line 1218  void FCaloQLOOK(TString filename, Int_t
1218      Dexy->Draw("SAME");      Dexy->Draw("SAME");
1219    };      };  
1220    //    //
1221      TCanvas *figura3 = 0;
1222      Bool_t printfigure3 = false;
1223      for (Int_t i = 0; i<4; i++){
1224        if ( ver[i][2] || lver[i][2] ){
1225          printfigure3 = true;
1226          break;
1227        };
1228      };
1229      if ( printfigure3 ){
1230        figura3 = new TCanvas("Calorimeter_Detector_Report_2bis/3","Calorimeter_Detector_Report_2bis/3", 1100, 900);
1231        figura3->SetFillColor(10);
1232        figura3->Range(0,0,100,100);
1233        errore.str("");
1234        errore << "EXPERT  --  File: " << file;
1235        errore << " ";
1236        t=new TLatex();
1237        t->SetTextFont(32);
1238        t->SetTextColor(1);
1239        t->SetTextAlign(12);
1240        t->SetTextSize(0.015);
1241        t->DrawLatex(2.,99.,errore.str().c_str());
1242        pd1 = new TPad("pd1","This is pad1",0.02,0.51,0.49,0.73,45);
1243        pd5 = new TPad("pd5","This is pad5",0.02,0.76,0.49,0.98,45);
1244        pd2 = new TPad("pd2","This is pad2",0.51,0.51,0.98,0.73,45);
1245        pd6 = new TPad("pd6","This is pad6",0.51,0.76,0.98,0.98,45);
1246        pd3 = new TPad("pd3","This is pad3",0.02,0.02,0.49,0.23,45);
1247        pd7 = new TPad("pd7","This is pad7",0.02,0.26,0.49,0.49,45);
1248        pd4 = new TPad("pd4","This is pad4",0.51,0.02,0.98,0.23,45);
1249        pd8 = new TPad("pd8","This is pad8",0.51,0.26,0.98,0.49,45);
1250        figura3->cd();
1251        pd1->Range(0,0,100,100);
1252        pd2->Range(0,0,100,100);
1253        pd3->Range(0,0,100,100);
1254        pd4->Range(0,0,100,100);      
1255        pd1->SetTicks();
1256        pd2->SetTicks();
1257        pd3->SetTicks();
1258        pd4->SetTicks();
1259        pd1->Draw();
1260        pd2->Draw();
1261        pd3->Draw();
1262        pd4->Draw();
1263        pd5->Range(0,0,100,100);
1264        pd6->Range(0,0,100,100);
1265        pd7->Range(0,0,100,100);
1266        pd8->Range(0,0,100,100);      
1267        pd5->SetTicks();
1268        pd6->SetTicks();
1269        pd7->SetTicks();
1270        pd8->SetTicks();
1271        pd5->Draw();
1272        pd6->Draw();
1273        pd7->Draw();
1274        pd8->Draw();
1275        pd1->cd();
1276        lup[0]->SetAxisRange((Double_t)min(minobt[0],swminobt[0])*0.9,(Double_t)max(maxobt[0],swmaxobt[0])*1.1,"X");
1277        lup[0]->SetXTitle("OBT");
1278        lup[0]->SetYTitle("Number of events");
1279        lup[0]->Draw();
1280        pd5->cd();
1281        lupstw[0]->SetAxisRange((Double_t)min(minobt[0],swminobt[0])*0.9,(Double_t)max(maxobt[0],swmaxobt[0])*1.1,"X");
1282        //    lupstw[0]->SetAxisRange((Double_t)swminobt[0]*0.9,(Double_t)swmaxobt[0]*1.1,"X");
1283        lupstw[0]->SetXTitle("OBT");
1284        lupstw[0]->SetYTitle("Number of events");
1285        lupstw[0]->Draw();
1286        pd2->cd();
1287        lup[1]->SetAxisRange((Double_t)min(minobt[1],swminobt[1])*0.9,(Double_t)max(maxobt[1],swmaxobt[1])*1.1,"X");
1288        //    lup[1]->SetAxisRange((Double_t)minobt[1]*0.9,(Double_t)maxobt[1]*1.1,"X");
1289        lup[1]->SetXTitle("OBT");
1290        lup[1]->SetYTitle("Number of events");
1291        lup[1]->Draw();
1292        pd6->cd();
1293        lupstw[1]->SetAxisRange((Double_t)min(minobt[1],swminobt[1])*0.9,(Double_t)max(maxobt[1],swmaxobt[1])*1.1,"X");
1294        //    lupstw[1]->SetAxisRange((Double_t)swminobt[1]*0.9,(Double_t)swmaxobt[1]*1.1,"X");
1295        lupstw[1]->SetXTitle("OBT");
1296        lupstw[1]->SetYTitle("Number of events");
1297        lupstw[1]->Draw();
1298        pd3->cd();
1299        lup[2]->SetAxisRange((Double_t)min(minobt[2],swminobt[2])*0.9,(Double_t)max(maxobt[2],swmaxobt[2])*1.1,"X");
1300        //    lup[2]->SetAxisRange((Double_t)minobt[2]*0.9,(Double_t)maxobt[2]*1.1,"X");
1301        lup[2]->SetXTitle("OBT");
1302        lup[2]->SetYTitle("Number of events");
1303        lup[2]->Draw();
1304        pd7->cd();
1305        lupstw[2]->SetAxisRange((Double_t)min(minobt[2],swminobt[2])*0.9,(Double_t)max(maxobt[2],swmaxobt[2])*1.1,"X");
1306        //    lupstw[2]->SetAxisRange((Double_t)swminobt[2]*0.9,(Double_t)swmaxobt[2]*1.1,"X");
1307        lupstw[2]->SetXTitle("OBT");
1308        lupstw[2]->SetYTitle("Number of events");
1309        lupstw[2]->Draw();
1310        pd4->cd();
1311        lup[3]->SetAxisRange((Double_t)min(minobt[3],swminobt[3])*0.9,(Double_t)max(maxobt[3],swmaxobt[3])*1.1,"X");
1312        //    lup[3]->SetAxisRange((Double_t)minobt[3]*0.9,(Double_t)maxobt[3]*1.1,"X");
1313        lup[3]->SetXTitle("OBT");
1314        lup[3]->SetYTitle("Number of events");
1315        lup[3]->Draw();
1316        pd8->cd();
1317        lupstw[3]->SetAxisRange((Double_t)min(minobt[3],swminobt[3])*0.9,(Double_t)max(maxobt[3],swmaxobt[3])*1.1,"X");
1318        //    lupstw[3]->SetAxisRange((Double_t)swminobt[3]*0.9,(Double_t)swmaxobt[3]*1.1,"X");
1319        lupstw[3]->SetXTitle("OBT");
1320        lupstw[3]->SetYTitle("Number of events");
1321        lupstw[3]->Draw();
1322      };
1323      //
1324    //  output figures, report sheet:    //  output figures, report sheet:
1325    //    //
1326    TCanvas *rapporto= new TCanvas("Calorimeter_Detector_Report_3/3", "Calorimeter_Detector_Report_3/3", 1100, 900);    TCanvas *rapporto= new TCanvas("Calorimeter_Detector_Report_3/3", "Calorimeter_Detector_Report_3/3", 1100, 900);
# Line 979  void FCaloQLOOK(TString filename, Int_t Line 1351  void FCaloQLOOK(TString filename, Int_t
1351    pad2->Draw();    pad2->Draw();
1352    pad3->Draw();    pad3->Draw();
1353    pad4->Draw();    pad4->Draw();
1354      //
1355      Bool_t redevent = true;
1356      //
1357      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] ){
1358        redevent = false;
1359      };
1360      if ( redevent ) check = true;
1361      //
1362    for (Int_t i = 0; i < 4; i++){    for (Int_t i = 0; i < 4; i++){
1363      if (i == 2)      if (i == 2)
1364        {        {
# Line 1007  void FCaloQLOOK(TString filename, Int_t Line 1386  void FCaloQLOOK(TString filename, Int_t
1386      t->SetTextAlign(12);      t->SetTextAlign(12);
1387      t->DrawLatex(33.,97.,sezione);      t->DrawLatex(33.,97.,sezione);
1388      t->SetTextSize(0.05);      t->SetTextSize(0.05);
1389      for (Int_t j = 0; j < 23; j++){      //aggiunto un errore jmax=23
1390        for (Int_t j = 0; j < 24; j++){
1391        if ( ver[i][j] || lver[i][j] ) {        if ( ver[i][j] || lver[i][j] ) {
1392          t->SetTextColor(50);          t->SetTextColor(50);
1393          if (j == 0) {          if (j == 0) {
# Line 1025  void FCaloQLOOK(TString filename, Int_t Line 1405  void FCaloQLOOK(TString filename, Int_t
1405            check = true;            check = true;
1406          }          }
1407          if (j == 2) {          if (j == 2) {
1408              //      printf("boh! lalarm[%i] = %i \n",i,lalarm[i]);
1409            if ( lalarm[i] ){            if ( lalarm[i] ){
1410              errore.str("");              errore.str("");
1411              errore << "* Latch up: " << ver[i][j];              errore << "* Latch up: " << ver[i][j];
1412              errore << " (" << lalarm[i];                      errore << " (" << lalarm[i];        
1413              errore << " NOT rec!): ";              errore << " NOT rec!): ";
1414              t->DrawLatex(0.,70.,errore.str().c_str());              t->DrawLatex(2.,70.,errore.str().c_str());
1415              check = true;              check = true;
1416            } else {            } else {
1417              errore.str("");              errore.str("");
# Line 1065  void FCaloQLOOK(TString filename, Int_t Line 1446  void FCaloQLOOK(TString filename, Int_t
1446            errore.str("");            errore.str("");
1447            errore << "RAW mode: " << ver[i][j];            errore << "RAW mode: " << ver[i][j];
1448            errore << " time(s)";            errore << " time(s)";
1449            t->SetTextColor(32);            if ( !redevent ) t->SetTextColor(32);
1450            t->DrawLatex(2.,90.,errore.str().c_str());            t->DrawLatex(2.,90.,errore.str().c_str());
1451          }          }
1452          if (j == 4) {          if (j == 4) {
# Line 1101  void FCaloQLOOK(TString filename, Int_t Line 1482  void FCaloQLOOK(TString filename, Int_t
1482            errore << "Missing section: " << ver[i][j];            errore << "Missing section: " << ver[i][j];
1483            errore << " time(s)";            errore << " time(s)";
1484            t->DrawLatex(2.,50.,errore.str().c_str());            t->DrawLatex(2.,50.,errore.str().c_str());
1485            check = true;            if ( ver[i][j] > 3 ) check = true;
1486          }          }
1487          if (j == 10) {          if (j == 10) {
1488            errore.str("");            errore.str("");
1489            errore << "Calevnum jump: " << ver[i][j];            errore << "Calevnum jump: " << ver[i][j];
1490            errore << " time(s)";            errore << " time(s)";
1491            t->DrawLatex(2.,42.,errore.str().c_str());            t->DrawLatex(2.,42.,errore.str().c_str());
1492            check = true;            if ( ver[i][j] > 3 ) check = true;
1493          }          }
1494          if (j == 11) {          if (j == 11) {
1495            errore.str("");            errore.str("");
1496            errore << "CRC error (data): " << ver[i][j];            errore << "CRC error (data): " << ver[i][j];
1497            errore << " time(s)";            errore << " time(s)";
1498            t->DrawLatex(2.,38.,errore.str().c_str());            t->DrawLatex(2.,38.,errore.str().c_str());
1499            check = true;            if ( ver[i][j] > 10 ) check = true;
1500          }          }
1501          if (j == 12) {          if (j == 12) {
1502            errore.str("");            errore.str("");
# Line 1149  void FCaloQLOOK(TString filename, Int_t Line 1530  void FCaloQLOOK(TString filename, Int_t
1530            errore.str("");            errore.str("");
1531            errore << "COMPRESS mode: " << ver[i][j];            errore << "COMPRESS mode: " << ver[i][j];
1532            errore << " time(s)";            errore << " time(s)";
1533            t->SetTextColor(32);            if ( !redevent ) t->SetTextColor(32);
1534            t->DrawLatex(2.,86.,errore.str().c_str());            t->DrawLatex(2.,86.,errore.str().c_str());
1535          }          }
1536          if (j == 17) {          if (j == 17) {
1537            errore.str("");            errore.str("");
1538            errore << "FULL mode: " << ver[i][j];            errore << "FULL mode: " << ver[i][j];
1539            errore << " time(s)";            errore << " time(s)";
1540            t->SetTextColor(32);            if ( !redevent ) t->SetTextColor(32);
1541            t->DrawLatex(2.,82.,errore.str().c_str());            t->DrawLatex(2.,82.,errore.str().c_str());
1542          }          }
1543          if (j == 18) {          if (j == 18) {
# Line 1194  void FCaloQLOOK(TString filename, Int_t Line 1575  void FCaloQLOOK(TString filename, Int_t
1575            t->DrawLatex(2.,3.,errore.str().c_str());            t->DrawLatex(2.,3.,errore.str().c_str());
1576            check = true;            check = true;
1577          };          };
1578        };          //aggiunto questo errore
1579      };          if (j == 23) {
1580              errore.str("");
1581              errore << "Corrupted packet lenght " << ver[i][j];
1582              errore << " time(s) ";
1583              t->DrawLatex(2.,2.,errore.str().c_str());
1584              check = true;
1585            };
1586          };
1587        };
1588      t->SetTextColor(50);      t->SetTextColor(50);
1589      if ( fulldiff[i] !=0 ) {      if ( fulldiff[i] !=0 ) {
1590        check = true;        check = true;
# Line 1222  void FCaloQLOOK(TString filename, Int_t Line 1611  void FCaloQLOOK(TString filename, Int_t
1611    if ( check ){    if ( check ){
1612      t->SetTextColor(50);      t->SetTextColor(50);
1613      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);  
1614    } else {    } else {
1615      t->SetTextColor(32);      t->SetTextColor(32);
1616      t->DrawLatex(60.,95.," OK! ");            t->DrawLatex(60.,95.," OK! ");      
1617    };    };
1618      printf("cdexyc %f cdexy %f ctshit %f cbase %f \n",cdexyc,cdexy,ctshit,cbase);
1619    //    //
1620    const string fil = (const char*)filename;    //  const string fil = (const char*)filename;
1621    Int_t posiz = fil.find("dw_");    //  Int_t posiz = fil.find("dw_");
1622    if ( posiz == -1 ) posiz = fil.find("DW_");    //  if ( posiz == -1 ) posiz = fil.find("DW_");
1623    Int_t posiz2 = posiz+13;    //  Int_t posiz2 = posiz+13;
1624    TString file2;    //  TString file2;
1625    stringcopy(file2,filename,posiz,posiz2);    //  stringcopy(file2,filename,posiz,posiz2);
1626      //
1627      const string fil = gSystem->BaseName(filename.Data());
1628      Int_t posiz = fil.find(".root");
1629    //    //
1630      TString file2;
1631      if ( posiz == -1 ){
1632        file2 = gSystem->BaseName(filename.Data());
1633      } else {
1634        Int_t posiz2 = 0;
1635        stringcopy(file2,gSystem->BaseName(filename.Data()),posiz2,posiz);
1636      };
1637    const char *figrec = file2;    const char *figrec = file2;
1638      //
1639    const char *outdir = outDir;    const char *outdir = outDir;
1640    stringstream figsave;        stringstream figsave;    
1641    stringstream figsave1;        stringstream figsave1;    
# Line 1244  void FCaloQLOOK(TString filename, Int_t Line 1644  void FCaloQLOOK(TString filename, Int_t
1644    if ( !strcmp(format,"ps") ) {    if ( !strcmp(format,"ps") ) {
1645      figsave.str("");      figsave.str("");
1646      figsave << outdir << "/" ;      figsave << outdir << "/" ;
1647      figsave << figrec << "_qlook.";      figsave << figrec << "_CaloQLOOK.";
1648      figsave << format << "(";      figsave << format << "(";
1649      rapporto->Print(figsave.str().c_str(),"Landscape");          rapporto->Print(figsave.str().c_str(),"Landscape");    
1650      figsave1.str("");      figsave1.str("");
1651      figsave1 << outdir << "/" ;      figsave1 << outdir << "/" ;
1652      figsave1 << figrec << "_qlook.";      figsave1 << figrec << "_CaloQLOOK.";
1653      figsave1 << format;      figsave1 << format;
1654      figura->Print(figsave1.str().c_str(),"Landscape");      figura->Print(figsave1.str().c_str(),"Landscape");
1655      figsave2.str("");      figsave2.str("");
1656      figsave2 << outdir << "/" ;      figsave2 << outdir << "/" ;
1657      figsave2 << figrec << "_qlook.";      figsave2 << figrec << "_CaloQLOOK.";
1658      figsave2 << format << ")";      if ( printfigure3 ){
1659      figura2->Print(figsave2.str().c_str(),"Landscape");        figsave2 << format;
1660          figura2->Print(figsave2.str().c_str(),"Landscape");
1661          figsave2.str("");
1662          figsave2 << outdir << "/" ;
1663          figsave2 << figrec << "_CaloQLOOK.";
1664          figsave2 << format << ")";
1665          figura3->Print(figsave2.str().c_str(),"Landscape");
1666        } else {
1667          figsave2 << format << ")";;
1668          figura2->Print(figsave2.str().c_str(),"Landscape");
1669        };
1670    } else {    } else {
1671      figsave.str("");      figsave.str("");
1672      figsave << outdir << "/" ;      figsave << outdir << "/" ;
1673      figsave << figrec << "_qlook1.";      figsave << figrec << "_CaloQLOOK1.";
1674      figsave << format;      figsave << format;
1675      figura->SaveAs(figsave.str().c_str());      figura->SaveAs(figsave.str().c_str());
1676      figsave.str("");      figsave.str("");
1677      figsave << outdir << "/" ;      figsave << outdir << "/" ;
1678      figsave << figrec << "_qlook2.";      figsave << figrec << "_CaloQLOOK2.";
1679      figsave << format;      figsave << format;
1680      figura2->SaveAs(figsave.str().c_str());      figura2->SaveAs(figsave.str().c_str());
1681        if ( printfigure3 ){
1682          figsave.str("");
1683          figsave << outdir << "/" ;
1684          figsave << figrec << "_CaloQLOOK2bis.";
1685          figsave << format;
1686          figura3->SaveAs(figsave.str().c_str());
1687        };
1688      figsave.str("");      figsave.str("");
1689      figsave << outdir << "/" ;      figsave << outdir << "/" ;
1690      figsave << figrec << "_qlook3.";      figsave << figrec << "_CaloQLOOK3.";
1691      figsave << format;      figsave << format;
1692      rapporto->SaveAs(figsave.str().c_str());          rapporto->SaveAs(figsave.str().c_str());    
1693    };    };
1694      if ( iactive && w4i ){
1695        while ( gROOT->GetListOfCanvases()->FindObject(rapporto) || gROOT->GetListOfCanvases()->FindObject(figura3) || gROOT->GetListOfCanvases()->FindObject(figura2) || gROOT->GetListOfCanvases()->FindObject(figura) ){
1696          gSystem->ProcessEvents();
1697          gSystem->Sleep(10);
1698        };
1699      };
1700  }  }
   

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.23

  ViewVC Help
Powered by ViewVC 1.1.23