/[PAMELA software]/quicklook/anticounter/src/AcQLOOK.cpp
ViewVC logotype

Diff of /quicklook/anticounter/src/AcQLOOK.cpp

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

revision 1.1.1.1 by pam-se, Wed May 17 16:14:50 2006 UTC revision 1.4 by pam-se, Tue Jul 11 12:01:17 2006 UTC
# Line 3  Line 3 
3  #include <EventHeader.h>  #include <EventHeader.h>
4    
5  #include <fstream>  #include <fstream>
6    #include <vector>
7    
8  #include <TCanvas.h>  #include <TCanvas.h>
9  #include <TLatex.h>  #include <TLatex.h>
# Line 11  Line 12 
12  #include <TTree.h>  #include <TTree.h>
13  #include <TStyle.h>  #include <TStyle.h>
14  #include <TObjString.h>  #include <TObjString.h>
15    #include <TGraph.h>
16    #include <TH1.h>
17    #include <time.h>
18    
19  #include <utils/yodaUtility.h>  #include <utils/yodaUtility.h>
20    
21  #define DEBUG 0  #define DEBUG 0
22  #define VERSION 1.2  #define VERSION 1.5
23  /*  #define INTERVAL 100
24  * Anticounter physics quicklook  #define FORMAT "png"
 * Plots a brief status report of the anticounter detectors  
 * see document "Anticounter Quicklook Software" on www.particle.kth.se/~pearce/flight_ac_docs  
 * for more details  
 *  
 * author  Petter Hofverberg  
 * version 1.0  
 *  
 * author  Maurizio Nagni  
 * version 1.1  
 * Adapted for compilation and unique file YODA upacking  
 *  
 *  
 * author Petter Hofverberg  
 * version 1.2  
 * added a dummy version of the quicklook (-mode 0, default mode)  
 */  
 using namespace std;  
