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

Annotation of /quicklook/tracker/flight/macros/FTrkQLook_EXPERT.cxx

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.5 - (hide annotations) (download)
Mon Jun 5 14:23:29 2006 UTC (18 years, 6 months ago) by pam-fi
Branch: MAIN
Changes since 1.4: +53 -58 lines
*** empty log message ***

1 pam-fi 1.1 /**
2     * FTrkQLook_EXPERT
3     *
4     * autor: D.Fedele
5     * version 2.0
6     * Parameters:
7     * file - the data file to analyze
8     * fromevent - first event to analyze
9     * toevent - last event to analyze
10     * outdir - total path of output file
11     * outfile - extension of output file (pdf,ps,gif,jpg)
12     *
13     *
14     */
15     //
16     #include <fstream>
17     //
18     #include <TPaveText.h>
19     #include <TLatex.h>
20     #include <TCanvas.h>
21     #include <TGraph.h>
22     #include <TTree.h>
23     #include <TStyle.h>
24     //
25     #include <physics/tracker/TrackerEvent.h>
26     #include <PscuHeader.h>
27     #include <EventHeader.h>
28 pam-fi 1.3 #include <RunHeaderEvent.h>
29 pam-fi 1.1 #include <TrkAlarmEvent.h>
30     #include <tsbt/TsbTRecord.h>
31     #include <tsbt/TsbTEvent.h>
32     //
33 pam-fi 1.4 #define MAXSTORAGE 50000
34 pam-fi 1.1
35     void stringcopy(TString& s1, const TString& s2, Int_t from=0, Int_t to=0){
36 pam-fi 1.3 if ( to == 0 ){
37     Int_t t2length = s2.Length();
38     s1 = "";
39     to = t2length;
40     };
41     for (Int_t i = from; i<to; i++){
42     s1.Append(s2[i],1);
43     };
44 pam-fi 1.1 };
45    
46    
47     void FTrkQLook_EXPERT(TString file,Int_t fromevent,Int_t toevent, TString outdir, TString outfile)
48     {
49     //
50     // obtain information about the data file and select the output dir
51     const string filepath=file.Data();
52 pam-fi 1.3 Int_t dwpos = filepath.rfind("/");
53 pam-fi 1.1 Int_t dwpos1 = filepath.find(".root");
54     TString fpath=(filepath.c_str());
55     TString base,ffile ;
56 pam-fi 1.3 stringcopy(ffile,fpath,dwpos+1,dwpos1);
57 pam-fi 1.1 stringcopy(base,fpath,0,dwpos);
58 pam-fi 1.3 if(dwpos>0) base+="/";
59 pam-fi 1.1
60     TString out;
61     if(outdir.Length()==0){
62     out = base;
63     }else{
64     out = outdir;
65     }
66    
67     //
68     // inizialise the variables and open the file
69     pamela::TsbTEvent *event = 0;
70     pamela::TsbTRecord *record = 0;
71     pamela::tracker::TrackerEvent *te=0;
72 pam-fi 1.3 pamela::EventHeader *eh=0,*aleh=0,*eH=0,*eT=0;
73     pamela::PscuHeader *ph=0,*pH=0;
74 pam-fi 1.1 pamela::TrkAlarmEvent *al=0;
75 pam-fi 1.3 pamela::RunHeaderEvent *reh=0;
76 pam-fi 1.1
77     TFile *datafile = new TFile(file);
78    
79     TTree *tree = (TTree*)datafile->Get("TsbT");
80     tree->SetBranchAddress("TsbT",&event);
81 pam-fi 1.3 tree->SetBranchAddress("Header",&eT);
82 pam-fi 1.1
83     TTree *altr = (TTree*)datafile->Get("TrkAlarm");
84     altr->SetBranchAddress("TrkAlarm",&al);
85     altr->SetBranchAddress("Header",&aleh);
86    
87     TTree *tr = (TTree*)datafile->Get("Physics");
88     tr->SetBranchAddress("Tracker",&te);
89     tr->SetBranchAddress("Header",&eh);
90    
91 pam-fi 1.3 TTree *otr = (TTree*)datafile->Get("RunHeader");
92     otr->SetBranchAddress("Header",&eH);
93     otr->SetBranchAddress("RunHeader",&reh);
94    
95 pam-fi 1.1 Long64_t nevent = tr->GetEntries();
96 pam-fi 1.3 Long64_t neventH = otr->GetEntries();
97 pam-fi 1.1 Long64_t tnevent = tree->GetEntries();
98     Long64_t alnevent = altr->GetEntries();
99     Int_t minevent=0;
100     Int_t maxevent=0;
101    
102     printf("Number of total events: %lld\n",nevent);
103 pam-fi 1.3 printf("Number of header events: %lld\n",neventH);
104     printf("Number of TsbT events: %lld\n",tnevent);
105     printf("Number of TrkAlarm packet events: %lld\n",alnevent);
106 pam-fi 1.1
107     if (nevent<=0){
108     datafile->Close();
109     return;
110     }
111     if ( fromevent > toevent && toevent>0 ){
112     printf("It must be fromevent < toevent \n");
113     return;
114     }
115     if ( fromevent > nevent || fromevent < 0 ) {
116     printf("You can choose fromevent between 0 (all) and %lld \n",nevent);
117     return;
118     }
119     if ( toevent > nevent || toevent < 0 ) {
120     printf("You can choose toevent between 0 (all) and %lld \n",nevent);
121     return;
122     }
123     if ( fromevent == 0 ) {
124     minevent = 0;
125     maxevent = nevent;
126     } else {
127     minevent = fromevent;
128     if ( toevent > 0 ){
129     maxevent = toevent+1;
130     } else if (toevent > nevent) {
131     maxevent = nevent;
132     } else {
133     maxevent = toevent+1;
134     }
135     nevent=maxevent-minevent ;
136     }
137    
138 pam-fi 1.3 Long64_t obt=0;
139     const Int_t sizeH=neventH;
140     ULong64_t HOBT[sizeH];
141     Int_t trk_cal_us[sizeH],countrun=1;
142     for (Int_t vi=0; vi<sizeH;vi++){
143     HOBT[vi]=0;
144     trk_cal_us[vi]=0;
145     }
146     for (Int_t ev=0; ev<neventH; ev++){
147     otr->GetEntry(ev);
148     pH = eH->GetPscuHeader();
149     HOBT[ev]= pH->GetOrbitalTime();
150     trk_cal_us[ev]=reh->TRK_CALIB_USED;
151     if((HOBT[ev]<HOBT[ev-1]) && ev>0)
152     countrun+=1;
153     // printf("\n%lld\t\tcountrun=%d\n",HOBT[ev],countrun);
154     }
155     countrun+=(Int_t)nevent/30000;
156 pam-fi 1.4 // printf("\ncountrun=%d\n",countrun);
157 pam-fi 1.1
158     //
159     // other variables definitions
160     stringstream oss1,oss2,oss3,oss4,fromfile,isfile,tit;
161     Int_t ALARM=0;
162     Int_t WARNING[12];
163 pam-fi 1.3
164 pam-fi 1.1 //
165     // information about the entries for the temperatures
166     Int_t tmpSize=0,siztmp=0,maxsize=0;
167     for (Int_t ev=0; ev<tnevent; ev++){
168     tree->GetEntry(ev);
169     tmpSize = event->Records->GetEntries();
170     maxsize+=tmpSize;
171     }
172     const Int_t tsize=maxsize;
173     Int_t tempt[tsize][5],xt[tsize], tempt_tmp[tsize];
174 pam-fi 1.3 //
175     // information about the temperatures
176     for (Int_t ev=0; ev<tnevent; ev++){
177     tree->GetEntry(ev);
178     tmpSize = event->Records->GetEntries();
179     for (Int_t j = 0; j < tmpSize; j++){
180     record = (pamela::TsbTRecord*)event->Records->At(j);
181     xt[siztmp]=record->RECORD_OBT; //0.051*record->RECORD_OBT;
182     for (Int_t z = 0; z < 5; z++){
183     tempt[siztmp][z] = record->TEMPERATURES[z+1];
184     }
185     siztmp++;
186     }
187     }
188 pam-fi 1.1
189     //
190 pam-fi 1.3 // open the output text files for the alarms
191     TString fname1 = out+ffile;
192 pam-fi 1.1 TString fname = out+ffile;
193     int slen=fname.Length();
194     int last=fname.Last('_');
195     if(last<(slen-1))fname.Append('_');
196 pam-fi 1.3 fname.Append("FTrk-DSP-report.txt");
197 pam-fi 1.1 ofstream alarm(fname,ios::out);
198 pam-fi 1.3 alarm << "TRACKER DSP REPORT - Downlink " << ffile<< endl;
199     fname1.Append("_FTrkAlarm-pkt-report.txt");
200 pam-fi 1.1 ofstream alarm1(fname1,ios::out);
201     alarm1 << "TrkAlarm pkt REPORT - Downlink " << ffile<< endl;
202    
203     //
204     // write the file for the TrkAlarm packet
205     if(alnevent==0) alarm1 <<endl<< "------> NO ALARM!!! <-------"<< endl;
206     else{
207     for (Int_t ev=0; ev<alnevent; ev++){
208     altr->GetEntry(ev);
209     ph = aleh->GetPscuHeader();
210    
211 pam-fi 1.3 if(ph->GetOrbitalTime()<obt && ev>0)
212     alarm1<<endl<<"NEW CPU BOOT"<<endl;
213     obt=ph->GetOrbitalTime();
214    
215 pam-fi 1.1 alarm1 << "================================================="<< endl;
216     alarm1 << "PSCU-Pkt N. "<< ph->GetCounter() ;
217     alarm1 << " - OBT "<< ph->GetOrbitalTime() << " ms"<<endl;
218     alarm1 << "(ROOT-tree entry "<<ev<<")"<<endl;
219 pam-fi 1.3 alarm1 << "================================================="<< endl<<endl;
220    
221     alarm1 << "Alarm variables (range 0-1)"<<endl;
222 pam-fi 1.5 alarm1 << " ALARM[1]= 0x"<< hex << (Int_t)al->ALARM[1]<<endl;
223     alarm1 << " ALARM[2]= 0x"<< (Int_t)al->ALARM[2]<<endl;
224     alarm1 << " CmdDuringTrig= 0x"<< (Int_t)al->CmdDuringTrig<<endl;
225     alarm1 << " FinalCheck= 0x"<< (Int_t)al->FinalCheck<<endl;
226     alarm1 << " FlashData= 0x"<< (Int_t)al->FlashData<<endl;
227     alarm1 << " FlashShutdown= 0x"<< (Int_t)al->FlashShutdown<<endl;
228     alarm1 << " FlashUpset= 0x"<< (Int_t)al->FlashUpset<<endl;
229     alarm1 << " InterCheck= 0x"<< (Int_t)al->InterCheck<<endl;
230     alarm1 << " UnknownCmd= 0x"<<(Int_t)al->UnknownCmd<<endl<<endl;
231    
232 pam-fi 1.3 alarm1 << "Alarm variables (range 0-3F)"<<endl;
233 pam-fi 1.5 alarm1 << " CmdIDMA= 0x"<< (Int_t)al->CmdIDMA<<endl;
234     alarm1 << " DSPSoft= 0x"<< (Int_t)al->DSPSoft<<endl;
235     alarm1 << " TrigIDMA= 0x"<< (Int_t)al->TrigIDMA<<endl<<endl;
236    
237     alarm1 << "Control variables (range 0-3F)"<<endl;
238     alarm1 << " DSPBusy= 0x"<< (Int_t)al->DSPBusy<<endl;
239     alarm1 << " DSPMask= 0x"<< (Int_t)al->DSPMask<<endl<<endl;
240    
241     alarm1 << "Control variables (range 0-1)"<<endl;
242     alarm1 << " FlashOn= 0x"<< (Int_t)al->FlashOn<<endl<<endl;
243    
244     alarm1 << "Control variables (range 0-3)"<<endl;
245     alarm1 << " TrigMask= 0x"<< (Int_t)al->TrigMask<<endl<<endl;
246    
247     alarm1 << "Control bits fixed"<<endl;
248     alarm1 << " Aswr= 0x"<< (Int_t)al->Aswr<<endl;
249     alarm1 << " BID[1]= 0x"<< (Int_t)al->BID[0]<<endl;
250     alarm1 << " BID[2]= 0x"<< (Int_t)al->BID[1]<<endl;
251     alarm1 << " BID[3]= 0x"<< (Int_t)al->BID[2]<<endl;
252     alarm1 << " BID[4]= 0x"<< (Int_t)al->BID[3]<<endl;
253     alarm1 << " BID[5]= 0x"<< (Int_t)al->BID[4]<<endl;
254     alarm1 << " BID[6]= 0x"<< (Int_t)al->BID[5]<<endl;
255     alarm1 << " BID[7]= 0x"<< (Int_t)al->BID[6]<<endl;
256     alarm1 << " CmdNum= 0x"<< (Int_t)al->CmdNum<<endl;
257     alarm1 << " PNum= 0x"<< (Int_t)al->PNum<< dec <<endl;
258    
259 pam-fi 1.3 alarm1 << "================================================="<< endl<<endl;
260 pam-fi 1.1
261     }
262     }
263    
264    
265     gStyle->SetLabelSize(0.05,"x");
266     gStyle->SetLabelSize(0.06,"y");
267     gStyle->SetStatFontSize(0.075);
268     gStyle->SetOptStat(1110);
269     gStyle->SetFillColor(10);
270 pam-fi 1.5 gStyle->SetStatColor(10);
271 pam-fi 1.1 gStyle->SetTitleFillColor(10);
272     gStyle->SetTitleFontSize(0.1);
273     gStyle->SetTitleOffset(0.8,"y");
274     gStyle->SetTitleOffset(0.9,"x");
275     gStyle->SetTitleSize(0.06,"y");
276     gStyle->SetTitleSize(0.055,"x");
277    
278 pam-fi 1.3
279     //***************************************************************************************
280     // LOOP on each event
281     //***************************************************************************************
282    
283     if (fromevent!=0)
284     printf("\n Scan of events from %i to %i ... \n",minevent,maxevent-1);
285     else
286     printf("\n Scan of events from %i to %i ... \n",minevent+1,maxevent);
287    
288    
289 pam-fi 1.5 Int_t minev=minevent,maxev=maxevent,countTEMP=0,countHOBT=0;
290 pam-fi 1.3 TCanvas *CompTimeCanv[countrun],*EventNumCanv[countrun],*LandauCanv1[countrun],*LandauCanv2[countrun],*LandauCanv3[countrun];
291     TCanvas *IlluminaCanv[countrun],*TempCanv[countrun];
292 pam-fi 1.4 TGraph *comprtime[12][countrun],*temp[5][countrun],*eventnumb[countrun];
293 pam-fi 1.3 TH1F *landau1[12][countrun],*landau2[12][countrun],*landau3[12][countrun],*illuminazione[12][countrun];
294    
295 pam-fi 1.4
296 pam-fi 1.3 for(Int_t ii=0; ii<countrun;ii++){
297     TPaveText *pt1;
298     TPad *pt,*pt0;
299     TPad *pad1[12],*pad2[12],*pad3[12],*pad4[12],*pad5[12],*pad6[5]; //pad for histos
300 pam-fi 1.1
301 pam-fi 1.3 ofstream warning(out + "warning.txt",ios::out);
302    
303     //****************************************************************************************
304     //Output figures --- First sheet:
305     //****************************************************************************************
306 pam-fi 1.4 fromfile.str("");
307 pam-fi 1.3 fromfile<<"FTrkQLook_EXPERT File: "<<ffile;
308     isfile<<"COMPRESSIONTIME vs. OBT pag"<<ii+1;
309     CompTimeCanv[ii]=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200);
310     CompTimeCanv[ii]->SetFillColor(10);
311     CompTimeCanv[ii]->Range(0,0,100,100);
312     TLatex *t=new TLatex();
313     t->SetTextFont(32);
314     t->SetTextColor(1);
315     t->SetTextAlign(12);
316     t->SetTextSize(0.02);
317     t->DrawLatex(2.,98.7,fromfile.str().c_str());
318     TLatex *t1=new TLatex();
319     t1->SetTextFont(32);
320     t1->SetTextColor(1);
321     t1->SetTextAlign(12);
322     t1->SetTextSize(0.02);
323 pam-fi 1.4 t1->DrawLatex(62.,98.7,isfile.str().c_str());
324 pam-fi 1.3 isfile.str("");
325    
326     //****************************************************************************************
327     //Output figures --- Second sheet:
328     //****************************************************************************************
329    
330     isfile<<"WARNINGS on DSP EVENT NUMBER pag"<<ii+1;
331     EventNumCanv[ii]=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200);
332     EventNumCanv[ii]->SetFillColor(10);
333     EventNumCanv[ii]->Range(0,0,100,100);
334     t->SetTextFont(32);
335     t->SetTextColor(1);
336     t->SetTextAlign(12);
337     t->SetTextSize(0.02);
338     t->DrawLatex(2.,98.7,fromfile.str().c_str());
339     t1->SetTextFont(32);
340     t1->SetTextColor(1);
341     t1->SetTextAlign(12);
342     t1->SetTextSize(0.02);
343 pam-fi 1.4 t1->DrawLatex(65.,98.7,isfile.str().c_str());
344 pam-fi 1.3 isfile.str("");
345    
346     //****************************************************************************************
347     //Output figures --- Third sheet:
348     //****************************************************************************************
349    
350     isfile<<"Cluster Signal ladder1 pag"<<ii+1;
351     LandauCanv1[ii]=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200);
352     LandauCanv1[ii]->SetFillColor(10);
353     LandauCanv1[ii]->Range(0,0,100,100);
354    
355     t->SetTextFont(32);
356     t->SetTextColor(1);
357     t->SetTextAlign(12);
358     t->SetTextSize(0.02);
359     t->DrawLatex(2.,98.7,fromfile.str().c_str());
360     t1->SetTextFont(32);
361     t1->SetTextColor(1);
362     t1->SetTextAlign(12);
363     t1->SetTextSize(0.02);
364 pam-fi 1.4 t1->DrawLatex(65.,98.7,isfile.str().c_str());
365 pam-fi 1.3 isfile.str("");
366 pam-fi 1.1
367 pam-fi 1.3 //****************************************************************************************
368     //Output figures --- Third sheet:
369     //****************************************************************************************
370    
371     isfile<<"Cluster Signal ladder2 pag"<<ii+1;
372     LandauCanv2[ii]=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200);
373     LandauCanv2[ii]->SetFillColor(10);
374     LandauCanv2[ii]->Range(0,0,100,100);
375    
376     t->SetTextFont(32);
377     t->SetTextColor(1);
378     t->SetTextAlign(12);
379     t->SetTextSize(0.02);
380     t->DrawLatex(2.,98.7,fromfile.str().c_str());
381     t1->SetTextFont(32);
382     t1->SetTextColor(1);
383     t1->SetTextAlign(12);
384     t1->SetTextSize(0.02);
385 pam-fi 1.4 t1->DrawLatex(65.,98.7,isfile.str().c_str());
386 pam-fi 1.3 isfile.str("");
387    
388     //****************************************************************************************
389     //Output figures --- Third sheet:
390     //****************************************************************************************
391    
392     isfile<<"Cluster Signal ladder3 pag"<<ii+1;
393     LandauCanv3[ii]=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200);
394     LandauCanv3[ii]->SetFillColor(10);
395     LandauCanv3[ii]->Range(0,0,100,100);
396    
397     t->SetTextFont(32);
398     t->SetTextColor(1);
399     t->SetTextAlign(12);
400     t->SetTextSize(0.02);
401     t->DrawLatex(2.,98.7,fromfile.str().c_str());
402     t1->SetTextFont(32);
403     t1->SetTextColor(1);
404     t1->SetTextAlign(12);
405     t1->SetTextSize(0.02);
406 pam-fi 1.4 t1->DrawLatex(65.,98.7,isfile.str().c_str());
407 pam-fi 1.3 isfile.str("");
408 pam-fi 1.1
409 pam-fi 1.3 //****************************************************************************************
410     //Output figures --- Fourth sheet:
411     //****************************************************************************************
412    
413     isfile<<"lighting of the views pag"<<ii+1;
414     IlluminaCanv[ii]=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200);
415     IlluminaCanv[ii]->SetFillColor(10);
416     IlluminaCanv[ii]->Range(0,0,100,100);
417     t->SetTextFont(32);
418     t->SetTextColor(1);
419     t->SetTextAlign(12);
420     t->SetTextSize(0.02);
421     t->DrawLatex(2.,98.7,fromfile.str().c_str());
422     t1->SetTextFont(32);
423     t1->SetTextColor(1);
424     t1->SetTextAlign(12);
425     t1->SetTextSize(0.02);
426 pam-fi 1.4 t1->DrawLatex(70.,98.7,isfile.str().c_str());
427 pam-fi 1.3 isfile.str("");
428    
429     //****************************************************************************************
430     //Output figures --- Fifth sheet:
431     //****************************************************************************************
432 pam-fi 1.1
433 pam-fi 1.3 isfile<<"Temperatures vs OBT pag"<<ii+1;
434     TempCanv[ii]=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200);
435     TempCanv[ii]->SetFillColor(10);
436     TempCanv[ii]->Range(0,0,100,100);
437    
438     t->SetTextFont(32);
439     t->SetTextColor(1);
440     t->SetTextAlign(12);
441     t->SetTextSize(0.02);
442     t->DrawLatex(2.,98.7,fromfile.str().c_str());
443     t1->SetTextFont(32);
444     t1->SetTextColor(1);
445     t1->SetTextAlign(12);
446     t1->SetTextSize(0.02);
447 pam-fi 1.4 t1->DrawLatex(78.,98.7,isfile.str().c_str());
448 pam-fi 1.3 isfile.str("");
449 pam-fi 1.1
450 pam-fi 1.3 //*************************************************************************************
451     //book pads and histos
452     //***************************************************************************************
453     Float_t posy = 0.95; // up y-coord - top pads
454     Float_t hpad = 0; // pad height
455     Float_t posx1=0; // left x-coord - pad column
456     Float_t posx0=0; // x-coord - column division
457     Float_t wrel = 0; // relative x size of first sub-column
458     Float_t marg = 0.004; // margin among pads
459     Float_t tposy = 0.95; // up y-coord - top pads
460     Float_t thpad = 0; // pad height
461     Float_t tposx1=0; // left x-coord - pad column
462     Float_t tposx0=0; // x-coord - column division
463     Float_t twrel = 0; // relative x size of first sub-column
464     Float_t tmarg = 0.004; // margin among pads
465    
466     hpad = (posy-marg*11)/6;
467     wrel = (1-marg*4)/2;
468     thpad = (tposy-tmarg*5)/3;
469     twrel = (1-tmarg*4)/2;
470 pam-fi 1.1
471 pam-fi 1.3 for(Int_t n = 0; n<12; n++) {
472 pam-fi 1.1
473 pam-fi 1.3 if ( (n+1)%2==1 ) {
474     if(n>1) posy = posy-(marg*2+hpad);
475     posx1 = marg;
476     posx0 = posx1 + wrel;
477     }
478     else {
479     posx1 = posx0 + 2*marg;
480     posx0 = posx1 + wrel;
481     }
482 pam-fi 1.1
483 pam-fi 1.3 if ( (n+1)%2==1 ) {
484     if(n>1) tposy = tposy-(tmarg*2+thpad);
485     tposx1 = tmarg;
486     tposx0 = tposx1 + twrel;
487     }
488     else {
489     tposx1 = tposx0 + 2*tmarg;
490     tposx0 = tposx1 + twrel;
491     }
492 pam-fi 1.1
493    
494 pam-fi 1.3 /* -----------> pad for histograms */
495     pad1[n] = new TPad("pad1"," ",posx1,posy-hpad,posx0,posy,18,0,0);
496     pad2[n] = new TPad("pad2"," ",posx1,posy-hpad,posx0,posy,18,0,0);
497     pad3[n] = new TPad("pad3"," ",posx1,posy-hpad,posx0,posy,18,0,0);
498     pad4[n] = new TPad("pad4"," ",posx1,posy-hpad,posx0,posy,18,0,0);
499     pad5[n] = new TPad("pad5"," ",posx1,posy-hpad,posx0,posy,18,0,0);
500     if(n<5) pad6[n] = new TPad("pad6"," ",tposx1,tposy-thpad,tposx0,tposy,18,0,0);
501 pam-fi 1.1
502    
503 pam-fi 1.3 /* -----------> HISTOGRAMS */
504 pam-fi 1.1
505 pam-fi 1.4 tit<<"DSP "<<n+1;
506 pam-fi 1.3 oss1<<"DSP "<<n*100+ii;
507     oss2<<"DSPh "<<n*100+ii;
508     oss3<<"DSP h "<<n*100+ii;
509     oss4<<"DSP h"<<n*100+ii;
510 pam-fi 1.1
511 pam-fi 1.4 landau1[n][ii]= new TH1F(oss1.str().c_str(),tit.str().c_str(),401,-0.5,1200.5);
512     landau2[n][ii]= new TH1F(oss2.str().c_str(),tit.str().c_str(),401,-0.5,1200.5);
513     landau3[n][ii]= new TH1F(oss3.str().c_str(),tit.str().c_str(),401,-0.5,1200.5);
514 pam-fi 1.3
515 pam-fi 1.4 illuminazione[n][ii]= new TH1F(oss4.str().c_str(),tit.str().c_str(),3073,-0.5,3072.5);
516    
517     tit.str("");
518 pam-fi 1.3 oss1.str("");
519     oss2.str("");
520     oss3.str("");
521     oss4.str("");
522     };
523 pam-fi 1.1
524    
525 pam-fi 1.3 // printf("\nprova0\n");
526    
527    
528     //**********************************************************************************
529     // Fill Graphs and Histos
530     //**********************************************************************************
531 pam-fi 1.2
532 pam-fi 1.3 //
533     // information about the tracker data
534     Int_t warning_dspnumber=0;
535 pam-fi 1.4 Float_t x[MAXSTORAGE];
536     Float_t yc[MAXSTORAGE][12];
537     Float_t eventint[MAXSTORAGE];
538    
539 pam-fi 1.3 for (Int_t ev=minev; ev<maxevent; ev++){
540     tr->GetEntry(ev);
541     ph = eh->GetPscuHeader();
542    
543     if(ev==maxevent-1) maxev=maxevent-1;
544    
545 pam-fi 1.4 if((ph->GetOrbitalTime()<x[ev-minev-1] && ev-minev!=0) || ev-minev==MAXSTORAGE){
546 pam-fi 1.3 maxev=ev;
547     break;
548     }
549     else{
550     x[(ev-minev)]= ph->GetOrbitalTime();
551     ALARM=0;
552    
553     Int_t dsp=0;
554     for(Int_t i=0; i<12; i++){
555     dsp=te->DSPnumber[i]-1;
556     yc[(ev-minev)][dsp]= 0.051*te->compressiontime[i];
557    
558     for(Int_t j=0;j<3;j++){
559     if(te->signcluster[i][j]!=0){
560 pam-fi 1.4 if((te->addrcluster[i][j]>6 && te->addrcluster[i][j]<505) ||(te->addrcluster[i][j]>518 && te->addrcluster[i][j]<1018)){
561 pam-fi 1.5 // if((dsp==1 && te->addrcluster[i][2]>767 && te->addrcluster[i][2]<1024) || (dsp==6 && te->addrcluster[i][0]>511 && te->addrcluster[i][0]<769) ||(dsp==6 && te->addrcluster[i][1]>0 && te->addrcluster[i][1]<769) ||(dsp==6 && te->addrcluster[i][2]>511 && te->addrcluster[i][2]<769) ||(dsp==11 && te->addrcluster[i][0]>767 && te->addrcluster[i][0]<1024));
562     // else
563 pam-fi 1.4 illuminazione[dsp][ii]->Fill((Float_t)((j*1024.)+te->addrcluster[i][j]));
564 pam-fi 1.3 }
565     }
566     }
567 pam-fi 1.5 if(x[ev-minev]>HOBT[countHOBT+1])
568     countHOBT+=1;
569     if(trk_cal_us[countHOBT]!=104){
570     if(!(dsp%2)){
571     if(te->signcluster[i][0]!=0) landau1[dsp][ii]->Fill((Float_t)(1024.-te->signcluster[i][0]));
572     if(te->signcluster[i][1]!=0) landau2[dsp][ii]->Fill((Float_t)(1024.-te->signcluster[i][1]));
573     if(te->signcluster[i][2]!=0) landau3[dsp][ii]->Fill((Float_t)(1024.-te->signcluster[i][2]));
574     }
575     else{
576     if(te->signcluster[i][0]!=0) landau1[dsp][ii]->Fill((Float_t)te->signcluster[i][0]);
577     if(te->signcluster[i][1]!=0) landau2[dsp][ii]->Fill((Float_t)te->signcluster[i][1]);
578     if(te->signcluster[i][2]!=0) landau3[dsp][ii]->Fill((Float_t)te->signcluster[i][2]);
579     }
580 pam-fi 1.4 }
581 pam-fi 1.3
582     WARNING[i]=0;
583     if(te->fc[i]!=0 || te->fl1[i]!=0 || te->fl2[i]!=0 || te->fl3[i]!=0 || te->fl4[i]!=0 || te->fl5[i]!=0 || te->fl6[i]!=0){
584     ALARM = 1; //general alarm
585     WARNING[i] = 1; // DSP warning
586     };
587    
588     if(te->alarm[i]!=0){ // hardware alarm
589     ALARM = 1;
590     };
591    
592     //**************************************************************************************
593     // warning for internal number
594     //**************************************************************************************
595     if(i<=10){
596     if(te->eventn[i]!=te->eventn[i+1]){
597     warning_dspnumber++;
598     warning<< "==> WARNING!! Check entry "<< ev<<" (DSP "<<dsp<<")" <<endl<<
599     "eventn["<<i<<"]= "<<te->eventn[i]<<"!= eventn["<<i+1<<"]= "<< te->eventn[i+1]<<endl;
600     }
601     else
602     eventint[(ev-minev)]=te->eventn[0];
603     }
604     }
605    
606     if(ev<=maxevent-1){
607 pam-fi 1.1
608 pam-fi 1.3 if((ev-minev)>=1 && eventint[(ev-minev)]!=eventint[(ev-minev)-1]+1 && eventint[(ev-minev)]!=1){
609     warning_dspnumber++;
610     warning<< "==> WARNING!! Check entry "<< ev<<endl<<
611     " DSP event num.= "<< eventint[(ev-minev)]<<
612     " is different from (previus+1) ="<<eventint[(ev-minev)-1]+1 <<"\n"<<endl;
613     }
614     }
615    
616     //********************************************************************************************
617     // file ALARM
618     //********************************************************************************************
619 pam-fi 1.4
620     if(ALARM==1) {
621     alarm <<endl<< "================================================="<< endl;
622     alarm << "PSCU-Pkt N. "<< ph->GetCounter() ;
623     alarm << " - OBT "<< ph->GetOrbitalTime() << " ms"<<endl;
624     alarm << "(ROOT-tree entry "<<ev<<")"<<endl;
625     alarm << "================================================="<< endl;
626    
627 pam-fi 1.3 alarm << " DSPn";
628     alarm << " Event";
629     alarm << " Words";
630     alarm << " crc";
631     alarm << " FC";
632     alarm << " FL1";
633     alarm << " FL2";
634     alarm << " FL3";
635     alarm << " FL4";
636     alarm << " FL5";
637     alarm << " FL6" << endl;
638    
639     for(Int_t i=0; i<12 ; i++){
640     alarm.width(5); alarm << te->DSPnumber[i];
641     alarm.width(6); alarm << te->eventn[i];
642     alarm.width(6); alarm << te->DATAlength[i];
643     alarm.width(4); alarm << te->crc[i];
644     alarm.width(4); alarm << te->fc[i];
645     alarm.width(4); alarm << te->fl1[i];
646     alarm.width(4); alarm << te->fl2[i];
647     alarm.width(4); alarm << te->fl3[i];
648     alarm.width(4); alarm << te->fl4[i];
649     alarm.width(4); alarm << te->fl5[i];
650     alarm.width(4); alarm << te->fl6[i];
651     if(te->alarm[i]!=0)alarm<<" >> ALARM ";
652     if(WARNING[i]!=0)alarm<<" (DSP warning) ";
653     alarm << endl;
654     }
655 pam-fi 1.2 }
656 pam-fi 1.1 }
657     }
658 pam-fi 1.4 if(ALARM==0) alarm << endl<< "------> NO ALARM!!! <-------"<<endl;
659     if(warning_dspnumber==0) warning<<"NONE"<<endl;
660 pam-fi 1.3
661    
662     Float_t maxhist=0;
663     TBox b;
664 pam-fi 1.4 b.SetFillColor(6);
665     b.SetFillStyle(3945);
666 pam-fi 1.3
667     for (Int_t i=0; i<12 ; i++){
668     Float_t yyc[maxev-minev];
669     for (Int_t v=0; v<maxev-minev; v++){
670     yyc[v]=yc[v][i];
671     }
672 pam-fi 1.1
673 pam-fi 1.3 LandauCanv1[ii]->cd();
674     pad1[i]->SetFillColor(10);
675     pad1[i]->SetFrameFillColor(10);
676     pad1[i]->Draw();
677     pad1[i]->cd();
678 pam-fi 1.4 landau1[i][ii]->GetXaxis()->SetTitle("max signal");
679     landau1[i][ii]->GetXaxis()->CenterTitle();
680 pam-fi 1.3 landau1[i][ii]->Draw("");
681 pam-fi 1.4 LandauCanv1[ii]->Update();
682    
683 pam-fi 1.3 LandauCanv2[ii]->cd();
684     pad4[i]->SetFillColor(10);
685     pad4[i]->SetFrameFillColor(10);
686     pad4[i]->Draw();
687     pad4[i]->cd();
688 pam-fi 1.4 landau2[i][ii]->GetXaxis()->SetTitle("max signal");
689     landau2[i][ii]->GetXaxis()->CenterTitle();
690 pam-fi 1.3 landau2[i][ii]->Draw("");
691 pam-fi 1.4 LandauCanv2[ii]->Update();
692    
693 pam-fi 1.3 LandauCanv3[ii]->cd();
694     pad5[i]->SetFillColor(10);
695     pad5[i]->SetFrameFillColor(10);
696     pad5[i]->Draw();
697     pad5[i]->cd();
698 pam-fi 1.4 landau3[i][ii]->GetXaxis()->SetTitle("max signal");
699     landau3[i][ii]->GetXaxis()->CenterTitle();
700 pam-fi 1.3 landau3[i][ii]->Draw("");
701 pam-fi 1.4 LandauCanv3[ii]->Update();
702 pam-fi 1.3
703     IlluminaCanv[ii]->cd();
704     pad2[i]->SetFillColor(10);
705     pad2[i]->SetFrameFillColor(10);
706 pam-fi 1.4 pad2[i]->SetLogy();
707 pam-fi 1.3 pad2[i]->Draw();
708     pad2[i]->cd();
709 pam-fi 1.4 illuminazione[i][ii]->GetXaxis()->SetTitle("strip with max signal");
710     illuminazione[i][ii]->GetXaxis()->CenterTitle();
711     illuminazione[i][ii]->Draw("");
712 pam-fi 1.3 if(i==1){
713     maxhist= illuminazione[i][ii]->GetMaximum();
714     b.DrawBox(2816.,0.,3060.,maxhist);
715     }
716     else if(i==6){
717     maxhist= illuminazione[i][ii]->GetMaximum();
718     b.DrawBox(2560.,0.,2816.,maxhist);
719     b.DrawBox(512.,0.,768.,maxhist);
720     b.DrawBox(1024.,0.,1792.,maxhist);
721     }
722     else if(i==11){
723     maxhist= illuminazione[i][ii]->GetMaximum();
724     b.DrawBox(768.,0.,1024.,maxhist);
725     }
726 pam-fi 1.4 IlluminaCanv[ii]->Update();
727 pam-fi 1.3
728    
729     CompTimeCanv[ii]->cd();
730     pad3[i]->SetFillColor(10);
731     pad3[i]->SetFrameFillColor(10);
732     pad3[i]->Draw();
733     pad3[i]->cd();
734     comprtime[i][ii]= new TGraph(maxev-minev,x,yyc);
735     oss1<<"DSP "<<i+1;
736     comprtime[i][ii]->SetTitle(oss1.str().c_str());
737     comprtime[i][ii]->GetXaxis()->SetTitle("OBT (ms)");
738     comprtime[i][ii]->GetXaxis()->CenterTitle();
739     comprtime[i][ii]->GetYaxis()->SetTitle("compressiontime (ms)");
740     comprtime[i][ii]->GetYaxis()->CenterTitle();
741     comprtime[i][ii]->GetYaxis()->SetRangeUser(0,2);
742     comprtime[i][ii]->Draw("ap");
743     oss1.str("");
744     CompTimeCanv[ii]->Update();
745     };
746    
747     EventNumCanv[ii]->cd();
748     pt0=new TPad("pt0"," ",0.704,0.004,0.996,0.98);
749     pt1 = new TPaveText(0.004,0.004,0.986,0.996);
750     pt = new TPad("pt"," ",0.004,0.004,0.7,0.98,18,0,0);
751     pt1->SetFillColor(10);
752     pt1->ReadFile(out + "warning.txt");
753     pt1->SetTextAlign(22);
754     pt1->SetTextSize(0.035);
755     pt0->SetFillColor(10);
756     pt0->SetFrameFillColor(10);
757     pt0->Draw();
758     pt0->cd();
759     pt1->Draw();
760     EventNumCanv[ii]->cd();
761     pt->SetFillColor(10);
762     pt->SetFrameFillColor(10);
763     pt->Draw();
764     pt->cd();
765     eventnumb[ii]=new TGraph(maxev-minev,x,eventint);
766     eventnumb[ii]->SetTitle("");
767     eventnumb[ii]->GetXaxis()->SetLabelSize(0.04);
768     eventnumb[ii]->GetXaxis()->SetTitleSize(0.04);
769     eventnumb[ii]->GetXaxis()->SetTitle("OBT (ms)");
770     eventnumb[ii]->GetXaxis()->CenterTitle();
771     eventnumb[ii]->GetXaxis()->SetTickLength(0.01);
772     eventnumb[ii]->GetXaxis()->SetTitleOffset(1.2);
773     eventnumb[ii]->GetYaxis()->SetLabelSize(0.04);
774     eventnumb[ii]->GetYaxis()->SetTitleSize(0.04);
775     eventnumb[ii]->GetYaxis()->SetTitle("DSP event-number");
776     eventnumb[ii]->GetYaxis()->CenterTitle();
777     eventnumb[ii]->GetYaxis()->SetTitleOffset(1.5);
778     eventnumb[ii]->SetMarkerStyle(21);
779     eventnumb[ii]->SetMarkerColor(kBlue);
780     eventnumb[ii]->SetMarkerSize(0.3);
781     eventnumb[ii]->Draw("ap");
782     EventNumCanv[ii]->Update();
783    
784     obt=0;
785     for(Int_t i=0; i<5; i++){
786     Int_t v=0;
787     for (Int_t ev=countTEMP; ev<tsize; ev++){
788     tree->GetEntry(ev);
789     ph=eT->GetPscuHeader();
790    
791     if(ph->GetOrbitalTime()<obt && ev>countTEMP){
792     countTEMP=ev;
793     break;
794     }
795     else{
796     obt=ph->GetOrbitalTime();
797     tempt_tmp[v++]=(Int_t)(((3.3*tempt[ev][i]/4096)-0.586)/0.0231);
798     }
799     }
800     TempCanv[ii]->cd();
801     tit<<"T"<<i+5<<" (magnetic module "<<i+1<<")";
802     pad6[i]->SetFillColor(10);
803     pad6[i]->Draw();
804     pad6[i]->cd();
805     temp[i][ii]= new TGraph(v,xt,tempt_tmp);
806     temp[i][ii]->SetTitle(tit.str().c_str());
807     temp[i][ii]->GetXaxis()->SetLabelSize(0.04);
808     temp[i][ii]->GetXaxis()->SetTitleSize(0.04);
809     temp[i][ii]->GetXaxis()->SetTitle("OBT (ms)");
810     temp[i][ii]->GetXaxis()->CenterTitle();
811     temp[i][ii]->GetXaxis()->SetTitleOffset(0.85);
812     temp[i][ii]->GetYaxis()->SetTitleOffset(1.2);
813     temp[i][ii]->GetYaxis()->SetLabelOffset(0.001);
814     temp[i][ii]->GetYaxis()->SetLabelSize(0.04);
815     temp[i][ii]->GetYaxis()->SetTitleSize(0.04);
816     temp[i][ii]->GetYaxis()->SetTitle("Temperatures ( ^{o}C)");
817     temp[i][ii]->GetYaxis()->CenterTitle();
818     temp[i][ii]->SetMarkerStyle(21);
819     temp[i][ii]->SetMarkerSize(0.2);
820     temp[i][ii]->Draw("ap");
821     tit.str("");
822     TempCanv[ii]->Update();
823 pam-fi 1.2 }
824 pam-fi 1.3
825     minev=maxev;
826     if(maxev==maxevent-1) {
827     countrun=ii+1;
828     break;
829 pam-fi 1.2 }
830 pam-fi 1.3
831     warning.close();
832     }
833    
834     //*****************************************
835     //close all files
836     //*****************************************
837     alarm.close();
838 pam-fi 1.1
839     printf("... end of packets. \n");
840     //*************************************************************************
841     // Save output Files
842     //*************************************************************************
843     stringstream out1,out2,out3,command;
844    
845 pam-fi 1.3 for(Int_t fl=0;fl<countrun;fl++){
846     if(!strcmp(outfile.Data(),"ps")||!strcmp(outfile.Data(),"pdf")){
847     out1.str("");
848     out2.str("");
849     out3.str("");
850    
851     out1<<ffile<<"_FTrkQLook_EXPERT.ps(";
852     out2<<ffile<<"_FTrkQLook_EXPERT.ps";
853     out3<<ffile<<"_FTrkQLook_EXPERT.ps)";
854 pam-fi 1.1
855 pam-fi 1.3 if(countrun==1){
856     CompTimeCanv[fl]->Print(out+out1.str().c_str(),"Portrait");
857     EventNumCanv[fl]->Print(out+out2.str().c_str(),"Portrait");
858     LandauCanv1[fl]->Print(out+out2.str().c_str(),"Portrait");
859     LandauCanv2[fl]->Print(out+out2.str().c_str(),"Portrait");
860     LandauCanv3[fl]->Print(out+out2.str().c_str(),"Portrait");
861     IlluminaCanv[fl]->Print(out+out2.str().c_str(),"Portrait");
862     TempCanv[fl]->Print(out+out3.str().c_str(),"Portrait");
863     }
864     else if(countrun>=1){
865     if(fl==0) CompTimeCanv[fl]->Print(out+out1.str().c_str(),"Portrait");
866     else CompTimeCanv[fl]->Print(out+out2.str().c_str(),"Portrait");
867     EventNumCanv[fl]->Print(out+out2.str().c_str(),"Portrait");
868     LandauCanv1[fl]->Print(out+out2.str().c_str(),"Portrait");
869     LandauCanv2[fl]->Print(out+out2.str().c_str(),"Portrait");
870     LandauCanv3[fl]->Print(out+out2.str().c_str(),"Portrait");
871     IlluminaCanv[fl]->Print(out+out2.str().c_str(),"Portrait");
872     if(fl!=countrun-1) TempCanv[fl]->Print(out+out2.str().c_str(),"Portrait");
873     else TempCanv[fl]->Print(out+out3.str().c_str(),"Portrait");
874     }
875     }
876     else{
877     out1.str("");
878     out1<<ffile<<"_FTrkQLook_EXPERT-CompTime-pag"<<fl+1<<"."<<outfile.Data();
879     CompTimeCanv[fl]->Print(out+out1.str().c_str());
880     out1.str("");
881     out1<<ffile<<"_FTrkQLook_EXPERT-Temp-pag"<<fl+1<<"."<<outfile.Data();
882     TempCanv[fl]->Print(out+out1.str().c_str());
883     out1.str("");
884     out1<<ffile<<"_FTrkQLook_EXPERT-EvNum-pag"<<fl+1<<"."<<outfile.Data();
885     EventNumCanv[fl]->Print(out+out1.str().c_str());
886     out1.str("");
887     out1<<ffile<<"_FTrkQLook_EXPERT-LandauL1-pag"<<fl+1<<"."<<outfile.Data();
888     LandauCanv1[fl]->Print(out+out1.str().c_str());
889     out1.str("");
890     out1<<ffile<<"_FTrkQLook_EXPERT-LandauL2-pag"<<fl+1<<"."<<outfile.Data();
891     LandauCanv2[fl]->Print(out+out1.str().c_str());
892     out1.str("");
893     out1<<ffile<<"_FTrkQLook_EXPERT-LandauL3-pag"<<fl+1<<"."<<outfile.Data();
894     LandauCanv3[fl]->Print(out+out1.str().c_str());
895     out1.str("");
896     out1<<ffile<<"_FTrkQLook_EXPERT-Lighting-pag"<<fl+1<<"."<<outfile.Data();
897     IlluminaCanv[fl]->Print(out+out1.str().c_str());
898 pam-fi 1.1 }
899 pam-fi 1.4 }
900    
901     if(!strcmp(outfile.Data(),"pdf")){
902     stringstream com;
903     com<<"ps2pdf13 "<<out<<ffile<<"_FTrkQLook_EXPERT.ps "<<out<<ffile<<"_FTrkQLook_EXPERT.pdf";
904     system(com.str().c_str());
905     printf("\n---> ps file converted in pdf format!\n");
906     com.str("");
907     com<<"rm -f "<<out<<ffile<<"_FTrkQLook_EXPERT.ps ";
908     system(com.str().c_str());
909     printf("---> ps file removed!\n\n");
910     com.str("");
911 pam-fi 1.1 }
912 pam-fi 1.4
913 pam-fi 1.1 command.str("");
914     command<<"rm -f "<<out<<"warning.txt";
915     system(command.str().c_str());
916 pam-fi 1.4
917     gROOT->Reset();
918 pam-fi 1.1 return;
919     }

  ViewVC Help
Powered by ViewVC 1.1.23