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

Diff of /quicklook/calo/FQLOOK/macros/FCaloCHKCALIB.cxx

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

revision 1.2 by mocchiut, Mon Mar 13 09:01:22 2006 UTC revision 1.11 by mocchiut, Fri Sep 22 13:38:58 2006 UTC
# Line 1  Line 1 
1  //  //
2  //   Check the calorimter calibrations - Emiliano Mocchiutti  //   Check the calorimter calibrations - Emiliano Mocchiutti
3  //  //
4  //   FCaloCHKCALIB.c      version 1.01  (2006-03-02)  //   FCaloCHKCALIB.c      version 1.13  (2006-09-22)
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.12 - 1.13 (2006-09-22): Set upper limit in calvar plot.
11    //
12    //   1.07 - 1.12 (2006-08-04): bugs fixed.
13    //
14    //   1.07 - 1.11 (2006-07-17): Adapted to flight conditions.
15    //
16    //   1.06 - 1.07 (2006-05-29): Fixed bug in output filename when input is not in the form DW_YYMMDD_NNN. Changed threshold for bad strip warning (from 0.005 to 0.03).
17    //
18    //   1.05 - 1.06 (2006-03-22): Add optimize flag in compiling the script!
19    //
20    //   1.04 - 1.05 (2006-03-22): Corrected wrong .C files.
21    //
22    //   1.03 - 1.04 (2006-03-20): Documentation updated.
23    //
24    //   1.02 - 1.03 (2006-03-20): Changed name of shared libraries (for example from FCaloQLOOK_cxx.so to libFCaloQLOOK.so).
25    //
26    //   1.01 - 1.02 (2006-03-13): Include files from YODA without "event" directory.
27    //
28  //   1.00 - 1.01 (2006-03-02): Works on YODA v6 output (single file), does not require anymore calocommon package.  //   1.00 - 1.01 (2006-03-02): Works on YODA v6 output (single file), does not require anymore calocommon package.
29  //  //
30  //   0.00 - 1.00 (2006-03-02): Clone of CaloCHKCALIB.c  //   0.00 - 1.00 (2006-03-02): Clone of CaloCHKCALIB.c
# Line 28  Line 46 
46  #include <TPaveLabel.h>  #include <TPaveLabel.h>
47  #include <TStyle.h>  #include <TStyle.h>
48  #include <TSystem.h>  #include <TSystem.h>
49    #include <TApplication.h>
50  //  //
51  #include <event/CalibCalPedEvent.h>  #include <CalibCalPedEvent.h>
52  //  //
53  using namespace std;  using namespace std;
54  //  //
55  void stringcopy(TString& s1, const TString& s2, Int_t from=0, Int_t to=0){      void stringcopy(TString& s1, const TString& s2, Int_t from=0, Int_t to=0){    
56      if ( to == 0 ){    if ( to == 0 ){
57          Int_t t2length = s2.Length();      Int_t t2length = s2.Length();
58          s1 = "";      s1 = "";
59          to = t2length;      to = t2length;
60      };    };
61      for (Int_t i = from; i<to; i++){    for (Int_t i = from; i<to; i++){
62          s1.Append(s2[i],1);      s1.Append(s2[i],1);
63      };    };
64  }  }
65  void stringappend(TString& s1, const TString& s2){      void stringappend(TString& s1, const TString& s2){    
66      Int_t t2length = s2.Length();    Int_t t2length = s2.Length();
67      for (Int_t i = 0; i<t2length; i++){    for (Int_t i = 0; i<t2length; i++){
68          s1.Append(s2[i],1);      s1.Append(s2[i],1);
69      };    };
70  }  }
71    
72  TString getFilename(const TString filename){  TString getFilename(const TString filename){
73      const string fil = (const char*)filename;    //
74      Int_t posiz = fil.find("dw_");    const string fil = gSystem->BaseName(filename.Data());
75      if ( posiz == -1 ) posiz = fil.find("DW_");    Int_t posiz = fil.find(".root");
76      if ( posiz == -1 ) return 0;    //
77      Int_t posiz2 = posiz+13;    TString file2;
78      TString file2;    if ( posiz == -1 ){
79      stringcopy(file2,filename,posiz,posiz2);      file2 = gSystem->BaseName(filename.Data());
80      } else {
81        Int_t posiz2 = 0;
82        stringcopy(file2,gSystem->BaseName(filename.Data()),posiz2,posiz);
83      TString pdat(".dat");      TString pdat(".dat");
84      stringappend(file2,pdat);      stringappend(file2,pdat);  
85      return file2;    };
86      return file2;
87  }  }
88    
89  typedef struct Calib {  typedef struct Calib {
90      Int_t iev;    Int_t iev;
91      Int_t cstwerr[4];    Int_t cstwerr[4];
92      Float_t cperror[4];    Float_t cperror[4];
93      Float_t mip[2][22][96];    Float_t mip[2][22][96];
94      Float_t calped[2][22][96];    Float_t calped[2][22][96];
95      Float_t calgood[2][22][96];    Float_t calgood[2][22][96];
96      Float_t calthr[2][22][6];    Float_t calthr[2][22][6];
97      Float_t calrms[2][22][96];    Float_t calrms[2][22][96];
98      Float_t calbase[2][22][6];    Float_t calbase[2][22][6];
99      Float_t calvar[2][22][6];    Float_t calvar[2][22][6];
100      Float_t calpuls[2][22][96];    Float_t calpuls[2][22][96];
101  } calib;  } calib;
102    
103  void FCaloCHKCALIB(TString filename, Long64_t calibnumber = 0, TString outDir = "", Int_t figmatra = 0, TString saveas = "ps"){  void FCaloCHKCALIB(TString filename, Long64_t calibnumber = 0, TString outDir = "", Int_t figmatra = 0, TString saveas = "png", Bool_t iactive =false, Bool_t w4i=false){
104      gStyle->SetPaperSize(19.,25.);    gStyle->SetPaperSize(19.,25.);
105      //
106      TApplication *app = 0;
107      if ( iactive ) app = new TApplication("app",0,0);
108      Float_t ccalrmsthr=0.99;
109      Float_t ccalpedthr=0.99;
110      Float_t ccalbadthr=0.03;// 0.005
111      Float_t ccalthrthr=0.98;
112      Float_t ccalvarthr=0.99;
113      Float_t ccalbasthr=0.99;
114      //
115      Float_t ccalrms;
116      Float_t ccalped;
117      Float_t ccalbad;
118      Float_t ccalthr;
119      Float_t ccalvar;
120      Float_t ccalbas;
121      //
122      struct Calib calib;
123      stringstream titolo;
124      stringstream xviewev;
125      stringstream yviewev;
126      const char* startingdir = gSystem->WorkingDirectory();
127      if ( !strcmp(outDir.Data(),"") ) outDir = startingdir;
128      TString fififile =  getFilename(filename);
129      const char *file;
130      file = fififile;
131      //
132      ifstream myfile;
133      myfile.open(filename.Data());
134      if ( !myfile ){
135        printf(" %s :no such file, exiting...\n\n",filename.Data());
136        return;
137      };
138      myfile.close();
139      //
140      TFile *File = new TFile(filename.Data());
141      //
142      TTree *tr = (TTree*)File->Get("CalibCalPed");
143      if ( !tr ) {
144        printf(" CalibCalPed : no such tree in %s \n",filename.Data());
145        printf(" Exiting, are you sure this is a LEVEL0 not corrupted file? \n\n");
146        return;
147      };
148      pamela::CalibCalPedEvent *ce = 0;
149      //
150      UInt_t found;
151      tr->SetBranchStatus("*",0,&found); //disable all branches
152      //
153      found = 0;
154      tr->SetBranchStatus("iev*",1,&found);
155      found = 0;
156      tr->SetBranchStatus("cstwerr*",1,&found);
157      //    printf("enabled %i branches \n",found);
158      found = 0;
159      tr->SetBranchStatus("cperror*",1,&found);
160      //printf("enabled %i branches \n",found);
161      found = 0;
162      tr->SetBranchStatus("cal*",1,&found);
163      //printf("enabled %i branches \n",found);
164      found = 0;
165      tr->SetBranchStatus("CalibCalPed*",1,&found);
166      //printf("enabled %i branches \n",found);
167      //
168      tr->SetBranchAddress("CalibCalPed", &ce);
169      //
170      Long64_t ncalibs    = tr->GetEntries();
171      if ( ncalibs == 0 ){
172        printf(" No calibrations in this files! \n Exiting... \n");
173        return;
174      };
175      printf("\n This file contains %i entries which corrispond to %i calibrations \n\n",(int)ncalibs,(int)ncalibs/4);
176      Long64_t minev = 0;
177      Long64_t maxev = ncalibs;
178      if ( calibnumber ){
179        minev = (calibnumber - 1)* 4;
180        maxev = minev + 4;
181      };
182      TCanvas *figura1;
183      TCanvas *figura2 = 0;
184      TCanvas *figura3;
185      TCanvas *rapporto = 0;
186      Int_t cmask = 127 ;
187      Int_t cestw = 0;
188      Int_t ver[4][23];
189      //
190      for (Int_t k = 0; k < 4; k++ ){
191        for (Int_t m = 0; m < 23 ; m++ ){
192          ver[k][m] = 0 ;
193        };
194      };
195      //
196      //
197      const string fil = gSystem->BaseName(filename.Data());
198      Int_t posiz = fil.find(".root");
199      //
200      TString file2;
201      if ( posiz == -1 ){
202        file2 = gSystem->BaseName(filename.Data());
203      } else {
204        Int_t posiz2 = 0;
205        stringcopy(file2,gSystem->BaseName(filename.Data()),posiz2,posiz);
206      };
207      const char *figrec = file2;
208      //
209      const char *outdir = outDir;
210      const char *format = saveas;
211      stringstream figsave;    
212      stringstream figsave1;    
213      stringstream figsave2;    
214      //
215      // to check or not to check? this is the problem...
216      //
217      Bool_t check = false;
218      //
219      for (Int_t ci = minev; ci < maxev ; ci+=4){
220        //
221        Int_t incalrms = 0;
222        Int_t outcalrms = 0;
223        Int_t totcalbad = 0;
224        Int_t incalped = 0;
225        Int_t outcalped = 0;
226        Int_t incalthr = 0;
227        Int_t outcalthr = 0;
228        Int_t incalvar = 0;
229        Int_t outcalvar = 0;
230        Int_t incalbas = 0;
231        Int_t outcalbas = 0;
232      //      //
233      Float_t ccalrmsthr=0.99;      for ( Int_t s=0 ; s<4 ;s++  ){
234      Float_t ccalpedthr=0.99;        tr->GetEntry(ci+s);
235      Float_t ccalbadthr=0.005;        calib.iev = ce->iev;
236      Float_t ccalthrthr=0.98;        //
237      Float_t ccalvarthr=0.99;        //
238      Float_t ccalbasthr=0.99;        //
239      //        cestw = 0;
240      Float_t ccalrms;        if ( ce->cstwerr[s] ){
241      Float_t ccalped;          cestw =  ce->cstwerr[s] & cmask ;
242      Float_t ccalbad;          ver[s][16]++;
243      Float_t ccalthr;        };
244      Float_t ccalvar;        if ( cestw ){
245      Float_t ccalbas;          if ( cestw & (1 << 0) ) ver[s][6]++ ;
246      //          if ( cestw & (1 << 1) ) ver[s][5]++ ;
247      struct Calib calib;          if ( cestw & (1 << 2) ) ver[s][4]++ ;
248      stringstream titolo;          if ( cestw & (1 << 3) ) ver[s][3]++ ;
249      stringstream xviewev;          if ( cestw & (1 << 4) ) ver[s][2]++ ;
250      stringstream yviewev;          if ( cestw & (1 << 5) ) ver[s][1]++ ;
251      const char* startingdir = gSystem->WorkingDirectory();          if ( cestw & (1 << 6) ) ver[s][0]++ ;          
252      if ( !strcmp(outDir.Data(),"") ) outDir = startingdir;        };
253      TString fififile =  getFilename(filename);        if ( ce->cperror[s] != 0. ){
254      const char *file;          if (ce->cperror[s] == 128) ver[s][7]++ ;
255      file = fififile;          if (ce->cperror[s] == 129) ver[s][8]++ ;
256      //          if (ce->cperror[s] == 130) {
257      ifstream myfile;            ver[s][9]++ ;
258      myfile.open(filename.Data());            ver[s][16]--;
259      if ( !myfile ){          };
260        printf(" %s :no such file, exiting...\n\n",filename.Data());          if (ce->cperror[s] == 132) ver[s][11]++ ;
261        return;          if (ce->cperror[s] == 140) ver[s][19]++ ;
262      };          if (ce->cperror[s] == 141) ver[s][20]++ ;
263      myfile.close();          if (ce->cperror[s] == 142) ver[s][22]++ ;
264      //        };
265      TFile *File = new TFile(filename.Data());        //
266      //        for ( Int_t d=0 ; d<11 ;d++  ){
267      TTree *tr = (TTree*)File->Get("CalibCalPed");          Int_t pre = -1;
268      if ( !tr ) {          for ( Int_t j=0; j<96 ;j++){
269        printf(" CalibCalPed : no such tree in %s \n",filename.Data());            if ( j%16 == 0 ) pre++;
270        printf(" Exiting, are you sure this is a LEVEL0 not corrupted file? \n\n");            if ( s == 2 ){
271        return;              calib.calped[0][2*d+1][j] = ce->calped[3][d][j];
272      };              calib.cstwerr[3] = ce->cstwerr[3];
273      pamela::CalibCalPedEvent *ce = 0;              calib.cperror[3] = ce->cperror[3];
274      //              calib.calgood[0][2*d+1][j] = ce->calgood[3][d][j];
275      UInt_t found;              calib.calthr[0][2*d+1][pre] = ce->calthr[3][d][pre];
276      tr->SetBranchStatus("*",0,&found); //disable all branches              calib.calrms[0][2*d+1][j] = ce->calrms[3][d][j];
277      //              calib.calbase[0][2*d+1][pre] = ce->calbase[3][d][pre];
278      found = 0;              calib.calvar[0][2*d+1][pre] = ce->calvar[3][d][pre];
279      tr->SetBranchStatus("iev*",1,&found);            };
280      found = 0;            if ( s == 3 ){
281      tr->SetBranchStatus("cstwerr*",1,&found);              calib.calped[0][2*d][j] = ce->calped[1][d][j];
282      //    printf("enabled %i branches \n",found);              calib.cstwerr[1] = ce->cstwerr[1];
283      found = 0;              calib.cperror[1] = ce->cperror[1];
284      tr->SetBranchStatus("cperror*",1,&found);              calib.calgood[0][2*d][j] = ce->calgood[1][d][j];
285      //printf("enabled %i branches \n",found);              calib.calthr[0][2*d][pre] = ce->calthr[1][d][pre];
286      found = 0;              calib.calrms[0][2*d][j] = ce->calrms[1][d][j];
287      tr->SetBranchStatus("cal*",1,&found);              calib.calbase[0][2*d][pre] = ce->calbase[1][d][pre];
288      //printf("enabled %i branches \n",found);              calib.calvar[0][2*d][pre] = ce->calvar[1][d][pre];
289      found = 0;            };
290      tr->SetBranchStatus("CalibCalPed*",1,&found);            if ( s == 0 ){
291      //printf("enabled %i branches \n",found);              calib.calped[1][2*d][j] = ce->calped[0][d][j];
292      //              calib.cstwerr[0] = ce->cstwerr[0];
293      tr->SetBranchAddress("CalibCalPed", &ce);              calib.cperror[0] = ce->cperror[0];
294      //              calib.calgood[1][2*d][j] = ce->calgood[0][d][j];
295      Long64_t ncalibs    = tr->GetEntries();              calib.calthr[1][2*d][pre] = ce->calthr[0][d][pre];
296      if ( ncalibs == 0 ){              calib.calrms[1][2*d][j] = ce->calrms[0][d][j];
297          printf(" No calibrations in this files! \n Exiting... \n");              calib.calbase[1][2*d][pre] = ce->calbase[0][d][pre];
298          return;              calib.calvar[1][2*d][pre] = ce->calvar[0][d][pre];
299      };            };
300      printf("\n This file contains %i entries which corrispond to %i calibrations \n\n",(int)ncalibs,(int)ncalibs/4);            if ( s == 1 ){
301      Long64_t minev = 0;              calib.calped[1][2*d+1][j] = ce->calped[2][d][j];
302      Long64_t maxev = ncalibs;              calib.cstwerr[2] = ce->cstwerr[2];
303      if ( calibnumber ){              calib.cperror[2] = ce->cperror[2];
304          minev = (calibnumber - 1)* 4;              calib.calgood[1][2*d+1][j] = ce->calgood[2][d][j];
305          maxev = minev + 4;              calib.calthr[1][2*d+1][pre] = ce->calthr[2][d][pre];
306      };              calib.calrms[1][2*d+1][j] = ce->calrms[2][d][j];
307      TCanvas *figura1;              calib.calbase[1][2*d+1][pre] = ce->calbase[2][d][pre];
308      TCanvas *figura2 = 0;              calib.calvar[1][2*d+1][pre] = ce->calvar[2][d][pre];
309      TCanvas *figura3;            };
     TCanvas *rapporto = 0;  
     Int_t cmask = 127 ;  
     Int_t cestw = 0;  
     Int_t ver[4][23];  
     //  
     for (Int_t k = 0; k < 4; k++ ){  
         for (Int_t m = 0; m < 23 ; m++ ){  
             ver[k][m] = 0 ;  
310          };          };
311          };
312      };      };
313      //      //
314        // Book the histograms:
315      //      //
     const string fil = (const char*)filename;  
     Int_t posiz = fil.find("dw_");  
     if ( posiz == -1 ) posiz = fil.find("DW_");  
     Int_t posiz2 = posiz+13;  
     TString file2;  
     stringcopy(file2,filename,posiz,posiz2);  
     //  
     const char *figrec = file2;  
     const char *outdir = outDir;  
     const char *format = saveas;  
     stringstream figsave;      
     stringstream figsave1;      
     stringstream figsave2;      
316      //      //
317      // to check or not to check? this is the problem...      Int_t i = (ci-minev)/4;
318        xviewev.str("");
319        xviewev << "x-view event " << (i+1);
320        yviewev.str("");
321        yviewev << "y-view event " << (i+1);
322        TH2F *Xview = new TH2F(xviewev.str().c_str(),"",96,-0.5,95.5,22,-0.5,21.5);
323        TH2F *Yview = new TH2F(yviewev.str().c_str(),"",96,-0.5,95.5,22,-0.5,21.5);
324      //      //
325      Bool_t check = false;      // figures:
326      //      //
327      for (Int_t ci = minev; ci < maxev ; ci+=4){      gDirectory->Delete("C14");
328          //      gDirectory->Delete("C15");
329          Int_t incalrms = 0;      gDirectory->Delete("C16");
330          Int_t outcalrms = 0;      //TH1F *calped = new TH1F("C14","calped",4230,-3.5,4227.5);
331          Int_t totcalbad = 0;      //  TH1F *calrms = new TH1F("C15","calrms",4230,-3.5,4228.5);
332          Int_t incalped = 0;      TH1F *calped = new TH1F("C14","calped",2112,-3.5,4227.5);
333          Int_t outcalped = 0;      //  TH1F *calrms = new TH1F("C15","calrms",264,-2.,4226.);
334          Int_t incalthr = 0;      TH1F *calrms = new TH1F("C15","calrms",2112,-3.5,4228.5);
335          Int_t outcalthr = 0;      TH1F *calbad = new TH1F("C16","calgood",4230,-3.5,4228.5);
336          Int_t incalvar = 0;      //
337          Int_t outcalvar = 0;      gDirectory->Delete("C17");
338          Int_t incalbas = 0;      gDirectory->Delete("C18");
339          Int_t outcalbas = 0;      gDirectory->Delete("C19");
340          //      TH1F *calthr = new TH1F("C17","calthr",271,-4.5,268.5);
341          for ( Int_t s=0 ; s<4 ;s++  ){      TH1F *calvar = new TH1F("C18","calvar",271,-4.5,268.5);
342              tr->GetEntry(ci+s);      TH1F *calbase = new TH1F("C19","calbase",271,-4.5,268.5);
343              calib.iev = ce->iev;      //
344              //      Int_t bgcolor = 10;
345              //      TPad *pd1 = 0;
346              //      TPad *pd2 = 0;
347              cestw = 0;      TPad *palette = 0;
348              if ( ce->cstwerr[s] ){      TLatex *t=new TLatex();
349                  cestw =  ce->cstwerr[s] & cmask ;      if ( figmatra ){
350                  ver[s][16]++;        figura2 = new TCanvas("Calorimeter:_strip_RMS", "Calorimeter:_strip_RMS", 750, 650);
351              };        figura2->SetFillColor(10);
352              if ( cestw ){        figura2->Range(0,0,100,100);
353                  if ( cestw & (1 << 0) ) ver[s][6]++ ;        bgcolor = 10;
354                  if ( cestw & (1 << 1) ) ver[s][5]++ ;        pd1 = new TPad("pd1","This is pad1",0.02,0.05,0.88,0.49,bgcolor);
355                  if ( cestw & (1 << 2) ) ver[s][4]++ ;        pd2 = new TPad("pd2","This is pad2",0.02,0.51,0.88,0.95,bgcolor);
356                  if ( cestw & (1 << 3) ) ver[s][3]++ ;        palette = new TPad("palette","This is palette",0.90,0.05,0.98,0.90,bgcolor);
357                  if ( cestw & (1 << 4) ) ver[s][2]++ ;        figura2->cd();
358                  if ( cestw & (1 << 5) ) ver[s][1]++ ;        gStyle->SetOptStat("");
359                  if ( cestw & (1 << 6) ) ver[s][0]++ ;                  t=new TLatex();
360          t->SetTextFont(32);
361          t->SetTextColor(1);
362          t->SetTextSize(0.03);
363          t->SetTextAlign(12);
364          t->DrawLatex(90.,92.5,"ADC ch.");
365          pd1->Range(0,0,100,100);
366          pd2->Range(0,0,100,100);
367          palette->Range(0,0,100,100);
368          pd1->SetTicks();
369          pd2->SetTicks();
370          pd1->Draw();
371          pd2->Draw();
372          palette->Draw();
373          palette->cd();
374          // palette
375          TPaveLabel *box1 = new TPaveLabel(2,2,98,14,"OFF","");
376          box1->SetTextFont(32);
377          box1->SetTextColor(1);    
378          box1->SetTextSize(0.25);  
379          box1->SetFillColor(10);
380          box1->Draw();
381          TPaveLabel *box2 = new TPaveLabel(2,16,98,28,"0-1.5","");
382          box2->SetTextFont(32);
383          box2->SetTextColor(1);            
384          box2->SetTextSize(0.25);  
385          box2->SetFillColor(38);
386          box2->Draw();
387          TPaveLabel *box3 = new TPaveLabel(2,30,98,42,"1.5-4","");
388          box3->SetTextFont(32);
389          box3->SetTextColor(1);    
390          box3->SetTextSize(0.25);  
391          box3->SetFillColor(4);
392          box3->Draw();
393          TPaveLabel *box4 = new TPaveLabel(2,44,98,56,"4-6.5","");
394          box4->SetTextFont(32);
395          box4->SetTextColor(1);    
396          box4->SetTextSize(0.25);  
397          box4->SetFillColor(3);
398          box4->Draw();
399          TPaveLabel *box5 = new TPaveLabel(2,58,98,70,"6.5-11.5","");
400          box5->SetTextFont(32);
401          box5->SetTextColor(1);    
402          box5->SetTextSize(0.25);  
403          box5->SetFillColor(2);
404          box5->Draw();
405          TPaveLabel *box6 = new TPaveLabel(2,72,98,84,">11.5","");
406          box6->SetTextFont(32);
407          box6->SetTextColor(1);    
408          box6->SetTextSize(0.25);  
409          box6->SetFillColor(6);
410          box6->Draw();
411          TPaveLabel *box7 = new TPaveLabel(2,86,98,98,"BAD","");
412          box7->SetTextFont(32);
413          box7->SetTextColor(10);  
414          box7->SetTextSize(0.25);  
415          box7->SetFillColor(1);
416          box7->Draw();
417          //
418          pd1->cd();          
419          gStyle->SetOptStat("");
420          Xview->SetXTitle("strip");
421          Xview->SetYTitle("X - plane");
422          Xview->GetYaxis()->SetTitleOffset(0.5);
423          Xview->SetFillColor(bgcolor);        
424          Xview->Fill(1.,1.,1.);        
425          Xview->Draw("box");
426          pd1->Update();
427          pd2->cd();
428          gStyle->SetOptStat("");
429          Yview->SetXTitle("strip");
430          Yview->SetYTitle("Y - plane");
431          Yview->GetYaxis()->SetTitleOffset(0.5);  
432          Yview->SetFillColor(bgcolor);        
433          Yview->Fill(1.,1.,1.);        
434          Yview->Draw("box");
435          pd2->Update();
436        };
437        //
438        // run over views and planes
439        //
440        Int_t j = 0;
441        Int_t g = 0;
442        gStyle->SetOptStat("");
443        for (Int_t m = 0; m < 22; m++){
444          for (Int_t l = 0; l < 2; l++){
445            for (Int_t n = 0; n < 96; n++){
446              //
447              calped->Fill((float)j,calib.calped[l][m][n]);                            
448              if ( (calib.calped[l][m][n] > 700. || calib.calped[l][m][n] < -700.) && (j < 4032 || j > 4048) ){
449                outcalped++;
450              } else {
451                incalped++;
452              };
453              calrms->Fill((float)j,(calib.calrms[l][m][n]/4.));                                
454              if ( (((calib.calrms[l][m][n]/4.) > 7. || (calib.calrms[l][m][n]/4.) < 1.) && (j < 3440 || j > 3550)) || ( (j > 3439 && j < 3551)  && ((calib.calrms[l][m][n]/4.) > 150. || (calib.calrms[l][m][n]/4.) < 1.)) ){
455                outcalrms++;
456              } else {
457                incalrms++;
458              };
459              calbad->Fill((float)j,(float)calib.calgood[l][m][n]);                            
460              if ( calib.calgood[l][m][n] ) totcalbad++;
461              //
462              if ( n < 6 ){                
463                calthr->Fill((float)g,(float)calib.calthr[l][m][n]);                                                        
464                if ( (calib.calthr[l][m][n] > 21. || calib.calthr[l][m][n] < 12.) && (g < 215 || g > 221) ){
465                  outcalthr++;
466                } else {
467                  incalthr++;
468              };              };
469              if ( ce->cperror[s] != 0. ){              calvar->Fill((float)g,(float)calib.calvar[l][m][n]);                                                        
470                  if (ce->cperror[s] == 128) ver[s][7]++ ;              if ( (calib.calvar[l][m][n] > 8. || calib.calvar[l][m][n] < 1. ) && (g < 215 || g > 221) ){
471                  if (ce->cperror[s] == 129) ver[s][8]++ ;                outcalvar++;
472                  if (ce->cperror[s] == 130) {              } else {
473                      ver[s][9]++ ;                incalvar++;
                     ver[s][16]--;  
                 };  
                 if (ce->cperror[s] == 132) ver[s][11]++ ;  
                 if (ce->cperror[s] == 140) ver[s][19]++ ;  
                 if (ce->cperror[s] == 141) ver[s][20]++ ;  
                 if (ce->cperror[s] == 142) ver[s][22]++ ;  
474              };              };
475              //              calbase->Fill((float)g,(float)calib.calbase[l][m][n]);                                                      
476              for ( Int_t d=0 ; d<11 ;d++  ){              if ( calib.calbase[l][m][n] > 4500. || calib.calbase[l][m][n] < 2000. ){
477                  Int_t pre = -1;                outcalbas++;
478                  for ( Int_t j=0; j<96 ;j++){              } else {
479                      if ( j%16 == 0 ) pre++;                incalbas++;
                     if ( s == 2 ){  
                         calib.calped[0][2*d+1][j] = ce->calped[3][d][j];  
                         calib.cstwerr[3] = ce->cstwerr[3];  
                         calib.cperror[3] = ce->cperror[3];  
                         calib.calgood[0][2*d+1][j] = ce->calgood[3][d][j];  
                         calib.calthr[0][2*d+1][pre] = ce->calthr[3][d][pre];  
                         calib.calrms[0][2*d+1][j] = ce->calrms[3][d][j];  
                         calib.calbase[0][2*d+1][pre] = ce->calbase[3][d][pre];  
                         calib.calvar[0][2*d+1][pre] = ce->calvar[3][d][pre];  
                     };  
                     if ( s == 3 ){  
                         calib.calped[0][2*d][j] = ce->calped[1][d][j];  
                         calib.cstwerr[1] = ce->cstwerr[1];  
                         calib.cperror[1] = ce->cperror[1];  
                         calib.calgood[0][2*d][j] = ce->calgood[1][d][j];  
                         calib.calthr[0][2*d][pre] = ce->calthr[1][d][pre];  
                         calib.calrms[0][2*d][j] = ce->calrms[1][d][j];  
                         calib.calbase[0][2*d][pre] = ce->calbase[1][d][pre];  
                         calib.calvar[0][2*d][pre] = ce->calvar[1][d][pre];  
                     };  
                     if ( s == 0 ){  
                         calib.calped[1][2*d][j] = ce->calped[0][d][j];  
                         calib.cstwerr[0] = ce->cstwerr[0];  
                         calib.cperror[0] = ce->cperror[0];  
                         calib.calgood[1][2*d][j] = ce->calgood[0][d][j];  
                         calib.calthr[1][2*d][pre] = ce->calthr[0][d][pre];  
                         calib.calrms[1][2*d][j] = ce->calrms[0][d][j];  
                         calib.calbase[1][2*d][pre] = ce->calbase[0][d][pre];  
                         calib.calvar[1][2*d][pre] = ce->calvar[0][d][pre];  
                     };  
                     if ( s == 1 ){  
                         calib.calped[1][2*d+1][j] = ce->calped[2][d][j];  
                         calib.cstwerr[2] = ce->cstwerr[2];  
                         calib.cperror[2] = ce->cperror[2];  
                         calib.calgood[1][2*d+1][j] = ce->calgood[2][d][j];  
                         calib.calthr[1][2*d+1][pre] = ce->calthr[2][d][pre];  
                         calib.calrms[1][2*d+1][j] = ce->calrms[2][d][j];  
                         calib.calbase[1][2*d+1][pre] = ce->calbase[2][d][pre];  
                         calib.calvar[1][2*d+1][pre] = ce->calvar[2][d][pre];  
                     };  
                 };  
480              };              };
481          };              g++;
482          //            };
483          // Book the histograms:            //
484          //            j++;
485          //            //
486          Int_t i = (ci-minev)/4;            if ( figmatra ){                      
         xviewev.str("");  
         xviewev << "x-view event " << (i+1);  
         yviewev.str("");  
         yviewev << "y-view event " << (i+1);  
         TH2F *Xview = new TH2F(xviewev.str().c_str(),"",96,-0.5,95.5,22,-0.5,21.5);  
         TH2F *Yview = new TH2F(yviewev.str().c_str(),"",96,-0.5,95.5,22,-0.5,21.5);      
         //  
         // figures:  
         //  
         gDirectory->Delete("C14");  
         gDirectory->Delete("C15");  
         gDirectory->Delete("C16");  
         TH1F *calped = new TH1F("C14","calped",4230,-3.5,4227.5);  
         TH1F *calrms = new TH1F("C15","calrms",4230,-3.5,4228.5);  
         TH1F *calbad = new TH1F("C16","calgood",4230,-3.5,4228.5);  
         //  
         gDirectory->Delete("C17");  
         gDirectory->Delete("C18");  
         gDirectory->Delete("C19");  
         TH1F *calthr = new TH1F("C17","calthr",271,-4.5,268.5);  
         TH1F *calvar = new TH1F("C18","calvar",271,-4.5,268.5);  
         TH1F *calbase = new TH1F("C19","calbase",271,-4.5,268.5);  
         //  
         Int_t bgcolor = 10;  
         TPad *pd1 = 0;  
         TPad *pd2 = 0;  
         TPad *palette = 0;  
         TLatex *t=new TLatex();  
         if ( figmatra ){  
             figura2 = new TCanvas("Calorimeter:_strip_RMS", "Calorimeter:_strip_RMS", 750, 650);  
             figura2->SetFillColor(10);  
             figura2->Range(0,0,100,100);  
             bgcolor = 10;  
             pd1 = new TPad("pd1","This is pad1",0.02,0.05,0.88,0.49,bgcolor);  
             pd2 = new TPad("pd2","This is pad2",0.02,0.51,0.88,0.95,bgcolor);  
             palette = new TPad("palette","This is palette",0.90,0.05,0.98,0.90,bgcolor);  
487              figura2->cd();              figura2->cd();
488              gStyle->SetOptStat("");              xviewev.str("");
489              t=new TLatex();              xviewev << "x-view " << i;
490              t->SetTextFont(32);              xviewev << " event " << n;
491              t->SetTextColor(1);              xviewev << " " << m;
492              t->SetTextSize(0.03);              xviewev << " " << l;
493              t->SetTextAlign(12);              yviewev.str("");
494              t->DrawLatex(90.,92.5,"ADC ch.");              yviewev << "y-view " << i;
495              pd1->Range(0,0,100,100);              yviewev << " event " << n;
496              pd2->Range(0,0,100,100);              yviewev << " " << m;
497              palette->Range(0,0,100,100);              yviewev << " " << l;
498              pd1->SetTicks();              TH2F *Xview = new TH2F(xviewev.str().c_str(),"",96,-0.5,95.5,22,-0.5,21.5);
499              pd2->SetTicks();              TH2F *Yview = new TH2F(yviewev.str().c_str(),"",96,-0.5,95.5,22,-0.5,21.5);                    
500              pd1->Draw();              if ( calib.calrms[l][m][n] > 0 ){
501              pd2->Draw();                Xview->SetFillColor(38);
502              palette->Draw();                Yview->SetFillColor(38);
             palette->cd();  
             // palette  
             TPaveLabel *box1 = new TPaveLabel(2,2,98,14,"OFF","");  
             box1->SetTextFont(32);  
             box1->SetTextColor(1);        
             box1->SetTextSize(0.25);      
             box1->SetFillColor(10);  
             box1->Draw();  
             TPaveLabel *box2 = new TPaveLabel(2,16,98,28,"0-1.5","");  
             box2->SetTextFont(32);  
             box2->SetTextColor(1);                
             box2->SetTextSize(0.25);      
             box2->SetFillColor(38);  
             box2->Draw();  
             TPaveLabel *box3 = new TPaveLabel(2,30,98,42,"1.5-4","");  
             box3->SetTextFont(32);  
             box3->SetTextColor(1);        
             box3->SetTextSize(0.25);      
             box3->SetFillColor(4);  
             box3->Draw();  
             TPaveLabel *box4 = new TPaveLabel(2,44,98,56,"4-6.5","");  
             box4->SetTextFont(32);  
             box4->SetTextColor(1);        
             box4->SetTextSize(0.25);      
             box4->SetFillColor(3);  
             box4->Draw();  
             TPaveLabel *box5 = new TPaveLabel(2,58,98,70,"6.5-11.5","");  
             box5->SetTextFont(32);  
             box5->SetTextColor(1);        
             box5->SetTextSize(0.25);      
             box5->SetFillColor(2);  
             box5->Draw();  
             TPaveLabel *box6 = new TPaveLabel(2,72,98,84,">11.5","");  
             box6->SetTextFont(32);  
             box6->SetTextColor(1);        
             box6->SetTextSize(0.25);      
             box6->SetFillColor(6);  
             box6->Draw();  
             TPaveLabel *box7 = new TPaveLabel(2,86,98,98,"BAD","");  
             box7->SetTextFont(32);  
             box7->SetTextColor(10);      
             box7->SetTextSize(0.25);      
             box7->SetFillColor(1);  
             box7->Draw();  
             //  
             pd1->cd();      
             gStyle->SetOptStat("");  
             Xview->SetXTitle("strip");  
             Xview->SetYTitle("X - plane");  
             Xview->GetYaxis()->SetTitleOffset(0.5);  
             Xview->SetFillColor(bgcolor);            
             Xview->Fill(1.,1.,1.);            
             Xview->Draw("box");  
             pd1->Update();  
             pd2->cd();  
             gStyle->SetOptStat("");  
             Yview->SetXTitle("strip");  
             Yview->SetYTitle("Y - plane");  
             Yview->GetYaxis()->SetTitleOffset(0.5);      
             Yview->SetFillColor(bgcolor);            
             Yview->Fill(1.,1.,1.);            
             Yview->Draw("box");  
             pd2->Update();  
         };  
         //  
         // run over views and planes  
         //  
         Int_t j = 0;  
         Int_t g = 0;  
         gStyle->SetOptStat("");  
         for (Int_t m = 0; m < 22; m++){  
             for (Int_t l = 0; l < 2; l++){  
                 for (Int_t n = 0; n < 96; n++){  
                     //  
                     calped->Fill((float)j,calib.calped[l][m][n]);                                    
                     if ( (calib.calped[l][m][n] > 700. || calib.calped[l][m][n] < -700.) && (j < 4032 || j > 4048) ){  
                         outcalped++;  
                     } else {  
                         incalped++;  
                     };  
                     calrms->Fill((float)j,(calib.calrms[l][m][n]/4.));                                
                     if ( (calib.calrms[l][m][n]/4.) > 7. || (calib.calrms[l][m][n]/4.) < 1. ){  
                         outcalrms++;  
                     } else {  
                         incalrms++;  
                     };  
                     calbad->Fill((float)j,(float)calib.calgood[l][m][n]);                                    
                     if ( calib.calgood[l][m][n] ) totcalbad++;  
                     //  
                     if ( n < 6 ){                        
                         calthr->Fill((float)g,(float)calib.calthr[l][m][n]);                                                      
                         if ( calib.calthr[l][m][n] > 21. || calib.calthr[l][m][n] < 12. ){  
                             outcalthr++;  
                         } else {  
                             incalthr++;  
                         };  
                         calvar->Fill((float)g,(float)calib.calvar[l][m][n]);                                                      
                         if ( calib.calvar[l][m][n] > 8. || calib.calvar[l][m][n] < 1. ){  
                             outcalvar++;  
                         } else {  
                             incalvar++;  
                         };  
                         calbase->Fill((float)g,(float)calib.calbase[l][m][n]);                                                    
                         if ( calib.calbase[l][m][n] > 4500. || calib.calbase[l][m][n] < 2000. ){  
                             outcalbas++;  
                         } else {  
                             incalbas++;  
                         };  
                         g++;  
                     };  
                     //  
                     j++;  
                     //  
                     if ( figmatra ){                      
                         figura2->cd();  
                         xviewev.str("");  
                         xviewev << "x-view " << i;  
                         xviewev << " event " << n;  
                         xviewev << " " << m;  
                         xviewev << " " << l;  
                         yviewev.str("");  
                         yviewev << "y-view " << i;  
                         yviewev << " event " << n;  
                         yviewev << " " << m;  
                         yviewev << " " << l;  
                         TH2F *Xview = new TH2F(xviewev.str().c_str(),"",96,-0.5,95.5,22,-0.5,21.5);  
                         TH2F *Yview = new TH2F(yviewev.str().c_str(),"",96,-0.5,95.5,22,-0.5,21.5);                          
                         if ( calib.calrms[l][m][n] > 0 ){  
                             Xview->SetFillColor(38);  
                             Yview->SetFillColor(38);  
                         };  
                         if ( calib.calrms[l][m][n] > 6 ){  
                             Xview->SetFillColor(4);  
                             Yview->SetFillColor(4);  
                         };  
                         if ( calib.calrms[l][m][n] > 16 ){  
                             Xview->SetFillColor(3);  
                             Yview->SetFillColor(3);  
                         };  
                         if ( calib.calrms[l][m][n] > 26 ){  
                             Xview->SetFillColor(2);  
                             Yview->SetFillColor(2);  
                         };  
                         if ( calib.calrms[l][m][n] > 46 ){  
                             Xview->SetFillColor(6);  
                             Yview->SetFillColor(6);  
                         };  
                         if ( calib.calrms[l][m][n] <= 0 || calib.calrms[l][m][n] >30000 || calib.calped[l][m][n]>25000){  
                             Xview->SetFillColor(10);  
                             Yview->SetFillColor(10);  
                         };  
                         if ( calib.calgood[l][m][n] != 0 ){  
                             Xview->SetFillColor(1);  
                             Yview->SetFillColor(1);  
                         };  
                         if ( l == 0 ) {  
                             Xview->Fill(n,m,1.);  
                             pd1->cd();                                
                             Xview->Draw("box same");  
                         };                                    
                         if ( l == 1 ) {  
                             Yview->Fill(n,m,1.);  
                             pd2->cd();  
                             Yview->Draw("box same");  
                         };                    
                     };  
                 };  
503              };              };
504          };              if ( calib.calrms[l][m][n] > 6 ){
505          if ( figmatra ){                Xview->SetFillColor(4);
506              figura2->cd();                Yview->SetFillColor(4);
             gStyle->SetOptStat("");  
             gStyle->SetOptDate(0);  
             t=new TLatex();  
             t->SetTextFont(32);  
             t->SetTextColor(1);  
             t->SetTextSize(0.03);  
             t->SetTextAlign(12);  
             titolo.str("");  
             titolo << "C13 - Calorimeter: strip RMS - file ";  
             titolo << file;  
             titolo << " - calibration number ";  
             titolo << (i+1);  
             t->DrawLatex(0.5,97.,titolo.str().c_str());  
             pd1->Update();  
             pd2->Update();  
             figura2->Update();  
         };  
         //  
         figura1 = new TCanvas("Calorimeter_calped_calrms_calgood", "Calorimeter_calped_calrms_calgood", 750, 950);  
         figura1->SetFillColor(10);  
         figura1->Range(0,0,100,100);  
         //  
         ccalped = (float)incalped/((float)outcalped + (float)incalped);  
         Int_t f1pd1col = 10;  
         if ( ccalped < ccalpedthr ) {  
             check = true;        
             f1pd1col = 45;  
         };  
         //  
         ccalrms = (float)incalrms/((float)outcalrms + (float)incalrms);  
         Int_t f1pd2col = 10;  
         if ( ccalrms < ccalrmsthr ) {  
             check = true;        
             f1pd2col = 45;  
         };  
         //  
         ccalbad = (float)totcalbad/4224.;  
         Int_t f1pd3col = 10;  
         if ( ccalbad > ccalbadthr ) {  
             check = true;        
             f1pd3col = 45;  
         };  
         //  
         TPad *f1pd1 = new TPad("f1pd1","This is f1pad1",0.02,0.684,0.98,0.95,f1pd1col);  
         TPad *f1pd2 = new TPad("f1pd2","This is f1pad2",0.02,0.367,0.98,0.634,f1pd2col);  
         TPad *f1pd3 = new TPad("f1pd3","This is f1pad3",0.02,0.05,0.98,0.317,f1pd3col);  
         figura1->Clear();  
         figura1->cd();  
         f1pd1->SetTicks();  
         f1pd2->SetTicks();  
         f1pd3->SetTicks();  
         f1pd1->Draw();  
         f1pd2->Draw();  
         f1pd3->Draw();  
         figura1->Draw();  
         figura3 = new TCanvas("Calorimeter_calthr_calvar_calbase", "Calorimeter_calthr_calvar_calbase", 750, 950);  
         figura3->SetFillColor(10);  
         figura3->Range(0,0,100,100);  
         //  
         ccalthr = (float)incalthr/((float)outcalthr + (float)incalthr);  
         Int_t f3pd1col = 10;  
         if ( ccalthr < ccalthrthr ) {  
             check = true;        
             f3pd1col = 45;  
         };  
         //  
         ccalvar = (float)incalvar/((float)outcalvar + (float)incalvar);  
         Int_t f3pd2col = 10;  
         if ( ccalvar < ccalvarthr ) {  
             check = true;        
             f3pd2col = 45;  
         };  
         //  
         ccalbas = (float)incalbas/((float)outcalbas + (float)incalbas);  
         Int_t f3pd3col = 10;  
         if ( ccalbas < ccalbasthr ) {  
             check = true;        
             f3pd3col = 45;  
         };  
         //  
         TPad *f3pd1 = new TPad("f3pd1","This is f3pad1",0.02,0.684,0.98,0.95,f3pd1col);  
         TPad *f3pd2 = new TPad("f3pd2","This is f3pad2",0.02,0.367,0.98,0.634,f3pd2col);  
         TPad *f3pd3 = new TPad("f3pd3","This is f3pad3",0.02,0.05,0.98,0.317,f3pd3col);  
         figura3->Clear();  
         figura3->cd();  
         f3pd1->SetTicks();  
         f3pd2->SetTicks();  
         f3pd3->SetTicks();  
         f3pd1->Draw();  
         f3pd2->Draw();  
         f3pd3->Draw();  
         figura3->Draw();        
         //  
         gStyle->SetOptStat("N");  
         figura1->cd();  
         gStyle->SetNdivisions(322,"x");  
         t=new TLatex();  
         t->SetTextFont(32);  
         t->SetTextColor(1);  
         t->SetTextSize(0.025);  
         t->SetTextAlign(12);  
         titolo.str("");  
         titolo << "EXPERT - Calorimeter: calped/calrms/calgood - file ";  
         titolo << file;  
         titolo << " - calibration number ";  
         titolo << (i+1);  
         t->DrawLatex(0.5,97.,titolo.str().c_str());  
         t->SetTextSize(0.03);  
         f1pd1->cd();  
         //  
         calped->GetXaxis()->SetNdivisions(322);  
         calped->SetXTitle("strip");  
         calped->SetYTitle("ADC channels");  
         calped->Draw();  
         TPolyLine *banda1;  
         Double_t xc[4] = {0.,4224.,4224.,0.};  
         Double_t yc[4] = {-700.,-700.,700.,700.};  
         banda1 = new TPolyLine(4,xc,yc);  
         banda1->SetLineColor(5);  
         banda1->SetFillColor(5);  
         banda1->SetLineWidth(1);  
         banda1->Draw("fSAME");  
         TPolyLine *banda2;  
         Double_t xc2[4] = {4031.5,4047.5,4047.5,4031.5};  
         Double_t yc2[4] = {-2500.,-2500.,28000.,28000.};  
         banda2 = new TPolyLine(4,xc2,yc2);  
         banda2->SetLineColor(5);  
         banda2->SetFillColor(5);  
         banda2->SetLineWidth(1);  
         banda2->Draw("fSAME");  
         calped->Draw("SAME");  
         f1pd2->cd();  
         f1pd2->SetLogy();  
         calrms->GetXaxis()->SetNdivisions(322);  
         calrms->Draw();  
         Double_t xd[4] = {0.,4224.,4224.,0.};  
         Double_t yd[4] = {1.,1.,7.,7.};  
         banda1 = new TPolyLine(4,xd,yd);  
         banda1->SetLineColor(5);  
         banda1->SetFillColor(5);  
         banda1->SetLineWidth(1);  
         banda1->Draw("fSAME");  
         calrms->SetXTitle("strip");  
         calrms->SetYTitle("ADC channels");  
         calrms->Draw("SAME");  
         f1pd3->cd();  
         gStyle->SetNdivisions(344,"x");  
         calbad->GetXaxis()->SetNdivisions(322);  
         calbad->Draw();  
         calbad->SetXTitle("strip");  
         calbad->SetYTitle("0=good 255=bad");  
         f1pd1->Update();  
         f1pd2->Update();  
         f1pd3->Update();  
         figura1->Update();  
         //  
         figura3->cd();  
         gStyle->SetNdivisions(644,"x");  
         t=new TLatex();  
         t->SetTextFont(32);  
         t->SetTextColor(1);  
         t->SetTextSize(0.025);  
         t->SetTextAlign(12);  
         titolo.str("");  
         titolo << "EXPERT - Calorimeter: calthr/calvar/calbase - file ";  
         titolo << file;  
         titolo << " - calibration number ";  
         titolo << (i+1);  
         t->DrawLatex(0.5,97.,titolo.str().c_str());  
         t->SetTextSize(0.03);  
         //  
         f3pd1->cd();  
         calthr->GetXaxis()->SetNdivisions(644);  
         calthr->SetXTitle("pre-amplifier");  
         calthr->SetYTitle("ADC channels");  
         calthr->Draw();  
         Double_t xe[4] = {0.,264.,264.,0.};  
         Double_t ye[4] = {12.,12.,21.,21.};  
         banda1 = new TPolyLine(4,xe,ye);  
         banda1->SetLineColor(5);  
         banda1->SetFillColor(5);  
         banda1->SetLineWidth(1);  
         banda1->Draw("fSAME");  
         calthr->Draw("SAME");  
         f3pd2->cd();  
         calvar->GetXaxis()->SetNdivisions(644);  
         calvar->SetXTitle("pre-amplifier");  
         calvar->SetYTitle("ADC channels");  
         calvar->Draw();  
         Double_t xt[4] = {0.,264.,264.,0.};  
         Double_t yt[4] = {1.,1.,8.,8.};  
         banda1 = new TPolyLine(4,xt,yt);  
         banda1->SetLineColor(5);  
         banda1->SetFillColor(5);  
         banda1->SetLineWidth(1);  
         banda1->Draw("fSAME");  
         calvar->Draw("SAME");  
         f3pd3->cd();  
         calbase->GetXaxis()->SetNdivisions(644);  
         calbase->SetXTitle("pre-amplifier");  
         calbase->SetYTitle("ADC channels");  
         calbase->Draw();  
         Double_t xg[4] = {0.,264.,264.,0.};  
         Double_t yg[4] = {2000.,2000.,4500.,4500.};  
         banda1 = new TPolyLine(4,xg,yg);  
         banda1->SetLineColor(5);  
         banda1->SetFillColor(5);  
         banda1->SetLineWidth(1);  
         banda1->Draw("fSAME");  
         calbase->Draw("SAME");  
         f3pd1->Update();  
         f3pd2->Update();  
         f3pd3->Update();  
         figura3->Update();  
         //  
         //  
         //  
         if ( ci == maxev-4 ) {  
             //  
             //  report sheet:  
             //  
             stringstream errore;  
             rapporto= new TCanvas("Calorimeter calibration report", "Calorimeter calibration report", 750, 950);  
             rapporto->cd();  
             rapporto->SetFillColor(10);  
             rapporto->Range(0,0,100,100);  
             t=new TLatex();  
             t->SetTextFont(32);  
             t->SetTextColor(1);  
             t->SetTextSize(0.035);  
             t->SetTextAlign(12);  
             errore.str("");  
             errore << "BASIC - C20 - Calibrations in file: " << file;  
             errore << " ";  
             t->SetTextSize(0.02);  
             t->DrawLatex(2.,99.,errore.str().c_str());  
             //  
             TPad *pad1;  
             TPad *pad2;  
             TPad *pad3;  
             TPad *pad4;  
             pad1 = new TPad("pad1","This is pad1",0.02,0.47,0.49,0.90,19);  
             pad2 = new TPad("pad2","This is pad2",0.51,0.47,0.98,0.90,19);  
             pad3 = new TPad("pad3","This is pad3",0.02,0.02,0.49,0.45,19);  
             pad4 = new TPad("pad4","This is pad4",0.51,0.02,0.98,0.45,19);  
             pad1->Range(0,0,100,100);  
             pad2->Range(0,0,100,100);  
             pad3->Range(0,0,100,100);  
             pad4->Range(0,0,100,100);  
             //  
             pad1->Draw();  
             pad2->Draw();  
             pad3->Draw();  
             pad4->Draw();  
             //  
             char *sezione = 0;  
             for (Int_t si = 0; si < 4; si++){  
                 if (si == 2)  
                     {  
                         pad1->cd() ;  
                         sezione = "** Section YE (x even) **";  
                     }  
                 if (si == 3)  
                     {  
                         pad2->cd();  
                         sezione = "** Section YO (x odd) **";  
                     }  
                 if (si == 0)  
                     {  
                         pad3->cd();  
                         sezione = "** Section XE (y odd) **";  
                     }  
                 if (si == 1)  
                     {  
                         pad4->cd();  
                         sezione = "** Section XO (y even) **";  
                     }  
                 t->SetTextFont(32);  
                 t->SetTextColor(1);  
                 t->SetTextSize(0.05);  
                 t->SetTextAlign(12);  
                 t->DrawLatex(33.,97.,sezione);  
                 t->SetTextSize(0.05);  
                 for (Int_t j = 0; j < 23; j++){  
                     if ( ver[si][j] ) {  
                         t->SetTextColor(50);  
                         if (j == 0) {  
                             errore.str("");  
                             errore << "* DSP ack error: " << ver[si][j];  
                             errore << " time(s)";  
                             t->DrawLatex(2.,30.,errore.str().c_str());  
                             check = true;        
                         }  
                         if (j == 1) {  
                             errore.str("");  
                             errore << "* Temperature alarm: " << ver[si][j];  
                             errore << " time(s)";  
                             t->DrawLatex(2.,74.,errore.str().c_str());  
                             check = true;        
                         }  
                         if (j == 2) {  
                             errore.str("");  
                             errore << "* Latch up alarm: " << ver[si][j];  
                             errore << " time(s).";  
                             t->DrawLatex(2.,65.,errore.str().c_str());  
                             check = true;        
                         }  
                         if (j == 3) {  
                             errore.str("");  
                             errore << "RAW mode: " << ver[si][j];  
                             errore << " time(s)";  
                             t->SetTextColor(38);  
                             t->DrawLatex(2.,90.,errore.str().c_str());  
                         }  
                         if (j == 4) {  
                             errore.str("");  
                             errore << "* CMD length error: " << ver[si][j];  
                             errore << " time(s)";  
                             t->DrawLatex(2.,66.,errore.str().c_str());  
                             check = true;        
                         }                
                         if (j == 5) {  
                             errore.str("");  
                             errore << "* Execution error: " << ver[si][j];  
                             errore << " time(s)";  
                             t->DrawLatex(2.,62.,errore.str().c_str());  
                             check = true;        
                         }  
                         if (j == 6) {  
                             errore.str("");  
                             errore << "* CRC error (st. word): " << ver[si][j];  
                             errore << " time(s)";  
                             t->DrawLatex(2.,58.,errore.str().c_str());  
                             check = true;        
                         }  
                         if (j == 7) {  
                             errore.str("");  
                             errore << "View or command not recognized: " << ver[si][j];  
                             errore << " time(s)";  
                             t->DrawLatex(2.,54.,errore.str().c_str());  
                             check = true;        
                         }  
                         //  
                         if (j == 8) {  
                             errore.str("");  
                             errore << "Missing section: " << ver[si][j];  
                             errore << " time(s)";  
                             t->DrawLatex(2.,50.,errore.str().c_str());  
                             check = true;        
                         }  
                         if (j == 9) {  
                             errore.str("");  
                             errore << "RAW MODE COMMAND: " << ver[si][j];  
                             errore << " time(s)";  
                             t->DrawLatex(2.,42.,errore.str().c_str());  
                         }  
                         if (j == 11) {  
                             errore.str("");  
                             errore << "CRC error (data): " << ver[si][j];  
                             errore << " time(s)";  
                             t->DrawLatex(2.,38.,errore.str().c_str());  
                             check = true;        
                         }  
                         if (j == 16) {  
                             errore.str("");  
                             errore << "Number of calibrations: " << ver[si][j];  
                             t->SetTextColor(38);  
                             t->DrawLatex(2.,86.,errore.str().c_str());  
                         }  
                         if (j == 19) {  
                             errore.str("");  
                             errore << "Pedestal checksum wrong: " << ver[si][j];  
                             errore << " time(s)";  
                             t->DrawLatex(2.,14.,errore.str().c_str());  
                             check = true;        
                         }  
                         if (j == 20) {  
                             errore.str("");  
                             errore << "Thresholds checksum wrong: " << ver[si][j];  
                             errore << " time(s)";  
                             t->DrawLatex(2.,10.,errore.str().c_str());  
                             check = true;        
                         }  
                         if (j == 22) {  
                             errore.str("");  
                             errore << "Packet length is zero (YODA input error), skipped: " << ver[si][j];  
                             errore << " time(s)";  
                             t->DrawLatex(2.,3.,errore.str().c_str());  
                             check = true;        
                         };  
                     };  
                 };  
507              };              };
508              rapporto->cd();              if ( calib.calrms[l][m][n] > 16 ){
509              t->SetTextFont(32);                Xview->SetFillColor(3);
510              t->SetTextColor(1);                Yview->SetFillColor(3);
511              t->SetTextSize(0.035);              };
512              t->SetTextAlign(12);              if ( calib.calrms[l][m][n] > 26 ){
513              t->DrawLatex(7.,95.,"Calorimeter CALIBRATION quick look: ");                Xview->SetFillColor(2);
514              //printf("vediamo: ccalped %f ccalrms %f ccalbad %f ccalthr %f ccalvar %f ccalbas %f \n",ccalped,ccalrms,ccalbad,ccalthr,ccalvar,ccalbas);                Yview->SetFillColor(2);
             if ( check ) {  
                 t->SetTextColor(50);  
                 t->DrawLatex(65.,95.,"WARNING, CHECK!");                  
                 t->SetTextColor(1);  
             } else {  
                 t->SetTextColor(38);  
                 t->DrawLatex(65.,95.,"OK!");  
                 t->SetTextColor(1);  
             };      
             rapporto->Update();  
         };    
         //  
         if ( !strcmp(format,"ps") ) {  
             if ( ci == minev ) {  
                 figsave.str("");  
                 figsave << outdir << "/" ;  
                 figsave << figrec << "_chkcalib.";  
                 figsave << format;  
                 figsave << "(";  
             };                
             if ( figmatra ) {  
                 figura2->Print(figsave.str().c_str(),"Portrait");  
                 if ( ci == minev ) {  
                     figsave.str("");  
                     figsave << outdir << "/" ;  
                     figsave << figrec << "_chkcalib.";  
                     figsave << format;  
                 };  
515              };              };
516              //              if ( calib.calrms[l][m][n] > 46 ){
517              figura1->Print(figsave.str().c_str(),"Portrait");                Xview->SetFillColor(6);
518              if ( ci == minev ) {                Yview->SetFillColor(6);
                 figsave.str("");  
                 figsave << outdir << "/" ;  
                 figsave << figrec << "_chkcalib.";  
                 figsave << format;  
519              };              };
520              //                    if ( calib.calrms[l][m][n] <= 0 || calib.calrms[l][m][n] >30000 || calib.calped[l][m][n]>25000){
521              figura3->Print(figsave.str().c_str(),"Portrait");                Xview->SetFillColor(10);
522              //                Yview->SetFillColor(10);
             if ( ci == maxev-4 ) {  
                 figsave.str("");  
                 figsave << outdir << "/" ;  
                 figsave << figrec << "_chkcalib.";  
                 figsave << format;  
                 figsave << ")";  
                 rapporto->Print(figsave.str().c_str(),"Portrait");  
             };                
         } else {  
             if ( figmatra ) {  
                 figsave.str("");  
                 figsave << outdir << "/" ;  
                 figsave << figrec << "_chkcalib1_";  
                 figsave << (i+1) << ".";  
                 figsave << format;  
                 figura2->SaveAs(figsave.str().c_str());  
523              };              };
524              //              if ( calib.calgood[l][m][n] != 0 ){
525              figsave1.str("");                Xview->SetFillColor(1);
526              figsave1 << outdir << "/" ;                Yview->SetFillColor(1);
527              figsave1 << figrec << "_chkcalib2_";              };
528              figsave1 << (i+1) << ".";              if ( l == 0 ) {
529              figsave1 << format;                Xview->Fill(n,m,1.);
530              figura1->SaveAs(figsave1.str().c_str());                pd1->cd();                                    
531              //                Xview->Draw("box same");
532              figsave2.str("");              };                              
533              figsave2 << outdir << "/" ;              if ( l == 1 ) {
534              figsave2 << figrec << "_chkcalib3_";                Yview->Fill(n,m,1.);
535              figsave2 << (i+1) << ".";                pd2->cd();
536              figsave2 << format;                Yview->Draw("box same");
537              figura3->SaveAs(figsave2.str().c_str());              };              
538              //            };
             if ( ci == maxev-4 ) {  
                 figsave.str("");  
                 figsave << outdir << "/" ;  
                 figsave << figrec << "_chkcalib_report.";  
                 figsave << format;  
                 rapporto->SaveAs(figsave.str().c_str());  
             };                
539          };          };
540          };
541      };      };
542      printf("\n");            if ( figmatra ){
543      return;        figura2->cd();
544          gStyle->SetOptStat("");
545          gStyle->SetOptDate(0);
546          t=new TLatex();
547          t->SetTextFont(32);
548          t->SetTextColor(1);
549          t->SetTextSize(0.03);
550          t->SetTextAlign(12);
551          titolo.str("");
552          titolo << "C13 - Calorimeter: strip RMS - file ";
553          titolo << file;
554          titolo << " - calibration number ";
555          titolo << (i+1);
556          t->DrawLatex(0.5,97.,titolo.str().c_str());
557          pd1->Update();
558          pd2->Update();
559          figura2->Update();
560        };
561        //
562        figura1 = new TCanvas("Calorimeter_calped_calrms_calgood", "Calorimeter_calped_calrms_calgood", 750, 950);
563        figura1->SetFillColor(10);
564        figura1->Range(0,0,100,100);
565        //
566        ccalped = (float)incalped/((float)outcalped + (float)incalped);
567        Int_t f1pd1col = 10;
568        if ( ccalped < ccalpedthr ) {
569          check = true;    
570          f1pd1col = 45;
571        };
572        //
573        ccalrms = (float)incalrms/((float)outcalrms + (float)incalrms);
574        Int_t f1pd2col = 10;
575        if ( ccalrms < ccalrmsthr ) {
576          check = true;    
577          f1pd2col = 45;
578        };
579        //
580        ccalbad = (float)totcalbad/4224.;
581        Int_t f1pd3col = 10;
582        if ( ccalbad > ccalbadthr ) {
583          check = true;    
584          f1pd3col = 45;
585        };
586        //
587        TPad *f1pd1 = new TPad("f1pd1","This is f1pad1",0.02,0.684,0.98,0.95,f1pd1col);
588        TPad *f1pd2 = new TPad("f1pd2","This is f1pad2",0.02,0.367,0.98,0.634,f1pd2col);
589        TPad *f1pd3 = new TPad("f1pd3","This is f1pad3",0.02,0.05,0.98,0.317,f1pd3col);
590        figura1->Clear();
591        figura1->cd();
592        f1pd1->SetTicks();
593        f1pd2->SetTicks();
594        f1pd3->SetTicks();
595        f1pd1->Draw();
596        f1pd2->Draw();
597        f1pd3->Draw();
598        figura1->Draw();
599        figura3 = new TCanvas("Calorimeter_calthr_calvar_calbase", "Calorimeter_calthr_calvar_calbase", 750, 950);
600        figura3->SetFillColor(10);
601        figura3->Range(0,0,100,100);
602        //
603        ccalthr = (float)incalthr/((float)outcalthr + (float)incalthr);
604        Int_t f3pd1col = 10;
605        if ( ccalthr < ccalthrthr ) {
606          check = true;    
607          f3pd1col = 45;
608        };
609        //
610        ccalvar = (float)incalvar/((float)outcalvar + (float)incalvar);
611        Int_t f3pd2col = 10;
612        if ( ccalvar < ccalvarthr ) {
613          check = true;    
614          f3pd2col = 45;
615        };
616        //
617        ccalbas = (float)incalbas/((float)outcalbas + (float)incalbas);
618        Int_t f3pd3col = 10;
619        if ( ccalbas < ccalbasthr ) {
620          check = true;    
621          f3pd3col = 45;
622        };
623        //
624        TPad *f3pd1 = new TPad("f3pd1","This is f3pad1",0.02,0.684,0.98,0.95,f3pd1col);
625        TPad *f3pd2 = new TPad("f3pd2","This is f3pad2",0.02,0.367,0.98,0.634,f3pd2col);
626        TPad *f3pd3 = new TPad("f3pd3","This is f3pad3",0.02,0.05,0.98,0.317,f3pd3col);
627        figura3->Clear();
628        figura3->cd();
629        f3pd1->SetTicks();
630        f3pd2->SetTicks();
631        f3pd3->SetTicks();
632        f3pd1->Draw();
633        f3pd2->Draw();
634        f3pd3->Draw();
635        figura3->Draw();      
636        //
637        gStyle->SetOptStat("N");
638        figura1->cd();
639        gStyle->SetNdivisions(322,"x");
640        t=new TLatex();
641        t->SetTextFont(32);
642        t->SetTextColor(1);
643        t->SetTextSize(0.025);
644        t->SetTextAlign(12);
645        titolo.str("");
646        titolo << "EXPERT - Calorimeter: calped/calrms/calgood - file ";
647        titolo << file;
648        titolo << " - calibration number ";
649        titolo << (i+1);
650        t->DrawLatex(0.5,97.,titolo.str().c_str());
651        t->SetTextSize(0.03);
652        f1pd1->cd();
653        //
654        calped->GetXaxis()->SetNdivisions(322);
655        calped->SetXTitle("strip");
656        calped->SetYTitle("ADC channels");
657        calped->SetMaximum(3000.);
658        calped->SetMinimum(-3000.);
659        calped->Draw();
660        TPolyLine *banda1;
661        Double_t xc[4] = {0.,4224.,4224.,0.};
662        Double_t yc[4] = {-700.,-700.,700.,700.};
663        banda1 = new TPolyLine(4,xc,yc);
664        banda1->SetLineColor(5);
665        banda1->SetFillColor(5);
666        banda1->SetLineWidth(1);
667        banda1->Draw("fSAME");
668        TPolyLine *banda2;
669        Double_t xc2[4] = {4031.5,4047.5,4047.5,4031.5};
670        //  Double_t yc2[4] = {-2500.,-2500.,28000.,28000.};
671        Double_t yc2[4] = {-3000.,-3000.,3000.,3000.};
672        banda2 = new TPolyLine(4,xc2,yc2);
673        banda2->SetLineColor(5);
674        banda2->SetFillColor(5);
675        banda2->SetLineWidth(1);
676        banda2->Draw("fSAME");
677        calped->Draw("SAME");
678        f1pd2->cd();
679        f1pd2->SetLogy();
680        calrms->GetXaxis()->SetNdivisions(322);
681        calrms->Draw();
682        Double_t xd[4] = {0.,4224.,4224.,0.};
683        Double_t yd[4] = {1.,1.,7.,7.};
684        banda1 = new TPolyLine(4,xd,yd);
685        banda1->SetLineColor(5);
686        banda1->SetFillColor(5);
687        banda1->SetLineWidth(1);
688        banda1->Draw("fSAME");
689        Float_t minrm = calrms->GetMinimum();
690        Float_t maxrm = calrms->GetMaximum();
691        Double_t xrm2[4] = {3449.,3551.,3551.,3449.};
692        Double_t yrm2[4] = {minrm,minrm,maxrm,maxrm};
693        banda2 = new TPolyLine(4,xrm2,yrm2);
694        banda2->SetLineColor(5);
695        banda2->SetFillColor(5);
696        banda2->SetLineWidth(1);
697        banda2->Draw("fSAME");
698        calrms->SetXTitle("strip");
699        calrms->SetYTitle("ADC channels");
700        calrms->Draw("SAME");
701        f1pd3->cd();
702        gStyle->SetNdivisions(344,"x");
703        calbad->GetXaxis()->SetNdivisions(322);
704        calbad->Draw();
705        calbad->SetXTitle("strip");
706        calbad->SetYTitle("0=good 255=bad");
707        f1pd1->Update();
708        f1pd2->Update();
709        f1pd3->Update();
710        figura1->Update();
711        //
712        figura3->cd();
713        gStyle->SetNdivisions(644,"x");
714        t=new TLatex();
715        t->SetTextFont(32);
716        t->SetTextColor(1);
717        t->SetTextSize(0.025);
718        t->SetTextAlign(12);
719        titolo.str("");
720        titolo << "EXPERT - Calorimeter: calthr/calvar/calbase - file ";
721        titolo << file;
722        titolo << " - calibration number ";
723        titolo << (i+1);
724        t->DrawLatex(0.5,97.,titolo.str().c_str());
725        t->SetTextSize(0.03);
726        //
727        f3pd1->cd();
728        calthr->GetXaxis()->SetNdivisions(644);
729        calthr->SetXTitle("pre-amplifier");
730        calthr->SetYTitle("ADC channels");
731        calthr->Draw();
732        Double_t xe[4] = {0.,264.,264.,0.};
733        Double_t ye[4] = {12.,12.,21.,21.};
734        banda1 = new TPolyLine(4,xe,ye);
735        banda1->SetLineColor(5);
736        banda1->SetFillColor(5);
737        banda1->SetLineWidth(1);
738        banda1->Draw("fSAME");
739        //
740        minrm = calthr->GetMinimum();
741        maxrm = 1.05*calthr->GetMaximum();
742        Double_t xth2[4] = {215.,221.,221.,215.};
743        Double_t yth2[4] = {minrm,minrm,maxrm,maxrm};
744        banda2 = new TPolyLine(4,xth2,yth2);
745        banda2->SetLineColor(5);
746        banda2->SetFillColor(5);
747        banda2->SetLineWidth(1);
748        banda2->Draw("fSAME");
749        //
750        calthr->Draw("SAME");
751        f3pd2->cd();
752        //  gPad->SetLogy();
753        calvar->SetMaximum(25.);
754        calvar->GetXaxis()->SetNdivisions(644);
755        calvar->SetXTitle("pre-amplifier");
756        calvar->SetYTitle("ADC channels");
757        calvar->Draw();
758        Double_t xt[4] = {0.,264.,264.,0.};
759        Double_t yt[4] = {1.,1.,8.,8.};
760        banda1 = new TPolyLine(4,xt,yt);
761        banda1->SetLineColor(5);
762        banda1->SetFillColor(5);
763        banda1->SetLineWidth(1);
764        banda1->Draw("fSAME");
765        //
766        minrm = calvar->GetMinimum();
767        maxrm = 1.05*calvar->GetMaximum();
768        Double_t xva2[4] = {215.,221.,221.,215.};
769        Double_t yva2[4] = {minrm,minrm,maxrm,maxrm};
770        banda2 = new TPolyLine(4,xva2,yva2);
771        banda2->SetLineColor(5);
772        banda2->SetFillColor(5);
773        banda2->SetLineWidth(1);
774        banda2->Draw("fSAME");
775        //
776        calvar->Draw("SAME");
777        f3pd3->cd();
778        calbase->GetXaxis()->SetNdivisions(644);
779        calbase->SetXTitle("pre-amplifier");
780        calbase->SetYTitle("ADC channels");
781        calbase->Draw();
782        Double_t xg[4] = {0.,264.,264.,0.};
783        Double_t yg[4] = {2000.,2000.,4500.,4500.};
784        banda1 = new TPolyLine(4,xg,yg);
785        banda1->SetLineColor(5);
786        banda1->SetFillColor(5);
787        banda1->SetLineWidth(1);
788        banda1->Draw("fSAME");
789        calbase->Draw("SAME");
790        f3pd1->Update();
791        f3pd2->Update();
792        f3pd3->Update();
793        figura3->Update();
794        //
795        if ( !strcmp(format,"ps") ) {
796          if ( ci == minev ) {
797            figsave.str("");
798            figsave << outdir << "/" ;
799            figsave << figrec << "_CaloCHKCALIB.";
800            figsave << format;
801            figsave << "(";
802          };                    
803          if ( figmatra ) {
804            figura2->Print(figsave.str().c_str(),"Portrait");
805            if ( ci == minev ) {
806              figsave.str("");
807              figsave << outdir << "/" ;
808              figsave << figrec << "_CaloCHKCALIB.";
809              figsave << format;
810            };
811          };
812          //
813          figura1->Print(figsave.str().c_str(),"Portrait");
814          if ( ci == minev ) {
815            figsave.str("");
816            figsave << outdir << "/" ;
817            figsave << figrec << "_CaloCHKCALIB.";
818            figsave << format;
819          };
820          //            
821          figura3->Print(figsave.str().c_str(),"Portrait");
822          //
823        } else {
824          if ( figmatra ) {
825            figsave.str("");
826            figsave << outdir << "/" ;
827            figsave << figrec << "_CaloCHKCALIB1_";
828            figsave << (i+1) << ".";
829            figsave << format;
830            figura2->SaveAs(figsave.str().c_str());
831          };
832          //
833          figsave1.str("");
834          figsave1 << outdir << "/" ;
835          figsave1 << figrec << "_CaloCHKCALIB2_";
836          figsave1 << (i+1) << ".";
837          figsave1 << format;
838          figura1->SaveAs(figsave1.str().c_str());
839          //
840          figsave2.str("");
841          figsave2 << outdir << "/" ;
842          figsave2 << figrec << "_CaloCHKCALIB3_";
843          figsave2 << (i+1) << ".";
844          figsave2 << format;
845          figura3->SaveAs(figsave2.str().c_str());
846          //
847        };
848        if ( iactive && w4i ){
849          while ( gROOT->GetListOfCanvases()->FindObject(figura2) || gROOT->GetListOfCanvases()->FindObject(figura1) || gROOT->GetListOfCanvases()->FindObject(figura3) ){
850            gSystem->ProcessEvents();
851            gSystem->Sleep(10);
852          };
853        };
854     };
855      //
856      //
857      //
858      //
859      //  report sheet:
860      //
861      stringstream errore;
862      rapporto= new TCanvas("Calorimeter calibration report", "Calorimeter calibration report", 750, 950);
863      rapporto->cd();
864      rapporto->SetFillColor(10);
865      rapporto->Range(0,0,100,100);
866      TLatex *t=new TLatex();
867      t->SetTextFont(32);
868      t->SetTextColor(1);
869      t->SetTextSize(0.035);
870      t->SetTextAlign(12);
871      errore.str("");
872      errore << "BASIC - C20 - Calibrations in file: " << file;
873      errore << " ";
874      t->SetTextSize(0.02);
875      t->DrawLatex(2.,99.,errore.str().c_str());
876      //
877      TPad *pad1;
878      TPad *pad2;
879      TPad *pad3;
880      TPad *pad4;
881      pad1 = new TPad("pad1","This is pad1",0.02,0.47,0.49,0.90,19);
882      pad2 = new TPad("pad2","This is pad2",0.51,0.47,0.98,0.90,19);
883      pad3 = new TPad("pad3","This is pad3",0.02,0.02,0.49,0.45,19);
884      pad4 = new TPad("pad4","This is pad4",0.51,0.02,0.98,0.45,19);
885      pad1->Range(0,0,100,100);
886      pad2->Range(0,0,100,100);
887      pad3->Range(0,0,100,100);
888      pad4->Range(0,0,100,100);
889      //
890      pad1->Draw();
891      pad2->Draw();
892      pad3->Draw();
893      pad4->Draw();
894      //
895      char *sezione = 0;
896      for (Int_t si = 0; si < 4; si++){
897        if (si == 2)
898          {
899            pad1->cd() ;
900            sezione = "** Section YE (x even) **";
901          }
902        if (si == 3)
903          {
904            pad2->cd();
905            sezione = "** Section YO (x odd) **";
906          }
907        if (si == 0)
908          {
909            pad3->cd();
910            sezione = "** Section XE (y odd) **";
911          }
912        if (si == 1)
913          {
914            pad4->cd();
915            sezione = "** Section XO (y even) **";
916          }
917        t->SetTextFont(32);
918        t->SetTextColor(1);
919        t->SetTextSize(0.05);
920        t->SetTextAlign(12);
921        t->DrawLatex(33.,97.,sezione);
922        t->SetTextSize(0.05);
923        for (Int_t j = 0; j < 23; j++){
924          if ( ver[si][j] ) {
925            t->SetTextColor(50);
926            if (j == 0) {
927              errore.str("");
928              errore << "* DSP ack error: " << ver[si][j];
929              errore << " time(s)";
930              t->DrawLatex(2.,30.,errore.str().c_str());
931              check = true;
932            }
933            if (j == 1) {
934              errore.str("");
935              errore << "* Temperature alarm: " << ver[si][j];
936              errore << " time(s)";
937              t->DrawLatex(2.,74.,errore.str().c_str());
938              check = true;
939            }
940            if (j == 2) {
941              errore.str("");
942              errore << "* Latch up alarm: " << ver[si][j];
943              errore << " time(s).";
944              t->DrawLatex(2.,65.,errore.str().c_str());
945              check = true;
946            }
947            if (j == 3) {
948              errore.str("");
949              errore << "RAW mode: " << ver[si][j];
950              errore << " time(s)";
951              t->SetTextColor(38);
952              t->DrawLatex(2.,90.,errore.str().c_str());
953            }
954            if (j == 4) {
955              errore.str("");
956              errore << "* CMD length error: " << ver[si][j];
957              errore << " time(s)";
958              t->DrawLatex(2.,66.,errore.str().c_str());
959              check = true;
960            }              
961            if (j == 5) {
962              errore.str("");
963              errore << "* Execution error: " << ver[si][j];
964              errore << " time(s)";
965              t->DrawLatex(2.,62.,errore.str().c_str());
966              check = true;
967            }
968            if (j == 6) {
969              errore.str("");
970              errore << "* CRC error (st. word): " << ver[si][j];
971              errore << " time(s)";
972              t->DrawLatex(2.,58.,errore.str().c_str());
973              check = true;
974            }
975            if (j == 7) {
976              errore.str("");
977              errore << "View or command not recognized: " << ver[si][j];
978              errore << " time(s)";
979              t->DrawLatex(2.,54.,errore.str().c_str());
980              check = true;
981            }
982            //
983            if (j == 8) {
984              errore.str("");
985              errore << "Missing section: " << ver[si][j];
986              errore << " time(s)";
987              t->DrawLatex(2.,50.,errore.str().c_str());
988              check = true;
989            }
990            if (j == 9) {
991              errore.str("");
992              errore << "RAW MODE COMMAND: " << ver[si][j];
993              errore << " time(s)";
994              t->DrawLatex(2.,42.,errore.str().c_str());
995            }
996            if (j == 11) {
997              errore.str("");
998              errore << "CRC error (data): " << ver[si][j];
999              errore << " time(s)";
1000              t->DrawLatex(2.,38.,errore.str().c_str());
1001              check = true;
1002            }
1003            if (j == 16) {
1004              errore.str("");
1005              errore << "Number of calibrations: " << ver[si][j];
1006              t->SetTextColor(38);
1007              t->DrawLatex(2.,86.,errore.str().c_str());
1008            }
1009            if (j == 19) {
1010              errore.str("");
1011              errore << "Pedestal checksum wrong: " << ver[si][j];
1012              errore << " time(s)";
1013              t->DrawLatex(2.,14.,errore.str().c_str());
1014              check = true;
1015            }
1016            if (j == 20) {
1017              errore.str("");
1018              errore << "Thresholds checksum wrong: " << ver[si][j];
1019              errore << " time(s)";
1020              t->DrawLatex(2.,10.,errore.str().c_str());
1021              check = true;
1022            }
1023            if (j == 22) {
1024              errore.str("");
1025              errore << "Packet length is zero (YODA input error), skipped: " << ver[si][j];
1026              errore << " time(s)";
1027              t->DrawLatex(2.,3.,errore.str().c_str());
1028              check = true;
1029            };
1030          };
1031        };
1032      };
1033      rapporto->cd();
1034      t->SetTextFont(32);
1035      t->SetTextColor(1);
1036      t->SetTextSize(0.035);
1037      t->SetTextAlign(12);
1038      t->DrawLatex(7.,95.,"Calorimeter CALIBRATION quick look: ");
1039      //printf("vediamo: ccalped %f ccalrms %f ccalbad %f ccalthr %f ccalvar %f ccalbas %f \n",ccalped,ccalrms,ccalbad,ccalthr,ccalvar,ccalbas);
1040      if ( check ) {
1041        t->SetTextColor(50);
1042        t->DrawLatex(65.,95.,"WARNING, CHECK!");            
1043        t->SetTextColor(1);
1044      } else {
1045        t->SetTextColor(38);
1046        t->DrawLatex(65.,95.,"OK!");
1047        t->SetTextColor(1);
1048      };    
1049      rapporto->Update();
1050      //
1051      if ( !strcmp(format,"ps") ) {
1052        figsave.str("");
1053        figsave << outdir << "/" ;
1054        figsave << figrec << "_CaloCHKCALIB.";
1055        figsave << format;
1056        figsave << ")";
1057        rapporto->Print(figsave.str().c_str(),"Portrait");
1058      } else {
1059        figsave.str("");
1060        figsave << outdir << "/" ;
1061        figsave << figrec << "_CaloCHKCALIB_report.";
1062        figsave << format;
1063        rapporto->SaveAs(figsave.str().c_str());
1064      };
1065      if ( iactive && w4i ){
1066        while ( gROOT->GetListOfCanvases()->FindObject(rapporto) ){
1067          gSystem->ProcessEvents();
1068          gSystem->Sleep(10);
1069        };
1070      };
1071      printf("\n");
1072      return;
1073  }  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.23