25    
26  int AcQLOOK(TString base,int fromevent=0, int toevent=0, TString outDir = "./", TString format = "jpg", int fullversion=0){  using namespace std;
27    
28    //Int_t       tmpSize;  UInt_t found;
29    ofstream      outputFile;  Int_t minevent,maxevent;
30    stringstream  oss;  UShort_t ACheader[2];
31      TString *cardname = new TString[2];
32    pamela::anticounter::AnticounterEvent *ace      = 0;  TString *detector = new TString[16];
33    pamela::EventHeader                   *eh       = 0;  
34    pamela::PscuHeader                    *ph       = 0;    
35    TFile                                 *rootFile = new TFile(base);  int AcQLOOKbasic(TString base,int fromevent=0, int toevent=0, TString outDir = "./", TString format = FORMAT){
36      
37      ofstream      outputFile;
38      stringstream  oss;
39    
40      pamela::anticounter::AnticounterEvent *ace      = 0;
41      pamela::EventHeader                   *eh       = 0;
42      pamela::PscuHeader                    *ph       = 0;
43      TFile                                 *rootFile = new TFile(base);
44    if (rootFile->IsZombie())    if (rootFile->IsZombie())
45      exit(-1);      exit(-1);
46    TString fileName = ((TObjString*)base.Tokenize("\/")->Last())->GetString();    TString fileName = ((TObjString*)base.Tokenize('\/')->Last())->GetString();
47    TString filePath = base;    TString filePath = base;
48    filePath.ReplaceAll(fileName, "");    filePath.ReplaceAll(fileName, "");
49    fileName.ReplaceAll(".root", "");    fileName.ReplaceAll(".root", "");
50    
51    //Takes the tree of the header file    //Takes the tree of the header file                                                                                                                                              
52    TTree *tr = (TTree*)rootFile->Get("Physics");    TTree *tr = (TTree*)rootFile->Get("Physics");
53    
54      tr->SetBranchStatus("*",0,&found); //disable all branches
55    
56      tr->SetBranchStatus("header*",1,&found);
57      // printf("header: enabled %i branches \n",found);
58      found = 0;
59      tr->SetBranchStatus("status*",1,&found);
60      //  printf("status: enabled %i branches \n",found);
61      found = 0;
62      tr->SetBranchStatus("hitmap*",1,&found);
63      //  printf("hitmap: enabled %i branches \n",found);
64      found = 0;
65      tr->SetBranchStatus("regist*",1,&found);
66      //  printf("regist: enabled %i branches \n",found);
67      found = 0;
68      tr->SetBranchStatus("shift*",1,&found);
69      //  printf("shift: enabled %i branches \n",found);
70      found = 0;
71      tr->SetBranchStatus("counters*",1,&found);
72      //  printf("counters: enabled %i branches \n",found);
73      found = 0;
74      tr->SetBranchStatus("coinc*",1,&found);
75      //  printf("coinc: enabled %i branches \n",found);
76      found = 0;
77      tr->SetBranchStatus("trigg*",1,&found);
78      //  printf("trigg: enabled %i branches \n",found);
79      found = 0;
80      tr->SetBranchStatus("clock*",1,&found);
81      //  printf("clock: enabled %i branches \n",found);
82      found = 0;
83      tr->SetBranchStatus("temp*",1,&found);
84      //  printf("temp: enabled %i branches \n",found);
85      found = 0;
86      tr->SetBranchStatus("DAC*",1,&found);
87      //  printf("DAC: enabled %i branches \n",found);
88      found = 0;
89      tr->SetBranchStatus("CRC*",1,&found);
90      //  printf("CRC: enabled %i branches \n",found);
91      
92      found = 0;
93      tr->SetBranchStatus("Pscu*",1,&found);
94      // printf("enabled %i branches \n",found);
95      found = 0;
96      tr->SetBranchStatus("Anticounter*",1,&found);
97      // printf("Ac enabled %i branches \n",found);
98      found = 0;
99      tr->SetBranchStatus("Header*",1,&found);
100      // printf("head enabled %i branches \n",found);
101      
102    tr->SetBranchAddress("Anticounter", &ace);    tr->SetBranchAddress("Anticounter", &ace);
103    tr->SetBranchAddress("Header", &eh);    tr->SetBranchAddress("Header", &eh);
104    
105        
   TString *mtitel = new TString[16];  
   mtitel[0]="CARD 4";  
   mtitel[1]="CAT 2";  
   mtitel[2]="CAS 1";  
   mtitel[3]="NC";  
   mtitel[4]="CARD 2";  
   mtitel[5]="CAT 4";  
   mtitel[6]="CAS 4";  
   mtitel[7]="NC";  
   mtitel[8]="CARD 3";  
   mtitel[9]="CAT 3";  
   mtitel[10]="CAS 3";  
   mtitel[11]="NC";  
   mtitel[12]="CARD 1";  
   mtitel[13]="CAT 1";  
   mtitel[14]="CAS 2";  
   mtitel[15]="NC";  
   
   TString *etitel = new TString[16];  
   etitel[0]="CARD 4";  
   etitel[1]="CAT 2";  
   etitel[2]="CAS 1";  
   etitel[3]="NC";  
   etitel[4]="CARD 2";  
   etitel[5]="CAT 4";  
   etitel[6]="CAS 4";  
   etitel[7]="NC";  
   etitel[8]="CARD 3";  
   etitel[9]="CAT 3";  
   etitel[10]="CAS 3";  
   etitel[11]="NC";  
   etitel[12]="CARD 1";  
   etitel[13]="CAT 1";  
   etitel[14]="CAS 2";  
   etitel[15]="NC";  
   
   //Long64_t  
   int nevents    = tr->GetEntries();  
   
   //tr->Scan("Pscu.Counter");  
   if(DEBUG)  
     printf("Number of events: %d\n",nevents);  
   
   int antal=nevents;  
     
   /******************Book histograms**********************************************/  
   if(DEBUG)  
     printf("Book histograms\n");  
   
   TH1D *nmbhitpmtCAS = new TH1D("nmbhitpmtCAS","Hit PMTs CAS",8,0.5,8.5);  
   nmbhitpmtCAS->GetXaxis()->SetTitle("Number of hits");  
   //nmbhitpmtCAS->GetYaxis()->SetTitle("")  
   TH1D *nmbhitpmtCAT = new TH1D("nmbhitpmtCAT","Hit PMTs CAT",8,0.5,8.5);  
   TH1D *nmbhitpmtCARD = new TH1D("nmbhitpmtCARD","Hit PMTs CARD",8,0.5,8.5);  
   
    //MAIN  
   TH1D *counter1_m       = new TH1D("counter1_m","Counter register CARD 4",75,1.,150.);  
   counter1_m->GetXaxis()->SetTitle("rate [Hz]");  
   counter1_m->GetYaxis()->SetTitle("Events");  
   //counter1_m->SetBit(TH1D::kCanRebin);  
   TH1D *counter2_m       = new TH1D("counter2_m","Counter register CAT 2",75,1.,150.);  
   counter2_m->GetXaxis()->SetTitle("rate [Hz]");  
   counter2_m->GetYaxis()->SetTitle("Events");  
   TH1D *counter3_m       = new TH1D("counter3_m","Counter register CAS 1",75,1.,150.);  
   TH1D *counter4_m       = new TH1D("counter4_m","Counter register NC",75,1.,150.);  
   TH1D *counter5_m       = new TH1D("counter5_m","Counter register CARD 2",75,1.,150.);  
   //counter5_m->SetBit(TH1D::kCanRebin);  
   TH1D *counter6_m       = new TH1D("counter6_m","Counter register CAT 4",75,1.,150.);  
   TH1D *counter7_m       = new TH1D("counter7_m","Counter register CAS 4",75,1.,150.);  
   TH1D *counter8_m       = new TH1D("counter8_m","Counter register NC",75,1.,150.);  
   TH1D *counter9_m       = new TH1D("counter9_m","Counter register CARD 3",75,1.,150.);  
   TH1D *counter10_m      = new TH1D("counter10_m","Counter register CAT 3",75,1.,150.);  
   TH1D *counter11_m      = new TH1D("counter11_m","Counter register CAS 3",75,1.,150.);  
   TH1D *counter12_m      = new TH1D("counter12_m","Counter register NC",75,1.,150.);  
   TH1D *counter13_m      = new TH1D("counter13_m","Counter register CARD 1",75,1.,150.);  
   TH1D *counter14_m      = new TH1D("counter14_m","Counter register CAT 1",75,1.,150.);  
   TH1D *counter15_m      = new TH1D("counter15_m","Counter register CAS 2",75,1.,150.);  
   TH1D *counter16_m      = new TH1D("counter16_m","Counter register NC",75,1.,150.);  
   
   //EXTRA  
   TH1D *counter1_e       = new TH1D("counter1_e","Counter register CARD 4",75,1.,150.);  
   TH1D *counter2_e       = new TH1D("counter2_e","Counter register CAT 2",75,1.,150.);  
   TH1D *counter3_e       = new TH1D("counter3_e","Counter register CAS 1",75,1.,150.);  
   TH1D *counter4_e       = new TH1D("counter4_e","Counter register NC",75,1.,150.);  
   TH1D *counter5_e       = new TH1D("counter5_e","Counter register CARD 2",75,1.,150.);  
   TH1D *counter6_e       = new TH1D("counter6_e","Counter register CAT 4",75,1.,150.);  
   TH1D *counter7_e       = new TH1D("counter7_e","Counter register CAS 4",75,1.,150.);  
   TH1D *counter8_e       = new TH1D("counter8_e","Counter register NC",75,1.,150.);  
   TH1D *counter9_e       = new TH1D("counter9_e","Counter register CARD 3",75,1.,150.);  
   TH1D *counter10_e      = new TH1D("counter10_e","Counter register CAT 3",75,1.,150.);  
   TH1D *counter11_e      = new TH1D("counter11_e","Counter register CAS 3",75,1.,150.);  
   TH1D *counter12_e      = new TH1D("counter12_e","Counter register NC",75,1.,150.);  
   TH1D *counter13_e      = new TH1D("counter13_e","Counter register CARD 1",75,1.,150.);  
   TH1D *counter14_e      = new TH1D("counter14_e","Counter register CAT 1",75,1.,150.);  
   TH1D *counter15_e      = new TH1D("counter15_e","Counter register CAS 2",75,1.,150.);  
   TH1D *counter16_e      = new TH1D("counter16_e","Counter register NC",75,1.,150.);  
     
   //MAIN  
   TH1D *shift1_m       = new TH1D("shift1_m","Shift register CARD 4",16,0.,16.);  
   shift1_m->GetXaxis()->SetTitle("Bin");  
   shift1_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift2_m       = new TH1D("shift2_m","Shift register CAT 2",16,0.,16.);  
   shift2_m->GetXaxis()->SetTitle("Bin");  
   shift2_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift3_m       = new TH1D("shift3_m","Shift register CAS 1",16,0.,16.);  
   shift3_m->GetXaxis()->SetTitle("Bin");  
   shift3_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift4_m       = new TH1D("shift4_m","Shift register NC",16,0.,16.);  
   shift4_m->GetXaxis()->SetTitle("Bin");  
   shift4_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift5_m       = new TH1D("shift5_m","Shift register CARD 2",16,0.,16.);  
   shift5_m->GetXaxis()->SetTitle("Bin");  
   shift5_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift6_m       = new TH1D("shift6_m","Shift register CAT 4",16,0.,16.);  
   shift6_m->GetXaxis()->SetTitle("Bin");  
   shift6_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift7_m       = new TH1D("shift7_m","Shift register CAS 4",16,0.,16.);  
   shift7_m->GetXaxis()->SetTitle("Bin");  
   shift7_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift8_m       = new TH1D("shift8_m","Shift register NC",16,0.,16.);  
   shift8_m->GetXaxis()->SetTitle("Bin");  
   shift8_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift9_m       = new TH1D("shift9_m","Shift register CARD 3",16,0.,16.);  
   shift9_m->GetXaxis()->SetTitle("Bin");  
   shift9_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift10_m      = new TH1D("shift10_m","Shift register CAT 3",16,0.,16.);  
   shift10_m->GetXaxis()->SetTitle("Bin");  
   shift10_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift11_m      = new TH1D("shift11_m","Shift register CAS 3",16,0.,16.);  
   shift11_m->GetXaxis()->SetTitle("Bin");  
   shift11_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift12_m      = new TH1D("shift12_m","Shift register NC",16,0.,16.);  
   shift12_m->GetXaxis()->SetTitle("Bin");  
   shift12_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift13_m      = new TH1D("shift13_m","Shift register CARD 1",16,0.,16.);  
   shift13_m->GetXaxis()->SetTitle("Bin");  
   shift13_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift14_m      = new TH1D("shift14_m","Shift register CAT 1",16,0.,16.);  
   shift14_m->GetXaxis()->SetTitle("Bin");  
   shift14_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift15_m      = new TH1D("shift15_m","Shift register CAS 2",16,0.,16.);  
   shift15_m->GetXaxis()->SetTitle("Bin");  
   shift15_m->GetYaxis()->SetTitle("Content");  
   TH1D *shift16_m      = new TH1D("shift16_m","Shift register NC",16,0.,16.);  
   shift16_m->GetXaxis()->SetTitle("Bin");  
   shift16_m->GetYaxis()->SetTitle("Content");  
   
   //EXTRA  
   TH1D *shift1_e       = new TH1D("shift1_e","Shift register 1",16,0.,16.);  
   shift1_e->GetXaxis()->SetTitle("Bin");  
   shift1_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift2_e       = new TH1D("shift2_e","Shift register 2",16,0.,16.);  
   shift2_e->GetXaxis()->SetTitle("Bin");  
   shift2_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift3_e       = new TH1D("shift3_e","Shift register 3",16,0.,16.);  
   shift3_e->GetXaxis()->SetTitle("Bin");  
   shift3_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift4_e       = new TH1D("shift4_e","Shift register 4",16,0.,16.);  
   shift4_e->GetXaxis()->SetTitle("Bin");  
   shift4_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift5_e       = new TH1D("shift5_e","Shift register 5",16,0.,16.);  
   shift5_e->GetXaxis()->SetTitle("Bin");  
   shift5_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift6_e       = new TH1D("shift6_e","Shift register 6",16,0.,16.);  
   shift6_e->GetXaxis()->SetTitle("Bin");  
   shift6_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift7_e       = new TH1D("shift7_e","Shift register 7",16,0.,16.);  
   shift7_e->GetXaxis()->SetTitle("Bin");  
   shift7_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift8_e       = new TH1D("shift8_e","Shift register 8",16,0.,16.);  
   shift8_e->GetXaxis()->SetTitle("Bin");  
   shift8_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift9_e       = new TH1D("shift9_e","Shift register 9",16,0.,16.);  
   shift9_e->GetXaxis()->SetTitle("Bin");  
   shift9_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift10_e      = new TH1D("shift10_e","Shift register 10",16,0.,16.);  
   shift10_e->GetXaxis()->SetTitle("Bin");  
   shift10_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift11_e      = new TH1D("shift11_e","Shift register 11",16,0.,16.);  
   shift11_e->GetXaxis()->SetTitle("Bin");  
   shift11_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift12_e      = new TH1D("shift12_e","Shift register 12",16,0.,16.);  
   shift12_e->GetXaxis()->SetTitle("Bin");  
   shift12_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift13_e      = new TH1D("shift13_e","Shift register 13",16,0.,16.);  
   shift13_e->GetXaxis()->SetTitle("Bin");  
   shift13_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift14_e      = new TH1D("shift14_e","Shift register 14",16,0.,16.);  
   shift14_e->GetXaxis()->SetTitle("Bin");  
   shift14_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift15_e      = new TH1D("shift15_e","Shift register 15",16,0.,16.);  
   shift15_e->GetXaxis()->SetTitle("Bin");  
   shift15_e->GetYaxis()->SetTitle("Content");  
   TH1D *shift16_e      = new TH1D("shift16_e","Shift register 16",16,0.,16.);  
   shift16_e->GetXaxis()->SetTitle("Bin");  
   shift16_e->GetYaxis()->SetTitle("Content");  
     
   
     
   //MAIN  
   TH1D *head_m         = new TH1D("head_m","Status and Headers",10,0.,10.);  
   head_m->GetXaxis()->SetBinLabel(1,"Event CRC M");  
   head_m->GetXaxis()->SetBinLabel(2,"Headers M");  
   head_m->GetXaxis()->SetBinLabel(3,"CRC M");  
   head_m->GetXaxis()->SetBinLabel(4,"Dsp M");  
   head_m->GetXaxis()->SetBinLabel(5,"Reg M");  
   head_m->GetXaxis()->SetBinLabel(6,"Event CRC E");  
   head_m->GetXaxis()->SetBinLabel(7,"Headers E");  
   head_m->GetXaxis()->SetBinLabel(8,"CRC E");  
   head_m->GetXaxis()->SetBinLabel(9,"Dsp E");  
   head_m->GetXaxis()->SetBinLabel(10,"Reg E");  
   head_m->GetYaxis()->SetTitle("Errors");  
   head_m->SetMinimum(0);  
   
   TH1D *hitmap_m       = new TH1D("hitmap_m","Hitmap",16,0.,16.);  
   hitmap_m->GetXaxis()->SetBinLabel(1,mtitel[0]);  
   hitmap_m->GetXaxis()->SetBinLabel(2,mtitel[1]);  
   hitmap_m->GetXaxis()->SetBinLabel(3,mtitel[2]);  
   hitmap_m->GetXaxis()->SetBinLabel(4,mtitel[3]);  
   hitmap_m->GetXaxis()->SetBinLabel(5,mtitel[4]);  
   hitmap_m->GetXaxis()->SetBinLabel(6,mtitel[5]);  
   hitmap_m->GetXaxis()->SetBinLabel(7,mtitel[6]);  
   hitmap_m->GetXaxis()->SetBinLabel(8,mtitel[7]);  
   hitmap_m->GetXaxis()->SetBinLabel(9,mtitel[8]);  
   hitmap_m->GetXaxis()->SetBinLabel(10,mtitel[9]);  
   hitmap_m->GetXaxis()->SetBinLabel(11,mtitel[10]);  
   hitmap_m->GetXaxis()->SetBinLabel(12,mtitel[11]);  
   hitmap_m->GetXaxis()->SetBinLabel(13,mtitel[12]);  
   hitmap_m->GetXaxis()->SetBinLabel(14,mtitel[13]);  
   hitmap_m->GetXaxis()->SetBinLabel(15,mtitel[14]);  
   hitmap_m->GetXaxis()->SetBinLabel(16,mtitel[15]);  
   hitmap_m->GetYaxis()->SetTitle("Hits");  
   
   TH1D *pmtstatus_m = new TH1D("pmtstatus_m","Coincidence errors MAIN",16,0.,16.);  
   pmtstatus_m->GetXaxis()->SetBinLabel(1,mtitel[0]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(2,mtitel[1]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(3,mtitel[2]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(4,mtitel[3]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(5,mtitel[4]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(6,mtitel[5]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(7,mtitel[6]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(8,mtitel[7]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(9,mtitel[8]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(10,mtitel[9]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(11,mtitel[10]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(12,mtitel[11]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(13,mtitel[12]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(14,mtitel[13]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(15,mtitel[14]);  
   pmtstatus_m->GetXaxis()->SetBinLabel(16,mtitel[15]);  
   pmtstatus_m->GetYaxis()->SetTitle("Errors");  
   
   //if(fromevent==0 && toevent==0)  
     TH1D *trigg_m        = new TH1D("trigg_m","Trigger dev",antal,0.,antal);  
     /*if(toevent>0 && fromevent>0)  
     TH1D *trigg_m        = new TH1D("trigg_m","Trigger dev",toevent-fromevent,fromevent,toevent);  
   if(toevent==0 && fromevent>0)  
   TH1D *trigg_m        = new TH1D("trigg_m","Trigger dev",1,fromevent,fromevent+1);*/  
   //trigg_m->SetMinimum(0);  
   trigg_m->GetYaxis()->SetTitle("Triggers");  
   trigg_m->GetXaxis()->SetTitle("Event number");  
   
   TH1D *timebtrigg_m     = new TH1D("timebtrigg_m","Time between triggers",100,0.,5.);  
   //timebtrigg_m->SetBit(TH1D::kCanRebin);  
   timebtrigg_m->GetYaxis()->SetTitle("Events");  
   timebtrigg_m->GetXaxis()->SetTitle("Time [s]");  
   
   //if(fromevent==0 && toevent==0){  
     TH1D *crc_m          = new TH1D("crc_m","crc MAIN",antal,0.,antal);  
     TH1D *headerr_m      = new TH1D("headerr_m","headerr_m",antal,0.,antal);  
     TH1D *crcerr_m       = new TH1D("crcerr_m","crcerr_m",antal,0.,antal);  
     TH1D *dsperr_m       = new TH1D("dsperr_m","dsperr_m",antal,0.,antal);  
     TH1D *regerr_m       = new TH1D("regerr_m","regerr_m",antal,0.,antal);  
     //}  
     /*  
   if(toevent>0 && fromevent>0){  
     TH1D *crc_m          = new TH1D("crc_m","crc MAIN",toevent-fromevent,fromevent,toevent);  
     TH1D *headerr_m      = new TH1D("headerr_m","headerr_m",toevent-fromevent,fromevent,toevent);  
     TH1D *crcerr_m       = new TH1D("crcerr_m","crcerr_m",toevent-fromevent,fromevent,toevent);  
     TH1D *dsperr_m       = new TH1D("dsperr_m","dsperr_m",toevent-fromevent,fromevent,toevent);  
     TH1D *regerr_m       = new TH1D("regerr_m","regerr_m",toevent-fromevent,fromevent,toevent);  
   }  
   if(toevent==0 && fromevent>0){  
     TH1D *crc_m          = new TH1D("crc_m","crc MAIN",1,fromevent,fromevent+1);  
     TH1D *headerr_m      = new TH1D("headerr_m","headerr_m",1,fromevent,fromevent+1);  
     TH1D *crcerr_m       = new TH1D("crcerr_m","crcerr_m",1,fromevent,fromevent+1);  
     TH1D *dsperr_m       = new TH1D("dsperr_m","dsperr_m",1,fromevent,fromevent+1);  
     TH1D *regerr_m       = new TH1D("regerr_m","regerr_m",1,fromevent,fromevent+1);  
     }*/  
   
   TH1D *dtrigg_m       = new TH1D("dtrigg_m","Trigger increment",10,0.,10.);  
   dtrigg_m->GetYaxis()->SetTitle("Events");  
   dtrigg_m->GetXaxis()->SetTitle("Trigger increment");  
   
   TH1D *timebtrigg_e     = new TH1D("timebtrigg_e","Time between triggers EXTRA",100,0.,5.);  
   //timebtrigg_e->SetBit(TH1D::kCanRebin);  
   timebtrigg_e->GetYaxis()->SetTitle("Events");  
   timebtrigg_e->GetXaxis()->SetTitle("Time [s]");  
   
   
   // if(fromevent==0 && toevent==0){  
     TH1D *crc_e          = new TH1D("crc_e","crc EXTRA",antal,0.,antal);  
     TH1D *headerr_e      = new TH1D("headerr_e","headerr_e",antal,0.,antal);  
     TH1D *crcerr_e       = new TH1D("crcerr_e","crcerr_e",antal,0.,antal);  
     TH1D *dsperr_e       = new TH1D("dsperr_e","dsperr_e",antal,0.,antal);  
     TH1D *regerr_e       = new TH1D("regerr_e","regerr_e",antal,0.,antal);  
     //}  
     /*  
   if(toevent>0 && fromevent>0){  
     TH1D *crc_e          = new TH1D("crc_e","crc EXTRA",toevent-fromevent,fromevent,toevent);  
     TH1D *headerr_e      = new TH1D("headerr_e","headerr_e",toevent-fromevent,fromevent,toevent);  
     TH1D *crcerr_e       = new TH1D("crcerr_e","crcerr_e",toevent-fromevent,fromevent,toevent);  
     TH1D *dsperr_e       = new TH1D("dsperr_e","dsperr_e",toevent-fromevent,fromevent,toevent);  
     TH1D *regerr_e       = new TH1D("regerr_e","regerr_e",toevent-fromevent,fromevent,toevent);  
   }  
   if(toevent==0 && fromevent>0){  
     TH1D *crc_e          = new TH1D("crc_e","crc EXTRA",1,fromevent,fromevent+1);  
     TH1D *headerr_e      = new TH1D("headerr_e","headerr_e",1,fromevent,fromevent+1);  
     TH1D *crcerr_e       = new TH1D("crcerr_e","crcerr_e",1,fromevent,fromevent+1);  
     TH1D *dsperr_e       = new TH1D("dsperr_e","dsperr_e",1,fromevent,fromevent+1);  
     TH1D *regerr_e       = new TH1D("regerr_e","regerr_e",1,fromevent,fromevent+1);  
     }*/  
     //if(fromevent==0 && toevent==0){  
     TH1D *T_right_m = new TH1D("T_right_m","Temperature MAIN",antal,0.,antal);  
     TH1D *T_actel_m = new TH1D("T_actel_m","Temperature MAIN",antal,0.,antal);  
     TH1D *T_dsp_m = new TH1D("T_dsp_m","Temperature MAIN",antal,0.,antal);  
     TH1D *T_left_m = new TH1D("T_left_m","Temperature MAIN",antal,0.,antal);  
   //}  
     /*  
   if(fromevent>0 && toevent>0){  
     TH1D *T_right_m = new TH1D("T_right_m","Temperature MAIN",toevent-fromevent,fromevent,toevent);  
     TH1D *T_actel_m = new TH1D("T_actel_m","Temperature MAIN",toevent-fromevent,fromevent,toevent);  
     TH1D *T_dsp_m = new TH1D("T_dsp_m","Temperature MAIN",toevent-fromevent,fromevent,toevent);  
     TH1D *T_left_m = new TH1D("T_left_m","Temperature MAIN",toevent-fromevent,fromevent,toevent);  
   }  
   if(fromevent>0 && toevent==0){  
     TH1D *T_right_m = new TH1D("T_right_m","Temperature MAIN",1,fromevent,fromevent+1);  
     TH1D *T_actel_m = new TH1D("T_actel_m","Temperature MAIN",1,fromevent,fromevent+1);  
     TH1D *T_dsp_m = new TH1D("T_dsp_m","Temperature MAIN",1,fromevent,fromevent+1);  
     TH1D *T_left_m = new TH1D("T_left_m","Temperature MAIN",1,fromevent,fromevent+1);  
   }  
     */  
   T_right_m->GetXaxis()->SetTitle("Event number");  
   T_right_m->GetYaxis()->SetTitle("Temp [C]");  
   T_right_m->SetMinimum(10);  
   T_right_m->SetMaximum(50);  
   //T_actel_m->SetMinimum(0);  
   //T_actel_m->SetMaximum(700);  
   //T_dsp_m->SetMinimum(0);  
   //T_dsp_m->SetMaximum(700);  
   //T_left_m->SetMinimum(0);  
   //T_left_m->SetMaximum(700);  
   
   //if(fromevent==0 && toevent==0){  
     TH1D *T_right_e = new TH1D("T_right_e","Temperature EXTRA",antal,0.,antal);  
     TH1D *T_actel_e = new TH1D("T_actel_e","Temperature EXTRA",antal,0.,antal);  
     TH1D *T_dsp_e = new TH1D("T_dsp_e","Temperature EXTRA",antal,0.,antal);  
     TH1D *T_left_e = new TH1D("T_left_e","Temperature EXTRA",antal,0.,antal);  
     //}  
     /*  
   if(fromevent>0 && toevent>0){  
     TH1D *T_right_e = new TH1D("T_right_e","Temperature EXTRA",toevent-fromevent,fromevent,toevent);  
     TH1D *T_actel_e = new TH1D("T_actel_e","Temperature EXTRA",toevent-fromevent,fromevent,toevent);  
     TH1D *T_dsp_e = new TH1D("T_dsp_e","Temperature EXTRA",toevent-fromevent,fromevent,toevent);  
     TH1D *T_left_e = new TH1D("T_left_e","Temperature EXTRA",toevent-fromevent,fromevent,toevent);  
   }  
   if(fromevent>0 && toevent==0){  
     TH1D *T_right_e = new TH1D("T_right_e","Temperature EXTRA",1,fromevent,fromevent+1);  
     TH1D *T_actel_e = new TH1D("T_actel_e","Temperature EXTRA",1,fromevent,fromevent+1);  
     TH1D *T_dsp_e = new TH1D("T_dsp_e","Temperature EXTRA",1,fromevent,fromevent+1);  
     TH1D *T_left_e = new TH1D("T_left_e","Temperature EXTRA",1,fromevent,fromevent+1);  
   }  
     */  
   T_right_e->GetXaxis()->SetTitle("Event number");  
   T_right_e->GetYaxis()->SetTitle("Temp [C]");  
   T_right_e->SetMinimum(10);  
   T_right_e->SetMaximum(50);  
   
   //EXTRA  
   TH1D *head_e         = new TH1D("head_e","Status and Headers",10,0.,10.);  
   head_e->GetXaxis()->SetBinLabel(1,"CRC event M");  
   head_e->GetXaxis()->SetBinLabel(2,"Headers M");  
   head_e->GetXaxis()->SetBinLabel(3,"CRC M");  
   head_e->GetXaxis()->SetBinLabel(4,"Dsp M");  
   head_e->GetXaxis()->SetBinLabel(5,"Reg M");  
   head_e->GetXaxis()->SetBinLabel(6,"CRC event E");  
   head_e->GetXaxis()->SetBinLabel(7,"Headers E");  
   head_e->GetXaxis()->SetBinLabel(8,"CRC E");  
   head_e->GetXaxis()->SetBinLabel(9,"Dsp E");  
   head_e->GetXaxis()->SetBinLabel(10,"Reg E");  
   head_e->GetYaxis()->SetTitle("Errors");  
   head_e->SetMinimum(0);  
   
   /* INTE  
   TH1D *head_e         = new TH1D("head_e","Status and Headers",9,0.,9.);  
   head_e->GetXaxis()->SetBinLabel(1,"Status");  
   head_e->GetXaxis()->SetBinLabel(2,"Reg 0");  
   head_e->GetXaxis()->SetBinLabel(3,"Reg 1");  
   head_e->GetXaxis()->SetBinLabel(4,"Reg 2");  
   head_e->GetXaxis()->SetBinLabel(5,"Reg 3");  
   head_e->GetXaxis()->SetBinLabel(6,"Reg 4");  
   head_e->GetXaxis()->SetBinLabel(7,"Reg 5");  
   head_e->GetXaxis()->SetBinLabel(8,"Head 1");  
   head_e->GetXaxis()->SetBinLabel(9,"Head 2");  
   head_e->GetYaxis()->SetTitle("Errors");  
   */  
     
   TH1D *hitmap_e       = new TH1D("hitmap_e","Hitmap EXTRA",16,0.,16.);  
   hitmap_e->GetXaxis()->SetBinLabel(1,etitel[0]);  
   hitmap_e->GetXaxis()->SetBinLabel(2,etitel[1]);  
   hitmap_e->GetXaxis()->SetBinLabel(3,etitel[2]);  
   hitmap_e->GetXaxis()->SetBinLabel(4,etitel[3]);  
   hitmap_e->GetXaxis()->SetBinLabel(5,etitel[4]);  
   hitmap_e->GetXaxis()->SetBinLabel(6,etitel[5]);  
   hitmap_e->GetXaxis()->SetBinLabel(7,etitel[6]);  
   hitmap_e->GetXaxis()->SetBinLabel(8,etitel[7]);  
   hitmap_e->GetXaxis()->SetBinLabel(9,etitel[8]);  
   hitmap_e->GetXaxis()->SetBinLabel(10,etitel[9]);  
   hitmap_e->GetXaxis()->SetBinLabel(11,etitel[10]);  
   hitmap_e->GetXaxis()->SetBinLabel(12,etitel[11]);  
   hitmap_e->GetXaxis()->SetBinLabel(13,etitel[12]);  
   hitmap_e->GetXaxis()->SetBinLabel(14,etitel[13]);  
   hitmap_e->GetXaxis()->SetBinLabel(15,etitel[14]);  
   hitmap_e->GetXaxis()->SetBinLabel(16,etitel[15]);  
   hitmap_e->GetYaxis()->SetTitle("Hits");  
     
   TH1D *pmtstatus_e = new TH1D("pmtstatus_e","Coincidence errors EXTRA",16,0.,16.);  
   pmtstatus_e->GetXaxis()->SetBinLabel(1,mtitel[0]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(2,mtitel[1]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(3,mtitel[2]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(4,mtitel[3]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(5,mtitel[4]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(6,mtitel[5]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(7,mtitel[6]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(8,mtitel[7]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(9,mtitel[8]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(10,mtitel[9]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(11,mtitel[10]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(12,mtitel[11]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(13,mtitel[12]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(14,mtitel[13]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(15,mtitel[14]);  
   pmtstatus_e->GetXaxis()->SetBinLabel(16,mtitel[15]);  
   pmtstatus_e->GetYaxis()->SetTitle("Errors");  
   
   //if(fromevent==0 && toevent==0)  
     TH1D *trigg_e        = new TH1D("trigg_e","Triggers EXTRA",antal,0.,antal);  
     //if(fromevent>0 && toevent>0)  
     //TH1D *trigg_e        = new TH1D("trigg_e","Triggers EXTRA",toevent-fromevent,fromevent,toevent);  
     // if(fromevent>0 && toevent==0)  
     //TH1D *trigg_e        = new TH1D("trigg_e","Triggers EXTRA",1,fromevent,fromevent+1);  
   trigg_e->GetYaxis()->SetTitle("Triggers");  
   trigg_e->GetXaxis()->SetTitle("Event number");  
   TH1D *dtrigg_e       = new TH1D("dtrigg_e","Trigger increment EXTRA",10,0.,10.);  
   dtrigg_e->GetYaxis()->SetTitle("Events");  
   dtrigg_e->GetXaxis()->SetTitle("Trigger increment");  
   
   
     
   /********************************************************************************/  
     
   //Long64_t nevents    = tr->GetEntries();  
   //Int_t    mintime    = tr->GetMinimum("Pscu.OrbitalTime");  
   //Int_t    maxtime    = tr->GetMaximum("Pscu.OrbitalTime");  
   //Int_t    nbintime   = (maxtime-mintime)/1000;  
   char *error;  
   error=" this is a very long line of characters as workaround   ";  
     
   /*******************Declarations*****************/  
   if(DEBUG)  
     printf("Declarate variables\n");  
   //cout << "Events: " << nevents << endl;  
   //const Int_t size = nevents;  
   //cout << "entries: " << size << endl;  
   //printf("nentries %d\n",size);  
   Double_t cputime;  
   UShort_t cnt = 1;  
   //unsigned int CRCcheck[2];  
   //unsigned int wordbuf[2][63];  
     
   int totevents=0;  
   int crcevents[2];  
   crcevents[0]=0;  
   crcevents[1]=0;  
   
   UShort_t CRCcheck[2];  
   UShort_t Status[2];  
   UShort_t Reg[2][6];  
   UShort_t Header[2][2];  
   UShort_t Hitmap[2];  
   UShort_t Trigger[2];  
   Short_t Trigg_old[2]={-1,-1};  
   UShort_t Temp[2][4];  
   
   UShort_t timeLSB[2];  
   UShort_t timeMSB[2];  
   Double_t time[2];  
   Double_t tid1[2];  
   Double_t tid2[2];  
   Double_t tid3[2];  
   
   Int_t Counter[2][16];  
   Int_t Counter1[2][16];  
   Int_t Counter2[2][16];  
   Int_t Counter3[2][16];  
   Double_t rate[2][16];  
   Double_t rate10[2][16];  
   Int_t rate10cnt[2][16];  
   Int_t cntmltp=10;  
   
   UShort_t Shift[2][16];  
   int tmp;  
   int vec[2][16][16];  
   //UShort_t pack[2][16];  
   int hitsCAS,hitsCAT,hitsCARD;  
   
   
   //UShort_t timeLSB[2];  
   //UShort_t timeMSB[2];  
   //Double_t time[2];  
   //Double_t tid1[2];  
   //Double_t tid2[2];  
   //Double_t tid3[2];  
106    
107    //Double_t hits_x[size],hits_y_m[size],hits_y_e[size];  
108        Int_t nevents = tr->GetEntries();
109    /*************************************************/  
110      //check that the selected range of events is ok                                                                                                                                
111    
   //  
   // run over each event and take out some variables  
   //  
112    if ( fromevent > toevent && toevent ){    if ( fromevent > toevent && toevent ){
     printf("It must be fromevent < toevent \n");  
113      return -1;      return -1;
114    };    };
     
     
115    if ( fromevent > nevents || fromevent < 0 ) {    if ( fromevent > nevents || fromevent < 0 ) {
     //printf("You can choose fromevent between 0 (all) and %d \n",nevents);  
116      return -1;      return -1;
117    };    };
     
118    if ( toevent > nevents || toevent < 0 ) {    if ( toevent > nevents || toevent < 0 ) {
     //printf("You can choose toevent between 0 (all) and %d \n",nevents);  
119      return -1;      return -1;
120    };    };
121    int minevent,maxevent;  
122    if ( fromevent == 0 ) {    if ( fromevent == 0 ) {
123      minevent = 0;      minevent = 0;
124      maxevent = nevents;      maxevent = nevents;
# Line 621  int AcQLOOK(TString base,int fromevent=0 Line 131  int AcQLOOK(TString base,int fromevent=0
131      };      };
132    };    };
133    
134    //strange bug, this line have to be here...    /******************* VARIABLE DECLARATION ***************/
   //CRC=crc(CRC,0x0);  
135    
136    //int what=0;    ACheader[0]=0xAC11;
137      ACheader[1]=0xAC22;
138    
139    if(DEBUG)    detector[0]="CARD 4";
140      printf("Zero variables\n");    detector[1]="CAT 2";
141      detector[2]="CAS 1";
142      detector[3]="NC";
143      detector[4]="CARD 2";
144      detector[5]="CAT 4";
145      detector[6]="CAS 4";
146      detector[7]="NC";
147      detector[8]="CARD 3";
148      detector[9]="CAT 3";
149      detector[10]="CAS 3";
150      detector[11]="NC";
151      detector[12]="CARD 1";
152      detector[13]="CAT 1";
153      detector[14]="CAS 2";
154      detector[15]="NC";
155    
156      
157      /******************** HISTOGRAM DECLARATION *************/
158      
159      TH1D *hitmap_h[2];
160      hitmap_h[0] = new TH1D("Hitmap MAIN","Hitmap",16,0.,16.);
161      hitmap_h[1] = new TH1D("Hitmap EXTRA","Hitmap",16,0.,16.);
162    
163    for(Int_t b=0;b<2;b++){    TH1D *status_h = new TH1D("Status","Status",10,0.,10.);
164      for(Int_t a=0;a<16;a++){  
165        rate10[b][a]=0;    /*********************  MAIN LOOP  **********************/
       rate10cnt[b][a]=0;  
     }  
   }  
   //Go through all events and update histograms and plots  
   //for (Int_t i = 0; i < nevents; i++){  
   if(fullversion)  
     {  
       if(DEBUG)  
         printf("Start looping over events (FULL VERSION)\n");  
       for (Int_t i = minevent; i < maxevent; i++){  
         //printf("1");  
         //printf("%d%c",100*(i-minevent)/(maxevent-minevent),37);  
         //printf("2");  
         //fflush(stdout);  
         ph = eh->GetPscuHeader();  
         cputime = ph->GetOrbitalTime();      
         if(DEBUG)  
           printf("Processing event %d\n",i);  
         tr->GetEntry(i);  
           
         totevents=totevents+1;  
           
         //CRC check  
         CRCcheck[0]=ace->CRCcheck[0];  
         CRCcheck[1]=ace->CRCcheck[1];  
         if(CRCcheck[0]==0)  
           {  
             head_m->Fill(0.0);  
             crcevents[0]++;  
           }  
         if(CRCcheck[1]==0)  
           {  
             head_e->Fill(5.0);  
             crcevents[1]++;  
           }  
           
         if(DEBUG)  
           printf("Fetch parameters\n");  
         //fetch parameters  
         for(Int_t b = 0; b<2; b++){  
           for(Int_t j = 0; j < 16; j++){  
             Shift[b][j] = ace->shift[b][j];  
           }  
         }  
           
         cnt=1;  
         for(Int_t b = 0; b < 2; b++){ //card  
           for(Int_t k = 0; k < 16; k++){ //shift register  
             for(Int_t l = 0; l < 16; l++){ //bin  
               tmp = ((Shift[b][k] & cnt) > 0 ? 1 : 0);  
               vec[b][k][l]=tmp;  
               cnt=cnt<<1;  
             }  
             cnt=1;  
           }  
         }  
           
           
         //fetch parameters  
         for(int b = 0; b<2; b++){  
           //cout << ace->status << endl;  
           timeLSB[b] = ace->clock[b][0];  
           timeMSB[b] = ace->clock[b][1];  
             
           Status[b] = ace->status[b];  
           for(Int_t j = 0; j < 6; j++)  
             Reg[b][j] = ace->regist[b][j];  
           Header[b][0] = ace->header[b][0];  
           Header[b][1] = ace->header[b][1];  
           Hitmap[b] = ace->hitmap[b];  
             
           Trigger[b] = ace->trigg[b];  
           Temp[b][0] = ((ace->temp[b][0]) & 0x00FF);  
           Temp[b][1] = ((ace->temp[b][0]) & 0xFF00)/256;  
           Temp[b][2] = ((ace->temp[b][1]) & 0x00FF);  
           Temp[b][3] = ((ace->temp[b][1]) & 0xFF00)/256;  
           for(Int_t j = 0; j < 16; j++)  
             Counter[b][j] = ace->counters[b][j];  
             
             
         }  
     
         hitsCAS=hitsCAT=hitsCARD=0;  
         for(int b=0;b<2;b++)  
           {  
             if((Hitmap[b] & 0x0001) > 0) hitsCARD++;  
             if((Hitmap[b] & 0x0002) > 0) hitsCAT++;  
             if((Hitmap[b] & 0x0004) > 0) hitsCAS++;  
             if((Hitmap[b] & 0x0010) > 0) hitsCARD++;  
             if((Hitmap[b] & 0x0020) > 0) hitsCAT++;  
             if((Hitmap[b] & 0x0040) > 0) hitsCAS++;  
             if((Hitmap[b] & 0x0100) > 0) hitsCARD++;  
             if((Hitmap[b] & 0x0200) > 0) hitsCAT++;  
             if((Hitmap[b] & 0x0400) > 0) hitsCAS++;  
             if((Hitmap[b] & 0x1000) > 0) hitsCARD++;  
             if((Hitmap[b] & 0x2000) > 0) hitsCAT++;  
             if((Hitmap[b] & 0x4000) > 0) hitsCAS++;  
           }  
         cnt=1;  
         //check that both PMTs have seen events, and if not, increment histogram with 1.  
         /*  
           if((ace->CRCcheck[0])==1 && (ace->CRCcheck[1])==1){  
   
           //hits_x[i-minevent] = cputime;  
           //hits_y_m[i-minevent] = ace->trigg[0];  
           //hits_y_e[i-minevent] = ace->trigg[1];  
             
           for(int j=0;j<16;j++){  
           if((Hitmap[0] & cnt) > 0){  
           //cout << "E" << endl;  
           if((Hitmap[1] & cnt) == 0){  
           pmtstatus_e->Fill(j,1.);  
           //cout << "E filled" << endl;  
           }  
           }  
           if((Hitmap[1] & cnt) > 0){  
           //cout << "M" << endl;  
           if((Hitmap[0] & cnt) == 0){  
           pmtstatus_m->Fill(j,1.);  
           //cout << "M filled" << endl;  
           }  
           }  
           cnt=cnt<<1;  
           }  
           }  
         */  
         cnt=1;  
       
           
         //tempL=hex>>8;  
         //tempR=hex-(tempL<<8);  
         if(DEBUG)  
           printf("Calc time b events\n");  
         //time between events (tid3[b])  
         for(Int_t b = 0; b<2; b++){  
           time[b]=(timeMSB[b]*(pow(2,16))+timeLSB[b]);  
             
           if(i==minevent)  
             tid1[b]=time[b];  
           else{  
             tid2[b]=tid1[b];  
             tid1[b]=time[b];  
           }  
           if(tid1[b]<tid2[b])  
             tid2[b]=tid2[b]-4294967294;  
             
           tid3[b]=(tid1[b]-tid2[b])/(25*1000000);  
           //printf("%f\n",tid3[b]);  
         }  
           
           
         //number of counts between events Counter3[b][j] -> rate[b][j]  
         for(Int_t b=0;b<2;b++){  
           for(Int_t j = 0; j < 16; j++){  
             if(i==minevent)  
               Counter1[b][j]=Counter[b][j];  
             else{  
               Counter2[b][j]=Counter1[b][j];  
               Counter1[b][j]=Counter[b][j];  
             }  
             Counter3[b][j]=Counter1[b][j]-Counter2[b][j];  
             if(Counter3[b][j]<0)  
               Counter3[b][j]=Counter3[b][j]+65535;  
             if(tid3[b]>0){  
               rate[b][j]=Counter3[b][j]/tid3[b];  
               rate10[b][j]=rate10[b][j]+rate[b][j];  
               rate10cnt[b][j]=rate10cnt[b][j]+1;  
             }  
           }  
         }  
           
           
         //fill histograms MAIN  
         if(DEBUG)  
           printf("Fill histogram MAIN\n");  
           
         if(CRCcheck[0]==CRCcheck[1]==1)  
           {  
             nmbhitpmtCAS->Fill(hitsCAS,1);  
             nmbhitpmtCAT->Fill(hitsCAT,1);  
             nmbhitpmtCARD->Fill(hitsCARD,1);  
           }  
         if(CRCcheck[0]==1)  
           {  
             for(Int_t j = 0; j < 16; j++){  
               shift1_m->Fill(j,vec[0][j][0]);  
               shift2_m->Fill(j,vec[0][j][1]);  
               shift3_m->Fill(j,vec[0][j][2]);  
               shift4_m->Fill(j,vec[0][j][3]);  
               shift5_m->Fill(j,vec[0][j][4]);  
               shift6_m->Fill(j,vec[0][j][5]);  
               shift7_m->Fill(j,vec[0][j][6]);  
               shift8_m->Fill(j,vec[0][j][7]);  
               shift9_m->Fill(j,vec[0][j][8]);  
               shift10_m->Fill(j,vec[0][j][9]);  
               shift11_m->Fill(j,vec[0][j][10]);  
               shift12_m->Fill(j,vec[0][j][11]);  
               shift13_m->Fill(j,vec[0][j][12]);  
               shift14_m->Fill(j,vec[0][j][13]);  
               shift15_m->Fill(j,vec[0][j][14]);  
               shift16_m->Fill(j,vec[0][j][15]);  
             }  
           }  
           
         //fill histograms EXTRA  
         if(DEBUG)  
           printf("Fill histogram EXTRA\n");  
         if(CRCcheck[1]==1)  
           {  
             for(Int_t j = 0; j < 16; j++){  
               shift1_e->Fill(j,vec[1][j][0]);  
               shift2_e->Fill(j,vec[1][j][1]);  
               shift3_e->Fill(j,vec[1][j][2]);  
               shift4_e->Fill(j,vec[1][j][3]);  
               shift5_e->Fill(j,vec[1][j][4]);  
               shift6_e->Fill(j,vec[1][j][5]);  
               shift7_e->Fill(j,vec[1][j][6]);  
               shift8_e->Fill(j,vec[1][j][7]);  
               shift9_e->Fill(j,vec[1][j][8]);  
               shift10_e->Fill(j,vec[1][j][9]);  
               shift11_e->Fill(j,vec[1][j][10]);  
               shift12_e->Fill(j,vec[1][j][11]);  
               shift13_e->Fill(j,vec[1][j][12]);  
               shift14_e->Fill(j,vec[1][j][13]);  
               shift15_e->Fill(j,vec[1][j][14]);  
               shift16_e->Fill(j,vec[1][j][15]);  
             }  
           }  
           
   
   
           
         if(((ace->CRCcheck[0])==1) && (ace->CRC[0]!=0)){  
           if((Header[0][0] != 0xACAC) || (Header[0][1] != 0xAC11)){  
             head_m->Fill(1.,1);  
             headerr_m->Fill(i,Trigger[0]);}  
           if((Status[0] & 0x8000) < 0x8000){  
             head_m->Fill(2.,1);  
             crcerr_m->Fill(i,Trigger[0]);}  
           if((Status[0] & 0x4000) < 0x4000){  
             head_m->Fill(3.,1);  
             dsperr_m->Fill(i,Trigger[0]);}  
           if((Status[0] & 0x01FF) < 0x01FF){  
             head_m->Fill(4.,1);  
             regerr_m->Fill(i,Trigger[0]);}  
           T_right_m->Fill(i,Temp[0][0]*2.8-273.);  
           T_actel_m->Fill(i,Temp[0][1]*2.8-273.);  
           T_dsp_m->Fill(i,Temp[0][2]*2.8-273.);  
           T_left_m->Fill(i,Temp[0][3]*2.8-273.);  
           trigg_m->Fill(i,Trigger[0]);  
           dtrigg_m->Fill(Trigger[0]-Trigg_old[0],Trigg_old[0] == -1 ? 0 : 1);  
           Trigg_old[0]=Trigger[0];  
           timebtrigg_m->Fill(tid3[0],1.);  
             
             
           if(DEBUG)  
             printf("Calculate rates\n");  
           if(i!=minevent){  
             //fill histograms MAIN  
             if(rate10cnt[0][0]==cntmltp){  
               counter1_m->Fill(rate10[0][0]/10.,1);  
               //printf("rate :%d\n",rate10[0][0]);  
               rate10cnt[0][0]=0;  
               rate10[0][0]=0;  
             }  
             if(rate10cnt[0][1]==cntmltp){  
               counter2_m->Fill(rate10[0][1]/10.,1);  
               rate10cnt[0][1]=0;  
               rate10[0][1]=0;  
             }  
             if(rate10cnt[0][2]==cntmltp){  
               counter3_m->Fill(rate10[0][2]/10.,1);  
               rate10cnt[0][2]=0;  
               rate10[0][2]=0;  
             }  
             if(rate10cnt[0][3]==cntmltp){  
               counter4_m->Fill(rate10[0][3]/10.,1);  
               rate10cnt[0][3]=0;  
               rate10[0][3]=0;  
             }  
             if(rate10cnt[0][4]==cntmltp){  
               counter5_m->Fill(rate10[0][4]/10.,1);  
               rate10cnt[0][4]=0;  
               rate10[0][4]=0;  
             }  
             if(rate10cnt[0][5]==cntmltp){  
               counter6_m->Fill(rate10[0][5]/10.,1);  
               rate10cnt[0][5]=0;  
               rate10[0][5]=0;  
             }  
             if(rate10cnt[0][6]==cntmltp){  
               counter7_m->Fill(rate10[0][6]/10.,1);  
               rate10cnt[0][6]=0;  
               rate10[0][6]=0;  
             }  
             if(rate10cnt[0][7]==cntmltp){        
               counter8_m->Fill(rate10[0][7]/10.,1);  
               rate10cnt[0][7]=0;  
               rate10[0][7]=0;  
             }  
             if(rate10cnt[0][8]==cntmltp){  
               counter9_m->Fill(rate10[0][8]/10.,1);  
               rate10cnt[0][8]=0;  
               rate10[0][8]=0;  
             }  
             if(rate10cnt[0][9]==cntmltp){  
               counter10_m->Fill(rate10[0][9]/10.,1);  
               rate10cnt[0][9]=0;  
               rate10[0][9]=0;  
             }  
             if(rate10cnt[0][10]==cntmltp){  
               counter11_m->Fill(rate10[0][10]/10.,1);  
               rate10cnt[0][10]=0;  
               rate10[0][10]=0;  
             }  
             if(rate10cnt[0][11]==cntmltp){  
               counter12_m->Fill(rate10[0][11]/10.,1);  
               rate10cnt[0][11]=0;  
               rate10[0][11]=0;  
             }  
             if(rate10cnt[0][12]==cntmltp){  
               counter13_m->Fill(rate10[0][12]/10.,1);  
               rate10cnt[0][12]=0;  
               rate10[0][12]=0;  
             }  
             if(rate10cnt[0][13]==cntmltp){  
               counter14_m->Fill(rate10[0][13]/10.,1);  
               rate10cnt[0][13]=0;  
               rate10[0][13]=0;  
             }  
             if(rate10cnt[0][14]==cntmltp){  
               counter15_m->Fill(rate10[0][14]/10.,1);  
               rate10cnt[0][14]=0;  
               rate10[0][14]=0;  
             }  
             if(rate10cnt[0][15]==cntmltp){  
               counter16_m->Fill(rate10[0][15]/10,1);  
               rate10cnt[0][15]=0;  
               rate10[0][15]=0;  
             }  
               
           }  
         }  
         //fill histograms EXTRA  
         if(((ace->CRCcheck[1])==1) && (ace->CRC[1]!=0)){  
           if((Header[1][0] != 0xACAC) || (Header[1][1] != 0xAC22)){  
             head_e->Fill(6.,1);  
             headerr_e->Fill(i,Trigger[1]);  
             //headerr_e->Fill(i,testtrigg);  
             //cout << "i: " << i << " Trigger: " << Trigger[1] << endl;  
           }  
           if((Status[1] & 0x8000) < 0x8000){  
             head_e->Fill(7.,1);  
             crcerr_e->Fill(i,Trigger[1]);}  
           if((Status[1] & 0x4000) < 0x4000){  
             head_e->Fill(8.,1);  
             dsperr_e->Fill(i,Trigger[1]);}  
           if((Status[1] & 0x01FF) < 0x01FF){  
             head_e->Fill(9.,1);  
             regerr_e->Fill(i,Trigger[1]);}  
           T_right_e->Fill(i,Temp[1][0]*2.8-273.);  
           T_actel_e->Fill(i,Temp[1][1]*2.8-273.);  
           T_dsp_e->Fill(i,Temp[1][2]*2.8-273.);  
           T_left_e->Fill(i,Temp[1][3]*2.8-273.);  
           trigg_e->Fill(i,Trigger[1]);  
           dtrigg_e->Fill(Trigger[1]-Trigg_old[1],Trigg_old[1] == -1 ? 0 : 1);  
           Trigg_old[1]=Trigger[1];  
           timebtrigg_e->Fill(tid3[1],1.);  
             
           if(i!=minevent){  
             //fill histograms EXTRA  
             if(rate10cnt[1][0]==cntmltp){  
               counter1_e->Fill(rate10[1][0]/10.,1);  
               //printf("rate :%d\n",rate10[1][0]);  
               rate10cnt[1][0]=0;  
               rate10[1][0]=0;  
             }  
             if(rate10cnt[1][1]==cntmltp){  
               counter2_e->Fill(rate10[1][1]/10.,1);  
               rate10cnt[1][1]=0;  
               rate10[1][1]=0;  
             }  
             if(rate10cnt[1][2]==cntmltp){  
               counter3_e->Fill(rate10[1][2]/10.,1);  
               rate10cnt[1][2]=0;  
               rate10[1][2]=0;  
             }  
             if(rate10cnt[1][3]==cntmltp){  
               counter4_e->Fill(rate10[1][3]/10.,1);  
               rate10cnt[1][3]=0;  
               rate10[1][3]=0;  
             }  
             if(rate10cnt[1][4]==cntmltp){  
               counter5_e->Fill(rate10[1][4]/10.,1);  
               rate10cnt[1][4]=0;  
               rate10[1][4]=0;  
             }  
             if(rate10cnt[1][5]==cntmltp){  
               counter6_e->Fill(rate10[1][5]/10.,1);  
               rate10cnt[1][5]=0;  
               rate10[1][5]=0;  
             }  
             if(rate10cnt[1][6]==cntmltp){  
               counter7_e->Fill(rate10[1][6]/10.,1);  
               rate10cnt[1][6]=0;  
               rate10[1][6]=0;  
             }  
             if(rate10cnt[1][7]==cntmltp){        
               counter8_e->Fill(rate10[1][7]/10.,1);  
               rate10cnt[1][7]=0;  
               rate10[1][7]=0;  
             }  
             if(rate10cnt[1][8]==cntmltp){  
               counter9_e->Fill(rate10[1][8]/10.,1);  
               rate10cnt[1][8]=0;  
               rate10[1][8]=0;  
             }  
             if(rate10cnt[1][9]==cntmltp){  
               counter10_e->Fill(rate10[1][9]/10.,1);  
               rate10cnt[1][9]=0;  
               rate10[1][9]=0;  
             }  
             if(rate10cnt[1][10]==cntmltp){  
               counter11_e->Fill(rate10[1][10]/10.,1);  
               rate10cnt[1][10]=0;  
               rate10[1][10]=0;  
             }  
             if(rate10cnt[1][11]==cntmltp){  
               counter12_e->Fill(rate10[1][11]/10.,1);  
               rate10cnt[1][11]=0;  
               rate10[1][11]=0;  
             }  
             if(rate10cnt[1][12]==cntmltp){  
               counter13_e->Fill(rate10[1][12]/10.,1);  
               rate10cnt[1][12]=0;  
               rate10[1][12]=0;  
             }  
             if(rate10cnt[1][13]==cntmltp){  
               counter14_e->Fill(rate10[1][13]/10.,1);  
               rate10cnt[1][13]=0;  
               rate10[1][13]=0;  
             }  
             if(rate10cnt[1][14]==cntmltp){  
               counter15_e->Fill(rate10[1][14]/10.,1);  
               rate10cnt[1][14]=0;  
               rate10[1][14]=0;  
             }  
             if(rate10cnt[1][15]==cntmltp){  
               counter16_e->Fill(rate10[1][15]/10,1);  
               rate10cnt[1][15]=0;  
               rate10[1][15]=0;  
             }  
           }  
         }  
         cnt=1;  
         for(Int_t j = 0; j < 16; j++){  
           if((ace->CRCcheck[0])==1)  
             hitmap_m->Fill(j,(Hitmap[0] & cnt)>0 ? 1 : 0);  
           if((ace->CRCcheck[1])==1)  
             hitmap_e->Fill(j,(Hitmap[1] & cnt)>0 ? 1 : 0);  
           cnt=cnt<<1;  
         }  
           
         cnt=1;  
         /*  
           if((100*(i-minevent)/(maxevent-minevent))<10.)  
           printf("%c%c",8,8);  
           else  
           printf("%c%c%c",8,8,8);  
         */  
       }  
     }  
166        
167     if(!fullversion)     for (Int_t i = minevent; i < maxevent; i++){
     {  
       if(DEBUG)  
         printf("Start looping over events (DUMMY VERSION)\n");  
       for (Int_t i = minevent; i < maxevent; i++){  
         //printf("1");  
         //printf("%d%c",100*(i-minevent)/(maxevent-minevent),37);  
         //printf("2");  
         //fflush(stdout);  
         ph = eh->GetPscuHeader();  
         cputime = ph->GetOrbitalTime();      
         if(DEBUG)  
           printf("Processing event %d\n",i);  
         tr->GetEntry(i);  
   
         totevents=totevents+1;  
           
         //CRC check  
         CRCcheck[0]=ace->CRCcheck[0];  
         CRCcheck[1]=ace->CRCcheck[1];  
         if(CRCcheck[0]==0)  
           {  
             head_m->Fill(0.0);  
             crcevents[0]++;  
           }  
         if(CRCcheck[1]==0)  
           {  
             head_e->Fill(5.0);  
             crcevents[1]++;  
           }  
168            
169          //fetch parameters       tr->GetEntry(i);
170          for(int b = 0; b<2; b++){       ph = eh->GetPscuHeader();
           Status[b] = ace->status[b];  
           for(Int_t j = 0; j < 6; j++)  
             Reg[b][j] = ace->regist[b][j];  
           Header[b][0] = ace->header[b][0];  
           Header[b][1] = ace->header[b][1];  
           Hitmap[b] = ace->hitmap[b];  
         }  
     
         hitsCAS=hitsCAT=hitsCARD=0;  
         for(int b=0;b<2;b++)  
           {  
             if((Hitmap[b] & 0x0001) > 0) hitsCARD++;  
             if((Hitmap[b] & 0x0002) > 0) hitsCAT++;  
             if((Hitmap[b] & 0x0004) > 0) hitsCAS++;  
             if((Hitmap[b] & 0x0010) > 0) hitsCARD++;  
             if((Hitmap[b] & 0x0020) > 0) hitsCAT++;  
             if((Hitmap[b] & 0x0040) > 0) hitsCAS++;  
             if((Hitmap[b] & 0x0100) > 0) hitsCARD++;  
             if((Hitmap[b] & 0x0200) > 0) hitsCAT++;  
             if((Hitmap[b] & 0x0400) > 0) hitsCAS++;  
             if((Hitmap[b] & 0x1000) > 0) hitsCARD++;  
             if((Hitmap[b] & 0x2000) > 0) hitsCAT++;  
             if((Hitmap[b] & 0x4000) > 0) hitsCAS++;  
           }  
   
         if(((ace->CRCcheck[0])==1) && (ace->CRC[0]!=0)){  
           if((Header[0][0] != 0xACAC) || (Header[0][1] != 0xAC11)){  
             head_m->Fill(1.,1);  
             headerr_m->Fill(i,Trigger[0]);}  
           if((Status[0] & 0x8000) < 0x8000){  
             head_m->Fill(2.,1);  
             crcerr_m->Fill(i,Trigger[0]);}  
           if((Status[0] & 0x4000) < 0x4000){  
             head_m->Fill(3.,1);  
             dsperr_m->Fill(i,Trigger[0]);}  
           if((Status[0] & 0x01FF) < 0x01FF){  
             head_m->Fill(4.,1);  
             regerr_m->Fill(i,Trigger[0]);}  
         }  
   
         //fill histograms EXTRA  
         if(((ace->CRCcheck[1])==1) && (ace->CRC[1]!=0)){  
           if((Header[1][0] != 0xACAC) || (Header[1][1] != 0xAC22)){  
             head_e->Fill(6.,1);  
             headerr_e->Fill(i,Trigger[1]);  
             //headerr_e->Fill(i,testtrigg);  
             //cout << "i: " << i << " Trigger: " << Trigger[1] << endl;  
           }  
           if((Status[1] & 0x8000) < 0x8000){  
             head_e->Fill(7.,1);  
             crcerr_e->Fill(i,Trigger[1]);}  
           if((Status[1] & 0x4000) < 0x4000){  
             head_e->Fill(8.,1);  
             dsperr_e->Fill(i,Trigger[1]);}  
           if((Status[1] & 0x01FF) < 0x01FF){  
             head_e->Fill(9.,1);  
             regerr_e->Fill(i,Trigger[1]);}  
   
           cnt=1;  
           for(Int_t j = 0; j < 16; j++){  
             if((ace->CRCcheck[0])==1)  
               hitmap_m->Fill(j,(Hitmap[0] & cnt)>0 ? 1 : 0);  
             if((ace->CRCcheck[1])==1)  
               hitmap_e->Fill(j,(Hitmap[1] & cnt)>0 ? 1 : 0);  
             cnt=cnt<<1;  
           }  
             
           cnt=1;  
         }  
       }  
     }  
171    
172    //printf("%d%c\n",100,37);      for(Int_t card=0;card<2;card++)
173    //fflush(stdout);        {
174    //printf("\n********* QLOOK SHORT INFO **********\n\n");          //Proceed only if crc is ok
175    //printf("Events: %d\nCrc Main %d\nCrc Extra: %d\n",totevents,crcevents[0],crcevents[1]);          if(ace->CRCcheck[card]==1)
176    //printf("Calibrations: %d\n",nCalibs);            {
177    //printf("\n**************************************\n");  
178    //printf("\nOpening canvases...\n");              //hitmap                                                                                                                                                              
179    //cout << "hits: " << what << endl;              for(Int_t ch_cnt=0;ch_cnt<16;ch_cnt++)
180    //Draw histograms                {
181    //gStyle->SetPalette(1);                  if( (ace->hitmap[card] & (0x1<<ch_cnt)) > 0 )
182                      hitmap_h[card]->Fill(ch_cnt,1.);
183                  }
184                //Status                                                                                                                                                              
185                if((ace->header[card][0] != 0xACAC) || (ace->header[card][1] != ACheader[card]))
186                  status_h->Fill(1.+5.*card,1.);
187                if((ace->status[card] & 0x8000) < 0x8000) //crc                                                                                                                        
188                  status_h->Fill(2.+5.*card,1.);
189                if((ace->status[card] & 0x4000) < 0x4000) //dsp                                                                                                                        
190                  status_h->Fill(3.+5.*card,1.);
191                if((ace->status[card] & 0x01FF) < 0x01FF) //reg                                                                                                                        
192                  status_h->Fill(4.+5*card,1.);
193    
194              }//if(crc check)                                                                                                                                                        
195            /******************************************************/
196            else
197              status_h->Fill(5.*card,1.); //event crc                                                                                                                                  
198          }//for(card)        
199    
200    if(DEBUG)    }//for(events)
     printf("Start plotting\n");  
201    
202    /***************************************** PLOTTING *****************************************/    /***************************************** PLOTTING *****************************************/
203        
   //Variables  
   TCanvas *Canv_report1,*Canv_report2,*Canv_report3,*Canv_report4;  
   TLatex *t;  
   TPad *pd1,*pd2,*pd3,*pd4,*pd5,*pd6,*pd7,*pd8,*pd9,*pd10,*pd11,*pd12;  
   TLine *linje;  
   TLegend *leg_m,*leg_e,*leg1_m;  
   Int_t i;  
   Double_t max1,max2;  
204    char *namn = "KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK";    char *namn = "KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK";
205    int mposition = 80;    int mposition = 80;
206    int eposition = 80;    int eposition = 80;
207    char *figsave = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF";    char *figsave1 = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF";
208    char *mystring = "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD";    char *mystring = "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD";
209    //char *tmpchar = "JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ";    
210    TBox *b1,*b2,*b3,*b4,*b5;    TBox *b1,*b2,*b3,*b4,*b5;
211    gStyle->SetOptDate(0);    gStyle->SetOptDate(0);
212    TString *merr = new TString[5];    TString *merr = new TString[5];
# Line 1248  int AcQLOOK(TString base,int fromevent=0 Line 215  int AcQLOOK(TString base,int fromevent=0
215    merr[2]="CRC";    merr[2]="CRC";
216    merr[3]="Dsp";    merr[3]="Dsp";
217    merr[4]="Reg";    merr[4]="Reg";
218      
219      TCanvas *sheet1 = new TCanvas("Sheet 1","Sheet 1"); //base
220      sheet1->Range(0,0,100,100);
221      sheet1->Draw();
222      b1 = new TBox(10,84.5,90,85.5);
223      b2 = new TBox(49.5,95,50.5,5);
224      b1->SetFillColor(1);
225      b2->SetFillColor(1);
226      b1->Draw();
227      b2->Draw();
228      
229      TLatex *t=new TLatex();
230      t->SetTextFont(40);
231      t->SetTextColor(1);
232      t->SetTextAlign(12);
233      t->SetTextSize(0.04);
234      namn = "AntiCounter MAIN card";
235      t->DrawLatex(10,90,namn);
236      t->SetTextColor(1);
237      namn = "AntiCounter EXTRA card";
238      t->DrawLatex(58,90,namn);
239      t->SetTextSize(0.025);
240      
241      for(Int_t ch=1;ch<17;ch++)
242        {
243          if(ch!=4 && ch!=8 && ch!=12 && ch!=16 && hitmap_h[0]->GetBinContent(ch)==0){
244            mystring = Form("%s channel empty",detector[ch-1].Data());  
245            t->SetTextColor(2);
246            t->DrawLatex(15,mposition,mystring);
247            mposition -= 4;
248          }
249          if(ch!=4 && ch!=8 && ch!=12 && ch!=16 && hitmap_h[1]->GetBinContent(ch)==0){
250            mystring = Form("%s channel empty",detector[ch-1].Data());
251            t->SetTextColor(2);
252            t->DrawLatex(65,eposition,mystring);
253            eposition -= 4;
254          }
255        }
256      for(Int_t ch=0;ch<5;ch++)
257        {
258          if(status_h->GetBinContent(ch+1)>0){
259            mposition -= 4;
260            mystring = Form("%d %s errors",(int)status_h->GetBinContent(ch+1),merr[ch].Data());
261            t->SetTextColor(2);
262            t->DrawLatex(15,mposition,mystring);
263          }
264          if(status_h->GetBinContent(ch+5+1)>0){
265            eposition -= 4;
266            mystring = Form("%d %s errors",(int)status_h->GetBinContent(ch+5+1),merr[ch].Data());
267            t->SetTextColor(2);
268            t->DrawLatex(65,eposition,mystring);
269          }
270        }
271      //if no errors
272      if(mposition==80)
273        {
274          namn = "AC main working";
275          t->SetTextSize(0.035);
276          t->SetTextColor(1);
277          t->DrawLatex(15,50,namn);
278        }
279      if(eposition==80)
280        {
281          namn = "AC extra working";
282          t->SetTextSize(0.035);
283          t->SetTextColor(1);
284          t->DrawLatex(65,50,namn);
285        }
286      if(mposition!=80 || eposition!=80)
287        {
288          namn = "AC malfunction";
289          t->SetTextSize(0.035);
290          t->SetTextColor(1);
291          t->DrawLatex(41.5,97.3,namn);
292          b3 = new TBox(10,96,40,98.5);
293          b4 = new TBox(10,1.5,90,4);
294          b5 = new TBox(60,96,90,98.5);
295          b3->SetFillColor(2);
296          b4->SetFillColor(2);
297          b5->SetFillColor(2);
298          b3->Draw();
299          b4->Draw();
300          b5->Draw();
301        }
302      
303      figsave1 = Form("%s/%s_AcQLOOKbasic.%s",outDir.Data(),fileName.Data(),format.Data());
304      sheet1->SaveAs(figsave1);
305    
306      return 1;
307      
308    } //end AcBasic
309    
310    
311    int AcQLOOKpro(TString base,int fromevent=0, int toevent=0, TString outDir = "./", TString format = FORMAT){
312    
313      //Float_t startTime,stopTime;
314      //Float_t time1,time2,time3,time4;
315    
316      //startTime = clock();
317    
318      ofstream      outputFile;
319      stringstream  oss;
320      
321      pamela::anticounter::AnticounterEvent *ace      = 0;
322      pamela::EventHeader                   *eh       = 0;
323      pamela::PscuHeader                    *ph       = 0;  
324      TFile                                 *rootFile = new TFile(base);  
325      if (rootFile->IsZombie())
326        exit(-1);
327      TString fileName = ((TObjString*)base.Tokenize('\/')->Last())->GetString();
328      TString filePath = base;
329      filePath.ReplaceAll(fileName, "");
330      fileName.ReplaceAll(".root", "");
331    
332      //Takes the tree of the header file
333      TTree *tr = (TTree*)rootFile->Get("Physics");
334      
335      tr->SetBranchStatus("*",0,&found); //disable all branches                                                                                                                      
336    
337      tr->SetBranchStatus("header*",1,&found);
338      //  printf("header: enabled %i branches \n",found);
339      found = 0;
340      tr->SetBranchStatus("status*",1,&found);
341      //  printf("status: enabled %i branches \n",found);
342      found = 0;
343      tr->SetBranchStatus("hitmap*",1,&found);
344      //  printf("hitmap: enabled %i branches \n",found);
345      found = 0;
346      tr->SetBranchStatus("regist*",1,&found);
347      //  printf("regist: enabled %i branches \n",found);
348      found = 0;
349      tr->SetBranchStatus("shift*",1,&found);
350      //  printf("shift: enabled %i branches \n",found);
351      found = 0;
352      tr->SetBranchStatus("counters*",1,&found);
353      //  printf("counters: enabled %i branches \n",found);
354      found = 0;
355      tr->SetBranchStatus("coinc*",1,&found);
356      //  printf("coinc: enabled %i branches \n",found);
357      found = 0;
358      tr->SetBranchStatus("trigg*",1,&found);
359      //  printf("trigg: enabled %i branches \n",found);
360      found = 0;
361      tr->SetBranchStatus("clock*",1,&found);
362      //  printf("clock: enabled %i branches \n",found);
363      found = 0;
364      tr->SetBranchStatus("temp*",1,&found);
365      //  printf("temp: enabled %i branches \n",found);
366      found = 0;
367      tr->SetBranchStatus("DAC*",1,&found);
368      //  printf("DAC: enabled %i branches \n",found);
369      found = 0;
370      tr->SetBranchStatus("CRC*",1,&found);
371      //  printf("CRC: enabled %i branches \n",found);
372      found = 0;
373    
374      tr->SetBranchStatus("Pscu*",1,&found);
375      //  printf("enabled %i branches \n",found);                                                                                                                                      
376      found = 0;
377      tr->SetBranchStatus("Anticounter*",1,&found);
378      //  printf("Ac enabled %i branches \n",found);                                                                                                                                    
379      found = 0;
380      tr->SetBranchStatus("Header*",1,&found);
381      //  printf("head enabled %i branches \n",found);    
382      
383      tr->SetBranchAddress("Anticounter", &ace);
384      tr->SetBranchAddress("Header", &eh);
385      
386      /***************************  VARIABLE DECLARATION  **************************/
387    
388      ACheader[0]=0xAC11;
389      ACheader[1]=0xAC22;
390    
391      cardname[0] = "MAIN";
392      cardname[1] = "EXTRA";
393    
394      detector[0]="CARD 4";
395      detector[1]="CAT 2";
396      detector[2]="CAS 1";
397      detector[3]="NC";
398      detector[4]="CARD 2";
399      detector[5]="CAT 4";
400      detector[6]="CAS 4";
401      detector[7]="NC";
402      detector[8]="CARD 3";
403      detector[9]="CAT 3";
404      detector[10]="CAS 3";
405      detector[11]="NC";
406      detector[12]="CARD 1";
407      detector[13]="CAT 1";
408      detector[14]="CAS 2";
409      detector[15]="NC";
410      
411      // ANTICOUNTER VARIABLES
412    
413      Double_t ac_clock_old[2] = {-1., -1.};
414      Double_t ac_clock_new[2] = {-1., -1.};
415      Double_t ac_clock100_new[2] = {-1.,-1.};
416      Double_t ac_clock100_old[2] = {-1.,-1.};
417      Double_t ac_clock_diff[2];
418      Double_t ac_clock100_diff[2];
419      Double_t counter_old[2][16];
420      Double_t counter_new[2][16];
421      Double_t counter_diff[2][16];
422    
423      // MISC VARIABLES
424    
425      Double_t obt;
426      Int_t hitsCARD,hitsCAT,hitsCAS;
427      Int_t interval_cnt = 0;
428      Int_t paramEvent = 0;
429      Int_t paramEvents;
430      Int_t minevent,maxevent;
431      char *figsave = "                                                         ";
432      UShort_t ACheader[2];
433      ACheader[0]=0xAC11;
434      ACheader[1]=0xAC22;
435    
436      vector<int> Err_type(0);
437      vector<float> Err_obt(0);
438      vector<int> Err_evt(0);
439    
440    
441      Int_t *det_map = new Int_t[12];
442      det_map[0]=2;
443      det_map[1]=14;
444      det_map[2]=10;
445      det_map[3]=6;
446      det_map[4]=13;
447      det_map[5]=1;
448      det_map[6]=9;
449      det_map[7]=5;
450      det_map[8]=12;
451      det_map[9]=4;
452      det_map[10]=8;
453      det_map[11]=0;
454    
455      TString *detector = new TString[16];
456      detector[0]="CARD 4";
457      detector[1]="CAT 2";
458      detector[2]="CAS 1";
459      detector[3]="NC";
460      detector[4]="CARD 2";
461      detector[5]="CAT 4";
462      detector[6]="CAS 4";
463      detector[7]="NC";
464      detector[8]="CARD 3";
465      detector[9]="CAT 3";
466      detector[10]="CAS 3";
467      detector[11]="NC";
468      detector[12]="CARD 1";
469      detector[13]="CAT 1";
470      detector[14]="CAS 2";
471      detector[15]="NC";
472    
473      TString *cardname = new TString[2];
474      cardname[0] = "MAIN";
475      cardname[1] = "EXTRA";
476      char histotitel[30];
477    
478      Int_t nevents = tr->GetEntries();
479    
480      //check that the selected range of events is ok
481      if ( fromevent > toevent && toevent ){
482        return -1;
483      };
484      if ( fromevent > nevents || fromevent < 0 ) {
485        return -1;
486      };  
487      if ( toevent > nevents || toevent < 0 ) {
488        return -1;
489      };
490    
491    if(!fullversion)    if ( fromevent == 0 ) {
492        minevent = 0;
493        maxevent = nevents;
494      } else {
495        minevent = fromevent - 1;
496        if ( toevent > 0 ){
497          maxevent = toevent;
498        } else {
499          maxevent = fromevent;
500        };
501      };
502        
503      paramEvents = (Int_t)((Float_t)nevents/(Float_t)INTERVAL);
504      
505      /*************************  HISTOGRAM and GRAPH DECLARATION  *******************************/
506    
507      TH1D *hitmap_h[2];
508      TH1D *nmbhitpmtCARD_h = new TH1D("#hit PMTs CARD","#hit PMTs",8,0.5,8.5);
509      TH1D *nmbhitpmtCAT_h = new TH1D("#hit PMTs CAT","#hit PMTs",8,0.5,8.5);
510      TH1D *nmbhitpmtCAS_h = new TH1D("#hit PMTs CAS","#hit PMTs",8,0.5,8.5);
511      TH1D *time_between_trigg_h[2];
512      TH1D *shiftreg_h[2][16];
513    
514      for(Int_t card=0;card<2;card++)
515      {      {
516        Canv_report1 = new TCanvas("QL Report Sheet 1","QL Report Sheet 1", 1280, 1024); //base        sprintf(histotitel,"Hitmap %s",cardname[card].Data());
517        Canv_report1->Range(0,0,100,100);        hitmap_h[card] = new TH1D(histotitel,"Hitmap",16,0.,16.);
       //Canv_report1->Divide(2,2);  
       Canv_report1->Draw();  
       b1 = new TBox(10,84.5,90,85.5);  
       b2 = new TBox(49.5,95,50.5,5);  
       b1->SetFillColor(1);  
       b2->SetFillColor(1);  
       b1->Draw();  
       b2->Draw();  
         
518    
519        t=new TLatex();        hitmap_h[card]->GetXaxis()->SetBinLabel(1,detector[0]);
520        t->SetTextFont(40);        hitmap_h[card]->GetXaxis()->SetBinLabel(2,detector[1]);
521        t->SetTextColor(1);        hitmap_h[card]->GetXaxis()->SetBinLabel(3,detector[2]);
522        t->SetTextAlign(12);        hitmap_h[card]->GetXaxis()->SetBinLabel(4,detector[3]);
523        t->SetTextSize(0.04);        hitmap_h[card]->GetXaxis()->SetBinLabel(5,detector[4]);
524        namn = "AntiCounter MAIN card";        hitmap_h[card]->GetXaxis()->SetBinLabel(6,detector[5]);
525        t->DrawLatex(10,90,namn);        hitmap_h[card]->GetXaxis()->SetBinLabel(7,detector[6]);
526        t->SetTextColor(1);        hitmap_h[card]->GetXaxis()->SetBinLabel(8,detector[7]);
527        namn = "AntiCounter EXTRA card";        hitmap_h[card]->GetXaxis()->SetBinLabel(9,detector[8]);
528        t->DrawLatex(58,90,namn);        hitmap_h[card]->GetXaxis()->SetBinLabel(10,detector[9]);
529        t->SetTextSize(0.025);        hitmap_h[card]->GetXaxis()->SetBinLabel(11,detector[10]);
530        //Canv_report1->cd(1);        hitmap_h[card]->GetXaxis()->SetBinLabel(12,detector[11]);
531        for(i=1;i<17;i++)        hitmap_h[card]->GetXaxis()->SetBinLabel(13,detector[12]);
532          {        hitmap_h[card]->GetXaxis()->SetBinLabel(14,detector[13]);
533            if(i!=4 && i!=8 && i!=12 && i!=16 && hitmap_m->GetBinContent(i)==0){        hitmap_h[card]->GetXaxis()->SetBinLabel(15,detector[14]);
534              mystring = Form("%s channel empty",mtitel[i-1].Data());          hitmap_h[card]->GetXaxis()->SetBinLabel(16,detector[15]);
535              t->SetTextColor(2);        hitmap_h[card]->GetYaxis()->SetTitle("Hits");
536              t->DrawLatex(15,mposition,mystring);  
537              mposition -= 4;        sprintf(histotitel,"Time between triggers %s",cardname[card].Data());
538            }        time_between_trigg_h[card] = new TH1D(histotitel,"Time between triggers",100,0.,0.01);
539            if(i!=4 && i!=8 && i!=12 && i!=16 && hitmap_e->GetBinContent(i)==0){        time_between_trigg_h[card]->SetBit(TH1::kCanRebin);
540              mystring = Form("%s channel empty",etitel[i-1].Data());  
541              t->SetTextColor(2);        for(Int_t ch = 0; ch < 16; ch++)
             t->DrawLatex(65,eposition,mystring);  
             eposition -= 4;  
           }  
         }  
       for(i=0;i<5;i++)  
         {  
           if(head_m->GetBinContent(i+1)>0){  
             mposition -= 4;  
             mystring = Form("%d %s errors",(int)head_m->GetBinContent(i+1),merr[i].Data());  
             t->SetTextColor(2);  
             t->DrawLatex(15,mposition,mystring);  
           }  
           if(head_e->GetBinContent(i+5+1)>0){  
             eposition -= 4;  
             mystring = Form("%d %s errors",(int)head_e->GetBinContent(i+5+1),merr[i].Data());  
             t->SetTextColor(2);  
             t->DrawLatex(65,eposition,mystring);  
           }  
         }  
       //if no errors  
       if(mposition==80)  
         {  
           namn = "AC main working";  
           t->SetTextSize(0.035);  
           t->SetTextColor(1);  
           t->DrawLatex(15,50,namn);  
         }  
       if(eposition==80)  
         {  
           namn = "AC extra working";  
           t->SetTextSize(0.035);  
           t->SetTextColor(1);  
           t->DrawLatex(65,50,namn);  
         }  
       if(mposition!=80 || eposition!=80)  
542          {          {
543            namn = "AC malfunction";            sprintf(histotitel,"Shift Register %s Ch %d",cardname[card].Data(),ch+1);
544            t->SetTextSize(0.035);            shiftreg_h[card][ch] = new TH1D(histotitel,detector[ch].Data(),16,0.,16.);
           t->SetTextColor(1);  
           t->DrawLatex(41.5,97.3,namn);  
           b3 = new TBox(10,96,40,98.5);  
           b4 = new TBox(10,1.5,90,4);  
           b5 = new TBox(60,96,90,98.5);  
           b3->SetFillColor(2);  
           b4->SetFillColor(2);  
           b5->SetFillColor(2);  
           b3->Draw();  
           b4->Draw();  
           b5->Draw();  
545          }          }
       //head_m->Draw();  
       //head_e->Draw("SAME");  
       //Canv_report1->cd(3);  
       //hitmap_m->SetStats(kFALSE);  
       //hitmap_m->Draw();  
       //Canv_report1->cd(4);  
       //hitmap_e->SetStats(kFALSE);  
       //hitmap_e->Draw();  
         
546      }      }
547    if(fullversion)    
548      {    TH1D *status_h = new TH1D("Status","Status",12,0.,12.);
549        //Anticounter report sheet 1    status_h->GetXaxis()->SetBinLabel(1,"Headers M");
550        Canv_report1 = new TCanvas("QL Report Sheet 1","QL Report Sheet 1", 1280, 1024); //base    status_h->GetXaxis()->SetBinLabel(2,"CRC M");
551        Canv_report1->Range(0,0,100,100);    status_h->GetXaxis()->SetBinLabel(3,"Dsp M");
552        //tsf = (TSystemFile*)AcList->First();    status_h->GetXaxis()->SetBinLabel(4,"Temp M");
553            status_h->GetXaxis()->SetBinLabel(5,"Reg M");
554        //sprintf(error,"File: %s ",tsf->GetName());    status_h->GetXaxis()->SetBinLabel(6,"CRC Event M");
555        //printf("A3\n");    status_h->GetXaxis()->SetBinLabel(7,"Headers E");
556        t=new TLatex();    status_h->GetXaxis()->SetBinLabel(8,"CRC E");
557        t->SetTextFont(32);    status_h->GetXaxis()->SetBinLabel(9,"Dsp E");
558        t->SetTextColor(1);    status_h->GetXaxis()->SetBinLabel(10,"Temp E");
559        t->SetTextAlign(12);    status_h->GetXaxis()->SetBinLabel(11,"Reg E");
560        t->SetTextSize(0.015);    status_h->GetXaxis()->SetBinLabel(12,"CRC Event E");
561        //t->DrawLatex(2.,99.,error);    status_h->GetYaxis()->SetTitle("# of Errors");
562        t->SetTextSize(0.02);    status_h->SetMinimum(0);
563        namn = "MAIN";  
564        t->DrawLatex(82,99,namn);    Double_t *temp_gr[2][4];
565        t->SetTextColor(2);    for(Int_t i=0;i<2;i++)
566        namn="EXTRA";      for(Int_t j=0;j<4;j++)
567        t->DrawLatex(89,99,namn);        temp_gr[i][j] = new Double_t[paramEvents+1];
568        t->SetTextColor(1);  
569        pd1 = new TPad("pd1","This is pad1",0.02,0.02,0.49,0.49,17); //lower left    for(Int_t i=0;i<2;i++)
570        pd2 = new TPad("pd2","This is pad2",0.51,0.02,0.98,0.49,17); //lower right      for(Int_t j=0;j<4;j++)
571        //pd3 = new TPad("pd3","This is pad3",0.51,0.51,0.98,0.74,17); //upper-lower right        for(Int_t k=0;k<(paramEvents+1);k++)
572        pd4 = new TPad("pd4","This is pad4",0.02,0.51,0.49,0.98,17); //upper left          temp_gr[i][j][k] = 0.;
573        //pd5 = new TPad("pd5","This is pad5",0.51,0.25,0.98,0.49,17); //lower-upper right  
574        pd3 = new TPad("pd3","This is pad3",0.51,0.51,0.98,0.98,17); //upper right    Double_t *trigger_gr[2];
575            trigger_gr[0] = new Double_t[paramEvents+1];
576        Canv_report1->cd();    trigger_gr[1] = new Double_t[paramEvents+1];
577         //pd1->Range(0,0,100,100);  
578         //pd2->Range(0,0,100,100);    Double_t *singles_gr[2][16];
579         //pd3->Range(0,0,100,100);    for(Int_t i=0;i<2;i++){
580         //pd4->Range(0,0,100,100);      for(Int_t j=0;j<16;j++){
581         //pd5->Range(0,0,100,100);        singles_gr[i][j] = new Double_t[paramEvents+1];
582         //pd6->Range(0,0,100,100);      }
583        pd1->Draw();    }
584        pd2->Draw();    for(Int_t i=0;i<2;i++){
585        pd3->Draw();      for(Int_t j=0;j<16;j++){
586        pd4->Draw();        for(Int_t k=0;k<(paramEvents+1);k++){
587        //pd5->Draw();          singles_gr[i][j][k] = 0.;
588        //pd6->Draw();        }
589              }
590        pd3->cd(); //upper right    }
591        if(head_m->GetMaximum()>head_e->GetMaximum())    
592          head_m->SetMaximum(1.1*head_m->GetMaximum());    Double_t *event_obt = new Double_t[paramEvents+1];
593        else    
594          head_m->SetMaximum(1.1*head_e->GetMaximum());  
595        head_m->SetLineColor(1);    /**********************************************************************************/
596        head_m->SetStats(kFALSE);  
       head_m->Draw();  
       head_e->SetLineColor(2);  
       head_e->Draw("SAME");  
       linje = new TLine(50,0,0,100);  
       linje->SetLineColor(1);  
       linje->Draw("SAME");  
         
         
       //pmtstatus_m->SetLineColor(1);  
       //pmtstatus_m->Draw();  
       //hitmap_e->SetLineColor(2);  
       //hitmap_e->Draw("SAME");  
         
       pd4->cd(); //lower right  
       hitmap_m->SetLineColor(1);  
       hitmap_m->SetStats(kFALSE);  
       hitmap_m->Draw();  
   
       //pd5->cd(); //lower-upper right  
       hitmap_e->SetLineColor(2);  
       hitmap_e->SetStats(kFALSE);  
       hitmap_e->Draw("SAME");  
         
       pd1->cd();  
       T_right_m->SetLineColor(1);  
       T_right_m->SetStats(kFALSE);  
       T_right_m->Draw();  
       T_actel_m->SetLineColor(2);  
       T_actel_m->Draw("SAME");  
       T_dsp_m->SetLineColor(3);  
       T_dsp_m->Draw("SAME");  
       T_left_m->SetLineColor(4);  
       T_left_m->Draw("SAME");  
         
       leg_m = new TLegend(0.78,0.63,0.9,0.8);  
       leg_m->AddEntry(T_right_m,"Right","l");  
       leg_m->AddEntry(T_actel_m,"Actel","l");  
       leg_m->AddEntry(T_dsp_m,"Dsp","l");  
       leg_m->AddEntry(T_left_m,"Left","l");  
       leg_m->Draw();  
         
         
       //pd2->cd();  
       //pmtstatus_e->SetLineColor(1);  
       //pmtstatus_e->Draw();  
       //TGraph *gr1 = new TGraph(antal,hits_x,hits_y_m);  
       //gr1->Draw("AC*");  
         
       pd2->cd();  
       T_right_e->SetLineColor(1);  
       T_right_e->SetStats(kFALSE);  
       T_right_e->Draw();  
       T_actel_e->SetLineColor(2);  
       T_actel_e->Draw("SAME");  
       T_dsp_e->SetLineColor(3);  
       T_dsp_e->Draw("SAME");  
       T_left_e->SetLineColor(4);  
       T_left_e->Draw("SAME");  
         
       leg_e = new TLegend(0.78,0.63,0.9,0.8);  
       leg_e->AddEntry(T_right_e,"Right","l");  
       leg_e->AddEntry(T_actel_e,"Actel","l");  
       leg_e->AddEntry(T_dsp_e,"Dsp","l");  
       leg_e->AddEntry(T_left_e,"Left","l");  
       leg_e->Draw();  
         
       //pd6->cd(); //upper-upper right  
       //hitmap_m->SetLineColor(1);  
       //hitmap_m->Draw();  
         
       /*  
         TA INTE MED  
         pd4->cd();  
         T_right_m->SetLineColor(1);  
         T_right_m->Draw();  
         T_actel_m->SetLineColor(1);  
         T_actel_m->Draw("SAME");  
         //T_dsp_m->SetLineColor(1);  
         //T_dsp_m->Draw("SAME");  
         T_left_m->SetLineColor(1);  
         T_left_m->Draw("SAME");  
         T_right_e->SetLineColor(2);  
         T_right_e->Draw("SAME");  
         T_actel_e->SetLineColor(2);  
         T_actel_e->Draw("SAME");  
         //T_dsp_e->SetLineColor(2);  
         //T_dsp_e->Draw("SAME");  
         T_left_e->SetLineColor(2);  
         T_left_e->Draw("SAME");  
       */  
       //Canv_report1->Update();  
         
       //report sheet 2  
       //ps->NewPage();  
       Canv_report2 = new TCanvas("QL Report Sheet 2","QL Report Sheet 2", 1280, 1024);  
       Canv_report2->Range(0,0,100,100);  
       //tsf = (TSystemFile*)AcList->First();  
       //sprintf(error,"File: %s ",tsf->GetName());  
       //TLatex *t=new TLatex();  
       t->SetTextFont(32);  
       t->SetTextColor(1);  
       t->SetTextAlign(12);  
       t->SetTextSize(0.015);  
       //t->DrawLatex(2.,99.,error);  
       t->SetTextSize(0.02);  
       namn="MAIN";  
       t->DrawLatex(82,99,namn);  
       t->SetTextColor(2);  
       namn="EXTRA";  
       t->DrawLatex(89,99,namn);  
       t->SetTextColor(1);  
       //TPad *pd1,*pd2,*pd3,*pd4,*pd5,*pd6,*pd7;  
       pd1 = new TPad("pd1","This is pad1",0.02,0.51,0.49,0.98,17);  
       pd2 = new TPad("pd2","This is pad2",0.51,0.51,0.98,0.98,17);  
       pd3 = new TPad("pd3","This is pad3",0.02,0.02,0.49,0.49,17);  
       pd4 = new TPad("pd4","This is pad4",0.51,0.02,0.74,0.24,17); //down-left  
       pd5 = new TPad("pd5","This is pad5",0.76,0.02,0.98,0.24,17); //down-right  
       pd6 = new TPad("pd6","This is pad6",0.51,0.24,0.74,0.49,17); //up-left  
       pd7 = new TPad("pd7","This is pad7",0.76,0.24,0.98,0.49,17); //up-right  
       Canv_report2->cd();  
        //pd1->Range(0,0,100,100);  
        //pd2->Range(0,0,100,100);  
        //pd3->Range(0,0,100,100);  
        //pd4->Range(0,0,100,100);        
        //pd5->Range(0,0,100,100);  
        //pd6->Range(0,0,100,100);  
        //pd7->Range(0,0,100,100);    
       pd1->Draw();  
       pd2->Draw();  
       pd3->Draw();  
       pd4->Draw();  
       pd5->Draw();  
       pd6->Draw();  
       pd7->Draw();  
         
       max1 = trigg_m->GetMaximum();  
       max2 = trigg_e->GetMaximum();  
       if(max1>max2)  
         trigg_m->SetMaximum(1.03*max1);  
       else  
         trigg_m->SetMaximum(1.03*max2);  
         
       pd1->cd(); //lower left  
       trigg_m->SetLineColor(1);  
       trigg_m->SetStats(kFALSE);  
       trigg_m->Draw();  
         
       crc_m->SetMarkerStyle(22);  
       crc_m->SetMarkerSize(1.);  
       crc_m->SetMarkerColor(9);  
       crc_m->Draw("SAMEP");  
         
       headerr_m->SetMarkerStyle(5);  
       headerr_m->SetMarkerSize(1.);  
       headerr_m->SetMarkerColor(9);  
       headerr_m->Draw("SAMEP");  
         
       crcerr_m->SetMarkerStyle(2);  
       crcerr_m->SetMarkerSize(1.);  
       crcerr_m->SetMarkerColor(9);  
       crcerr_m->Draw("SAMEP");  
         
       dsperr_m->SetMarkerStyle(7);  
       dsperr_m->SetMarkerSize(1.);  
       dsperr_m->SetMarkerColor(9);  
       dsperr_m->Draw("SAMEP");  
         
       regerr_m->SetMarkerStyle(4);  
       regerr_m->SetMarkerSize(1.);  
       regerr_m->SetMarkerColor(9);  
       regerr_m->Draw("SAMEP");  
         
       leg1_m = new TLegend(0.7,0.5,0.87,0.7);  
       leg1_m->AddEntry(crc_m,"CRC","p");  
       leg1_m->AddEntry(headerr_m,"Headers","p");  
       leg1_m->AddEntry(crcerr_m,"Cmd CRC","p");  
       leg1_m->AddEntry(dsperr_m,"Dsp","p");  
       leg1_m->AddEntry(regerr_m,"Reg","p");  
       leg1_m->SetHeader("ERRORS");  
       leg1_m->Draw();  
         
       //Canv_report1->Update();  
         
       trigg_e->SetLineColor(2);  
       //trigg_e->SetMaximum(1.03*trigg_e->GetMaximum());  
       trigg_e->SetStats(kFALSE);  
       trigg_e->Draw("SAME");  
         
       //TGaxis *axis = new TGaxis(gPad->GetUxmax(),gPad->GetUymin(),gPad->GetUxmax(),gPad->GetUymax(),0,rightmax,510,"+L");  
       //axis->SetLineColor(2);  
       //axis->Draw();  
         
       crc_e->SetMarkerStyle(22);  
       crc_e->SetMarkerSize(1.);  
       crc_e->SetMarkerColor(9);  
       crc_e->Draw("SAMEP");  
         
       headerr_e->SetMarkerStyle(5);  
       headerr_e->SetMarkerSize(1.);  
       headerr_e->SetMarkerColor(9);  
       headerr_e->Draw("SAMEP");  
         
       crcerr_e->SetMarkerStyle(2);  
       crcerr_e->SetMarkerSize(1.);  
       crcerr_e->SetMarkerColor(9);  
       crcerr_e->Draw("SAMEP");  
         
       dsperr_e->SetMarkerStyle(7);  
       dsperr_e->SetMarkerSize(1.);  
       dsperr_e->SetMarkerColor(9);  
       dsperr_e->Draw("SAMEP");  
         
       regerr_e->SetMarkerStyle(4);  
       regerr_e->SetMarkerSize(1.);  
       regerr_e->SetMarkerColor(9);  
       regerr_e->Draw("SAMEP");  
       /*  
         TLegend *leg1_e = new TLegend(0.7,0.5,0.87,0.7);  
         leg1_e->AddEntry(crc_e,"CRC","p");  
         leg1_e->AddEntry(headerr_e,"Headers","p");  
         leg1_e->AddEntry(crcerr_e,"Cmd CRC","p");  
         leg1_e->AddEntry(dsperr_e,"Dsp","p");  
         leg1_e->AddEntry(regerr_e,"Reg","p");  
         leg1_e->SetHeader("Errors EXTRA");  
         leg1_e->Draw();  
       */  
       /*  
         pd4->cd(); //upper left  
         int max1 = head_m->GetMaximum();  
         int max2 = head_e->GetMaximum();  
         if(max1>max2)  
         head_m->SetMaximum(1.1*max1);  
         else  
         head_m->SetMaximum(1.1*max2);  
           
         head_m->SetLineColor(1);  
         head_m->Draw();  
         head_e->SetLineColor(2);  
         head_e->Draw("SAME");  
       */  
       /*  
         pd3->cd(); //upper right  
         if(head_m->GetMaximum()>head_e->GetMaximum())  
         head_m->SetMaximum(1.1*head_m->GetMaximum());  
         else  
         head_m->SetMaximum(1.1*head_e->GetMaximum());  
         head_m->SetLineColor(1);  
         head_m->SetStats(kFALSE);  
         head_m->Draw();  
         head_e->SetLineColor(2);  
         head_e->Draw("SAME");  
         TLine *linje = new TLine(50,0,0,100);  
         linje->SetLineColor(1);  
         linje->Draw("SAME");  
       */  
         
       pd2->cd();  
       pd2->SetLogy(1);  
       dtrigg_m->SetLineColor(1);  
       dtrigg_m->SetStats(kFALSE);  
       dtrigg_m->Draw();  
       dtrigg_e->SetLineColor(2);  
       dtrigg_e->SetStats(kFALSE);  
       dtrigg_e->Draw("SAME");  
     
       pd3->cd();  
       pd3->SetLogy(1);  
       timebtrigg_m->SetLineColor(1);  
       //timebtrigg_m->SetStats(kFALSE);  
       timebtrigg_m->Draw();  
       timebtrigg_e->SetLineColor(2);  
       timebtrigg_e->SetMarkerStyle(2);  
       timebtrigg_e->SetMarkerSize(1.);  
       timebtrigg_e->SetMarkerColor(2);  
       //timebtrigg_e->SetPolyMarker(2)  
       timebtrigg_e->SetStats(kFALSE);  
       timebtrigg_e->Draw("PSAME");  
         
       pd4->cd();  
       pd4->SetLogy(1);  
       nmbhitpmtCAS->SetLineColor(1);  
       nmbhitpmtCAS->SetStats(kFALSE);  
       nmbhitpmtCAS->Draw();  
         
       pd7->cd();  
       pd5->SetLogy(1);  
       nmbhitpmtCAT->SetLineColor(1);  
       nmbhitpmtCAT->SetStats(kFALSE);  
       nmbhitpmtCAT->Draw();  
         
       pd6->cd();  
       pd6->SetLogy(1);  
       nmbhitpmtCARD->SetLineColor(1);  
       nmbhitpmtCARD->SetStats(kFALSE);  
       nmbhitpmtCARD->Draw();  
         
         
       /*  
         TLegend *hitpmt = new TLegend(0.7,0.5,0.87,0.7);  
         hitpmt->AddEntry(nmbhitpmtCAS,"CAS","L");  
         hitpmt->AddEntry(nmbhitpmtCAT,"CAT","L");  
         hitpmt->AddEntry(nmbhitpmtCARD,"CARD","L");  
         hitpmt->SetHeader("Detector");  
         hitpmt->Draw();  
       */  
       //pd4->SetLogy(1);  
       //timebtrigg_e->SetLineColor(2);  
       //timebtrigg_e->SetStats(kFALSE);  
       //timebtrigg_e->Draw();  
         
597    
598        //report sheet 3    /*********************  MAIN LOOP  **********************/
599     //report sheet 1  
600    Canv_report3 = new TCanvas("QL Report Sheet 3","QL Report Sheet 3", 1280, 1024);    //time1 = clock();
601     //TCanvas *Counter_report1 = new TCanvas("COUNTER Report sheet", "COUNTER Report sheet", 1280, 1024);    //printf("Init time: %f\n",(Double_t) (time1 - startTime) / (Double_t) CLOCKS_PER_SEC);
602    Canv_report3->Range(0,0,100,100);  
603    //tsf = (TSystemFile*) AcList->First();    //iterators used in the loop                                                                                                                                                  
604    //sprintf(error,"File: %s ",tsf->GetName());    Int_t card, ch, bin;
605    //TLatex *t=new TLatex();  
606      for (Int_t i = minevent; i < maxevent; i++){
607    
608        interval_cnt++;
609        
610        tr->GetEntry(i);
611        ph = eh->GetPscuHeader();
612        obt = ph->GetOrbitalTime();    
613      
614        hitsCARD=hitsCAT=hitsCAS=0;
615        
616        for(card=0;card<2;card++)
617          {
618            //proceed only if crc of event is ok
619            //printf("CRC: %hx\n",ace->CRCcheck[card]);
620            //printf("Hitmap: %hx\n\n",ace->hitmap[card]);
621            if(ace->CRCcheck[card]==1)
622              {
623                //clock
624                ac_clock_old[card] = ac_clock_new[card];
625                ac_clock_new[card] = ace->clock[card][1]*0xFFFF + ace->clock[card][0];
626                if(ac_clock_new[card] - ac_clock_old[card] < 0.)
627                  ac_clock_diff[card] = 0xFFFFFFFF+ac_clock_new[card]-ac_clock_old[card];
628                else
629                  ac_clock_diff[card] = ac_clock_new[card]-ac_clock_old[card];
630    
631                if(ac_clock_old[card] > 0. && 0.000000025*ac_clock_diff[card]<10.)
632                  time_between_trigg_h[card]->Fill( 0.000000025*ac_clock_diff[card] );
633    
634                //counters, singlesrate & shift reg content
635                for(ch=0;ch<16;ch++)
636                  {
637                    counter_old[card][ch] = counter_new[card][ch];
638                    counter_new[card][ch] = ace->counters[card][ch];
639                    if(counter_new[card][ch] - counter_old[card][ch] < 0.)
640                      counter_diff[card][ch] = 0xFFFF + counter_new[card][ch] - counter_old[card][ch];
641                    else
642                      counter_diff[card][ch] = counter_new[card][ch] - counter_old[card][ch];
643                    
644                    singles_gr[card][ch][paramEvent] += (Double_t)counter_diff[card][ch];
645                    
646                    for(bin = 0; bin < 16; bin++){
647                      shiftreg_h[card][bin]->Fill(ch,ace->shift[card][ch] & 0x1<<bin);
648                    }
649    
650                    //hitmap
651                    if( (ace->hitmap[card] & (0x1<<ch)) > 0 ){
652                      hitmap_h[card]->Fill(ch,1.);
653                      if(ch==0 || ch==4 || ch==8 || ch==12)
654                        hitsCARD++;
655                      else if(ch==1 || ch==5 || ch==9 || ch==13)
656                        hitsCAT++;
657                      else if(ch==2 || ch==6 || ch==10 || ch==14)
658                        hitsCAS++;
659                    }
660                    
661                  }
662                
663                //Status
664                if((ace->header[card][0] != 0xACAC) || (ace->header[card][1] != ACheader[card])){
665                  status_h->Fill(6.*card,1.);
666                  Err_type.push_back(6*card);
667                  Err_obt.push_back(ph->GetOrbitalTime());
668                  Err_evt.push_back(i);
669                }
670                if((ace->status[card] & 0x8000) < 0x8000){ //crc
671                  status_h->Fill(1.+6.*card,1.);
672                  Err_type.push_back(1+6*card);
673                  Err_obt.push_back(ph->GetOrbitalTime());
674                  Err_evt.push_back(i);
675                }
676                if((ace->status[card] & 0x6000) < 0x6000){ //dsp
677                  status_h->Fill(2.+6.*card,1.);
678                  Err_type.push_back(2+6*card);
679                  Err_obt.push_back(ph->GetOrbitalTime());
680                  Err_evt.push_back(i);
681                }
682                if((ace->status[card] & 0x0E00) < 0x0E00){ //temp
683                  status_h->Fill(3.+6.*card,1.);
684                  Err_type.push_back(3+6*card);
685                  Err_obt.push_back(ph->GetOrbitalTime());
686                  Err_evt.push_back(i);
687                }
688                if((ace->status[card] & 0x01FF) < 0x01FF){ //reg
689                  status_h->Fill(4.+6.*card,1.);
690                  Err_type.push_back(4+6*card);
691                  Err_obt.push_back(ph->GetOrbitalTime());
692                  Err_evt.push_back(i);
693                }
694    
695                //temperature (left on cards)
696                temp_gr[card][0][paramEvent] += ( ((ace->temp[card][0] & 0x00FF))*2.8 - 273. )/(Float_t)INTERVAL;
697                temp_gr[card][1][paramEvent] += ( ((ace->temp[card][0] & 0xFF00)/256)*2.8 - 273. )/(Float_t)INTERVAL;
698                temp_gr[card][2][paramEvent] += ( ((ace->temp[card][1] & 0x00FF))*2.8 - 273. )/(Float_t)INTERVAL;
699                temp_gr[card][3][paramEvent] += ( ((ace->temp[card][1] & 0xFF00)/256)*2.8 - 273. )/(Float_t)INTERVAL;
700                
701              }//if(crc check)
702            else{
703              status_h->Fill(5.+6.*card,1.); //event crc
704              Err_type.push_back(5+6*card);
705              Err_obt.push_back(ph->GetOrbitalTime());
706              Err_evt.push_back(i);
707            }
708          }//for(card)
709    
710        nmbhitpmtCARD_h->Fill(hitsCARD);
711        nmbhitpmtCAS_h->Fill(hitsCAS);
712        nmbhitpmtCAT_h->Fill(hitsCAT);
713    
714        
715        if(interval_cnt==INTERVAL)
716          {
717            event_obt[paramEvent] = ph->GetOrbitalTime();
718    
719            for(card=0;card<2;card++)
720              {
721                ac_clock100_old[card] = ac_clock100_new[card];
722                ac_clock100_new[card] = (ace->clock[card][1])*0xFFFF + ace->clock[card][0];
723                if((ac_clock100_new[card]-ac_clock100_old[card]) < 0.)
724                  ac_clock100_diff[card] = 0xFFFFFFFF+ac_clock100_new[card]-ac_clock100_old[card];
725                else
726                  ac_clock100_diff[card] = ac_clock100_new[card]-ac_clock100_old[card];
727    
728                trigger_gr[card][paramEvent] = (Float_t)INTERVAL/(0.000000025*ac_clock100_diff[card]);
729    
730                for(ch=0;ch<16;ch++)
731                  singles_gr[card][ch][paramEvent] = singles_gr[card][ch][paramEvent]/(Double_t)(0.000000025*ac_clock100_diff[card]);
732                    
733              }//for(card)
734            interval_cnt=0;
735            paramEvent++;
736          }//if(interval_cnt))
737        
738      } //for(events)
739    
740      //for(Int_t i=0;i<Err_type.size();i++)
741      //printf("%d\t%f\t%d\n\n",Err_type.at(i),Err_obt.at(i),Err_evt.at(i));
742    
743      //Time2 = clock();
744      //printf("Loop time: %f\n",(Double_t) (time2 - time1) / (Double_t) CLOCKS_PER_SEC);
745      
746      /******************************  PLOTTING  ***************************/
747      
748      TCanvas *sheet1 = new TCanvas("Sheet 1");
749      sheet1->Range(0,0,100,100);
750      sheet1->Draw();
751      sheet1->cd();
752    
753      TLatex *t=new TLatex();
754    t->SetTextFont(32);    t->SetTextFont(32);
755    t->SetTextColor(1);    t->SetTextColor(1);
756    t->SetTextAlign(12);    t->SetTextAlign(12);
757    t->SetTextSize(0.015);    t->SetTextSize(0.02);
758    //t->DrawLatex(2.,99.,error);  
759    //char *namn;    TPad *pd1 = new TPad("pd1","This is pad1",0.02,0.02,0.49,0.49,17); //lower left
760    //TLatex *t2 = new TLatex();    TPad *pd2 = new TPad("pd2","This is pad2",0.51,0.02,0.98,0.49,17); //lower right
761      TPad *pd4 = new TPad("pd4","This is pad4",0.02,0.51,0.49,0.98,17); //upper left
762      TPad *pd3 = new TPad("pd3","This is pad3",0.51,0.51,0.98,0.98,17); //upper right
763          
764    
765      pd4->Range(0,0,100,100);
766      sheet1->cd();
767      pd1->Draw();
768      pd2->Draw();
769      pd3->Draw();
770      pd4->Draw();
771    
772      pd4->cd();
773      char namn3[30];
774      char namn4[40];
775      char namn5[30];
776      sprintf(namn3,"Anticounter Quicklook  v%.1f",VERSION);
777      sprintf(namn4,"File: %s",fileName.Data());
778      sprintf(namn5,"Events: %d",nevents);
779      t->SetTextSize(0.1);
780      t->DrawLatex(5,90,namn3);
781      t->SetTextSize(0.1);
782      t->DrawLatex(20,50,namn4);
783      t->DrawLatex(20,40,namn5);
784      
785      t->SetTextSize(0.02);
786    
787      pd3->cd();
788      status_h->SetLineColor(1);
789      status_h->SetStats(kFALSE);
790      status_h->Draw();
791    
792      pd1->cd();
793      TGraph *temperatureRIGHT_M_g = new TGraph(paramEvents,event_obt,temp_gr[0][0]);
794      TGraph *temperatureACTEL_M_g = new TGraph(paramEvents,event_obt,temp_gr[0][1]);
795      TGraph *temperatureLEFT_M_g = new TGraph(paramEvents,event_obt,temp_gr[0][2]);
796      TGraph *temperatureDSP_M_g = new TGraph(paramEvents,event_obt,temp_gr[0][3]);
797      temperatureRIGHT_M_g->SetMaximum(50.);
798      temperatureRIGHT_M_g->SetMinimum(0.);
799      temperatureRIGHT_M_g->SetTitle("Temperature MAIN");
800      temperatureRIGHT_M_g->GetXaxis()->SetTitle("Obt [ms]");
801      temperatureRIGHT_M_g->GetYaxis()->SetTitle("T [Celsius]");
802      temperatureRIGHT_M_g->SetMarkerColor(1);
803      temperatureACTEL_M_g->SetMarkerColor(2);
804      temperatureLEFT_M_g->SetMarkerColor(3);
805      temperatureDSP_M_g->SetMarkerColor(4);
806      temperatureRIGHT_M_g->SetLineColor(1);
807      temperatureACTEL_M_g->SetLineColor(2);
808      temperatureLEFT_M_g->SetLineColor(3);
809      temperatureDSP_M_g->SetLineColor(4);
810      temperatureRIGHT_M_g->Draw("AL");
811      temperatureACTEL_M_g->Draw("LSAME");
812      temperatureLEFT_M_g->Draw("LSAME");
813      temperatureDSP_M_g->Draw("LSAME");
814    
815      TLegend *legTempM = new TLegend(0.72,0.63,0.85,0.8);
816      legTempM->AddEntry(temperatureRIGHT_M_g,"Right","P");
817      legTempM->AddEntry(temperatureACTEL_M_g,"Actel","P");
818      legTempM->AddEntry(temperatureLEFT_M_g,"Left","P");
819      legTempM->AddEntry(temperatureDSP_M_g,"Dsp","P");
820      legTempM->Draw();
821    
822      pd2->cd();
823      TGraph *temperatureRIGHT_E_g = new TGraph(paramEvents,event_obt,temp_gr[1][0]);
824      TGraph *temperatureACTEL_E_g = new TGraph(paramEvents,event_obt,temp_gr[1][1]);
825      TGraph *temperatureLEFT_E_g = new TGraph(paramEvents,event_obt,temp_gr[1][2]);
826      TGraph *temperatureDSP_E_g = new TGraph(paramEvents,event_obt,temp_gr[1][3]);
827      temperatureRIGHT_E_g->SetTitle("Temperature EXTRA");
828      temperatureRIGHT_E_g->GetXaxis()->SetTitle("Obt [ms]");
829      temperatureRIGHT_E_g->GetYaxis()->SetTitle("T [Celsius]");
830      temperatureRIGHT_E_g->SetMarkerColor(1);
831      temperatureACTEL_E_g->SetMarkerColor(2);
832      temperatureLEFT_E_g->SetMarkerColor(3);
833      temperatureDSP_E_g->SetMarkerColor(4);
834      temperatureRIGHT_E_g->SetLineColor(1);
835      temperatureACTEL_E_g->SetLineColor(2);
836      temperatureLEFT_E_g->SetLineColor(3);
837      temperatureDSP_E_g->SetLineColor(4);
838    
839      
840      temperatureRIGHT_E_g->SetMaximum(50.);
841      temperatureRIGHT_E_g->SetMinimum(0.);
842      temperatureRIGHT_E_g->Draw("AL");
843      temperatureACTEL_E_g->Draw("LSAME");
844      temperatureLEFT_E_g->Draw("LSAME");
845      temperatureDSP_E_g->Draw("LSAME");
846    
847      TLegend *legTempE = new TLegend(0.72,0.63,0.86,0.8);
848      legTempE->AddEntry(temperatureRIGHT_E_g,"Right","L");
849      legTempE->AddEntry(temperatureACTEL_E_g,"Actel","L");
850      legTempE->AddEntry(temperatureLEFT_E_g,"Left","L");
851      legTempE->AddEntry(temperatureDSP_E_g,"Dsp","L");
852      legTempE->Draw();
853    
854      /************************/
855    
856      TCanvas *sheet2 = new TCanvas("Sheet 2");
857      sheet2->Range(0,0,100,100);
858      sheet2->Draw();
859      sheet2->cd();
860    
861      TPad *pd21 = new TPad("pd21","This is pad1",0.02,0.02,0.49,0.49,17); //lower left                                                                                              
862      //TPad *pd22 = new TPad("pd22","This is pad2",0.51,0.02,0.98,0.49,17); //lower right                                                                                            
863      TPad *pd22_1 = new TPad("pd22_1","This is pad22_1",0.51,0.02,0.65,0.49,17);
864      TPad *pd22_2 = new TPad("pd22_3","This is pad22_2",0.67,0.02,0.81,0.49,17);
865      TPad *pd22_3 = new TPad("pd22_4","This is pad22_3",0.83,0.02,0.97,0.49,17);
866      
867      TPad *pd24 = new TPad("pd24","This is pad4",0.02,0.51,0.49,0.98,17); //upper left                                                                                                  
868      TPad *pd23 = new TPad("pd23","This is pad3",0.51,0.51,0.98,0.98,17); //upper right                                                                                                
869      sheet2->cd();
870      pd21->Draw();
871      pd22_1->Draw();
872      pd22_2->Draw();
873      pd22_3->Draw();
874      pd23->Draw();
875      pd24->Draw();
876    
877      t->SetTextColor(1);
878      t->DrawLatex(82,99,cardname[0]);
879      t->SetTextColor(2);
880      t->DrawLatex(89,99,cardname[1]);
881    
882      pd24->cd();
883      TGraph *triggM_gr = new TGraph(paramEvents,event_obt,trigger_gr[0]);
884      TGraph *triggE_gr = new TGraph(paramEvents,event_obt,trigger_gr[1]);
885      triggM_gr->SetTitle("Trigger Rate");
886      triggM_gr->GetXaxis()->SetTitle("Obt [ms]");
887      triggM_gr->GetYaxis()->SetTitle("f [Hz]");
888      triggM_gr->SetMarkerColor(1);
889      triggE_gr->SetMarkerColor(2);
890      triggM_gr->SetLineColor(1);
891      triggE_gr->SetLineColor(2);
892      triggM_gr->Draw("AL");
893      triggE_gr->Draw("LSAME");
894    
895      pd23->cd();                                                                                                                                                                      
896      gPad->SetLogy(1);                                                                                                                                                                
897      time_between_trigg_h[0]->GetXaxis()->SetTitle("Time [s]");                                                                                                                      
898      time_between_trigg_h[0]->SetLineColor(1);                                                                                                                                        
899      time_between_trigg_h[1]->SetLineColor(2);                                                                                                                                        
900      if(time_between_trigg_h[0]->GetMaximum() < time_between_trigg_h[1]->GetMaximum())                                                                                                
901        time_between_trigg_h[0]->SetMaximum(1.3*time_between_trigg_h[1]->GetMaximum());                                                                                                
902      //time_between_trigg_h[0]->SetStats(kFALSE);
903      time_between_trigg_h[0]->Draw();          
904      time_between_trigg_h[1]->SetStats(kFALSE);
905      time_between_trigg_h[1]->Draw("SAME");    
906      
907    
908      pd21->cd();
909      hitmap_h[0]->SetStats(kFALSE);
910      hitmap_h[1]->SetStats(kFALSE);
911      hitmap_h[0]->SetLineColor(1);
912      if(hitmap_h[0]->GetMaximum() < hitmap_h[1]->GetMaximum())
913        hitmap_h[0]->SetMaximum(1.1*hitmap_h[1]->GetMaximum());
914      hitmap_h[0]->Draw();
915      hitmap_h[1]->SetLineColor(2);
916      hitmap_h[1]->Draw("SAME");
917    
918    
919      pd22_1->cd();
920      gPad->SetLogy(1);
921      nmbhitpmtCARD_h->SetTitle("CARD");
922      nmbhitpmtCARD_h->GetXaxis()->SetTitle("Nmb of hits");
923      nmbhitpmtCARD_h->GetYaxis()->SetTitle("Events");
924      nmbhitpmtCARD_h->SetStats(kFALSE);
925      nmbhitpmtCARD_h->SetLineColor(1);
926      nmbhitpmtCARD_h->Draw();
927    
928      pd22_2->cd();
929      gPad->SetLogy(1);
930      nmbhitpmtCAT_h->SetTitle("CAT");
931      nmbhitpmtCAT_h->GetXaxis()->SetTitle("Nmb of hits");
932      nmbhitpmtCAT_h->GetYaxis()->SetTitle("Events");
933      nmbhitpmtCAT_h->SetStats(kFALSE);
934      nmbhitpmtCAT_h->SetLineColor(1);
935      nmbhitpmtCAT_h->Draw();
936    
937      pd22_3->cd();
938      gPad->SetLogy(1);
939      nmbhitpmtCAS_h->SetTitle("CAS");
940      nmbhitpmtCAS_h->GetXaxis()->SetTitle("Nmb of hits");
941      nmbhitpmtCAS_h->GetYaxis()->SetTitle("Events");
942      nmbhitpmtCAS_h->SetStats(kFALSE);
943      nmbhitpmtCAS_h->SetLineColor(1);
944      nmbhitpmtCAS_h->Draw();
945    
946      /*
947      if(nmbhitpmtCAT_h->GetMaximum() > nmbhitpmtCARD_h->GetMaximum())
948        {
949          if(nmbhitpmtCAT_h->GetMaximum() > nmbhitpmtCAS_h->GetMaximum())
950            nmbhitpmtCARD_h->SetMaximum(1.2*nmbhitpmtCAT_h->GetMaximum());
951          else
952            nmbhitpmtCARD_h->SetMaximum(1.2*nmbhitpmtCAS_h->GetMaximum());
953        }
954      nmbhitpmtCARD_h->SetLineColor(1);
955      nmbhitpmtCAT_h->SetLineColor(2);
956      nmbhitpmtCAS_h->SetLineColor(3);
957      nmbhitpmtCARD_h->SetMarkerStyle(20);
958      nmbhitpmtCAT_h->SetMarkerStyle(21);
959      nmbhitpmtCAS_h->SetMarkerStyle(22);
960      nmbhitpmtCARD_h->Draw("P");
961      nmbhitpmtCAT_h->Draw("PSAME");
962      nmbhitpmtCAS_h->Draw("PSAME");
963    
964      TLegend *leghitpmt = new TLegend(0.72,0.63,0.86,0.8);
965      leghitpmt->AddEntry(nmbhitpmtCARD_h,"CARD","P");
966      leghitpmt->AddEntry(nmbhitpmtCAT_h,"CAT","P");
967      leghitpmt->AddEntry(nmbhitpmtCAS_h,"CAS","P");
968      leghitpmt->Draw();
969      */
970    
971       /********** SHEET 3 *********/
972        
973      TCanvas *sheet3 = new TCanvas("Sheet 3");
974      //sheet2->Divide(4,4);
975      sheet3->Draw();
976      sheet3->cd();
977      
978      sheet3->Range(0,0,100,100);
979      
980    t->SetTextFont(32);    t->SetTextFont(32);
981    t->SetTextColor(1);    t->SetTextColor(1);
982    t->SetTextAlign(12);    t->SetTextAlign(12);
983    t->SetTextSize(0.035);    t->SetTextSize(0.035);
984      char *namn = "                                         ";
985    namn="Singles Counters";    
986      namn="Singles Rate";
987    t->DrawLatex(40.,95,namn);    t->DrawLatex(40.,95,namn);
988    namn="CAS";    namn="CAS";
989    t->DrawLatex(4.,95.,namn);    t->DrawLatex(4.,95.,namn);
# Line 1736  int AcQLOOK(TString base,int fromevent=0 Line 992  int AcQLOOK(TString base,int fromevent=0
992    namn="CARD";    namn="CARD";
993    t->DrawLatex(4.,34.,namn);    t->DrawLatex(4.,34.,namn);
994        
   t->SetTextFont(32);  
   t->SetTextColor(1);  
   t->SetTextAlign(12);  
995    t->SetTextSize(0.02);    t->SetTextSize(0.02);
996    namn="MAIN";    namn="MAIN";
997    t->DrawLatex(85,98,namn);    t->DrawLatex(85,98,namn);
998    t->SetTextColor(2);    t->SetTextColor(2);
999    namn="EXTRA";    namn="EXTRA";
1000    t->DrawLatex(85,95,namn);    t->DrawLatex(85,95,namn);
1001    //TPad *pd1,*pd2,*pd3,*pd4,*pd5,*pd6,*pd7,*pd8,*pd9,*pd10,*pd11,*pd12;    
1002    pd1 = new TPad("pd1","This is pad1",0.,0.68,0.25,.92);    Float_t pad_x1[12] = {0.,0.25,0.5,0.75,0.,0.25,0.5,0.75,0.,0.25,0.5,0.75};
1003    pd2 = new TPad("pd2","This is pad2",0.25,0.68,0.5,.92);    Float_t pad_x2[12] = {0.25,0.5,0.75,1.0,0.25,0.5,0.75,1.,0.25,0.5,0.75,1.};
1004    pd3 = new TPad("pd3","This is pad3",0.5,0.68,0.75,.92);    Float_t pad_y1[12] = {0.68,0.68,0.68,0.68,0.37,0.37,0.37,0.37,0.06,0.06,0.06,0.06};
1005    pd4 = new TPad("pd4","This is pad4",0.75,0.68,1.0,.92);    Float_t pad_y2[12] = {0.92,0.92,0.92,0.92,0.62,0.62,0.62,0.62,0.31,0.31,0.31,0.31};
1006    pd5 = new TPad("pd5","This is pad5",0.,0.37,0.25,0.62);    TPad *singles_Pads[12];
1007    pd6 = new TPad("pd6","This is pad6",0.25,0.37,.5,0.62);    
1008    pd7 = new TPad("pd7","This is pad7",0.5,0.37,0.75,0.62);    char singlesname[30];
1009    pd8 = new TPad("pd8","This is pad8",0.75,0.37,1.0,0.62);    for(Int_t ch=0;ch<12;ch++){
1010    pd9 = new TPad("pd9","This is pad9",0.0,0.06,0.25,0.31);      sprintf(singlesname,"Pad%d",ch+1);
1011    pd10 = new TPad("pd10","This is pad10",0.25,0.06,.5,0.31);      singles_Pads[ch] = new TPad(singlesname,singlesname,pad_x1[ch],pad_y1[ch],pad_x2[ch],pad_y2[ch]);
1012    pd11 = new TPad("pd11","This is pad11",0.5,0.06,0.75,0.31);      singles_Pads[ch]->Draw();
1013    pd12 = new TPad("pd12","This is pad12",0.75,0.06,1.,0.31);    }
1014    //pd13 = new TPad("pd13","This is pad13",0.,0.0,0.25,0.25);    
1015    //pd14 = new TPad("pd14","This is pad14",0.25,0.0,.5,0.25);    sheet3->cd();
1016    //pd15 = new TPad("pd15","This is pad15",0.5,0.0,0.75,0.25);    singles_gr[0][4][0]=0.;
1017    //pd16 = new TPad("pd16","This is pad16",0.75,0.0,1.0,0.25);    TGraph *singlesrate_g[2][12];
1018    Canv_report3->cd();    Int_t k;
1019    //pd1->Range(0,0,100,100);    for(Int_t card=0;card<2;card++){
1020    //pd2->Range(0,0,100,100);      k=0;
1021    //pd3->Range(0,0,100,100);      for(Int_t ch=0;ch<16;ch++){
1022    //pd4->Range(0,0,100,100);              if(ch!=3 && ch!=7 && ch!= 11 && ch!=15){
1023    //pd5->Range(0,0,100,100);        //printf("k %d ch %d\n",k,ch);
1024    //pd6->Range(0,0,100,100);          singles_Pads[k]->cd();
1025    //pd7->Range(0,0,100,100);          singles_gr[card][det_map[k]][0]=0.0;
1026    //pd8->Range(0,0,100,100);          singlesrate_g[card][k] = new TGraph(paramEvents,event_obt,singles_gr[card][det_map[k]]);
1027    //pd9->Range(0,0,100,100);          singlesrate_g[card][k]->SetLineColor(card+1);
1028    //pd10->Range(0,0,100,100);          singlesrate_g[card][k]->GetXaxis()->SetTitle("Obt [ms]");
1029    //pd11->Range(0,0,100,100);          singlesrate_g[card][k]->GetYaxis()->SetTitle("f [Hz]");
1030    //pd12->Range(0,0,100,100);          singlesrate_g[card][k]->SetTitle(detector[det_map[k]].Data());
1031    //pd13->Range(0,0,100,100);          if(card==0)
1032    //pd14->Range(0,0,100,100);            singlesrate_g[card][k]->Draw("AL");
1033    //pd15->Range(0,0,100,100);          else
1034    //pd16->Range(0,0,100,100);            singlesrate_g[card][k]->Draw("LSAME");
1035    pd1->Draw();          k++;
1036    pd2->Draw();        }
1037    pd3->Draw();      }
1038    pd4->Draw();    }
1039    pd5->Draw();    
1040    pd6->Draw();    /********** SHEET 4 *********/
1041    pd7->Draw();      
1042    pd8->Draw();    TCanvas *sheet4 = new TCanvas("Sheet 4");
1043    pd9->Draw();    //sheet2->Divide(4,4);
1044    pd10->Draw();    sheet4->Draw();
1045    pd11->Draw();    sheet4->cd();
1046    pd12->Draw();    
1047    //pd13->Draw();    sheet4->Range(0,0,100,100);
1048    //pd14->Draw();    
   //pd15->Draw();  
   //pd16->Draw();  
   pd1->cd();  
   counter3_m->SetLineColor(1);  
   counter3_m->Draw();  
   counter3_e->SetLineColor(2);  
   counter3_e->Draw("SAME");  
   pd2->cd();  
   counter15_m->SetLineColor(1);  
   counter15_m->Draw();  
   counter15_e->SetLineColor(2);  
   counter15_e->Draw("SAME");  
   pd3->cd();  
   counter11_m->SetLineColor(1);  
   counter11_m->Draw();  
   counter11_e->SetLineColor(2);  
   counter11_e->Draw("SAME");  
   pd4->cd();  
   counter7_m->SetLineColor(1);  
   counter7_m->Draw();  
   counter7_e->SetLineColor(2);  
   counter7_e->Draw("SAME");  
   pd5->cd();  
   counter14_m->SetLineColor(1);  
   counter14_m->Draw();  
   counter14_e->SetLineColor(2);  
   counter14_e->Draw("SAME");  
   pd6->cd();  
   counter2_m->SetLineColor(1);  
   counter2_m->Draw();  
   counter2_e->SetLineColor(2);  
   counter2_e->Draw("SAME");  
   pd7->cd();  
   counter3_m->SetLineColor(1);  
   counter10_m->Draw();  
   counter10_e->SetLineColor(2);  
   counter10_e->Draw("SAME");  
   pd8->cd();  
   counter6_m->SetLineColor(1);  
   counter6_m->Draw();  
   counter6_e->SetLineColor(2);  
   counter6_e->Draw("SAME");  
   pd9->cd();  
   counter13_m->SetLineColor(1);  
   counter13_m->Draw();  
   counter13_e->SetLineColor(2);  
   counter13_e->Draw("SAME");  
   pd10->cd();  
   counter5_m->SetLineColor(1);  
   counter5_m->Draw();  
   counter5_e->SetLineColor(2);  
   counter5_e->Draw("SAME");  
   pd11->cd();  
   counter9_m->SetLineColor(1);  
   counter9_m->Draw();  
   counter9_e->SetLineColor(2);  
   counter9_e->Draw("SAME");  
   pd12->cd();  
   counter1_m->SetLineColor(1);  
   counter1_m->Draw();  
   counter1_e->SetLineColor(2);  
   counter1_e->Draw("SAME");  
   
    //report sheet 4  
   Canv_report4 = new TCanvas("QL Report sheet 4", "QL Report sheet 4", 1280, 1024);  
   Canv_report4->Range(0,0,100,100);  
   //tsf = (TSystemFile*)AcList->First();  
   //sprintf(error,"File: %s ",tsf->GetName());  
   //TLatex *t=new TLatex();  
   t->SetTextFont(32);  
   t->SetTextColor(1);  
   t->SetTextAlign(12);  
   t->SetTextSize(0.015);  
   //t->DrawLatex(2.,99.,error);  
   //char *namn;  
   //TLatex *t2 = new TLatex();  
1049    t->SetTextFont(32);    t->SetTextFont(32);
1050    t->SetTextColor(1);    t->SetTextColor(1);
1051    t->SetTextAlign(12);    t->SetTextAlign(12);
1052    t->SetTextSize(0.035);    t->SetTextSize(0.035);
1053        
1054      namn="Shift Register Content";
1055      t->DrawLatex(40.,95,namn);
1056    namn="CAS";    namn="CAS";
1057    t->DrawLatex(4.,94.,namn);    t->DrawLatex(4.,95.,namn);
1058    namn="CAT";    namn="CAT";
1059    t->DrawLatex(4.,65.,namn);    t->DrawLatex(4.,65.,namn);
1060    namn="CARD";    namn="CARD";
1061    t->DrawLatex(4.,34.,namn);    t->DrawLatex(4.,34.,namn);
1062    namn="Shift register content";    
   t->DrawLatex(39.,95,namn);  
   t->SetTextFont(32);  
   t->SetTextColor(1);  
   t->SetTextAlign(12);  
1063    t->SetTextSize(0.02);    t->SetTextSize(0.02);
1064    namn="MAIN";    namn="MAIN";
1065    t->DrawLatex(85,98,namn);    t->DrawLatex(85,98,namn);
# Line 1892  int AcQLOOK(TString base,int fromevent=0 Line 1067  int AcQLOOK(TString base,int fromevent=0
1067    namn="EXTRA";    namn="EXTRA";
1068    t->DrawLatex(85,95,namn);    t->DrawLatex(85,95,namn);
1069    
1070    //TPad *pd1,*pd2,*pd3,*pd4,*pd5,*pd6,*pd7,*pd8,*pd9,*pd10,*pd11,*pd12;    TPad *shift_Pads[12];
1071    pd1 = new TPad("pd1","This is pad1",0.,0.68,0.25,.92);  
1072    pd2 = new TPad("pd2","This is pad2",0.25,0.68,0.5,.92);    for(Int_t ch=0;ch<12;ch++){
1073    pd3 = new TPad("pd3","This is pad3",0.5,0.68,0.75,.92);      sprintf(singlesname,"ShiftPad%d",ch+1);
1074    pd4 = new TPad("pd4","This is pad4",0.75,0.68,1.0,.92);      shift_Pads[ch] = new TPad(singlesname,singlesname,pad_x1[ch],pad_y1[ch],pad_x2[ch],pad_y2[ch]);
1075    pd5 = new TPad("pd5","This is pad5",0.,0.37,0.25,0.62);      shift_Pads[ch]->Draw();
1076    pd6 = new TPad("pd6","This is pad6",0.25,0.37,.5,0.62);    }
1077    pd7 = new TPad("pd7","This is pad7",0.5,0.37,0.75,0.62);    
1078    pd8 = new TPad("pd8","This is pad8",0.75,0.37,1.0,0.62);    sheet4->cd();
1079    pd9 = new TPad("pd9","This is pad9",0.0,0.06,0.25,0.31);    for(Int_t card=0;card<2;card++){
1080    pd10 = new TPad("pd10","This is pad10",0.25,0.06,.5,0.31);      k=0;
1081    pd11 = new TPad("pd11","This is pad11",0.5,0.06,0.75,0.31);      for(Int_t ch=0;ch<16;ch++){
1082    pd12 = new TPad("pd12","This is pad12",0.75,0.06,1.,0.31);        if(ch!=3 && ch!=7 && ch!= 11 && ch!=15){
1083    //pd13 = new TPad("pd13","This is pad13",0.,0.0,0.25,0.25);        //printf("k %d ch %d\n",k,ch);
1084    //pd14 = new TPad("pd14","This is pad14",0.25,0.0,.5,0.25);          shift_Pads[k]->cd();
1085    //pd15 = new TPad("pd15","This is pad15",0.5,0.0,0.75,0.25);          gPad->SetLogy(1);
1086    //pd16 = new TPad("pd16","This is pad16",0.75,0.0,1.0,0.25);          shiftreg_h[card][det_map[k]]->SetStats(kFALSE);
1087    Canv_report4->cd();          shiftreg_h[card][det_map[k]]->SetLineColor(1+card);
1088    //pd1->Range(0,0,100,100);          shiftreg_h[card][det_map[k]]->SetMinimum(0.);
1089    pd1->SetLogy(1);          shiftreg_h[card][det_map[k]]->Scale(1./shiftreg_h[card][det_map[k]]->Integral());
1090    //pd2->Range(0,0,100,100);          if(card==0)
1091    pd2->SetLogy(1);            shiftreg_h[card][det_map[k]]->Draw();
1092    //pd3->Range(0,0,100,100);          else
1093    pd3->SetLogy(1);            shiftreg_h[card][det_map[k]]->Draw("SAME");
1094    // pd4->Range(0,0,100,100);              k++;
1095    pd4->SetLogy(1);        }
   //pd5->Range(0,0,100,100);  
   pd5->SetLogy(1);  
   //pd6->Range(0,0,100,100);  
   pd6->SetLogy(1);  
   //pd7->Range(0,0,100,100);  
   pd7->SetLogy(1);  
   //pd8->Range(0,0,100,100);  
   pd8->SetLogy(1);  
   //pd9->Range(0,0,100,100);  
   pd9->SetLogy(1);  
   //pd10->Range(0,0,100,100);  
   pd10->SetLogy(1);  
   //pd11->Range(0,0,100,100);  
   pd11->SetLogy(1);  
   //pd12->Range(0,0,100,100);  
   pd12->SetLogy(1);  
   //pd13->Range(0,0,100,100);  
   //pd14->Range(0,0,100,100);  
   //pd15->Range(0,0,100,100);  
   //pd16->Range(0,0,100,100);  
   pd1->Draw();  
   pd2->Draw();  
   pd3->Draw();  
   pd4->Draw();  
   pd5->Draw();  
   pd6->Draw();  
   pd7->Draw();  
   pd8->Draw();  
   pd9->Draw();  
   pd10->Draw();  
   pd11->Draw();  
   pd12->Draw();  
   //pd13->Draw();  
   //pd14->Draw();  
   //pd15->Draw();  
   //pd16->Draw();  
   pd1->cd();  
   shift3_m->SetLineColor(1);  
   shift3_m->Draw();  
   shift3_e->SetLineColor(2);  
   shift3_e->Draw("SAME");  
   pd2->cd();  
   shift15_m->SetLineColor(1);  
   shift15_m->Draw();  
   shift15_e->SetLineColor(2);  
   shift15_e->Draw("SAME");  
   pd3->cd();  
   shift11_m->SetLineColor(1);  
   shift11_m->Draw();  
   shift11_e->SetLineColor(2);  
   shift11_e->Draw("SAME");  
   pd4->cd();  
   shift7_m->SetLineColor(1);  
   shift7_m->Draw();  
   shift7_e->SetLineColor(2);  
   shift7_e->Draw("SAME");  
   pd5->cd();  
   shift14_m->SetLineColor(1);  
   shift14_m->Draw();  
   shift14_e->SetLineColor(2);  
   shift14_e->Draw("SAME");  
   pd6->cd();  
   shift2_m->SetLineColor(1);  
   shift2_m->Draw();  
   shift2_e->SetLineColor(2);  
   shift2_e->Draw("SAME");  
   pd7->cd();  
   shift3_m->SetLineColor(1);  
   shift10_m->Draw();  
   shift10_e->SetLineColor(2);  
   shift10_e->Draw("SAME");  
   pd8->cd();  
   shift6_m->SetLineColor(1);  
   shift6_m->Draw();  
   shift6_e->SetLineColor(2);  
   shift6_e->Draw("SAME");  
   pd9->cd();  
   shift13_m->SetLineColor(1);  
   shift13_m->Draw();  
   shift13_e->SetLineColor(2);  
   shift13_e->Draw("SAME");  
   pd10->cd();  
   shift5_m->SetLineColor(1);  
   shift5_m->Draw();  
   shift5_e->SetLineColor(2);  
   shift5_e->Draw("SAME");  
   pd11->cd();  
   shift9_m->SetLineColor(1);  
   shift9_m->Draw();  
   shift9_e->SetLineColor(2);  
   shift9_e->Draw("SAME");  
   pd12->cd();  
   shift1_m->SetLineColor(1);  
   shift1_m->Draw();  
   shift1_e->SetLineColor(2);  
   shift1_e->Draw("SAME");  
     }//if(fullversion)  
   
   
   //Name the file  
   //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,base,posiz,posiz2);  
   //  
   //const char *figrec = file2;  
     
   //string *outdir = new string(outDir);  
   //string *Format = new string(format);  
   //char *figsave = 0;  
    if(fullversion)  
     {  
       figsave = Form("%s/AcQLOOK1_%s.%s",outDir.Data(),fileName.Data(),format.Data());    
       Canv_report1->SaveAs(figsave);  
       figsave = Form("%s/AcQLOOK2_%s.%s",outDir.Data(),fileName.Data(),format.Data());              
       Canv_report2->SaveAs(figsave);  
       figsave = Form("%s/AcQLOOK3_%s.%s",outDir.Data(),fileName.Data(),format.Data());              
       Canv_report3->SaveAs(figsave);  
       figsave = Form("%s/AcQLOOK4_%s.%s",outDir.Data(),fileName.Data(),format.Data());              
       Canv_report4->SaveAs(figsave);  
     }  
     if(!fullversion)  
     {  
       figsave = Form("%s/AcQLOOK_%s.%s",outDir.Data(),fileName.Data(),format.Data());    
       Canv_report1->SaveAs(figsave);  
1096      }      }
1097      }
1098      
1099      // Plot error report if any error occurs
1100    
1101      //char *namn6 = "KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK";
1102      int mposition = 80;
1103      int eposition = 80;
1104      char *mystring = "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD";
1105      TString *merr;
1106      TBox *b1,*b2;
1107    
1108      //Delete variables    TCanvas *sheetError;
     //delete Canv_report1,Canv_report2,Canv_report3,Canv_report4;  
     //delete t;  
     //delete pd1,pd2,pd3,pd4,pd5,pd6,pd7,pd8,pd9,pd10,pd11,pd12;  
     //delete linje;  
     //delete leg_m,leg_e,leg1_m;  
   
     //delete nmbhitpmtCAS,nmbhitpmtCAT,nmbhitpmtCARD;  
     //delete counter1_m,counter2_m,counter3_m,counter4_m,counter5_m,counter6_m,counter7_m,counter8_m,counter9_m,counter10_m,counter11_m,counter12_m,counter13_m,counter14_m,counter15_m,counter16_m;  
     //delete counter1_e,counter2_e,counter3_e,counter4_e,counter5_e,counter6_e,counter7_e,counter8_e,counter9_e,counter10_e,counter11_e,counter12_e,counter13_e,counter14_e,counter15_e,counter16_e;  
     //delete shift1_m,shift2_m,shift3_m,shift4_m,shift5_m,shift6_m,shift7_m,shift8_m,shift9_m,shift10_m,shift11_m,shift12_m,shift13_m,shift14_m,shift15_m,shift16_m;  
     //delete shift1_e,shift2_e,shift3_e,shift4_e,shift5_e,shift6_e,shift7_e,shift8_e,shift9_e,shift10_e,shift11_e,shift12_e,shift13_e,shift14_e,shift15_e,shift16_e;  
     //delete head_m,head_e,hitmap_m,hitmap_e;  
     //delete pmtstatus_m,pmtstatus_e;  
     //delete trigg_m,trigg_e,timebtrigg_m,timebtrigg_e,dtrigg_m,dtrigg_e;  
     //delete crc_m,headerr_m,crcerr_m,dsperr_m,regerr_m;  
     //delete crc_e,headerr_e,crcerr_e,dsperr_e,regerr_e;  
     //delete T_right_m,T_actel_m,T_dsp_m,T_left_m;  
     //delete T_right_e,T_actel_e,T_dsp_e,T_left_e;  
     //delete rootFile;  
     //delete mtitel,etitel;  
1109    
1110    return 0;    if(Err_type.size() > 0)
1111        {
1112          merr = new TString[12];
1113          merr[0]="Header";
1114          merr[1]="CRC";
1115          merr[2]="Dsp";
1116          merr[3]="Temp";
1117          merr[4]="Reg";
1118          merr[5]="Event CRC";
1119          merr[6]="Header";
1120          merr[7]="CRC";
1121          merr[8]="Dsp";
1122          merr[9]="Temp";
1123          merr[10]="Reg";
1124          merr[11]="Event CRC";
1125    
1126          sheetError = new TCanvas("Sheet Error","Sheet Error"); //base                                                                                                                      
1127          sheetError->Range(0,0,100,100);
1128          sheetError->Draw();
1129          b1 = new TBox(10,83.5,90,84.5);
1130          b2 = new TBox(49.5,90,50.5,5);
1131          b1->SetFillColor(1);
1132          b2->SetFillColor(1);
1133          b1->Draw();
1134          b2->Draw();
1135    
1136          t->SetTextFont(40);
1137          t->SetTextColor(1);
1138          t->SetTextAlign(12);
1139          t->SetTextSize(0.04);
1140          namn = "AntiCounter Error Report";
1141          t->DrawLatex(37,94,namn);
1142          t->SetTextColor(1);
1143          namn = "MAIN card";
1144          t->DrawLatex(15,87,namn);
1145          t->SetTextColor(1);
1146          namn = "EXTRA card";
1147          t->DrawLatex(65,87,namn);
1148          t->SetTextSize(0.015);
1149        
1150    
1151          //for(Int_t i=0;i<Err_type.size();i++)
1152          UInt_t iter = 0;
1153          while(iter<Err_type.size())
1154            {
1155              mystring = Form("%s error obt %d \t event nmb %d",merr[Err_type.at(iter)].Data(),(int)Err_obt.at(iter),Err_evt.at(iter));
1156              t->SetTextColor(2);
1157              if(Err_type.at(iter) < 7 && mposition>10){
1158                mposition -= 2;
1159                t->DrawLatex(15,mposition,mystring);
1160              }
1161              else if(eposition>10){
1162                eposition -= 2;
1163                t->DrawLatex(65,eposition,mystring);
1164              }
1165              iter++;  
1166            }
1167          if(mposition<10)
1168            t->DrawLatex(15,5,"More errors in run!");
1169          if(eposition<10)
1170            t->DrawLatex(65,5,"More errors in run!");
1171    
1172          figsave = Form("%s/%s_AcQLOOK_Error.%s",outDir.Data(),fileName.Data(),format.Data());
1173          sheetError->SaveAs(figsave);
1174        }  
1175    
1176      figsave = Form("%s/%s_AcQLOOK_Status.%s",outDir.Data(),fileName.Data(),format.Data());  
1177      sheet1->SaveAs(figsave);
1178    
1179      figsave = Form("%s/%s_AcQLOOK_Trigger.%s",outDir.Data(),fileName.Data(),format.Data());
1180      sheet2->SaveAs(figsave);
1181    
1182      figsave = Form("%s/%s_AcQLOOK_Singles.%s",outDir.Data(),fileName.Data(),format.Data());
1183      sheet3->SaveAs(figsave);
1184    
1185      figsave = Form("%s/%s_AcQLOOK_Shift.%s",outDir.Data(),fileName.Data(),format.Data());
1186      sheet4->SaveAs(figsave);
1187    
1188      delete sheet1;
1189      delete hitmap_h[0];
1190      delete hitmap_h[1];
1191    
1192      //stopTime = clock();
1193      //printf("Draw time: %f\n\n",(Double_t) (stopTime - time2) / (Double_t) CLOCKS_PER_SEC);
1194      //printf("Exc time: %f\n",(Double_t) (stopTime-startTime) / (Double_t) CLOCKS_PER_SEC);
1195    
1196      return 1;
1197    
1198  }  }
1199    
1200    
1201  int main(int argc, char* argv[]){  int main(int argc, char* argv[]){
1202      TString outDir      = ".";      TString outDir      = ".";
1203      TString format      = "jpg";      TString format      = FORMAT;
1204      int from            = 0;      int from            = 0;
1205      int to              = 0;      int to              = 0;
1206      int mode            = 0;      int mode            = 0;
# Line 2136  int main(int argc, char* argv[]){ Line 1260  int main(int argc, char* argv[]){
1260        }        }
1261      }      }
1262    
   
1263      if (!strcmp(argv[i], "-to")) {      if (!strcmp(argv[i], "-to")) {
1264          if (++i >= argc){          if (++i >= argc){
1265              printf( "-to needs arguments. \n");              printf( "-to needs arguments. \n");
# Line 2159  int main(int argc, char* argv[]){ Line 1282  int main(int argc, char* argv[]){
1282              exit(1);              exit(1);
1283          }          }
1284          if (isdigit(*argv[i]) && (atoi(argv[i]) > 0)) {          if (isdigit(*argv[i]) && (atoi(argv[i]) > 0)) {
1285              to = atoi(argv[i]);              from = atoi(argv[i]);
1286          } else {          } else {
1287              cerr << "-from needs a integer value. \n";              cerr << "-from needs a integer value. \n";
1288              cout << "Try '--help' for more information. \n";              cout << "Try '--help' for more information. \n";
# Line 2168  int main(int argc, char* argv[]){ Line 1291  int main(int argc, char* argv[]){
1291      }      }
1292            
1293    }    }
1294      AcQLOOK(argv[1], from, to, outDir, format,mode);    
1295      if(mode==0)
1296        AcQLOOKbasic(argv[1], from, to, outDir, format);
1297      else if(mode==1)
1298        AcQLOOKpro(argv[1], from, to, outDir, format);
1299      else
1300        printf("Wrong mode argument. Try --help for more information\n");
1301    
1302  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.23