/[PAMELA software]/quicklook/tracker/flight/macros/FTrkScanQLook_EXPERT.cxx
ViewVC logotype

Diff of /quicklook/tracker/flight/macros/FTrkScanQLook_EXPERT.cxx

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

revision 1.5 by pam-fi, Thu Jun 29 11:11:59 2006 UTC revision 1.12 by pam-fi, Tue Sep 19 15:15:42 2006 UTC
# Line 2  Line 2 
2   *  FTrkScanQlook_EXPERT.cxx   *  FTrkScanQlook_EXPERT.cxx
3   *   *
4   * autor: D.Fedele   * autor: D.Fedele
5   * version v1r04   * version v1r11
6   * Parameters:   * Parameters:
7   *      file - the path to the root file to analyze   *      file - the path to the root file to analyze
8   *      outdir - total path of output file   *      outdir - total path of output file
# Line 123  void FTrkScanQLook_EXPERT(TString file, Line 123  void FTrkScanQLook_EXPERT(TString file,
123    
124    //    //
125    //   obtain information about the data file and select the output file    //   obtain information about the data file and select the output file
   const string filepath=file.Data();    
126    Int_t dwpos = file.Last('/');    Int_t dwpos = file.Last('/');
127    Int_t dwpos1 = file.Last('.');    Int_t dwpos1 = file.Last('.');
128    TString base,ffile ;    TString base,ffile ;
# Line 174  void FTrkScanQLook_EXPERT(TString file, Line 173  void FTrkScanQLook_EXPERT(TString file,
173    printf(" Number of Header Entries: %d\n",neventH);    printf(" Number of Header Entries: %d\n",neventH);
174        
175    Long64_t obt=0;      Long64_t obt=0;  
176      Int_t ev[2];
177      TString cal="";
178    
179      ev[0]=0;
180      ev[1]=0;
181    for(Int_t i=0;i<neventH;i++){    for(Int_t i=0;i<neventH;i++){
182      otr->GetEntry(i);      otr->GetEntry(i);
183      pH = eH->GetPscuHeader();      pH = eH->GetPscuHeader();
184      if(reh->TRK_CALIB_USED!=104){      if(reh->TRK_CALIB_USED!=104){
185        obt = pH->GetOrbitalTime();        obt = pH->GetOrbitalTime();
186          cal="Event with online calibration";
187        break;        break;
188      }      }
189      if(i==neventH-1){      if(i==neventH-1){
190        printf("\n\n ******  ONLINE CALIBRATION NOT FOUND IN THIS FILE  ******\n\n");        cal="*****  ONLINE CALIBRATION NOT FOUND IN THIS FILE  *****";
191        return;        ev[0]=2;
192          ev[1]=3;
193      }      }
194    }    }
195    Int_t ev[2];    if(ev[0]==0){
196    for(Int_t i=0;i<nevents;i++){      for(Int_t i=0;i<nevents;i++){
197      tr->GetEntry(i);        tr->GetEntry(i);
198      ph = eh->GetPscuHeader();        ph = eh->GetPscuHeader();
199      if(ph->GetOrbitalTime()>obt){        if(ph->GetOrbitalTime()>obt){
200        ev[0]=i+2;          ev[0]=i+2;
201        ev[1]=i+3;          ev[1]=i+3;
202        break;          break;
203          }
204      }      }
205    }    }
206    
# Line 205  void FTrkScanQLook_EXPERT(TString file, Line 212  void FTrkScanQLook_EXPERT(TString file,
212    
213    for(Int_t e=0;e<2;e++){    for(Int_t e=0;e<2;e++){
214      event=ev[e];      event=ev[e];
215      printf("Scan of Entry %d\n",event-1);      printf("Scan of Entry %d\n",event);
216                            
217      tr->GetEntry(event-1);          tr->GetEntry(event);    
218      //============================================================================        //============================================================================  
219    
220      gStyle->SetLabelSize(0.06,"x");      gStyle->SetLabelSize(0.06,"x");
# Line 229  void FTrkScanQLook_EXPERT(TString file, Line 236  void FTrkScanQLook_EXPERT(TString file,
236      c1[e]->SetFillColor(10);      c1[e]->SetFillColor(10);
237      c1[e]->Range(0,0,1,1);      c1[e]->Range(0,0,1,1);
238      stringstream fromfile;      stringstream fromfile;
239      fromfile<<"FTrkScanQLook_EXPERT      File: "<<ffile<<"            ---->  Entry  "<<event-1;      fromfile<<"FTrkScanQLook_EXPERT      File: "<<ffile<<"            ---->  Entry  "<<event;
240      TLatex *t=new TLatex();      TLatex *t=new TLatex();
241      t->SetTextFont(32);      t->SetTextFont(32);
242      t->SetTextColor(1);      t->SetTextColor(1);
243      t->SetTextAlign(12);      t->SetTextAlign(12);
244      t->SetTextSize(0.02);      t->SetTextSize(0.02);
245      t->DrawLatex(0.02,0.98,fromfile.str().c_str());      t->DrawLatex(0.02,0.98,fromfile.str().c_str());
246        t->DrawLatex(0.60,0.98,cal.Data());
247    
248      //  draw pads      //  draw pads
249      TPad *trkpad[12];          //pad for histos      TPad *trkpad[12];          //pad for histos
# Line 310  void FTrkScanQLook_EXPERT(TString file, Line 318  void FTrkScanQLook_EXPERT(TString file,
318        ifull[nn]=0;        ifull[nn]=0;
319        icomp[nn]=0;        icomp[nn]=0;
320        imax[nn]=0;        imax[nn]=0;
321          if(ndsp>0){
322            if(ndsp<13){
323                    
324        /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*            /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
325         *             *
326         * Write event LEVEL0 report             * Write event LEVEL0 report
327         *             *
328         *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/             *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/
329    
330        trkpadtext[nn]->SetTextFont(40);            trkpadtext[nn]->SetTextFont(40);
331        trkpadtext[nn]->SetFillColor(33);            trkpadtext[nn]->SetFillColor(33);
332        trkpadtext[nn]->SetTextSize(0.012);            trkpadtext[nn]->SetTextSize(0.012);
333        trkpadtext[nn]->SetTextAlign(13);            trkpadtext[nn]->SetTextAlign(13);
334    
335        trkpadtext[nn]->AddText(" ");            trkpadtext[nn]->AddText(" ");
336        message<<"DAQ mode  --------> "<<trk->DAQmode[n];            message<<"DAQ mode  --------> "<<trk->DAQmode[n];
337        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
338        message.str("");            message.str("");
339        message<<"Event number  --------> "<<trk->eventn[n];            message<<"Event number  --------> "<<trk->eventn[n];
340        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
341        message.str("");            message.str("");
342        message<<"13-bit words --------> "<<trk->DATAlength[n];            message<<"13-bit words --------> "<<trk->DATAlength[n];
343        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
344        message.str("");            message.str("");
345        if (!(nn%2)&&trk->signcluster[n][0]!=0) message<<"L1  add:  "<<trk->addrcluster[n][0]<<" - sign: "<<1024-(trk->signcluster[n][0]);            if (!(nn%2)&&trk->signcluster[n][0]!=0) message<<"L1  add:  "<<trk->addrcluster[n][0]<<" - sign: "<<1024-(trk->signcluster[n][0]);
346        else message<<"L1  add:  "<<trk->addrcluster[n][0]<<" - sign: "<<(trk->signcluster[n][0]);            else message<<"L1  add:  "<<trk->addrcluster[n][0]<<" - sign: "<<(trk->signcluster[n][0]);
347        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
348        message.str("");            message.str("");
349        if (!(nn%2)&&trk->signcluster[n][1]!=0) message<<"L2  add:  "<<trk->addrcluster[n][1]<<" - sign: "<<1024-(trk->signcluster[n][1]);            if (!(nn%2)&&trk->signcluster[n][1]!=0) message<<"L2  add:  "<<trk->addrcluster[n][1]<<" - sign: "<<1024-(trk->signcluster[n][1]);
350        else message<<"L2  add:  "<<trk->addrcluster[n][1]<<" - sign: "<<trk->signcluster[n][1];            else message<<"L2  add:  "<<trk->addrcluster[n][1]<<" - sign: "<<trk->signcluster[n][1];
351        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
352        message.str("");            message.str("");
353        if (!(nn%2)&&trk->signcluster[n][2]!=0) message<<"L3  add:  "<<trk->addrcluster[n][2]<<" - sign: "<<1024-(trk->signcluster[n][2]);            if (!(nn%2)&&trk->signcluster[n][2]!=0) message<<"L3  add:  "<<trk->addrcluster[n][2]<<" - sign: "<<1024-(trk->signcluster[n][2]);
354        else message<<"L3  add:  "<<trk->addrcluster[n][2]<<" - sign: "<<trk->signcluster[n][2];            else message<<"L3  add:  "<<trk->addrcluster[n][2]<<" - sign: "<<trk->signcluster[n][2];
355        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
356        message.str("");            message.str("");
357        message<<"NCLUST "<<trk->nclust[n]<<"    CUTC "<<trk->cutc[n]<<"   CUTCL "<<trk->cutcl[n];            message<<"NCLUST "<<trk->nclust[n]<<"    CUTC "<<trk->cutc[n]<<"   CUTCL "<<trk->cutcl[n];
358        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
359        message.str("");            message.str("");
360        message<<"Comp. time "<<trk->compressiontime[n]<<" x 0.051ms = "<<0.051*trk->compressiontime[n]<<" ms";            message<<"Comp. time "<<trk->compressiontime[n]<<" x 0.051ms = "<<0.051*trk->compressiontime[n]<<" ms";
361        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
362        message.str("");            message.str("");
363        trkpadtext[nn]->AddText(" ");            trkpadtext[nn]->AddText(" ");
364        message<<"CRC -->  "<<trk->crc[n];            message<<"CRC -->  "<<trk->crc[n];
365        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
366        message.str("");            message.str("");
367        message<<"FL1-6 -->  "<<trk->fl1[n]<<" "<<trk->fl2[n]<<" "<<trk->fl3[n]<<" "<<trk->fl4[n]<<" "<<trk->fl5[n]<<" "<<trk->fl6[n]<<" FC "<<trk->fc[n];            message<<"FL1-6 -->  "<<trk->fl1[n]<<" "<<trk->fl2[n]<<" "<<trk->fl3[n]<<" "<<trk->fl4[n]<<" "<<trk->fl5[n]<<" "<<trk->fl6[n]<<" FC "<<trk->fc[n];
368        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
369        message.str("");            message.str("");
370        trkpadtext[nn]->AddText(" ");            trkpadtext[nn]->AddText(" ");
371        trkpadtext[nn]->AddLine(0,0,0,0);            trkpadtext[nn]->AddLine(0,0,0,0);
372        message<<"PNum "<<trk->pnum[n]<<" - BId "<<trk->bid[n]<<"       ALARM  "<<trk->alarm[n];            message<<"PNum "<<trk->pnum[n]<<" - BId "<<trk->bid[n]<<"       ALARM  "<<trk->alarm[n];
373        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
374        message.str("");            message.str("");
375        message<<"Cmd "<<trk->cmdnum[n]<<" --- Answer length "<<trk->aswr[n]<<" byte";            message<<"Cmd "<<trk->cmdnum[n]<<" --- Answer length "<<trk->aswr[n]<<" byte";
376        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
377        message.str("");            message.str("");
378        trkpadtext[nn]->AddText(" ");            trkpadtext[nn]->AddText(" ");
379                    
380        TOTDATAlength_check = TOTDATAlength_check + trk->DATAlength[n];            TOTDATAlength_check = TOTDATAlength_check + trk->DATAlength[n];
381    
382        /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*            /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
383         *             *
384         * Plot event LEVEL0 histo             * Plot event LEVEL0 histo
385         *             *
386         *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/             *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/
387    
388        //=============================================            //=============================================
389    
390        for(Int_t i = 0; i< 3072; i++){            for(Int_t i = 0; i< 3072; i++){
391          whistomax[i] = -200;              whistomax[i] = -200;
392          whistocomp[i] = -200;              whistocomp[i] = -200;
393          whistofull[i] = -200;              whistofull[i] = -200;
394          whisto[i] = -200;              whisto[i] = -200;
395        }            }
396    
397        //      ===============            //      ===============
398        //      trasmitted data            //      trasmitted data
399        //      ===============            //      ===============
400    
401        address = 0;            address = 0;
402        ladder = 1;            ladder = 1;
403        for(Int_t i = 0; i < trk->DATAlength[n] ; i++){            for(Int_t i = 0; i < trk->DATAlength[n] ; i++){
404          word = trk->TrackerData.At(iword);                        word = trk->TrackerData.At(iword);      
405          thisword = datadecode(word);              thisword = datadecode(word);
406          iword++;              iword++;
407          switch (thisword.type){              switch (thisword.type){
408                            
409          case 0:  //ADC value              case 0:  //ADC value
410            whisto[address] = thisword.decode;                whisto[address] = thisword.decode;
411            address++;                    address++;    
412            //    cout << "    adr " << address << "\n";                //        cout << "    adr " << address << "\n";
413            break;                break;
414    
415          case 1:  //address              case 1:  //address
416            address = 1024*(ladder-1) + thisword.decode;                address = 1024*(ladder-1) + thisword.decode;
417            //    cout << "    adr " << address << "\n";                //        cout << "    adr " << address << "\n";
418            break;                break;
419    
420          case 2:  //end-of-ladder              case 2:  //end-of-ladder
421            ladder = thisword.decode;                ladder = thisword.decode;
422            //            cout << "Ladder " << ladder << "\n";                //                cout << "Ladder " << ladder << "\n";
423            if(ladder==3){                if(ladder==3){
424              //                  end of compressed data - FILL HISTO                  //                  end of compressed data - FILL HISTO
425              //cout << ">>> COMPRESSED data" << "\n";                  //cout << ">>> COMPRESSED data" << "\n";
426              for(ii = 0; ii < 3072; ii++){                  for(ii = 0; ii < 3072; ii++){
427                whistocomp[ii]=whisto[ii];                    whistocomp[ii]=whisto[ii];
428                whisto[ii] = -200;                    whisto[ii] = -200;
429              }                  }
430              address = 0;                  address = 0;
431              ladder = 1;                              ladder = 1;                
432            }else if(ladder==6){                }else if(ladder==6){
433              //                  end of full data - FILL HISTO                  //                  end of full data - FILL HISTO
434              //cout << ">>> FULL data" << "\n";                  //cout << ">>> FULL data" << "\n";
435              for(ii = 0; ii < 3072; ii++){                  for(ii = 0; ii < 3072; ii++){
436                whistofull[ii]=whisto[ii];                    whistofull[ii]=whisto[ii];
437                whisto[ii] = -200;                    whisto[ii] = -200;
438              }                  }
439              address = 0;                  address = 0;
440              ladder = 1;                  ladder = 1;
441            }else{                                }else{            
442              if(ladder>3)        ladder=ladder-3;                  if(ladder>3)    ladder=ladder-3;
443              address= ladder*1024;                                address= ladder*1024;          
444              ladder = ladder + 1;                          ladder = ladder + 1;    
445            }                }
446          }                  }    
447        }                }    
448                    
449    
450        //      ===============            //      ===============
451        //      maximum signals            //      maximum signals
452        //      ===============            //      ===============
453        if(trk->signcluster[nn][0]!=0) whistomax[   0+(int)trk->addrcluster[nn][0]] = whistocomp[   0+(int)trk->addrcluster[nn][0]];            if(trk->signcluster[nn][0]!=0) whistomax[   0+(int)trk->addrcluster[nn][0]] = whistocomp[   0+(int)trk->addrcluster[nn][0]];
454        if(trk->signcluster[nn][1]!=0) whistomax[1024+(int)trk->addrcluster[nn][1]] = whistocomp[1024+(int)trk->addrcluster[nn][1]];            if(trk->signcluster[nn][1]!=0) whistomax[1024+(int)trk->addrcluster[nn][1]] = whistocomp[1024+(int)trk->addrcluster[nn][1]];
455        if(trk->signcluster[nn][2]!=0) whistomax[2048+(int)trk->addrcluster[nn][2]] = whistocomp[2048+(int)trk->addrcluster[nn][2]];            if(trk->signcluster[nn][2]!=0) whistomax[2048+(int)trk->addrcluster[nn][2]] = whistocomp[2048+(int)trk->addrcluster[nn][2]];
456    
457        for(Int_t i = 0; i < 3072; i++){            for(Int_t i = 0; i < 3072; i++){
458          if(whistomax[i]>-200) imax[nn]=1;              if(whistomax[i]>-200) imax[nn]=1;
459          if(whistocomp[i]>-200) icomp[nn]=1;              if(whistocomp[i]>-200) icomp[nn]=1;
460          if(whistofull[i]>-200) ifull[nn]=1;              if(whistofull[i]>-200) ifull[nn]=1;
461          histomax[nn][e]->Fill((Float_t)i,whistomax[i]);              histomax[nn][e]->Fill((Float_t)i,whistomax[i]);
462          histocomp[nn][e]->Fill((Float_t)i,whistocomp[i]);              histocomp[nn][e]->Fill((Float_t)i,whistocomp[i]);
463          histofull[nn][e]->Fill((Float_t)i,whistofull[i]);              histofull[nn][e]->Fill((Float_t)i,whistofull[i]);
464        }            }
465            
466        TBox b;            TBox b;
467        b.SetFillColor(6);  
468        b.SetFillStyle(3945);            c1[e]->cd();          
469              trkpadtext[nn]->Draw();
470        c1[e]->cd();                      trkpad[nn]->Draw();
471        trkpadtext[nn]->Draw();            trkpad[nn]->cd();
472        trkpad[nn]->Draw();            trkpad[nn]->SetFillColor(10);
473        trkpad[nn]->cd();  
474        trkpad[nn]->SetFillColor(10);            histocomp[nn][e]->GetYaxis()->SetRangeUser(-500,4500);
475              histocomp[nn][e]->SetLineStyle(1);
476        histocomp[nn][e]->GetYaxis()->SetRangeUser(-500,4500);            histocomp[nn][e]->SetLineColor(38);
477        histocomp[nn][e]->SetLineStyle(1);            histocomp[nn][e]->SetFillColor(38);
478        histocomp[nn][e]->SetLineColor(38);            histocomp[nn][e]->SetLineWidth(1);
479        histocomp[nn][e]->SetFillColor(38);            histocomp[nn][e]->Draw("");
480        histocomp[nn][e]->SetLineWidth(1);  
481        histocomp[nn][e]->Draw("");            histofull[nn][e]->SetLineColor(40);
482              histofull[nn][e]->SetFillColor(40);
483        histofull[nn][e]->SetLineColor(40);            histofull[nn][e]->SetLineWidth(1);
484        histofull[nn][e]->SetFillColor(40);            histofull[nn][e]->SetLineStyle(2);
485        histofull[nn][e]->SetLineWidth(1);  
486        histofull[nn][e]->SetLineStyle(2);            histomax[nn][e]->SetLineColor(2);
487              histomax[nn][e]->SetLineWidth(1);
488        histomax[nn][e]->SetLineColor(2);            histomax[nn][e]->SetLineStyle(3);
489        histomax[nn][e]->SetLineWidth(1);  
490        histomax[nn][e]->SetLineStyle(3);            if(ifull[nn]==1) histofull[nn][e]->Draw("9bsame][");
491              if(icomp[nn]==1) histocomp[nn][e]->Draw("9bsame][");
492        if(ifull[nn]==1) histofull[nn][e]->Draw("9bsame][");            if(imax[nn]==1) histomax[nn][e]->Draw("same][");
493        if(icomp[nn]==1) histocomp[nn][e]->Draw("9bsame][");            histocomp[nn][e]->Draw("axis same");
494        if(imax[nn]==1) histomax[nn][e]->Draw("same][");            if(nn==1){
495        histocomp[nn][e]->Draw("axis same");              b.SetFillColor(6);
496        if(nn==1){              b.SetFillStyle(3945);
497          b.DrawBox(2816.,-500.,3060.,4500.);              b.DrawBox(2944.,-500.,3060.,4500.);
498        }          
499        else if(nn==6){              b.SetFillColor(107);
500          b.DrawBox(2560.,-500.,2816.,4500.);              b.SetFillStyle(3954);
501          b.DrawBox(512.,-500.,768.,4500.);              b.DrawBox(2816.,-500.,2944.,4500.);
502          b.DrawBox(1024.,-500.,1792.,4500.);              b.DrawBox(2048.,-500.,2176.,4500.);
503        }            }
504        else if(nn==11){            else if(nn==4){
505          b.DrawBox(768.,-500.,1024.,4500.);              b.SetFillColor(107);
506                b.SetFillStyle(3954);
507                b.DrawBox(384.,-500.,512.,4500.);
508              }
509              else if(nn==6){
510                b.SetFillColor(6);
511                b.SetFillStyle(3945);
512                b.DrawBox(2560.,-500.,2816.,4500.);
513                b.DrawBox(1024.,-500.,1535.,4500.);
514            
515                b.SetFillColor(107);
516                b.SetFillStyle(3954);
517                b.DrawBox(512.,-500.,768.,4500.);
518                b.DrawBox(1536.,-500.,1792.,4500.);
519              }
520              else if(nn==7){
521                b.SetFillColor(107);
522                b.SetFillStyle(3954);
523                b.DrawBox(512.,-500.,768.,4500.);
524              }
525              else if(nn==11){
526                b.SetFillColor(6);
527                b.SetFillStyle(3945);
528                b.DrawBox(768.,-500.,1024.,4500.);
529            
530                b.SetFillColor(107);
531                b.SetFillStyle(3954);
532                b.DrawBox(0.,-500.,512.,4500);
533                b.DrawBox(1920.,-500.,2048.,4500);
534                b.DrawBox(2176.,-500.,2304.,4500);
535              }
536              c1[e]->Update();
537            }
538        }        }
       c1[e]->Update();  
539        
540      }//end loop on views      }//end loop on views
541        

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.23