/[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.11 by pam-fi, Mon Sep 18 15:01:56 2006 UTC revision 1.15 by pam-fi, Mon Oct 30 17:45:36 2006 UTC
# Line 2  Line 2 
2   *  FTrkScanQlook_EXPERT.cxx   *  FTrkScanQlook_EXPERT.cxx
3   *   *
4   * autor: D.Fedele   * autor: D.Fedele
5   * version v1r10   * version v1r14
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 197  void FTrkScanQLook_EXPERT(TString file, Line 197  void FTrkScanQLook_EXPERT(TString file,
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+3;
201          ev[1]=i+3;          ev[1]=i+4;
202          break;          break;
203        }        }
204      }      }
# Line 211  void FTrkScanQLook_EXPERT(TString file, Line 211  void FTrkScanQLook_EXPERT(TString file,
211    TCanvas *c1[2];    TCanvas *c1[2];
212    
213    for(Int_t e=0;e<2;e++){    for(Int_t e=0;e<2;e++){
214      event=ev[e];      if(event==0)
215          event=ev[e];
216        else {
217          event=event+e;
218          if(event>ev[e] && ev[0]!=2)
219            cal="Event with online calibration";
220          else
221            cal="*****  ONLINE CALIBRATION NOT FOUND IN THIS FILE  *****";
222        }
223      printf("Scan of Entry %d\n",event);      printf("Scan of Entry %d\n",event);
224                            
225      tr->GetEntry(event);          tr->GetEntry(event);    
# Line 318  void FTrkScanQLook_EXPERT(TString file, Line 326  void FTrkScanQLook_EXPERT(TString file,
326        ifull[nn]=0;        ifull[nn]=0;
327        icomp[nn]=0;        icomp[nn]=0;
328        imax[nn]=0;        imax[nn]=0;
329          if(ndsp>0){
330            if(ndsp<13){
331                    
332        /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*            /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
333         *             *
334         * Write event LEVEL0 report             * Write event LEVEL0 report
335         *             *
336         *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/             *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/
337    
338        trkpadtext[nn]->SetTextFont(40);            trkpadtext[nn]->SetTextFont(40);
339        trkpadtext[nn]->SetFillColor(33);            trkpadtext[nn]->SetFillColor(33);
340        trkpadtext[nn]->SetTextSize(0.012);            trkpadtext[nn]->SetTextSize(0.012);
341        trkpadtext[nn]->SetTextAlign(13);            trkpadtext[nn]->SetTextAlign(13);
342    
343        trkpadtext[nn]->AddText(" ");            trkpadtext[nn]->AddText(" ");
344        message<<"DAQ mode  --------> "<<trk->DAQmode[n];            message<<"DAQ mode  --------> "<<trk->DAQmode[n];
345        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
346        message.str("");            message.str("");
347        message<<"Event number  --------> "<<trk->eventn[n];            message<<"Event number  --------> "<<trk->eventn[n];
348        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
349        message.str("");            message.str("");
350        message<<"13-bit words --------> "<<trk->DATAlength[n];            message<<"13-bit words --------> "<<trk->DATAlength[n];
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][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]);
354        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]);
355        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
356        message.str("");            message.str("");
357        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]);
358        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];
359        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
360        message.str("");            message.str("");
361        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]);
362        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];
363        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
364        message.str("");            message.str("");
365        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];
366        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
367        message.str("");            message.str("");
368        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";
369        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
370        message.str("");            message.str("");
371        trkpadtext[nn]->AddText(" ");            trkpadtext[nn]->AddText(" ");
372        message<<"CRC -->  "<<trk->crc[n];            message<<"CRC -->  "<<trk->crc[n];
373        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
374        message.str("");            message.str("");
375        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];
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        trkpadtext[nn]->AddLine(0,0,0,0);            trkpadtext[nn]->AddLine(0,0,0,0);
380        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];
381        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
382        message.str("");            message.str("");
383        message<<"Cmd "<<trk->cmdnum[n]<<" --- Answer length "<<trk->aswr[n]<<" byte";            message<<"Cmd "<<trk->cmdnum[n]<<" --- Answer length "<<trk->aswr[n]<<" byte";
384        trkpadtext[nn]->AddText(message.str().c_str());            trkpadtext[nn]->AddText(message.str().c_str());
385        message.str("");            message.str("");
386        trkpadtext[nn]->AddText(" ");            trkpadtext[nn]->AddText(" ");
387                    
388        TOTDATAlength_check = TOTDATAlength_check + trk->DATAlength[n];            TOTDATAlength_check = TOTDATAlength_check + trk->DATAlength[n];
389    
390        /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*            /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
391         *             *
392         * Plot event LEVEL0 histo             * Plot event LEVEL0 histo
393         *             *
394         *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/             *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/
395    
396        //=============================================            //=============================================
397    
398        for(Int_t i = 0; i< 3072; i++){            for(Int_t i = 0; i< 3072; i++){
399          whistomax[i] = -200;              whistomax[i] = -200;
400          whistocomp[i] = -200;              whistocomp[i] = -200;
401          whistofull[i] = -200;              whistofull[i] = -200;
402          whisto[i] = -200;              whisto[i] = -200;
403        }            }
404    
405        //      ===============            //      ===============
406        //      trasmitted data            //      trasmitted data
407        //      ===============            //      ===============
408    
409        address = 0;            address = 0;
410        ladder = 1;            ladder = 1;
411        for(Int_t i = 0; i < trk->DATAlength[n] ; i++){            for(Int_t i = 0; i < trk->DATAlength[n] ; i++){
412          word = trk->TrackerData.At(iword);                        word = trk->TrackerData.At(iword);      
413          thisword = datadecode(word);              thisword = datadecode(word);
414          iword++;              iword++;
415          switch (thisword.type){              switch (thisword.type){
416                            
417          case 0:  //ADC value              case 0:  //ADC value
418            whisto[address] = thisword.decode;                whisto[address] = thisword.decode;
419            address++;                    address++;    
420            //    cout << "    adr " << address << "\n";                //        cout << "    adr " << address << "\n";
421            break;                break;
422    
423          case 1:  //address              case 1:  //address
424            address = 1024*(ladder-1) + thisword.decode;                address = 1024*(ladder-1) + thisword.decode;
425            //    cout << "    adr " << address << "\n";                //        cout << "    adr " << address << "\n";
426            break;                break;
427    
428          case 2:  //end-of-ladder              case 2:  //end-of-ladder
429            ladder = thisword.decode;                ladder = thisword.decode;
430            //            cout << "Ladder " << ladder << "\n";                //                cout << "Ladder " << ladder << "\n";
431            if(ladder==3){                if(ladder==3){
432              //                  end of compressed data - FILL HISTO                  //                  end of compressed data - FILL HISTO
433              //cout << ">>> COMPRESSED data" << "\n";                  //cout << ">>> COMPRESSED data" << "\n";
434              for(ii = 0; ii < 3072; ii++){                  for(ii = 0; ii < 3072; ii++){
435                whistocomp[ii]=whisto[ii];                    whistocomp[ii]=whisto[ii];
436                whisto[ii] = -200;                    whisto[ii] = -200;
437              }                  }
438              address = 0;                  address = 0;
439              ladder = 1;                              ladder = 1;                
440            }else if(ladder==6){                }else if(ladder==6){
441              //                  end of full data - FILL HISTO                  //                  end of full data - FILL HISTO
442              //cout << ">>> FULL data" << "\n";                  //cout << ">>> FULL data" << "\n";
443              for(ii = 0; ii < 3072; ii++){                  for(ii = 0; ii < 3072; ii++){
444                whistofull[ii]=whisto[ii];                    whistofull[ii]=whisto[ii];
445                whisto[ii] = -200;                    whisto[ii] = -200;
446              }                  }
447              address = 0;                  address = 0;
448              ladder = 1;                  ladder = 1;
449            }else{                                }else{            
450              if(ladder>3)        ladder=ladder-3;                  if(ladder>3)    ladder=ladder-3;
451              address= ladder*1024;                                address= ladder*1024;          
452              ladder = ladder + 1;                          ladder = ladder + 1;    
453            }                }
454          }                  }    
455        }                }    
456                    
457    
458        //      ===============            //      ===============
459        //      maximum signals            //      maximum signals
460        //      ===============            //      ===============
461        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]];
462        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]];
463        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]];
464    
465        for(Int_t i = 0; i < 3072; i++){            for(Int_t i = 0; i < 3072; i++){
466          if(whistomax[i]>-200) imax[nn]=1;              if(whistomax[i]>-200) imax[nn]=1;
467          if(whistocomp[i]>-200) icomp[nn]=1;              if(whistocomp[i]>-200) icomp[nn]=1;
468          if(whistofull[i]>-200) ifull[nn]=1;              if(whistofull[i]>-200) ifull[nn]=1;
469          histomax[nn][e]->Fill((Float_t)i,whistomax[i]);              histomax[nn][e]->Fill((Float_t)i,whistomax[i]);
470          histocomp[nn][e]->Fill((Float_t)i,whistocomp[i]);              histocomp[nn][e]->Fill((Float_t)i,whistocomp[i]);
471          histofull[nn][e]->Fill((Float_t)i,whistofull[i]);              histofull[nn][e]->Fill((Float_t)i,whistofull[i]);
472        }            }
473            
474        TBox b;            TBox b;
475    
476        c1[e]->cd();                      c1[e]->cd();          
477        trkpadtext[nn]->Draw();            trkpadtext[nn]->Draw();
478        trkpad[nn]->Draw();            trkpad[nn]->Draw();
479        trkpad[nn]->cd();            trkpad[nn]->cd();
480        trkpad[nn]->SetFillColor(10);            trkpad[nn]->SetFillColor(10);
481    
482        histocomp[nn][e]->GetYaxis()->SetRangeUser(-500,4500);            histocomp[nn][e]->GetYaxis()->SetRangeUser(-500,4500);
483        histocomp[nn][e]->SetLineStyle(1);            histocomp[nn][e]->SetLineStyle(1);
484        histocomp[nn][e]->SetLineColor(38);            histocomp[nn][e]->SetLineColor(38);
485        histocomp[nn][e]->SetFillColor(38);            histocomp[nn][e]->SetFillColor(38);
486        histocomp[nn][e]->SetLineWidth(1);            histocomp[nn][e]->SetLineWidth(1);
487        histocomp[nn][e]->Draw("");            histocomp[nn][e]->Draw("");
488    
489        histofull[nn][e]->SetLineColor(40);            histofull[nn][e]->SetLineColor(40);
490        histofull[nn][e]->SetFillColor(40);            histofull[nn][e]->SetFillColor(40);
491        histofull[nn][e]->SetLineWidth(1);            histofull[nn][e]->SetLineWidth(1);
492        histofull[nn][e]->SetLineStyle(2);            histofull[nn][e]->SetLineStyle(2);
493    
494        histomax[nn][e]->SetLineColor(2);            histomax[nn][e]->SetLineColor(2);
495        histomax[nn][e]->SetLineWidth(1);            histomax[nn][e]->SetLineWidth(1);
496        histomax[nn][e]->SetLineStyle(3);            histomax[nn][e]->SetLineStyle(3);
497    
498        if(ifull[nn]==1) histofull[nn][e]->Draw("9bsame][");            if(ifull[nn]==1) histofull[nn][e]->Draw("9bsame][");
499        if(icomp[nn]==1) histocomp[nn][e]->Draw("9bsame][");            if(icomp[nn]==1) histocomp[nn][e]->Draw("9bsame][");
500        if(imax[nn]==1) histomax[nn][e]->Draw("same][");            if(imax[nn]==1) histomax[nn][e]->Draw("same][");
501        histocomp[nn][e]->Draw("axis same");            histocomp[nn][e]->Draw("axis same");
502        if(nn==1){            if(nn==0){
503          b.SetFillColor(6);              b.SetFillColor(107);
504          b.SetFillStyle(3945);              b.SetFillStyle(3945);
505          b.DrawBox(2944.,-500.,3060.,4500.);              b.DrawBox(768.,-500.,2047.,4500.);
506              }
507              else if(nn==1){
508                b.SetFillColor(6);
509                b.SetFillStyle(3945);
510                b.DrawBox(2944.,-500.,3060.,4500.);
511                    
512          b.SetFillColor(107);              b.SetFillColor(107);
513          b.SetFillStyle(3954);              b.SetFillStyle(3954);
514          b.DrawBox(2816.,-500.,2944.,4500.);              b.DrawBox(2816.,-500.,2944.,4500.);
515          b.DrawBox(2048.,-500.,2176.,4500.);              b.DrawBox(2048.,-500.,2176.,4500.);
516        }            }
517        else if(nn==4){            else if(nn==4){
518          b.SetFillColor(107);              b.SetFillColor(107);
519          b.SetFillStyle(3954);              b.SetFillStyle(3954);
520          b.DrawBox(384.,-500.,512.,4500.);              b.DrawBox(384.,-500.,512.,4500.);
521        }            }
522        else if(nn==6){            else if(nn==6){
523          b.SetFillColor(6);              b.SetFillColor(6);
524          b.SetFillStyle(3945);              b.SetFillStyle(3945);
525          b.DrawBox(2560.,-500.,2816.,4500.);              b.DrawBox(2560.,-500.,2816.,4500.);
526          b.DrawBox(1024.,-500.,1535.,4500.);              b.DrawBox(1024.,-500.,1535.,4500.);
527                    
528          b.SetFillColor(107);              b.SetFillColor(107);
529          b.SetFillStyle(3954);              b.SetFillStyle(3954);
530          b.DrawBox(512.,-500.,768.,4500.);              b.DrawBox(512.,-500.,768.,4500.);
531          b.DrawBox(1536.,-500.,1792.,4500.);              b.DrawBox(1536.,-500.,1792.,4500.);
532        }            }
533        else if(nn==7){            else if(nn==7){
534          b.SetFillColor(107);              b.SetFillColor(107);
535          b.SetFillStyle(3954);              b.SetFillStyle(3954);
536          b.DrawBox(512.,-500.,768.,4500.);              b.DrawBox(512.,-500.,768.,4500.);
537        }            }
538        else if(nn==11){            else if(nn==9){
539          b.SetFillColor(6);              b.SetFillColor(107);
540          b.SetFillStyle(3945);              b.SetFillStyle(3954);
541          b.DrawBox(768.,-500.,1024.,4500.);              b.DrawBox(256.,-500.,384.,4500);
542              }
543              else if(nn==11){
544                b.SetFillColor(6);
545                b.SetFillStyle(3945);
546                b.DrawBox(768.,-500.,1024.,4500.);
547                    
548          b.SetFillColor(107);              b.SetFillColor(107);
549          b.SetFillStyle(3954);              b.SetFillStyle(3954);
550          b.DrawBox(0.,-500.,512.,4500);              b.DrawBox(0.,-500.,512.,4500);
551          b.DrawBox(1920.,-500.,2048.,4500);              b.DrawBox(1920.,-500.,2560.,4500);
552          b.DrawBox(2176.,-500.,2304.,4500);            }
553              c1[e]->Update();
554            }
555        }        }
       c1[e]->Update();  
556        
557      }//end loop on views      }//end loop on views
558        

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

  ViewVC Help
Powered by ViewVC 1.1.23