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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (hide annotations) (download)
Fri Jan 17 15:10:26 2014 UTC (10 years, 10 months ago) by mocchiut
Branch: MAIN
CVS Tags: HEAD
Changes since 1.5: +12 -11 lines
Compilation warnings using GCC4.7 fixed

1 pam-se 1.1 #include <physics/anticounter/AnticounterEvent.h>
2     #include <PscuHeader.h>
3     #include <EventHeader.h>
4    
5 pamela 1.5 #include <TFile.h>
6 pam-se 1.1 #include <fstream>
7 pam-se 1.4 #include <vector>
8 pamela 1.5 #include <iostream>
9 pam-se 1.1 #include <TCanvas.h>
10     #include <TLatex.h>
11     #include <TLegend.h>
12     #include <TLine.h>
13     #include <TTree.h>
14     #include <TStyle.h>
15     #include <TObjString.h>
16 pam-se 1.2 #include <TGraph.h>
17     #include <TH1.h>
18 pam-se 1.3 #include <time.h>
19 mocchiut 1.6 #include <sys/stat.h>
20     #include <cstdlib>
21 pamela 1.5 //#include <utils/yodaUtility.h>
22 pam-se 1.1
23     #define DEBUG 0
24 pam-se 1.3 #define VERSION 1.5
25 pam-se 1.2 #define INTERVAL 100
26 pam-se 1.3 #define FORMAT "png"
27 pam-se 1.2
28 pam-se 1.1 using namespace std;
29    
30 pam-se 1.3 UInt_t found;
31 pam-se 1.2 Int_t minevent,maxevent;
32     UShort_t ACheader[2];
33     TString *cardname = new TString[2];
34     TString *detector = new TString[16];
35    
36    
37 pam-se 1.3 int AcQLOOKbasic(TString base,int fromevent=0, int toevent=0, TString outDir = "./", TString format = FORMAT){
38 pam-se 1.2
39     ofstream outputFile;
40     stringstream oss;
41 pam-se 1.1
42 pam-se 1.2 pamela::anticounter::AnticounterEvent *ace = 0;
43     pamela::EventHeader *eh = 0;
44 mocchiut 1.6 // pamela::PscuHeader *ph = 0;
45 pam-se 1.2 TFile *rootFile = new TFile(base);
46 pam-se 1.1 if (rootFile->IsZombie())
47     exit(-1);
48 pam-se 1.2 TString fileName = ((TObjString*)base.Tokenize('\/')->Last())->GetString();
49 pam-se 1.1 TString filePath = base;
50     filePath.ReplaceAll(fileName, "");
51     fileName.ReplaceAll(".root", "");
52    
53 pam-se 1.2 //Takes the tree of the header file
54 pam-se 1.1 TTree *tr = (TTree*)rootFile->Get("Physics");
55    
56 pam-se 1.3 tr->SetBranchStatus("*",0,&found); //disable all branches
57    
58     tr->SetBranchStatus("header*",1,&found);
59     // printf("header: enabled %i branches \n",found);
60     found = 0;
61     tr->SetBranchStatus("status*",1,&found);
62     // printf("status: enabled %i branches \n",found);
63     found = 0;
64     tr->SetBranchStatus("hitmap*",1,&found);
65     // printf("hitmap: enabled %i branches \n",found);
66     found = 0;
67     tr->SetBranchStatus("regist*",1,&found);
68     // printf("regist: enabled %i branches \n",found);
69     found = 0;
70     tr->SetBranchStatus("shift*",1,&found);
71     // printf("shift: enabled %i branches \n",found);
72     found = 0;
73     tr->SetBranchStatus("counters*",1,&found);
74     // printf("counters: enabled %i branches \n",found);
75     found = 0;
76     tr->SetBranchStatus("coinc*",1,&found);
77     // printf("coinc: enabled %i branches \n",found);
78     found = 0;
79     tr->SetBranchStatus("trigg*",1,&found);
80     // printf("trigg: enabled %i branches \n",found);
81     found = 0;
82     tr->SetBranchStatus("clock*",1,&found);
83     // printf("clock: enabled %i branches \n",found);
84     found = 0;
85     tr->SetBranchStatus("temp*",1,&found);
86     // printf("temp: enabled %i branches \n",found);
87     found = 0;
88     tr->SetBranchStatus("DAC*",1,&found);
89     // printf("DAC: enabled %i branches \n",found);
90     found = 0;
91     tr->SetBranchStatus("CRC*",1,&found);
92     // printf("CRC: enabled %i branches \n",found);
93    
94     found = 0;
95     tr->SetBranchStatus("Pscu*",1,&found);
96     // printf("enabled %i branches \n",found);
97     found = 0;
98     tr->SetBranchStatus("Anticounter*",1,&found);
99     // printf("Ac enabled %i branches \n",found);
100     found = 0;
101     tr->SetBranchStatus("Header*",1,&found);
102     // printf("head enabled %i branches \n",found);
103    
104 pam-se 1.1 tr->SetBranchAddress("Anticounter", &ace);
105     tr->SetBranchAddress("Header", &eh);
106    
107 pam-se 1.3
108    
109    
110 pam-se 1.2 Int_t nevents = tr->GetEntries();
111    
112     //check that the selected range of events is ok
113 pam-se 1.1
114     if ( fromevent > toevent && toevent ){
115     return -1;
116     };
117     if ( fromevent > nevents || fromevent < 0 ) {
118     return -1;
119     };
120     if ( toevent > nevents || toevent < 0 ) {
121     return -1;
122     };
123 pam-se 1.2
124 pam-se 1.1 if ( fromevent == 0 ) {
125     minevent = 0;
126     maxevent = nevents;
127     } else {
128     minevent = fromevent - 1;
129     if ( toevent > 0 ){
130     maxevent = toevent;
131     } else {
132     maxevent = fromevent;
133     };
134     };
135    
136 pam-se 1.2 /******************* VARIABLE DECLARATION ***************/
137 pam-se 1.1
138 pam-se 1.2 ACheader[0]=0xAC11;
139     ACheader[1]=0xAC22;
140 pam-se 1.1
141 pam-se 1.2 detector[0]="CARD 4";
142     detector[1]="CAT 2";
143     detector[2]="CAS 1";
144     detector[3]="NC";
145     detector[4]="CARD 2";
146     detector[5]="CAT 4";
147     detector[6]="CAS 4";
148     detector[7]="NC";
149     detector[8]="CARD 3";
150     detector[9]="CAT 3";
151     detector[10]="CAS 3";
152     detector[11]="NC";
153     detector[12]="CARD 1";
154     detector[13]="CAT 1";
155     detector[14]="CAS 2";
156     detector[15]="NC";
157    
158    
159     /******************** HISTOGRAM DECLARATION *************/
160    
161     TH1D *hitmap_h[2];
162     hitmap_h[0] = new TH1D("Hitmap MAIN","Hitmap",16,0.,16.);
163     hitmap_h[1] = new TH1D("Hitmap EXTRA","Hitmap",16,0.,16.);
164 pam-se 1.1
165 pam-se 1.2 TH1D *status_h = new TH1D("Status","Status",10,0.,10.);
166    
167     /********************* MAIN LOOP **********************/
168 pam-se 1.1
169 pam-se 1.2 for (Int_t i = minevent; i < maxevent; i++){
170 pam-se 1.1
171 pam-se 1.2 tr->GetEntry(i);
172 mocchiut 1.6 // ph = eh->GetPscuHeader();
173 pam-se 1.1
174 pam-se 1.2 for(Int_t card=0;card<2;card++)
175     {
176     //Proceed only if crc is ok
177     if(ace->CRCcheck[card]==1)
178     {
179    
180     //hitmap
181     for(Int_t ch_cnt=0;ch_cnt<16;ch_cnt++)
182     {
183     if( (ace->hitmap[card] & (0x1<<ch_cnt)) > 0 )
184     hitmap_h[card]->Fill(ch_cnt,1.);
185     }
186     //Status
187     if((ace->header[card][0] != 0xACAC) || (ace->header[card][1] != ACheader[card]))
188     status_h->Fill(1.+5.*card,1.);
189     if((ace->status[card] & 0x8000) < 0x8000) //crc
190     status_h->Fill(2.+5.*card,1.);
191     if((ace->status[card] & 0x4000) < 0x4000) //dsp
192     status_h->Fill(3.+5.*card,1.);
193     if((ace->status[card] & 0x01FF) < 0x01FF) //reg
194     status_h->Fill(4.+5*card,1.);
195    
196     }//if(crc check)
197     /******************************************************/
198     else
199     status_h->Fill(5.*card,1.); //event crc
200     }//for(card)
201 pam-se 1.1
202 pam-se 1.2 }//for(events)
203 pam-se 1.1
204     /***************************************** PLOTTING *****************************************/
205    
206 mocchiut 1.6 const char *namn = "KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK";
207 pam-se 1.1 int mposition = 80;
208     int eposition = 80;
209 mocchiut 1.6 const char *figsave1 = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF";
210     const char *mystring = "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD";
211 pam-se 1.2
212 pam-se 1.1 TBox *b1,*b2,*b3,*b4,*b5;
213     gStyle->SetOptDate(0);
214     TString *merr = new TString[5];
215     merr[0]="Event CRC";
216     merr[1]="Headers";
217     merr[2]="CRC";
218     merr[3]="Dsp";
219     merr[4]="Reg";
220 pam-se 1.2
221     TCanvas *sheet1 = new TCanvas("Sheet 1","Sheet 1"); //base
222     sheet1->Range(0,0,100,100);
223     sheet1->Draw();
224     b1 = new TBox(10,84.5,90,85.5);
225     b2 = new TBox(49.5,95,50.5,5);
226     b1->SetFillColor(1);
227     b2->SetFillColor(1);
228     b1->Draw();
229     b2->Draw();
230    
231     TLatex *t=new TLatex();
232     t->SetTextFont(40);
233     t->SetTextColor(1);
234     t->SetTextAlign(12);
235     t->SetTextSize(0.04);
236     namn = "AntiCounter MAIN card";
237     t->DrawLatex(10,90,namn);
238     t->SetTextColor(1);
239     namn = "AntiCounter EXTRA card";
240     t->DrawLatex(58,90,namn);
241     t->SetTextSize(0.025);
242    
243     for(Int_t ch=1;ch<17;ch++)
244     {
245     if(ch!=4 && ch!=8 && ch!=12 && ch!=16 && hitmap_h[0]->GetBinContent(ch)==0){
246     mystring = Form("%s channel empty",detector[ch-1].Data());
247     t->SetTextColor(2);
248     t->DrawLatex(15,mposition,mystring);
249     mposition -= 4;
250     }
251     if(ch!=4 && ch!=8 && ch!=12 && ch!=16 && hitmap_h[1]->GetBinContent(ch)==0){
252     mystring = Form("%s channel empty",detector[ch-1].Data());
253     t->SetTextColor(2);
254     t->DrawLatex(65,eposition,mystring);
255     eposition -= 4;
256     }
257     }
258     for(Int_t ch=0;ch<5;ch++)
259     {
260     if(status_h->GetBinContent(ch+1)>0){
261     mposition -= 4;
262     mystring = Form("%d %s errors",(int)status_h->GetBinContent(ch+1),merr[ch].Data());
263     t->SetTextColor(2);
264     t->DrawLatex(15,mposition,mystring);
265     }
266     if(status_h->GetBinContent(ch+5+1)>0){
267     eposition -= 4;
268     mystring = Form("%d %s errors",(int)status_h->GetBinContent(ch+5+1),merr[ch].Data());
269     t->SetTextColor(2);
270     t->DrawLatex(65,eposition,mystring);
271     }
272     }
273     //if no errors
274     if(mposition==80)
275     {
276     namn = "AC main working";
277     t->SetTextSize(0.035);
278     t->SetTextColor(1);
279     t->DrawLatex(15,50,namn);
280     }
281     if(eposition==80)
282     {
283     namn = "AC extra working";
284     t->SetTextSize(0.035);
285     t->SetTextColor(1);
286     t->DrawLatex(65,50,namn);
287     }
288     if(mposition!=80 || eposition!=80)
289     {
290     namn = "AC malfunction";
291     t->SetTextSize(0.035);
292     t->SetTextColor(1);
293     t->DrawLatex(41.5,97.3,namn);
294     b3 = new TBox(10,96,40,98.5);
295     b4 = new TBox(10,1.5,90,4);
296     b5 = new TBox(60,96,90,98.5);
297     b3->SetFillColor(2);
298     b4->SetFillColor(2);
299     b5->SetFillColor(2);
300     b3->Draw();
301     b4->Draw();
302     b5->Draw();
303     }
304    
305     figsave1 = Form("%s/%s_AcQLOOKbasic.%s",outDir.Data(),fileName.Data(),format.Data());
306     sheet1->SaveAs(figsave1);
307    
308     return 1;
309    
310     } //end AcBasic
311    
312    
313 pam-se 1.3 int AcQLOOKpro(TString base,int fromevent=0, int toevent=0, TString outDir = "./", TString format = FORMAT){
314    
315     //Float_t startTime,stopTime;
316     //Float_t time1,time2,time3,time4;
317    
318     //startTime = clock();
319 pam-se 1.2
320     ofstream outputFile;
321     stringstream oss;
322    
323     pamela::anticounter::AnticounterEvent *ace = 0;
324     pamela::EventHeader *eh = 0;
325     pamela::PscuHeader *ph = 0;
326     TFile *rootFile = new TFile(base);
327     if (rootFile->IsZombie())
328     exit(-1);
329     TString fileName = ((TObjString*)base.Tokenize('\/')->Last())->GetString();
330     TString filePath = base;
331     filePath.ReplaceAll(fileName, "");
332     fileName.ReplaceAll(".root", "");
333    
334     //Takes the tree of the header file
335     TTree *tr = (TTree*)rootFile->Get("Physics");
336 pam-se 1.3
337     tr->SetBranchStatus("*",0,&found); //disable all branches
338 pam-se 1.1
339 pam-se 1.3 tr->SetBranchStatus("header*",1,&found);
340     // printf("header: enabled %i branches \n",found);
341     found = 0;
342     tr->SetBranchStatus("status*",1,&found);
343     // printf("status: enabled %i branches \n",found);
344     found = 0;
345     tr->SetBranchStatus("hitmap*",1,&found);
346     // printf("hitmap: enabled %i branches \n",found);
347     found = 0;
348     tr->SetBranchStatus("regist*",1,&found);
349     // printf("regist: enabled %i branches \n",found);
350     found = 0;
351     tr->SetBranchStatus("shift*",1,&found);
352     // printf("shift: enabled %i branches \n",found);
353     found = 0;
354     tr->SetBranchStatus("counters*",1,&found);
355     // printf("counters: enabled %i branches \n",found);
356     found = 0;
357     tr->SetBranchStatus("coinc*",1,&found);
358     // printf("coinc: enabled %i branches \n",found);
359     found = 0;
360     tr->SetBranchStatus("trigg*",1,&found);
361     // printf("trigg: enabled %i branches \n",found);
362     found = 0;
363     tr->SetBranchStatus("clock*",1,&found);
364     // printf("clock: enabled %i branches \n",found);
365     found = 0;
366     tr->SetBranchStatus("temp*",1,&found);
367     // printf("temp: enabled %i branches \n",found);
368     found = 0;
369     tr->SetBranchStatus("DAC*",1,&found);
370     // printf("DAC: enabled %i branches \n",found);
371     found = 0;
372     tr->SetBranchStatus("CRC*",1,&found);
373     // printf("CRC: enabled %i branches \n",found);
374     found = 0;
375    
376     tr->SetBranchStatus("Pscu*",1,&found);
377     // printf("enabled %i branches \n",found);
378     found = 0;
379     tr->SetBranchStatus("Anticounter*",1,&found);
380     // printf("Ac enabled %i branches \n",found);
381     found = 0;
382     tr->SetBranchStatus("Header*",1,&found);
383     // printf("head enabled %i branches \n",found);
384    
385 pam-se 1.2 tr->SetBranchAddress("Anticounter", &ace);
386     tr->SetBranchAddress("Header", &eh);
387    
388     /*************************** VARIABLE DECLARATION **************************/
389    
390     ACheader[0]=0xAC11;
391     ACheader[1]=0xAC22;
392    
393     cardname[0] = "MAIN";
394     cardname[1] = "EXTRA";
395    
396     detector[0]="CARD 4";
397     detector[1]="CAT 2";
398     detector[2]="CAS 1";
399     detector[3]="NC";
400     detector[4]="CARD 2";
401     detector[5]="CAT 4";
402     detector[6]="CAS 4";
403     detector[7]="NC";
404     detector[8]="CARD 3";
405     detector[9]="CAT 3";
406     detector[10]="CAS 3";
407     detector[11]="NC";
408     detector[12]="CARD 1";
409     detector[13]="CAT 1";
410     detector[14]="CAS 2";
411     detector[15]="NC";
412    
413     // ANTICOUNTER VARIABLES
414    
415     Double_t ac_clock_old[2] = {-1., -1.};
416     Double_t ac_clock_new[2] = {-1., -1.};
417     Double_t ac_clock100_new[2] = {-1.,-1.};
418     Double_t ac_clock100_old[2] = {-1.,-1.};
419     Double_t ac_clock_diff[2];
420     Double_t ac_clock100_diff[2];
421     Double_t counter_old[2][16];
422     Double_t counter_new[2][16];
423     Double_t counter_diff[2][16];
424    
425     // MISC VARIABLES
426    
427 mocchiut 1.6 // UInt_t obt;
428 pam-se 1.2 Int_t hitsCARD,hitsCAT,hitsCAS;
429     Int_t interval_cnt = 0;
430     Int_t paramEvent = 0;
431     Int_t paramEvents;
432     Int_t minevent,maxevent;
433 mocchiut 1.6 const char *figsave = " ";
434 pam-se 1.2 UShort_t ACheader[2];
435     ACheader[0]=0xAC11;
436     ACheader[1]=0xAC22;
437    
438 pam-se 1.4 vector<int> Err_type(0);
439     vector<float> Err_obt(0);
440     vector<int> Err_evt(0);
441    
442    
443 pam-se 1.2 Int_t *det_map = new Int_t[12];
444     det_map[0]=2;
445     det_map[1]=14;
446     det_map[2]=10;
447     det_map[3]=6;
448     det_map[4]=13;
449     det_map[5]=1;
450     det_map[6]=9;
451     det_map[7]=5;
452     det_map[8]=12;
453     det_map[9]=4;
454     det_map[10]=8;
455     det_map[11]=0;
456    
457     TString *detector = new TString[16];
458     detector[0]="CARD 4";
459     detector[1]="CAT 2";
460     detector[2]="CAS 1";
461     detector[3]="NC";
462     detector[4]="CARD 2";
463     detector[5]="CAT 4";
464     detector[6]="CAS 4";
465     detector[7]="NC";
466     detector[8]="CARD 3";
467     detector[9]="CAT 3";
468     detector[10]="CAS 3";
469     detector[11]="NC";
470     detector[12]="CARD 1";
471     detector[13]="CAT 1";
472     detector[14]="CAS 2";
473     detector[15]="NC";
474    
475     TString *cardname = new TString[2];
476     cardname[0] = "MAIN";
477     cardname[1] = "EXTRA";
478     char histotitel[30];
479    
480     Int_t nevents = tr->GetEntries();
481    
482     //check that the selected range of events is ok
483     if ( fromevent > toevent && toevent ){
484     return -1;
485     };
486     if ( fromevent > nevents || fromevent < 0 ) {
487     return -1;
488     };
489     if ( toevent > nevents || toevent < 0 ) {
490     return -1;
491     };
492    
493     if ( fromevent == 0 ) {
494     minevent = 0;
495     maxevent = nevents;
496     } else {
497     minevent = fromevent - 1;
498     if ( toevent > 0 ){
499     maxevent = toevent;
500     } else {
501     maxevent = fromevent;
502     };
503     };
504    
505     paramEvents = (Int_t)((Float_t)nevents/(Float_t)INTERVAL);
506    
507     /************************* HISTOGRAM and GRAPH DECLARATION *******************************/
508    
509     TH1D *hitmap_h[2];
510     TH1D *nmbhitpmtCARD_h = new TH1D("#hit PMTs CARD","#hit PMTs",8,0.5,8.5);
511     TH1D *nmbhitpmtCAT_h = new TH1D("#hit PMTs CAT","#hit PMTs",8,0.5,8.5);
512     TH1D *nmbhitpmtCAS_h = new TH1D("#hit PMTs CAS","#hit PMTs",8,0.5,8.5);
513     TH1D *time_between_trigg_h[2];
514     TH1D *shiftreg_h[2][16];
515    
516     for(Int_t card=0;card<2;card++)
517 pam-se 1.1 {
518 pam-se 1.2 sprintf(histotitel,"Hitmap %s",cardname[card].Data());
519     hitmap_h[card] = new TH1D(histotitel,"Hitmap",16,0.,16.);
520    
521     hitmap_h[card]->GetXaxis()->SetBinLabel(1,detector[0]);
522     hitmap_h[card]->GetXaxis()->SetBinLabel(2,detector[1]);
523     hitmap_h[card]->GetXaxis()->SetBinLabel(3,detector[2]);
524     hitmap_h[card]->GetXaxis()->SetBinLabel(4,detector[3]);
525     hitmap_h[card]->GetXaxis()->SetBinLabel(5,detector[4]);
526     hitmap_h[card]->GetXaxis()->SetBinLabel(6,detector[5]);
527     hitmap_h[card]->GetXaxis()->SetBinLabel(7,detector[6]);
528     hitmap_h[card]->GetXaxis()->SetBinLabel(8,detector[7]);
529     hitmap_h[card]->GetXaxis()->SetBinLabel(9,detector[8]);
530     hitmap_h[card]->GetXaxis()->SetBinLabel(10,detector[9]);
531     hitmap_h[card]->GetXaxis()->SetBinLabel(11,detector[10]);
532     hitmap_h[card]->GetXaxis()->SetBinLabel(12,detector[11]);
533     hitmap_h[card]->GetXaxis()->SetBinLabel(13,detector[12]);
534     hitmap_h[card]->GetXaxis()->SetBinLabel(14,detector[13]);
535     hitmap_h[card]->GetXaxis()->SetBinLabel(15,detector[14]);
536     hitmap_h[card]->GetXaxis()->SetBinLabel(16,detector[15]);
537     hitmap_h[card]->GetYaxis()->SetTitle("Hits");
538    
539     sprintf(histotitel,"Time between triggers %s",cardname[card].Data());
540     time_between_trigg_h[card] = new TH1D(histotitel,"Time between triggers",100,0.,0.01);
541     time_between_trigg_h[card]->SetBit(TH1::kCanRebin);
542 pam-se 1.1
543 pam-se 1.2 for(Int_t ch = 0; ch < 16; ch++)
544 pam-se 1.1 {
545 pam-se 1.2 sprintf(histotitel,"Shift Register %s Ch %d",cardname[card].Data(),ch+1);
546     shiftreg_h[card][ch] = new TH1D(histotitel,detector[ch].Data(),16,0.,16.);
547 pam-se 1.1 }
548 pam-se 1.2 }
549    
550 pam-se 1.3 TH1D *status_h = new TH1D("Status","Status",12,0.,12.);
551 pam-se 1.4 status_h->GetXaxis()->SetBinLabel(1,"Headers M");
552     status_h->GetXaxis()->SetBinLabel(2,"CRC M");
553     status_h->GetXaxis()->SetBinLabel(3,"Dsp M");
554     status_h->GetXaxis()->SetBinLabel(4,"Temp M");
555     status_h->GetXaxis()->SetBinLabel(5,"Reg M");
556     status_h->GetXaxis()->SetBinLabel(6,"CRC Event M");
557     status_h->GetXaxis()->SetBinLabel(7,"Headers E");
558     status_h->GetXaxis()->SetBinLabel(8,"CRC E");
559     status_h->GetXaxis()->SetBinLabel(9,"Dsp E");
560     status_h->GetXaxis()->SetBinLabel(10,"Temp E");
561     status_h->GetXaxis()->SetBinLabel(11,"Reg E");
562     status_h->GetXaxis()->SetBinLabel(12,"CRC Event E");
563 pam-se 1.2 status_h->GetYaxis()->SetTitle("# of Errors");
564     status_h->SetMinimum(0);
565    
566     Double_t *temp_gr[2][4];
567     for(Int_t i=0;i<2;i++)
568     for(Int_t j=0;j<4;j++)
569     temp_gr[i][j] = new Double_t[paramEvents+1];
570    
571     for(Int_t i=0;i<2;i++)
572     for(Int_t j=0;j<4;j++)
573     for(Int_t k=0;k<(paramEvents+1);k++)
574     temp_gr[i][j][k] = 0.;
575    
576     Double_t *trigger_gr[2];
577     trigger_gr[0] = new Double_t[paramEvents+1];
578     trigger_gr[1] = new Double_t[paramEvents+1];
579    
580     Double_t *singles_gr[2][16];
581     for(Int_t i=0;i<2;i++){
582     for(Int_t j=0;j<16;j++){
583     singles_gr[i][j] = new Double_t[paramEvents+1];
584     }
585     }
586     for(Int_t i=0;i<2;i++){
587     for(Int_t j=0;j<16;j++){
588     for(Int_t k=0;k<(paramEvents+1);k++){
589     singles_gr[i][j][k] = 0.;
590     }
591     }
592     }
593    
594     Double_t *event_obt = new Double_t[paramEvents+1];
595    
596    
597     /**********************************************************************************/
598    
599    
600     /********************* MAIN LOOP **********************/
601    
602 pam-se 1.3 //time1 = clock();
603     //printf("Init time: %f\n",(Double_t) (time1 - startTime) / (Double_t) CLOCKS_PER_SEC);
604    
605     //iterators used in the loop
606     Int_t card, ch, bin;
607 pam-se 1.2
608     for (Int_t i = minevent; i < maxevent; i++){
609    
610     interval_cnt++;
611    
612     tr->GetEntry(i);
613     ph = eh->GetPscuHeader();
614 mocchiut 1.6 // obt = ph->GetOrbitalTime();
615 pam-se 1.2
616     hitsCARD=hitsCAT=hitsCAS=0;
617    
618 pam-se 1.3 for(card=0;card<2;card++)
619 pam-se 1.2 {
620     //proceed only if crc of event is ok
621 pam-se 1.3 //printf("CRC: %hx\n",ace->CRCcheck[card]);
622     //printf("Hitmap: %hx\n\n",ace->hitmap[card]);
623 pam-se 1.2 if(ace->CRCcheck[card]==1)
624     {
625     //clock
626     ac_clock_old[card] = ac_clock_new[card];
627     ac_clock_new[card] = ace->clock[card][1]*0xFFFF + ace->clock[card][0];
628     if(ac_clock_new[card] - ac_clock_old[card] < 0.)
629     ac_clock_diff[card] = 0xFFFFFFFF+ac_clock_new[card]-ac_clock_old[card];
630     else
631     ac_clock_diff[card] = ac_clock_new[card]-ac_clock_old[card];
632    
633     if(ac_clock_old[card] > 0. && 0.000000025*ac_clock_diff[card]<10.)
634     time_between_trigg_h[card]->Fill( 0.000000025*ac_clock_diff[card] );
635    
636     //counters, singlesrate & shift reg content
637 pam-se 1.3 for(ch=0;ch<16;ch++)
638 pam-se 1.2 {
639 pam-se 1.3 counter_old[card][ch] = counter_new[card][ch];
640     counter_new[card][ch] = ace->counters[card][ch];
641     if(counter_new[card][ch] - counter_old[card][ch] < 0.)
642     counter_diff[card][ch] = 0xFFFF + counter_new[card][ch] - counter_old[card][ch];
643     else
644     counter_diff[card][ch] = counter_new[card][ch] - counter_old[card][ch];
645    
646     singles_gr[card][ch][paramEvent] += (Double_t)counter_diff[card][ch];
647    
648     for(bin = 0; bin < 16; bin++){
649     shiftreg_h[card][bin]->Fill(ch,ace->shift[card][ch] & 0x1<<bin);
650     }
651    
652     //hitmap
653     if( (ace->hitmap[card] & (0x1<<ch)) > 0 ){
654     hitmap_h[card]->Fill(ch,1.);
655     if(ch==0 || ch==4 || ch==8 || ch==12)
656 pam-se 1.2 hitsCARD++;
657 pam-se 1.3 else if(ch==1 || ch==5 || ch==9 || ch==13)
658 pam-se 1.2 hitsCAT++;
659 pam-se 1.3 else if(ch==2 || ch==6 || ch==10 || ch==14)
660 pam-se 1.2 hitsCAS++;
661     }
662 pam-se 1.3
663 pam-se 1.2 }
664 pam-se 1.3
665 pam-se 1.2 //Status
666 pam-se 1.4 if((ace->header[card][0] != 0xACAC) || (ace->header[card][1] != ACheader[card])){
667     status_h->Fill(6.*card,1.);
668     Err_type.push_back(6*card);
669     Err_obt.push_back(ph->GetOrbitalTime());
670     Err_evt.push_back(i);
671     }
672     if((ace->status[card] & 0x8000) < 0x8000){ //crc
673 pam-se 1.3 status_h->Fill(1.+6.*card,1.);
674 pam-se 1.4 Err_type.push_back(1+6*card);
675     Err_obt.push_back(ph->GetOrbitalTime());
676     Err_evt.push_back(i);
677     }
678     if((ace->status[card] & 0x6000) < 0x6000){ //dsp
679 pam-se 1.3 status_h->Fill(2.+6.*card,1.);
680 pam-se 1.4 Err_type.push_back(2+6*card);
681     Err_obt.push_back(ph->GetOrbitalTime());
682     Err_evt.push_back(i);
683     }
684     if((ace->status[card] & 0x0E00) < 0x0E00){ //temp
685 pam-se 1.3 status_h->Fill(3.+6.*card,1.);
686 pam-se 1.4 Err_type.push_back(3+6*card);
687     Err_obt.push_back(ph->GetOrbitalTime());
688     Err_evt.push_back(i);
689     }
690     if((ace->status[card] & 0x01FF) < 0x01FF){ //reg
691 pam-se 1.3 status_h->Fill(4.+6.*card,1.);
692 pam-se 1.4 Err_type.push_back(4+6*card);
693     Err_obt.push_back(ph->GetOrbitalTime());
694     Err_evt.push_back(i);
695     }
696 pam-se 1.2
697     //temperature (left on cards)
698     temp_gr[card][0][paramEvent] += ( ((ace->temp[card][0] & 0x00FF))*2.8 - 273. )/(Float_t)INTERVAL;
699     temp_gr[card][1][paramEvent] += ( ((ace->temp[card][0] & 0xFF00)/256)*2.8 - 273. )/(Float_t)INTERVAL;
700     temp_gr[card][2][paramEvent] += ( ((ace->temp[card][1] & 0x00FF))*2.8 - 273. )/(Float_t)INTERVAL;
701     temp_gr[card][3][paramEvent] += ( ((ace->temp[card][1] & 0xFF00)/256)*2.8 - 273. )/(Float_t)INTERVAL;
702    
703     }//if(crc check)
704 pam-se 1.4 else{
705     status_h->Fill(5.+6.*card,1.); //event crc
706     Err_type.push_back(5+6*card);
707     Err_obt.push_back(ph->GetOrbitalTime());
708     Err_evt.push_back(i);
709     }
710 pam-se 1.2 }//for(card)
711    
712     nmbhitpmtCARD_h->Fill(hitsCARD);
713     nmbhitpmtCAS_h->Fill(hitsCAS);
714     nmbhitpmtCAT_h->Fill(hitsCAT);
715    
716    
717     if(interval_cnt==INTERVAL)
718     {
719 pam-se 1.3 event_obt[paramEvent] = ph->GetOrbitalTime();
720    
721     for(card=0;card<2;card++)
722 pam-se 1.2 {
723     ac_clock100_old[card] = ac_clock100_new[card];
724     ac_clock100_new[card] = (ace->clock[card][1])*0xFFFF + ace->clock[card][0];
725     if((ac_clock100_new[card]-ac_clock100_old[card]) < 0.)
726     ac_clock100_diff[card] = 0xFFFFFFFF+ac_clock100_new[card]-ac_clock100_old[card];
727     else
728     ac_clock100_diff[card] = ac_clock100_new[card]-ac_clock100_old[card];
729    
730     trigger_gr[card][paramEvent] = (Float_t)INTERVAL/(0.000000025*ac_clock100_diff[card]);
731    
732 pam-se 1.3 for(ch=0;ch<16;ch++)
733 pam-se 1.2 singles_gr[card][ch][paramEvent] = singles_gr[card][ch][paramEvent]/(Double_t)(0.000000025*ac_clock100_diff[card]);
734    
735     }//for(card)
736     interval_cnt=0;
737     paramEvent++;
738     }//if(interval_cnt))
739 pam-se 1.3
740 pam-se 1.2 } //for(events)
741 pam-se 1.3
742 pam-se 1.4 //for(Int_t i=0;i<Err_type.size();i++)
743     //printf("%d\t%f\t%d\n\n",Err_type.at(i),Err_obt.at(i),Err_evt.at(i));
744    
745     //Time2 = clock();
746 pam-se 1.3 //printf("Loop time: %f\n",(Double_t) (time2 - time1) / (Double_t) CLOCKS_PER_SEC);
747 pam-se 1.2
748     /****************************** PLOTTING ***************************/
749    
750     TCanvas *sheet1 = new TCanvas("Sheet 1");
751     sheet1->Range(0,0,100,100);
752     sheet1->Draw();
753     sheet1->cd();
754    
755     TLatex *t=new TLatex();
756 pam-se 1.1 t->SetTextFont(32);
757     t->SetTextColor(1);
758     t->SetTextAlign(12);
759 pam-se 1.2 t->SetTextSize(0.02);
760    
761     TPad *pd1 = new TPad("pd1","This is pad1",0.02,0.02,0.49,0.49,17); //lower left
762     TPad *pd2 = new TPad("pd2","This is pad2",0.51,0.02,0.98,0.49,17); //lower right
763     TPad *pd4 = new TPad("pd4","This is pad4",0.02,0.51,0.49,0.98,17); //upper left
764     TPad *pd3 = new TPad("pd3","This is pad3",0.51,0.51,0.98,0.98,17); //upper right
765    
766    
767     pd4->Range(0,0,100,100);
768     sheet1->cd();
769     pd1->Draw();
770     pd2->Draw();
771     pd3->Draw();
772     pd4->Draw();
773    
774     pd4->cd();
775     char namn3[30];
776 pam-se 1.3 char namn4[40];
777 pam-se 1.4 char namn5[30];
778 pam-se 1.3 sprintf(namn3,"Anticounter Quicklook v%.1f",VERSION);
779     sprintf(namn4,"File: %s",fileName.Data());
780 pam-se 1.4 sprintf(namn5,"Events: %d",nevents);
781 pam-se 1.3 t->SetTextSize(0.1);
782     t->DrawLatex(5,90,namn3);
783 pam-se 1.2 t->SetTextSize(0.1);
784 pam-se 1.3 t->DrawLatex(20,50,namn4);
785 pam-se 1.4 t->DrawLatex(20,40,namn5);
786 pam-se 1.3
787 pam-se 1.2 t->SetTextSize(0.02);
788    
789     pd3->cd();
790     status_h->SetLineColor(1);
791     status_h->SetStats(kFALSE);
792     status_h->Draw();
793    
794     pd1->cd();
795     TGraph *temperatureRIGHT_M_g = new TGraph(paramEvents,event_obt,temp_gr[0][0]);
796     TGraph *temperatureACTEL_M_g = new TGraph(paramEvents,event_obt,temp_gr[0][1]);
797     TGraph *temperatureLEFT_M_g = new TGraph(paramEvents,event_obt,temp_gr[0][2]);
798     TGraph *temperatureDSP_M_g = new TGraph(paramEvents,event_obt,temp_gr[0][3]);
799     temperatureRIGHT_M_g->SetMaximum(50.);
800     temperatureRIGHT_M_g->SetMinimum(0.);
801     temperatureRIGHT_M_g->SetTitle("Temperature MAIN");
802     temperatureRIGHT_M_g->GetXaxis()->SetTitle("Obt [ms]");
803     temperatureRIGHT_M_g->GetYaxis()->SetTitle("T [Celsius]");
804     temperatureRIGHT_M_g->SetMarkerColor(1);
805     temperatureACTEL_M_g->SetMarkerColor(2);
806     temperatureLEFT_M_g->SetMarkerColor(3);
807     temperatureDSP_M_g->SetMarkerColor(4);
808 pam-se 1.4 temperatureRIGHT_M_g->SetLineColor(1);
809     temperatureACTEL_M_g->SetLineColor(2);
810     temperatureLEFT_M_g->SetLineColor(3);
811     temperatureDSP_M_g->SetLineColor(4);
812     temperatureRIGHT_M_g->Draw("AL");
813     temperatureACTEL_M_g->Draw("LSAME");
814     temperatureLEFT_M_g->Draw("LSAME");
815     temperatureDSP_M_g->Draw("LSAME");
816 pam-se 1.2
817     TLegend *legTempM = new TLegend(0.72,0.63,0.85,0.8);
818     legTempM->AddEntry(temperatureRIGHT_M_g,"Right","P");
819     legTempM->AddEntry(temperatureACTEL_M_g,"Actel","P");
820     legTempM->AddEntry(temperatureLEFT_M_g,"Left","P");
821     legTempM->AddEntry(temperatureDSP_M_g,"Dsp","P");
822     legTempM->Draw();
823    
824     pd2->cd();
825     TGraph *temperatureRIGHT_E_g = new TGraph(paramEvents,event_obt,temp_gr[1][0]);
826     TGraph *temperatureACTEL_E_g = new TGraph(paramEvents,event_obt,temp_gr[1][1]);
827     TGraph *temperatureLEFT_E_g = new TGraph(paramEvents,event_obt,temp_gr[1][2]);
828     TGraph *temperatureDSP_E_g = new TGraph(paramEvents,event_obt,temp_gr[1][3]);
829     temperatureRIGHT_E_g->SetTitle("Temperature EXTRA");
830     temperatureRIGHT_E_g->GetXaxis()->SetTitle("Obt [ms]");
831     temperatureRIGHT_E_g->GetYaxis()->SetTitle("T [Celsius]");
832     temperatureRIGHT_E_g->SetMarkerColor(1);
833     temperatureACTEL_E_g->SetMarkerColor(2);
834     temperatureLEFT_E_g->SetMarkerColor(3);
835     temperatureDSP_E_g->SetMarkerColor(4);
836 pam-se 1.3 temperatureRIGHT_E_g->SetLineColor(1);
837     temperatureACTEL_E_g->SetLineColor(2);
838     temperatureLEFT_E_g->SetLineColor(3);
839     temperatureDSP_E_g->SetLineColor(4);
840    
841 pam-se 1.2
842     temperatureRIGHT_E_g->SetMaximum(50.);
843     temperatureRIGHT_E_g->SetMinimum(0.);
844 pam-se 1.3 temperatureRIGHT_E_g->Draw("AL");
845     temperatureACTEL_E_g->Draw("LSAME");
846     temperatureLEFT_E_g->Draw("LSAME");
847     temperatureDSP_E_g->Draw("LSAME");
848 pam-se 1.2
849     TLegend *legTempE = new TLegend(0.72,0.63,0.86,0.8);
850 pam-se 1.3 legTempE->AddEntry(temperatureRIGHT_E_g,"Right","L");
851     legTempE->AddEntry(temperatureACTEL_E_g,"Actel","L");
852     legTempE->AddEntry(temperatureLEFT_E_g,"Left","L");
853     legTempE->AddEntry(temperatureDSP_E_g,"Dsp","L");
854 pam-se 1.2 legTempE->Draw();
855    
856     /************************/
857    
858     TCanvas *sheet2 = new TCanvas("Sheet 2");
859     sheet2->Range(0,0,100,100);
860     sheet2->Draw();
861     sheet2->cd();
862    
863     TPad *pd21 = new TPad("pd21","This is pad1",0.02,0.02,0.49,0.49,17); //lower left
864     //TPad *pd22 = new TPad("pd22","This is pad2",0.51,0.02,0.98,0.49,17); //lower right
865     TPad *pd22_1 = new TPad("pd22_1","This is pad22_1",0.51,0.02,0.65,0.49,17);
866     TPad *pd22_2 = new TPad("pd22_3","This is pad22_2",0.67,0.02,0.81,0.49,17);
867     TPad *pd22_3 = new TPad("pd22_4","This is pad22_3",0.83,0.02,0.97,0.49,17);
868    
869     TPad *pd24 = new TPad("pd24","This is pad4",0.02,0.51,0.49,0.98,17); //upper left
870     TPad *pd23 = new TPad("pd23","This is pad3",0.51,0.51,0.98,0.98,17); //upper right
871     sheet2->cd();
872     pd21->Draw();
873     pd22_1->Draw();
874     pd22_2->Draw();
875     pd22_3->Draw();
876     pd23->Draw();
877     pd24->Draw();
878    
879     t->SetTextColor(1);
880     t->DrawLatex(82,99,cardname[0]);
881     t->SetTextColor(2);
882     t->DrawLatex(89,99,cardname[1]);
883    
884     pd24->cd();
885     TGraph *triggM_gr = new TGraph(paramEvents,event_obt,trigger_gr[0]);
886     TGraph *triggE_gr = new TGraph(paramEvents,event_obt,trigger_gr[1]);
887     triggM_gr->SetTitle("Trigger Rate");
888     triggM_gr->GetXaxis()->SetTitle("Obt [ms]");
889     triggM_gr->GetYaxis()->SetTitle("f [Hz]");
890     triggM_gr->SetMarkerColor(1);
891     triggE_gr->SetMarkerColor(2);
892 pam-se 1.3 triggM_gr->SetLineColor(1);
893     triggE_gr->SetLineColor(2);
894     triggM_gr->Draw("AL");
895     triggE_gr->Draw("LSAME");
896 pam-se 1.2
897     pd23->cd();
898     gPad->SetLogy(1);
899     time_between_trigg_h[0]->GetXaxis()->SetTitle("Time [s]");
900     time_between_trigg_h[0]->SetLineColor(1);
901     time_between_trigg_h[1]->SetLineColor(2);
902     if(time_between_trigg_h[0]->GetMaximum() < time_between_trigg_h[1]->GetMaximum())
903     time_between_trigg_h[0]->SetMaximum(1.3*time_between_trigg_h[1]->GetMaximum());
904     //time_between_trigg_h[0]->SetStats(kFALSE);
905     time_between_trigg_h[0]->Draw();
906     time_between_trigg_h[1]->SetStats(kFALSE);
907     time_between_trigg_h[1]->Draw("SAME");
908    
909    
910     pd21->cd();
911     hitmap_h[0]->SetStats(kFALSE);
912     hitmap_h[1]->SetStats(kFALSE);
913     hitmap_h[0]->SetLineColor(1);
914     if(hitmap_h[0]->GetMaximum() < hitmap_h[1]->GetMaximum())
915     hitmap_h[0]->SetMaximum(1.1*hitmap_h[1]->GetMaximum());
916     hitmap_h[0]->Draw();
917     hitmap_h[1]->SetLineColor(2);
918     hitmap_h[1]->Draw("SAME");
919    
920    
921     pd22_1->cd();
922     gPad->SetLogy(1);
923     nmbhitpmtCARD_h->SetTitle("CARD");
924     nmbhitpmtCARD_h->GetXaxis()->SetTitle("Nmb of hits");
925     nmbhitpmtCARD_h->GetYaxis()->SetTitle("Events");
926     nmbhitpmtCARD_h->SetStats(kFALSE);
927     nmbhitpmtCARD_h->SetLineColor(1);
928     nmbhitpmtCARD_h->Draw();
929    
930     pd22_2->cd();
931     gPad->SetLogy(1);
932     nmbhitpmtCAT_h->SetTitle("CAT");
933     nmbhitpmtCAT_h->GetXaxis()->SetTitle("Nmb of hits");
934     nmbhitpmtCAT_h->GetYaxis()->SetTitle("Events");
935     nmbhitpmtCAT_h->SetStats(kFALSE);
936     nmbhitpmtCAT_h->SetLineColor(1);
937     nmbhitpmtCAT_h->Draw();
938    
939     pd22_3->cd();
940     gPad->SetLogy(1);
941     nmbhitpmtCAS_h->SetTitle("CAS");
942     nmbhitpmtCAS_h->GetXaxis()->SetTitle("Nmb of hits");
943     nmbhitpmtCAS_h->GetYaxis()->SetTitle("Events");
944     nmbhitpmtCAS_h->SetStats(kFALSE);
945     nmbhitpmtCAS_h->SetLineColor(1);
946     nmbhitpmtCAS_h->Draw();
947    
948     /*
949     if(nmbhitpmtCAT_h->GetMaximum() > nmbhitpmtCARD_h->GetMaximum())
950     {
951     if(nmbhitpmtCAT_h->GetMaximum() > nmbhitpmtCAS_h->GetMaximum())
952     nmbhitpmtCARD_h->SetMaximum(1.2*nmbhitpmtCAT_h->GetMaximum());
953     else
954     nmbhitpmtCARD_h->SetMaximum(1.2*nmbhitpmtCAS_h->GetMaximum());
955     }
956     nmbhitpmtCARD_h->SetLineColor(1);
957     nmbhitpmtCAT_h->SetLineColor(2);
958     nmbhitpmtCAS_h->SetLineColor(3);
959     nmbhitpmtCARD_h->SetMarkerStyle(20);
960     nmbhitpmtCAT_h->SetMarkerStyle(21);
961     nmbhitpmtCAS_h->SetMarkerStyle(22);
962     nmbhitpmtCARD_h->Draw("P");
963     nmbhitpmtCAT_h->Draw("PSAME");
964     nmbhitpmtCAS_h->Draw("PSAME");
965    
966     TLegend *leghitpmt = new TLegend(0.72,0.63,0.86,0.8);
967     leghitpmt->AddEntry(nmbhitpmtCARD_h,"CARD","P");
968     leghitpmt->AddEntry(nmbhitpmtCAT_h,"CAT","P");
969     leghitpmt->AddEntry(nmbhitpmtCAS_h,"CAS","P");
970     leghitpmt->Draw();
971     */
972    
973     /********** SHEET 3 *********/
974    
975     TCanvas *sheet3 = new TCanvas("Sheet 3");
976     //sheet2->Divide(4,4);
977     sheet3->Draw();
978     sheet3->cd();
979    
980     sheet3->Range(0,0,100,100);
981    
982 pam-se 1.1 t->SetTextFont(32);
983     t->SetTextColor(1);
984     t->SetTextAlign(12);
985     t->SetTextSize(0.035);
986 mocchiut 1.6 const char *namn = " ";
987 pam-se 1.2
988     namn="Singles Rate";
989 pam-se 1.1 t->DrawLatex(40.,95,namn);
990     namn="CAS";
991     t->DrawLatex(4.,95.,namn);
992     namn="CAT";
993     t->DrawLatex(4.,65.,namn);
994     namn="CARD";
995     t->DrawLatex(4.,34.,namn);
996    
997     t->SetTextSize(0.02);
998     namn="MAIN";
999     t->DrawLatex(85,98,namn);
1000     t->SetTextColor(2);
1001     namn="EXTRA";
1002     t->DrawLatex(85,95,namn);
1003 pam-se 1.2
1004     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};
1005     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.};
1006     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};
1007     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};
1008     TPad *singles_Pads[12];
1009    
1010     char singlesname[30];
1011     for(Int_t ch=0;ch<12;ch++){
1012     sprintf(singlesname,"Pad%d",ch+1);
1013     singles_Pads[ch] = new TPad(singlesname,singlesname,pad_x1[ch],pad_y1[ch],pad_x2[ch],pad_y2[ch]);
1014     singles_Pads[ch]->Draw();
1015     }
1016    
1017     sheet3->cd();
1018     singles_gr[0][4][0]=0.;
1019     TGraph *singlesrate_g[2][12];
1020     Int_t k;
1021     for(Int_t card=0;card<2;card++){
1022     k=0;
1023     for(Int_t ch=0;ch<16;ch++){
1024     if(ch!=3 && ch!=7 && ch!= 11 && ch!=15){
1025     //printf("k %d ch %d\n",k,ch);
1026     singles_Pads[k]->cd();
1027     singles_gr[card][det_map[k]][0]=0.0;
1028     singlesrate_g[card][k] = new TGraph(paramEvents,event_obt,singles_gr[card][det_map[k]]);
1029 pam-se 1.4 singlesrate_g[card][k]->SetLineColor(card+1);
1030 pam-se 1.2 singlesrate_g[card][k]->GetXaxis()->SetTitle("Obt [ms]");
1031     singlesrate_g[card][k]->GetYaxis()->SetTitle("f [Hz]");
1032     singlesrate_g[card][k]->SetTitle(detector[det_map[k]].Data());
1033     if(card==0)
1034 pam-se 1.4 singlesrate_g[card][k]->Draw("AL");
1035 pam-se 1.2 else
1036 pam-se 1.4 singlesrate_g[card][k]->Draw("LSAME");
1037 pam-se 1.2 k++;
1038     }
1039     }
1040     }
1041    
1042     /********** SHEET 4 *********/
1043    
1044     TCanvas *sheet4 = new TCanvas("Sheet 4");
1045     //sheet2->Divide(4,4);
1046     sheet4->Draw();
1047     sheet4->cd();
1048    
1049     sheet4->Range(0,0,100,100);
1050    
1051 pam-se 1.1 t->SetTextFont(32);
1052     t->SetTextColor(1);
1053     t->SetTextAlign(12);
1054     t->SetTextSize(0.035);
1055    
1056 pam-se 1.2 namn="Shift Register Content";
1057     t->DrawLatex(40.,95,namn);
1058 pam-se 1.1 namn="CAS";
1059 pam-se 1.2 t->DrawLatex(4.,95.,namn);
1060 pam-se 1.1 namn="CAT";
1061     t->DrawLatex(4.,65.,namn);
1062     namn="CARD";
1063     t->DrawLatex(4.,34.,namn);
1064 pam-se 1.2
1065 pam-se 1.1 t->SetTextSize(0.02);
1066     namn="MAIN";
1067     t->DrawLatex(85,98,namn);
1068     t->SetTextColor(2);
1069     namn="EXTRA";
1070     t->DrawLatex(85,95,namn);
1071    
1072 pam-se 1.2 TPad *shift_Pads[12];
1073    
1074     for(Int_t ch=0;ch<12;ch++){
1075     sprintf(singlesname,"ShiftPad%d",ch+1);
1076     shift_Pads[ch] = new TPad(singlesname,singlesname,pad_x1[ch],pad_y1[ch],pad_x2[ch],pad_y2[ch]);
1077     shift_Pads[ch]->Draw();
1078     }
1079    
1080     sheet4->cd();
1081     for(Int_t card=0;card<2;card++){
1082     k=0;
1083     for(Int_t ch=0;ch<16;ch++){
1084     if(ch!=3 && ch!=7 && ch!= 11 && ch!=15){
1085     //printf("k %d ch %d\n",k,ch);
1086     shift_Pads[k]->cd();
1087     gPad->SetLogy(1);
1088     shiftreg_h[card][det_map[k]]->SetStats(kFALSE);
1089     shiftreg_h[card][det_map[k]]->SetLineColor(1+card);
1090     shiftreg_h[card][det_map[k]]->SetMinimum(0.);
1091     shiftreg_h[card][det_map[k]]->Scale(1./shiftreg_h[card][det_map[k]]->Integral());
1092     if(card==0)
1093     shiftreg_h[card][det_map[k]]->Draw();
1094     else
1095     shiftreg_h[card][det_map[k]]->Draw("SAME");
1096     k++;
1097     }
1098 pam-se 1.1 }
1099 pam-se 1.2 }
1100 pam-se 1.4
1101     // Plot error report if any error occurs
1102    
1103     //char *namn6 = "KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK";
1104     int mposition = 80;
1105     int eposition = 80;
1106 mocchiut 1.6 const char *mystring = "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD";
1107 pam-se 1.4 TString *merr;
1108     TBox *b1,*b2;
1109 pam-se 1.2
1110 pam-se 1.4 TCanvas *sheetError;
1111 pam-se 1.2
1112 pam-se 1.4 if(Err_type.size() > 0)
1113     {
1114     merr = new TString[12];
1115     merr[0]="Header";
1116     merr[1]="CRC";
1117     merr[2]="Dsp";
1118     merr[3]="Temp";
1119     merr[4]="Reg";
1120     merr[5]="Event CRC";
1121     merr[6]="Header";
1122     merr[7]="CRC";
1123     merr[8]="Dsp";
1124     merr[9]="Temp";
1125     merr[10]="Reg";
1126     merr[11]="Event CRC";
1127    
1128     sheetError = new TCanvas("Sheet Error","Sheet Error"); //base
1129     sheetError->Range(0,0,100,100);
1130     sheetError->Draw();
1131     b1 = new TBox(10,83.5,90,84.5);
1132     b2 = new TBox(49.5,90,50.5,5);
1133     b1->SetFillColor(1);
1134     b2->SetFillColor(1);
1135     b1->Draw();
1136     b2->Draw();
1137    
1138     t->SetTextFont(40);
1139     t->SetTextColor(1);
1140     t->SetTextAlign(12);
1141     t->SetTextSize(0.04);
1142     namn = "AntiCounter Error Report";
1143     t->DrawLatex(37,94,namn);
1144     t->SetTextColor(1);
1145     namn = "MAIN card";
1146     t->DrawLatex(15,87,namn);
1147     t->SetTextColor(1);
1148     namn = "EXTRA card";
1149     t->DrawLatex(65,87,namn);
1150     t->SetTextSize(0.015);
1151    
1152    
1153     //for(Int_t i=0;i<Err_type.size();i++)
1154     UInt_t iter = 0;
1155     while(iter<Err_type.size())
1156     {
1157     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));
1158     t->SetTextColor(2);
1159     if(Err_type.at(iter) < 7 && mposition>10){
1160     mposition -= 2;
1161     t->DrawLatex(15,mposition,mystring);
1162     }
1163     else if(eposition>10){
1164     eposition -= 2;
1165     t->DrawLatex(65,eposition,mystring);
1166     }
1167     iter++;
1168     }
1169     if(mposition<10)
1170     t->DrawLatex(15,5,"More errors in run!");
1171     if(eposition<10)
1172     t->DrawLatex(65,5,"More errors in run!");
1173    
1174     figsave = Form("%s/%s_AcQLOOK_Error.%s",outDir.Data(),fileName.Data(),format.Data());
1175     sheetError->SaveAs(figsave);
1176     }
1177    
1178     figsave = Form("%s/%s_AcQLOOK_Status.%s",outDir.Data(),fileName.Data(),format.Data());
1179 pam-se 1.2 sheet1->SaveAs(figsave);
1180    
1181 pam-se 1.4 figsave = Form("%s/%s_AcQLOOK_Trigger.%s",outDir.Data(),fileName.Data(),format.Data());
1182 pam-se 1.2 sheet2->SaveAs(figsave);
1183    
1184 pam-se 1.4 figsave = Form("%s/%s_AcQLOOK_Singles.%s",outDir.Data(),fileName.Data(),format.Data());
1185 pam-se 1.2 sheet3->SaveAs(figsave);
1186    
1187 pam-se 1.4 figsave = Form("%s/%s_AcQLOOK_Shift.%s",outDir.Data(),fileName.Data(),format.Data());
1188 pam-se 1.2 sheet4->SaveAs(figsave);
1189    
1190     delete sheet1;
1191     delete hitmap_h[0];
1192     delete hitmap_h[1];
1193 pam-se 1.1
1194 pam-se 1.3 //stopTime = clock();
1195     //printf("Draw time: %f\n\n",(Double_t) (stopTime - time2) / (Double_t) CLOCKS_PER_SEC);
1196     //printf("Exc time: %f\n",(Double_t) (stopTime-startTime) / (Double_t) CLOCKS_PER_SEC);
1197    
1198 pam-se 1.2 return 1;
1199 pam-se 1.1
1200     }
1201    
1202 pam-se 1.2
1203 pam-se 1.1 int main(int argc, char* argv[]){
1204     TString outDir = ".";
1205 pam-se 1.3 TString format = FORMAT;
1206 pam-se 1.1 int from = 0;
1207     int to = 0;
1208     int mode = 0;
1209    
1210     if (argc < 2){
1211     printf("You have to insert at least the file to analyze \n");
1212     printf("Try '--help' for more information. \n");
1213     exit(1);
1214     }
1215    
1216     if (!strcmp(argv[1], "--help")){
1217     printf( "Usage: AcQLOOK FILE [OPTION] \n");
1218     printf( "\t --help Print this help and exit \n");
1219     printf( "\t -outDir[path] Path where to put the output [default ./] \n");
1220     printf( "\t -format[path] Set the format for the output file [default 'jpg']\n");
1221     printf( "\t -from # Set the starting event [default 0]\n");
1222     printf( "\t -to # Set the last event [default 0]\n");
1223     printf( "\t -mode # advanced (1) or dummy (0) mode [default 0]\n");
1224     exit(1);
1225     }
1226    
1227     if (!strcmp(argv[1], "-v")){
1228     printf("Version %.2f\n",VERSION);
1229     exit(1);
1230     }
1231    
1232     for (int i = 2; i < argc; i++){
1233     if (!strcmp(argv[i], "-outDir")){
1234     if (++i >= argc){
1235     printf( "-outDir needs arguments. \n");
1236     printf( "Try '--help' for more information. \n");
1237     exit(1);
1238     } else {
1239     outDir = argv[i];
1240     }
1241     }
1242    
1243     if (!strcmp(argv[i], "-format")) {
1244     if (++i >= argc){
1245     printf( "-format needs arguments. \n");
1246     printf( "Try '--help' for more information. \n");
1247     exit(1);
1248     } else {
1249     format = argv[i];
1250     continue;
1251     }
1252     }
1253    
1254     if (!strcmp(argv[i], "-mode")) {
1255     if (++i >= argc){
1256     printf( "-mode needs arguments. \n");
1257     printf( "Try '--help' for more information. \n");
1258     exit(1);
1259     } else {
1260     mode = atoi(argv[i]);
1261     continue;
1262     }
1263     }
1264    
1265     if (!strcmp(argv[i], "-to")) {
1266     if (++i >= argc){
1267     printf( "-to needs arguments. \n");
1268     printf( "Try '--help' for more information. \n");
1269     exit(1);
1270     }
1271     if (isdigit(*argv[i]) && (atoi(argv[i]) > 0)) {
1272     to = atoi(argv[i]);
1273     } else {
1274 pamela 1.5 //err << "-to needs a integer value. \n";
1275 pam-se 1.1 cout << "Try '--help' for more information. \n";
1276     exit(1);
1277     }
1278     }
1279    
1280     if (!strcmp(argv[i], "-from")) {
1281     if (++i >= argc){
1282     printf( "-from needs arguments. \n");
1283     printf( "Try '--help' for more information. \n");
1284     exit(1);
1285     }
1286     if (isdigit(*argv[i]) && (atoi(argv[i]) > 0)) {
1287 pam-se 1.2 from = atoi(argv[i]);
1288 pam-se 1.1 } else {
1289 pamela 1.5 //cerr << "-from needs a integer value. \n";
1290 pam-se 1.1 cout << "Try '--help' for more information. \n";
1291     exit(1);
1292     }
1293     }
1294    
1295     }
1296 pam-se 1.2
1297     if(mode==0)
1298     AcQLOOKbasic(argv[1], from, to, outDir, format);
1299     else if(mode==1)
1300     AcQLOOKpro(argv[1], from, to, outDir, format);
1301     else
1302     printf("Wrong mode argument. Try --help for more information\n");
1303    
1304 pam-se 1.1 }

  ViewVC Help
Powered by ViewVC 1.1.23