/[PAMELA software]/quicklook/trigger/src/TriggerScanBasic.cpp
ViewVC logotype

Diff of /quicklook/trigger/src/TriggerScanBasic.cpp

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

revision 1.4 by pam-rm2, Wed Jan 10 17:18:34 2007 UTC revision 1.6 by campana, Mon Mar 12 08:17:34 2007 UTC
# Line 2  Line 2 
2   * TriggerScanBasic   * TriggerScanBasic
3   * Author  Nagni   * Author  Nagni
4   * Modified by G. De Rosa   * Modified by G. De Rosa
5   * Version 1.2   * Version 1.2 - Modified by G. De Rosa
6   * Date 27 Apr 2006   * Date 27 Apr 2006
7   * Version 1.4   * Version 1.4 - Modified by G. De Rosa
8   * Date 26 Jun 2006: Inserted dependences on OnBoardTime and modified histogram ranges.   * Date 26 Jun 2006: Inserted dependences on OnBoardTime and modified histogram ranges.
9     * Version 1.5 - Modified by G. De Rosa
10     * Date 9 Mar 2007: To read correctly the OBT changed the type of time variables from signed to unsigned
11   *   *
12   * Description:   * Description:
13   * Describe the performance of the Trigger.   * Describe the performance of the Trigger.
# Line 45  char bit(int decimal, char pos) Line 47  char bit(int decimal, char pos)
47    
48  void TriggerScanBasic(TString base, TString outDirectory = "", TString format = ""){  void TriggerScanBasic(TString base, TString outDirectory = "", TString format = ""){
49    
50    Long_t lastime, firstime;    ULong_t lastime, firstime;
51    double obmin=0.;    double obmin=0.;
52    double obmax=0.;    double obmax=0.;
53    stringstream oss, oss1, oss2, oss3, noentries, stringa;      stringstream oss, oss1, oss2, oss3, noentries, stringa;  
# Line 97  void TriggerScanBasic(TString base, TStr Line 99  void TriggerScanBasic(TString base, TStr
99    //------------------------ First histogram -----------------------------------//    //------------------------ First histogram -----------------------------------//
100    obmin=firstime;    obmin=firstime;
101    obmax=lastime;    obmax=lastime;
102    Int_t  nbin   = (lastime-firstime)/60000; // on 1 ms    Int_t  nbin   = (lastime-firstime)/60000; // on 1 min
103    gStyle->SetOptStat(0);    gStyle->SetOptStat(0);
104    TH1F *h1 = new TH1F ("histo1", "" , nbin, obmin, obmax);    TH1F *h1 = new TH1F ("histo1", "" , nbin, obmin, obmax);
105    TH1F *h2 = new TH1F ("histo2", "" , nbin, obmin, obmax);    TH1F *h2 = new TH1F ("histo2", "" , nbin, obmin, obmax);
# Line 125  void TriggerScanBasic(TString base, TStr Line 127  void TriggerScanBasic(TString base, TStr
127    i = 0;    i = 0;
128    Int_t size  = nevents;    Int_t size  = nevents;
129    
130      ULong_t UnsOBT=0;
131    
132    Double_t *time = new Double_t[size];    Double_t *time = new Double_t[size];
133    Double_t *evCounter = new Double_t[size];    Double_t *evCounter = new Double_t[size];
134    Double_t *deadTime  = new Double_t[size];    Double_t *deadTime  = new Double_t[size];
# Line 192  void TriggerScanBasic(TString base, TStr Line 196  void TriggerScanBasic(TString base, TStr
196    Double_t *pmt2_21 = new Double_t[size];    Double_t *pmt2_21 = new Double_t[size];
197    Double_t *pmt2_22 = new Double_t[size];    Double_t *pmt2_22 = new Double_t[size];
198    Double_t *pmt2_23 = new Double_t[size];    Double_t *pmt2_23 = new Double_t[size];
199      
200    //    //
201    while(i < nevents){    while(i < nevents){
202      HeadBr->GetEntry(i);      HeadBr->GetEntry(i);
# Line 199  void TriggerScanBasic(TString base, TStr Line 204  void TriggerScanBasic(TString base, TStr
204            
205      /* time vector fill*/      /* time vector fill*/
206      ph           = eh->GetPscuHeader();      ph           = eh->GetPscuHeader();
207      time[i]      = ph->GetOrbitalTime();      UnsOBT       = ph->GetOrbitalTime();
208        
209        time[i] = UnsOBT;
210    
211    
212      /* eventCounter vector fill*/      /* eventCounter vector fill*/
213      evCounter[i] = triggerEvent->evcount;      evCounter[i] = triggerEvent->evcount;
214    
# Line 310  void TriggerScanBasic(TString base, TStr Line 318  void TriggerScanBasic(TString base, TStr
318    //----------    //----------
319    sst.str("");      sst.str("");  
320    sst << "Event Counter";    sst << "Event Counter";
321    TGraph *evCounterGraph   = new TGraph(nevents, time, evCounter);    TGraph *evCounterGraph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)evCounter);
322    evCounterGraph->SetTitle(sst.str().c_str());    evCounterGraph->SetTitle(sst.str().c_str());
323    evCounterGraph->GetXaxis()->SetTitle("OnBoardTime");    evCounterGraph->GetXaxis()->SetTitle("OnBoardTime");
324    evCounterGraph->GetXaxis()->CenterTitle();    evCounterGraph->GetXaxis()->CenterTitle();
# Line 324  void TriggerScanBasic(TString base, TStr Line 332  void TriggerScanBasic(TString base, TStr
332    //----------    //----------
333    sst.str("");    sst.str("");
334    sst << "Graph of Dead Time vs OBT based on " << base.Data();    sst << "Graph of Dead Time vs OBT based on " << base.Data();
335    TGraph *DeadTimeGraph   = new TGraph(nevents, time, deadTime);    TGraph *DeadTimeGraph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)deadTime);
336    DeadLiveCanvas->cd(1);    DeadLiveCanvas->cd(1);
337    sst.str("");    sst.str("");
338    sst << "Dead Time";    sst << "Dead Time";
# Line 385  void TriggerScanBasic(TString base, TStr Line 393  void TriggerScanBasic(TString base, TStr
393    //----------    //----------
394    sst.str("");    sst.str("");
395    sst << "Graph of PMT Plane Counters (S11 AND S12) vs OBT based on " << base.Data();    sst << "Graph of PMT Plane Counters (S11 AND S12) vs OBT based on " << base.Data();
396    TGraph *PMT1Graph   = new TGraph(nevents, time, pmt1);    TGraph *PMT1Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1);
397    PMTCanvas->cd(1);    PMTCanvas->cd(1);
398    sst.str("");    sst.str("");
399    sst << "PMT Plane Counters (S11 AND S12)";    sst << "PMT Plane Counters (S11 AND S12)";
# Line 399  void TriggerScanBasic(TString base, TStr Line 407  void TriggerScanBasic(TString base, TStr
407    //----------    //----------
408    sst.str("");    sst.str("");
409    sst << "Graph PMT Plane Counters (S21 AND S22) vs OBT based on " << base.Data();    sst << "Graph PMT Plane Counters (S21 AND S22) vs OBT based on " << base.Data();
410    TGraph *PMT2Graph   = new TGraph(nevents, time, pmt2);    TGraph *PMT2Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2);
411    PMTCanvas->cd(2);    PMTCanvas->cd(2);
412    sst.str("");    sst.str("");
413    sst << "PMT Plane Counters (S21 AND S22)";    sst << "PMT Plane Counters (S21 AND S22)";
# Line 413  void TriggerScanBasic(TString base, TStr Line 421  void TriggerScanBasic(TString base, TStr
421    //----------    //----------
422    sst.str("");    sst.str("");
423    sst << "Graph PMT Plane Counters (S31 AND S32) vs OBT based on " << base.Data();    sst << "Graph PMT Plane Counters (S31 AND S32) vs OBT based on " << base.Data();
424    TGraph *PMT3Graph   = new TGraph(nevents, time, pmt3);    TGraph *PMT3Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt3);
425    PMTCanvas->cd(3);    PMTCanvas->cd(3);
426    sst.str("");    sst.str("");
427    sst << "PMT Plane Counters (S31 AND S32)";    sst << "PMT Plane Counters (S31 AND S32)";
# Line 437  void TriggerScanBasic(TString base, TStr Line 445  void TriggerScanBasic(TString base, TStr
445    sst.str("");    sst.str("");
446    sst << "Graph of Trigger Rate Counters (S11 OR S12) AND (S21 OR S22) AND (S31 OR S32) vs OBT based on " << base.Data();    sst << "Graph of Trigger Rate Counters (S11 OR S12) AND (S21 OR S22) AND (S31 OR S32) vs OBT based on " << base.Data();
447    
448    TGraph *TrigRate0Graph   = new TGraph(nevents, time, trigrate0);    TGraph *TrigRate0Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)trigrate0);
449    TrigRate1Canvas->cd(1);    TrigRate1Canvas->cd(1);
450    sst.str("");    sst.str("");
451    sst << "Trigger Rate Counters (S11 OR S12) AND (S21 OR S22) AND (S31 OR S32)";    sst << "Trigger Rate Counters (S11 OR S12) AND (S21 OR S22) AND (S31 OR S32)";
# Line 451  void TriggerScanBasic(TString base, TStr Line 459  void TriggerScanBasic(TString base, TStr
459    //----------    //----------
460    sst.str("");    sst.str("");
461    sst << "Graph Trigger Rate Counters (S11 AND S12) AND (S21 AND S22) AND (S31 AND S32) vs OBT based on " << base.Data();    sst << "Graph Trigger Rate Counters (S11 AND S12) AND (S21 AND S22) AND (S31 AND S32) vs OBT based on " << base.Data();
462    TGraph *TrigRate1Graph   = new TGraph(nevents, time, trigrate1);    TGraph *TrigRate1Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)trigrate1);
463    TrigRate1Canvas->cd(2);    TrigRate1Canvas->cd(2);
464    sst.str("");    sst.str("");
465    sst << "Trigger Rate Counters (S11 AND S12) AND (S21 AND S22) AND (S31 AND S32)";    sst << "Trigger Rate Counters (S11 AND S12) AND (S21 AND S22) AND (S31 AND S32)";
# Line 465  void TriggerScanBasic(TString base, TStr Line 473  void TriggerScanBasic(TString base, TStr
473    //----------    //----------
474    sst.str("");    sst.str("");
475    sst << "Graph Trigger Rate Counters  (S21 OR S22) AND (S31 OR S32) vs OBT based on " << base.Data();    sst << "Graph Trigger Rate Counters  (S21 OR S22) AND (S31 OR S32) vs OBT based on " << base.Data();
476    TGraph *TrigRate2Graph   = new TGraph(nevents, time, trigrate2);    TGraph *TrigRate2Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)trigrate2);
477    TrigRate1Canvas->cd(3);    TrigRate1Canvas->cd(3);
478    sst.str("");    sst.str("");
479    sst << "Trigger Rate Counters (S21 OR S22) AND (S31 OR S32) ";    sst << "Trigger Rate Counters (S21 OR S22) AND (S31 OR S32) ";
# Line 485  void TriggerScanBasic(TString base, TStr Line 493  void TriggerScanBasic(TString base, TStr
493    sst.str("");    sst.str("");
494    sst << "Graph of Trigger Rate Counters (S21 AND S22) AND (S31 AND S32) vs OBT based on " << base.Data();    sst << "Graph of Trigger Rate Counters (S21 AND S22) AND (S31 AND S32) vs OBT based on " << base.Data();
495    
496    TGraph *TrigRate3Graph   = new TGraph(nevents, time, trigrate3);    TGraph *TrigRate3Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)trigrate3);
497    TrigRate2Canvas->cd(1);    TrigRate2Canvas->cd(1);
498    sst.str("");    sst.str("");
499    sst << "Trigger Rate Counters (S21 AND S22) AND (S31 AND S32)";    sst << "Trigger Rate Counters (S21 AND S22) AND (S31 AND S32)";
# Line 499  void TriggerScanBasic(TString base, TStr Line 507  void TriggerScanBasic(TString base, TStr
507    //----------    //----------
508    sst.str("");    sst.str("");
509    sst << "Graph Trigger Rate Counters S12 AND (S21 AND S22) vs OBT based on " << base.Data();    sst << "Graph Trigger Rate Counters S12 AND (S21 AND S22) vs OBT based on " << base.Data();
510    TGraph *TrigRate4Graph   = new TGraph(nevents, time, trigrate4);    TGraph *TrigRate4Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)trigrate4);
511    TrigRate2Canvas->cd(2);    TrigRate2Canvas->cd(2);
512    sst.str("");    sst.str("");
513    sst << "Trigger Rate Counters S12 AND (S21 AND S22)";    sst << "Trigger Rate Counters S12 AND (S21 AND S22)";
# Line 513  void TriggerScanBasic(TString base, TStr Line 521  void TriggerScanBasic(TString base, TStr
521    //----------    //----------
522    sst.str("");    sst.str("");
523    sst << "Graph Trigger Rate Counters (S11 OR S12) AND (S31 OR S32) vs OBT based on " << base.Data();    sst << "Graph Trigger Rate Counters (S11 OR S12) AND (S31 OR S32) vs OBT based on " << base.Data();
524    TGraph *TrigRate5Graph   = new TGraph(nevents, time, trigrate5);    TGraph *TrigRate5Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)trigrate5);
525    TrigRate2Canvas->cd(3);    TrigRate2Canvas->cd(3);
526    sst.str("");    sst.str("");
527    sst << "Trigger Rate Counters (S11 OR S12) AND (S31 OR S32)";    sst << "Trigger Rate Counters (S11 OR S12) AND (S31 OR S32)";
# Line 529  void TriggerScanBasic(TString base, TStr Line 537  void TriggerScanBasic(TString base, TStr
537    gStyle->SetOptStat("mr");    gStyle->SetOptStat("mr");
538    
539    /* S4 and Calorimeter Counters draw*/    /* S4 and Calorimeter Counters draw*/
540    TGraph *s4RateGraph   = new TGraph(nevents, time, s4rate);    TGraph *s4RateGraph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)s4rate);
541    S4CalCanvas->cd(1);    S4CalCanvas->cd(1);
542    sst.str("");    sst.str("");
543    sst << "S4 Trigger Rate Counters";    sst << "S4 Trigger Rate Counters";
# Line 559  void TriggerScanBasic(TString base, TStr Line 567  void TriggerScanBasic(TString base, TStr
567    //----------      //----------  
568    sst.str("");    sst.str("");
569    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
570    TGraph *PMT1_0Graph   = new TGraph(nevents, time, pmt1_0);    TGraph *PMT1_0Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_0);
571    RatePMT1->cd(1);    RatePMT1->cd(1);
572    sst.str("");    sst.str("");
573    sst << "PMT S111A";    sst << "PMT S111A";
# Line 574  void TriggerScanBasic(TString base, TStr Line 582  void TriggerScanBasic(TString base, TStr
582    //----------    //----------
583    sst.str("");    sst.str("");
584    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
585    TGraph *PMT1_1Graph   = new TGraph(nevents, time, pmt1_1);    TGraph *PMT1_1Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_1);
586    RatePMT1->cd(2);    RatePMT1->cd(2);
587    sst.str("");    sst.str("");
588    sst << "PMT S112A";    sst << "PMT S112A";
# Line 588  void TriggerScanBasic(TString base, TStr Line 596  void TriggerScanBasic(TString base, TStr
596    //----------    //----------
597    sst.str("");    sst.str("");
598    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
599    TGraph *PMT1_2Graph   = new TGraph(nevents, time, pmt1_2);    TGraph *PMT1_2Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_2);
600    RatePMT1->cd(3);    RatePMT1->cd(3);
601    sst.str("");    sst.str("");
602    sst << "PMT S113A";    sst << "PMT S113A";
# Line 602  void TriggerScanBasic(TString base, TStr Line 610  void TriggerScanBasic(TString base, TStr
610    //----------    //----------
611    sst.str("");    sst.str("");
612    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
613    TGraph *PMT1_3Graph   = new TGraph(nevents, time, pmt1_3);    TGraph *PMT1_3Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_3);
614    RatePMT1->cd(4);    RatePMT1->cd(4);
615    sst.str("");    sst.str("");
616    sst << "PMT S114A";    sst << "PMT S114A";
# Line 616  void TriggerScanBasic(TString base, TStr Line 624  void TriggerScanBasic(TString base, TStr
624    //----------    //----------
625    sst.str("");    sst.str("");
626    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
627    TGraph *PMT1_4Graph   = new TGraph(nevents, time, pmt1_4);    TGraph *PMT1_4Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_4);
628    RatePMT1->cd(5);    RatePMT1->cd(5);
629    sst.str("");    sst.str("");
630    sst << "PMT S115A";    sst << "PMT S115A";
# Line 630  void TriggerScanBasic(TString base, TStr Line 638  void TriggerScanBasic(TString base, TStr
638    //----------    //----------
639    sst.str("");    sst.str("");
640    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
641    TGraph *PMT1_5Graph   = new TGraph(nevents, time, pmt1_5);    TGraph *PMT1_5Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_5);
642    RatePMT1->cd(6);    RatePMT1->cd(6);
643    sst.str("");    sst.str("");
644    sst << "PMT S116A";    sst << "PMT S116A";
# Line 644  void TriggerScanBasic(TString base, TStr Line 652  void TriggerScanBasic(TString base, TStr
652    //----------    //----------
653    sst.str("");    sst.str("");
654    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
655    TGraph *PMT1_6Graph   = new TGraph(nevents, time, pmt1_6);    TGraph *PMT1_6Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_6);
656    RatePMT1->cd(7);    RatePMT1->cd(7);
657    sst.str("");    sst.str("");
658    sst << "PMT S117A";    sst << "PMT S117A";
# Line 658  void TriggerScanBasic(TString base, TStr Line 666  void TriggerScanBasic(TString base, TStr
666    //----------    //----------
667    sst.str("");    sst.str("");
668    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
669    TGraph *PMT1_7Graph   = new TGraph(nevents, time, pmt1_7);    TGraph *PMT1_7Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_7);
670    RatePMT1->cd(8);    RatePMT1->cd(8);
671    sst.str("");    sst.str("");
672    sst << "PMT S118A";    sst << "PMT S118A";
# Line 677  void TriggerScanBasic(TString base, TStr Line 685  void TriggerScanBasic(TString base, TStr
685    //----------      //----------  
686    sst.str("");    sst.str("");
687    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
688    TGraph *PMT1_8Graph   = new TGraph(nevents, time, pmt1_8);    TGraph *PMT1_8Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_8);
689    RatePMT2->cd(1);    RatePMT2->cd(1);
690    sst.str("");    sst.str("");
691    sst << "PMT S111B";    sst << "PMT S111B";
# Line 691  void TriggerScanBasic(TString base, TStr Line 699  void TriggerScanBasic(TString base, TStr
699    //----------    //----------
700    sst.str("");    sst.str("");
701    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
702    TGraph *PMT1_9Graph   = new TGraph(nevents, time, pmt1_9);    TGraph *PMT1_9Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_9);
703    RatePMT2->cd(2);    RatePMT2->cd(2);
704    sst.str("");    sst.str("");
705    sst << "PMT S112B";    sst << "PMT S112B";
# Line 705  void TriggerScanBasic(TString base, TStr Line 713  void TriggerScanBasic(TString base, TStr
713    //----------    //----------
714    sst.str("");    sst.str("");
715    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
716    TGraph *PMT1_10Graph   = new TGraph(nevents, time, pmt1_10);    TGraph *PMT1_10Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_10);
717    RatePMT2->cd(3);    RatePMT2->cd(3);
718    sst.str("");    sst.str("");
719    sst << "PMT S113B";    sst << "PMT S113B";
# Line 719  void TriggerScanBasic(TString base, TStr Line 727  void TriggerScanBasic(TString base, TStr
727    //----------    //----------
728    sst.str("");    sst.str("");
729    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
730    TGraph *PMT1_11Graph   = new TGraph(nevents, time, pmt1_11);    TGraph *PMT1_11Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_11);
731    RatePMT2->cd(4);    RatePMT2->cd(4);
732    sst.str("");    sst.str("");
733    sst << "PMT S114B";    sst << "PMT S114B";
# Line 733  void TriggerScanBasic(TString base, TStr Line 741  void TriggerScanBasic(TString base, TStr
741    //----------    //----------
742    sst.str("");    sst.str("");
743    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
744    TGraph *PMT1_12Graph   = new TGraph(nevents, time, pmt1_12);    TGraph *PMT1_12Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_12);
745    RatePMT2->cd(5);    RatePMT2->cd(5);
746    sst.str("");    sst.str("");
747    sst << "PMT S115B";    sst << "PMT S115B";
# Line 747  void TriggerScanBasic(TString base, TStr Line 755  void TriggerScanBasic(TString base, TStr
755    //----------    //----------
756    sst.str("");    sst.str("");
757    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
758    TGraph *PMT1_13Graph   = new TGraph(nevents, time, pmt1_13);    TGraph *PMT1_13Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_13);
759    RatePMT2->cd(6);    RatePMT2->cd(6);
760    sst.str("");    sst.str("");
761    sst << "PMT S116B";    sst << "PMT S116B";
# Line 761  void TriggerScanBasic(TString base, TStr Line 769  void TriggerScanBasic(TString base, TStr
769    //----------    //----------
770    sst.str("");    sst.str("");
771    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
772    TGraph *PMT1_14Graph   = new TGraph(nevents, time, pmt1_14);    TGraph *PMT1_14Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_14);
773    RatePMT2->cd(7);    RatePMT2->cd(7);
774    sst.str("");    sst.str("");
775    sst << "PMT S117B";    sst << "PMT S117B";
# Line 775  void TriggerScanBasic(TString base, TStr Line 783  void TriggerScanBasic(TString base, TStr
783    //----------    //----------
784    sst.str("");    sst.str("");
785    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
786    TGraph *PMT1_15Graph   = new TGraph(nevents, time, pmt1_15);    TGraph *PMT1_15Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_15);
787    RatePMT2->cd(8);    RatePMT2->cd(8);
788    sst.str("");    sst.str("");
789    sst << "PMT S118B";    sst << "PMT S118B";
# Line 795  void TriggerScanBasic(TString base, TStr Line 803  void TriggerScanBasic(TString base, TStr
803    //----------      //----------  
804    sst.str("");    sst.str("");
805    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
806    TGraph *PMT1_16Graph   = new TGraph(nevents, time, pmt1_16);    TGraph *PMT1_16Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_16);
807    RatePMT3->cd(1);    RatePMT3->cd(1);
808    sst.str("");    sst.str("");
809    sst << "PMT S121A";    sst << "PMT S121A";
# Line 809  void TriggerScanBasic(TString base, TStr Line 817  void TriggerScanBasic(TString base, TStr
817    //----------    //----------
818    sst.str("");    sst.str("");
819    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
820    TGraph *PMT1_17Graph   = new TGraph(nevents, time, pmt1_17);    TGraph *PMT1_17Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_17);
821    RatePMT3->cd(2);    RatePMT3->cd(2);
822    sst.str("");    sst.str("");
823    sst << "PMT S122A";    sst << "PMT S122A";
# Line 823  void TriggerScanBasic(TString base, TStr Line 831  void TriggerScanBasic(TString base, TStr
831    //----------    //----------
832    sst.str("");    sst.str("");
833    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
834    TGraph *PMT1_18Graph   = new TGraph(nevents, time, pmt1_18);    TGraph *PMT1_18Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_18);
835    RatePMT3->cd(3);    RatePMT3->cd(3);
836    sst.str("");    sst.str("");
837    sst << "PMT S123A";    sst << "PMT S123A";
# Line 837  void TriggerScanBasic(TString base, TStr Line 845  void TriggerScanBasic(TString base, TStr
845    //----------    //----------
846    sst.str("");    sst.str("");
847    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
848    TGraph *PMT1_19Graph   = new TGraph(nevents, time, pmt1_19);    TGraph *PMT1_19Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_19);
849    RatePMT3->cd(4);    RatePMT3->cd(4);
850    sst.str("");    sst.str("");
851    sst << "PMT S124A";    sst << "PMT S124A";
# Line 851  void TriggerScanBasic(TString base, TStr Line 859  void TriggerScanBasic(TString base, TStr
859    //----------    //----------
860    sst.str("");    sst.str("");
861    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
862    TGraph *PMT1_20Graph   = new TGraph(nevents, time, pmt1_20);    TGraph *PMT1_20Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_20);
863    RatePMT3->cd(5);    RatePMT3->cd(5);
864    sst.str("");    sst.str("");
865    sst << "PMT S125A";    sst << "PMT S125A";
# Line 865  void TriggerScanBasic(TString base, TStr Line 873  void TriggerScanBasic(TString base, TStr
873    //----------    //----------
874    sst.str("");    sst.str("");
875    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
876    TGraph *PMT1_21Graph   = new TGraph(nevents, time, pmt1_21);    TGraph *PMT1_21Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_21);
877    RatePMT3->cd(6);    RatePMT3->cd(6);
878    sst.str("");    sst.str("");
879    sst << "PMT S126A";    sst << "PMT S126A";
# Line 879  void TriggerScanBasic(TString base, TStr Line 887  void TriggerScanBasic(TString base, TStr
887    //----------    //----------
888    sst.str("");    sst.str("");
889    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
890    TGraph *PMT1_22Graph   = new TGraph(nevents, time, pmt1_22);    TGraph *PMT1_22Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_22);
891    RatePMT3->cd(7);    RatePMT3->cd(7);
892    sst.str("");    sst.str("");
893    sst << "PMT S121B";    sst << "PMT S121B";
# Line 893  void TriggerScanBasic(TString base, TStr Line 901  void TriggerScanBasic(TString base, TStr
901    //----------    //----------
902    sst.str("");    sst.str("");
903    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
904    TGraph *PMT1_23Graph   = new TGraph(nevents, time, pmt1_23);    TGraph *PMT1_23Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt1_23);
905    RatePMT3->cd(8);    RatePMT3->cd(8);
906    sst.str("");    sst.str("");
907    sst << "PMT S122B";    sst << "PMT S122B";
# Line 910  void TriggerScanBasic(TString base, TStr Line 918  void TriggerScanBasic(TString base, TStr
918    //----------    //----------
919    sst.str("");    sst.str("");
920    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
921    TGraph *PMT2_0Graph   = new TGraph(nevents, time, pmt2_0);    TGraph *PMT2_0Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_0);
922    RatePMT3->cd(9);    RatePMT3->cd(9);
923    sst.str("");    sst.str("");
924    sst << "PMT S123B";    sst << "PMT S123B";
# Line 925  void TriggerScanBasic(TString base, TStr Line 933  void TriggerScanBasic(TString base, TStr
933    //----------    //----------
934    sst.str("");    sst.str("");
935    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
936    TGraph *PMT2_1Graph   = new TGraph(nevents, time, pmt2_1);    TGraph *PMT2_1Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_1);
937    RatePMT3->cd(10);    RatePMT3->cd(10);
938    sst.str("");    sst.str("");
939    sst << "PMT S124B";    sst << "PMT S124B";
# Line 940  void TriggerScanBasic(TString base, TStr Line 948  void TriggerScanBasic(TString base, TStr
948    //----------    //----------
949    sst.str("");    sst.str("");
950    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
951    TGraph *PMT2_2Graph   = new TGraph(nevents, time, pmt2_2);    TGraph *PMT2_2Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_2);
952    RatePMT3->cd(11);    RatePMT3->cd(11);
953    sst.str("");    sst.str("");
954    sst << "PMT S125B";    sst << "PMT S125B";
# Line 955  void TriggerScanBasic(TString base, TStr Line 963  void TriggerScanBasic(TString base, TStr
963    //----------    //----------
964    sst.str("");    sst.str("");
965    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
966    TGraph *PMT2_3Graph   = new TGraph(nevents, time, pmt2_3);    TGraph *PMT2_3Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_3);
967    RatePMT3->cd(12);    RatePMT3->cd(12);
968    sst.str("");    sst.str("");
969    sst << "PMT S126B";    sst << "PMT S126B";
# Line 975  void TriggerScanBasic(TString base, TStr Line 983  void TriggerScanBasic(TString base, TStr
983    //----------      //----------  
984    sst.str("");    sst.str("");
985    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
986    TGraph *PMT2_4Graph   = new TGraph(nevents, time, pmt2_4);    TGraph *PMT2_4Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_4);
987    RatePMT4->cd(1);    RatePMT4->cd(1);
988    sst.str("");    sst.str("");
989    sst << "PMT S211A";    sst << "PMT S211A";
# Line 989  void TriggerScanBasic(TString base, TStr Line 997  void TriggerScanBasic(TString base, TStr
997    //----------    //----------
998    sst.str("");    sst.str("");
999    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1000    TGraph *PMT2_5Graph   = new TGraph(nevents, time, pmt2_5);    TGraph *PMT2_5Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_5);
1001    RatePMT4->cd(2);    RatePMT4->cd(2);
1002    sst.str("");    sst.str("");
1003    sst << "PMT S212A";    sst << "PMT S212A";
# Line 1003  void TriggerScanBasic(TString base, TStr Line 1011  void TriggerScanBasic(TString base, TStr
1011    //----------    //----------
1012    sst.str("");    sst.str("");
1013    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1014    TGraph *PMT2_6Graph   = new TGraph(nevents, time, pmt2_6);    TGraph *PMT2_6Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_6);
1015    RatePMT4->cd(3);    RatePMT4->cd(3);
1016    sst.str("");    sst.str("");
1017    sst << "PMT S211B";    sst << "PMT S211B";
# Line 1017  void TriggerScanBasic(TString base, TStr Line 1025  void TriggerScanBasic(TString base, TStr
1025    //----------    //----------
1026    sst.str("");    sst.str("");
1027    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1028    TGraph *PMT2_7Graph   = new TGraph(nevents, time, pmt2_7);    TGraph *PMT2_7Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_7);
1029    RatePMT4->cd(4);    RatePMT4->cd(4);
1030    sst.str("");    sst.str("");
1031    sst << "PMT S212B";    sst << "PMT S212B";
# Line 1031  void TriggerScanBasic(TString base, TStr Line 1039  void TriggerScanBasic(TString base, TStr
1039    //----------    //----------
1040    sst.str("");    sst.str("");
1041    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1042    TGraph *PMT2_8Graph   = new TGraph(nevents, time, pmt2_8);    TGraph *PMT2_8Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_8);
1043    RatePMT4->cd(5);    RatePMT4->cd(5);
1044    sst.str("");    sst.str("");
1045    sst << "PMT S221A";    sst << "PMT S221A";
# Line 1045  void TriggerScanBasic(TString base, TStr Line 1053  void TriggerScanBasic(TString base, TStr
1053    //----------    //----------
1054    sst.str("");    sst.str("");
1055    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1056    TGraph *PMT2_9Graph   = new TGraph(nevents, time, pmt2_9);    TGraph *PMT2_9Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_9);
1057    RatePMT4->cd(6);    RatePMT4->cd(6);
1058    sst.str("");    sst.str("");
1059    sst << "PMT S222A";    sst << "PMT S222A";
# Line 1059  void TriggerScanBasic(TString base, TStr Line 1067  void TriggerScanBasic(TString base, TStr
1067    //----------    //----------
1068    sst.str("");    sst.str("");
1069    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1070    TGraph *PMT2_10Graph   = new TGraph(nevents, time, pmt2_10);    TGraph *PMT2_10Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_10);
1071    RatePMT4->cd(7);    RatePMT4->cd(7);
1072    sst.str("");    sst.str("");
1073    sst << "PMT S221B";    sst << "PMT S221B";
# Line 1073  void TriggerScanBasic(TString base, TStr Line 1081  void TriggerScanBasic(TString base, TStr
1081    //----------    //----------
1082    sst.str("");    sst.str("");
1083    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1084    TGraph *PMT2_11Graph   = new TGraph(nevents, time, pmt2_11);    TGraph *PMT2_11Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_11);
1085    RatePMT4->cd(8);    RatePMT4->cd(8);
1086    sst.str("");    sst.str("");
1087    sst << "PMT S222B ";    sst << "PMT S222B ";
# Line 1093  void TriggerScanBasic(TString base, TStr Line 1101  void TriggerScanBasic(TString base, TStr
1101    //----------      //----------  
1102    sst.str("");    sst.str("");
1103    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1104    TGraph *PMT2_12Graph   = new TGraph(nevents, time, pmt2_12);    TGraph *PMT2_12Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_12);
1105    RatePMT5->cd(1);    RatePMT5->cd(1);
1106    sst.str("");    sst.str("");
1107    sst << "PMT S311A ";    sst << "PMT S311A ";
# Line 1107  void TriggerScanBasic(TString base, TStr Line 1115  void TriggerScanBasic(TString base, TStr
1115    //----------    //----------
1116    sst.str("");    sst.str("");
1117    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1118    TGraph *PMT2_13Graph   = new TGraph(nevents, time, pmt2_13);    TGraph *PMT2_13Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_13);
1119    RatePMT5->cd(2);    RatePMT5->cd(2);
1120    sst.str("");    sst.str("");
1121    sst << "PMT S312A";    sst << "PMT S312A";
# Line 1121  void TriggerScanBasic(TString base, TStr Line 1129  void TriggerScanBasic(TString base, TStr
1129    //----------    //----------
1130    sst.str("");    sst.str("");
1131    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1132    TGraph *PMT2_14Graph   = new TGraph(nevents, time, pmt2_14);    TGraph *PMT2_14Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_14);
1133    RatePMT5->cd(3);    RatePMT5->cd(3);
1134    sst.str("");    sst.str("");
1135    sst << "PMT S313A";    sst << "PMT S313A";
# Line 1135  void TriggerScanBasic(TString base, TStr Line 1143  void TriggerScanBasic(TString base, TStr
1143    //----------    //----------
1144    sst.str("");    sst.str("");
1145    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1146    TGraph *PMT2_15Graph   = new TGraph(nevents, time, pmt2_15);    TGraph *PMT2_15Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_15);
1147    RatePMT5->cd(4);    RatePMT5->cd(4);
1148    sst.str("");    sst.str("");
1149    sst << "PMT S311B";    sst << "PMT S311B";
# Line 1149  void TriggerScanBasic(TString base, TStr Line 1157  void TriggerScanBasic(TString base, TStr
1157    //----------    //----------
1158    sst.str("");    sst.str("");
1159    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1160    TGraph *PMT2_16Graph   = new TGraph(nevents, time, pmt2_16);    TGraph *PMT2_16Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_16);
1161    RatePMT5->cd(5);    RatePMT5->cd(5);
1162    sst.str("");    sst.str("");
1163    sst << "PMT S312B";    sst << "PMT S312B";
# Line 1163  void TriggerScanBasic(TString base, TStr Line 1171  void TriggerScanBasic(TString base, TStr
1171    //----------    //----------
1172    sst.str("");    sst.str("");
1173    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1174    TGraph *PMT2_17Graph   = new TGraph(nevents, time, pmt2_17);    TGraph *PMT2_17Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_17);
1175    RatePMT5->cd(6);    RatePMT5->cd(6);
1176    sst.str("");    sst.str("");
1177    sst << "PMT S313B";    sst << "PMT S313B";
# Line 1177  void TriggerScanBasic(TString base, TStr Line 1185  void TriggerScanBasic(TString base, TStr
1185    //----------    //----------
1186    sst.str("");    sst.str("");
1187    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1188    TGraph *PMT2_18Graph   = new TGraph(nevents, time, pmt2_18);    TGraph *PMT2_18Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_18);
1189    RatePMT5->cd(7);    RatePMT5->cd(7);
1190    sst.str("");    sst.str("");
1191    sst << "PMT S321A";    sst << "PMT S321A";
# Line 1191  void TriggerScanBasic(TString base, TStr Line 1199  void TriggerScanBasic(TString base, TStr
1199    //----------    //----------
1200    sst.str("");    sst.str("");
1201    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1202    TGraph *PMT2_19Graph   = new TGraph(nevents, time, pmt2_19);    TGraph *PMT2_19Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_19);
1203    RatePMT5->cd(8);    RatePMT5->cd(8);
1204    sst.str("");    sst.str("");
1205    sst << "PMT S322A";    sst << "PMT S322A";
# Line 1208  void TriggerScanBasic(TString base, TStr Line 1216  void TriggerScanBasic(TString base, TStr
1216    //----------    //----------
1217    sst.str("");    sst.str("");
1218    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1219    TGraph *PMT2_20Graph   = new TGraph(nevents, time, pmt2_20);    TGraph *PMT2_20Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_20);
1220    RatePMT5->cd(9);    RatePMT5->cd(9);
1221    sst.str("");    sst.str("");
1222    sst << "PMT S323A";    sst << "PMT S323A";
# Line 1223  void TriggerScanBasic(TString base, TStr Line 1231  void TriggerScanBasic(TString base, TStr
1231    //----------    //----------
1232    sst.str("");    sst.str("");
1233    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1234    TGraph *PMT2_21Graph   = new TGraph(nevents, time, pmt2_21);    TGraph *PMT2_21Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_21);
1235    RatePMT5->cd(10);    RatePMT5->cd(10);
1236    sst.str("");    sst.str("");
1237    sst << "PMT S321B";    sst << "PMT S321B";
# Line 1238  void TriggerScanBasic(TString base, TStr Line 1246  void TriggerScanBasic(TString base, TStr
1246    //----------    //----------
1247    sst.str("");    sst.str("");
1248    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1249    TGraph *PMT2_22Graph   = new TGraph(nevents, time, pmt2_22);    TGraph *PMT2_22Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_22);
1250    RatePMT5->cd(11);    RatePMT5->cd(11);
1251    sst.str("");    sst.str("");
1252    sst << "PMT S322B";    sst << "PMT S322B";
# Line 1253  void TriggerScanBasic(TString base, TStr Line 1261  void TriggerScanBasic(TString base, TStr
1261    //----------    //----------
1262    sst.str("");    sst.str("");
1263    sst << "pmtcount1[0] vs OBT based on " << base.Data();    sst << "pmtcount1[0] vs OBT based on " << base.Data();
1264    TGraph *PMT2_23Graph   = new TGraph(nevents, time, pmt2_23);    TGraph *PMT2_23Graph   = new TGraph(nevents, (const Double_t*)time, (const Double_t*)pmt2_23);
1265    RatePMT5->cd(12);    RatePMT5->cd(12);
1266    sst.str("");    sst.str("");
1267    sst << "PMT S323B";    sst << "PMT S323B";

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.23