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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.25 - (hide annotations) (download)
Mon Feb 12 10:28:12 2007 UTC (17 years, 10 months ago) by pam-fi
Branch: MAIN
CVS Tags: v1r24, v1r25
Changes since 1.24: +1 -1 lines
*** empty log message ***

1 pam-fi 1.25 /**
2 pam-fi 1.6 * FTrkCalibQLookExpert.cxx
3 pam-fi 1.1 *
4     * autor: D.Fedele
5 pam-fi 1.24 * version v1r23
6 pam-fi 1.1 * Parameters:
7     * file - the data file to analyze
8     * step - select =1 in order to analyze one event at time
9     * fromevent - first event to analyze
10     * toevent - last event to analyze
11     * outdir - total path of output file
12     * outfile - extension of output file (pdf,ps,gif,jpg)
13     *
14     */
15     //
16     #include <iostream>
17     //
18     #include <TPaveText.h>
19     #include <TLatex.h>
20     #include <TCanvas.h>
21 pam-fi 1.6 #include <TFile.h>
22 pam-fi 1.1 #include <TTree.h>
23     #include <TGraph.h>
24     #include <TStyle.h>
25     #include <TString.h>
26     //
27     #include <PscuHeader.h>
28     #include <EventHeader.h>
29     #include <CalibTrk1Event.h>
30     #include <CalibTrk2Event.h>
31     //
32    
33 pam-fi 1.6 typedef struct caltrk_def{
34 pam-fi 1.1 Int_t good0[2];
35     Int_t daqmode[12];
36     Int_t dspnum[12];
37     Int_t calibnum[12];
38     Int_t ncalev[12];
39     Int_t calfl[12];
40     Int_t ped1[12];
41     Int_t ped2[12];
42     Int_t ped3[12];
43     Int_t sig1[12];
44     Int_t sig2[12];
45     Int_t sig3[12];
46     Int_t nbad1[12];
47     Int_t nbad2[12];
48     Int_t nbad3[12];
49     Float_t dspped[12][3702];
50     Float_t dspsig[12][3702];
51     Float_t dspbad[12][3702];
52     Int_t crc_c[12][3];
53     Int_t crc_hc[12];
54     };
55    
56    
57     void FTrkCalibQLook_EXPERT(TString file,Int_t step,Int_t fromevent, Int_t toevent,TString outdir,TString outfile)
58     {
59     //
60     // obtain information about the data file and select the output dir
61 pam-fi 1.6 Int_t dwpos = file.Last('/');
62     Int_t dwpos1 = file.Last('.');
63     TString base,ffile ;
64     ffile=file(dwpos+1,dwpos1-(dwpos+1));
65     if(dwpos>0) base=file(0,dwpos);
66 pam-fi 1.1
67     TString out;
68     if(outdir.Length()==0){
69     out = base;
70     }else{
71     out = outdir;
72     }
73 pam-fi 1.6 if(out.Last('/')+1<out.Length()) out+="/";
74 pam-fi 1.1
75     //
76     // inizialise the variables and open the file
77     Int_t nevents=0;
78     Int_t minevent = 0;
79     Int_t maxevent = 0;
80 pam-fi 1.8 ULong64_t FOBT[2];
81 pam-fi 1.1
82     FOBT[0]=0;
83     FOBT[1]=0;
84    
85     struct caltrk_def ctrk;
86     ctrk.good0[0]=0;
87     ctrk.good0[1]=0;
88     for(Int_t i=0;i<12;i++){
89     ctrk.daqmode[i]=0;
90 pam-fi 1.17 ctrk.dspnum[i]=0;
91 pam-fi 1.1 ctrk.calibnum[i]=0;
92     ctrk.ncalev[i]=0;
93     ctrk.calfl[i]=0;
94     ctrk.ped1[i]=0;
95     ctrk.ped2[i]=0;
96     ctrk.ped3[i]=0;
97     ctrk.sig1[i]=0;
98     ctrk.sig2[i]=0;
99     ctrk.sig3[i]=0;
100     ctrk.nbad1[i]=0;
101     ctrk.nbad2[i]=0;
102     ctrk.nbad3[i]=0;
103     ctrk.crc_c[i][0]=0;
104     ctrk.crc_c[i][1]=0;
105     ctrk.crc_c[i][2]=0;
106     ctrk.crc_hc[i]=0;
107     for(Int_t iii=0;iii<3072;iii++){
108     ctrk.dspped[i][iii]=0;
109     ctrk.dspsig[i][iii]=0;
110     ctrk.dspbad[i][iii]=0;
111     };
112    
113     };
114    
115     TFile *calibFile = new TFile(file);
116     if ( !calibFile ){
117     printf("No data file, exiting...\n");
118     return;
119     };
120     TTree *otr1,*otr2,*hotr,*totr;
121     pamela::EventHeader *eh1=0,*eh2=0,*eh4=0,*eh3=0;
122     pamela::PscuHeader *ph=0;
123     pamela::CalibTrk1Event *trk1 = 0;
124 pam-fi 1.8 pamela::CalibTrk2Event *trk2 = 0;
125     pamela::EventCounter *cod=0;
126    
127     pamela::PacketType *pctp=0;
128 pam-fi 1.1
129     hotr = (TTree*)calibFile->Get("CalibHeader");
130     hotr->SetBranchAddress("Header", &eh4);
131    
132     totr = (TTree*)calibFile->Get("CalibTrailer");
133     totr->SetBranchAddress("Header", &eh3);
134    
135     otr1 = (TTree*)calibFile->Get("CalibTrk1");
136     otr1->SetBranchAddress("CalibTrk1", &trk1);
137     otr1->SetBranchAddress("Header",&eh1);
138     otr2 = (TTree*)calibFile->Get("CalibTrk2");
139     otr2->SetBranchAddress("CalibTrk2", &trk2);
140     otr2->SetBranchAddress("Header",&eh2);
141    
142     if(otr1->GetEntries()==otr2->GetEntries())
143     nevents = otr1->GetEntries();
144     else{
145     printf("WARNING: CalibTrk1 entries is different from CalibTrk2 entries");
146     return;}
147     if (nevents<=0) {
148     calibFile->Close();
149     printf("No calibration packets found, exiting...\n");
150     return;
151     };
152    
153     printf("Number of calibration packets: %i\n",nevents);
154    
155     if ( fromevent > toevent && toevent ){
156     printf("It must be fromevent < toevent \n");
157     return;
158     };
159    
160     if ( fromevent > nevents || fromevent < 0 ) {
161     printf("You can choose fromevent between 0 (all) and %i \n",nevents);
162     return;
163     };
164    
165     if ( toevent > nevents || toevent < 0 ) {
166     printf("You can choose toevent between 0 (all) and %i \n",nevents);
167     return;
168     };
169     if ( fromevent == 0 ) {
170     minevent = 0;
171     maxevent = nevents;
172     } else {
173     minevent = fromevent - 1;
174     if ( toevent > 0 ){
175     maxevent = toevent;
176     } else if (toevent > nevents) {
177     maxevent = nevents;
178     } else {
179 pam-fi 1.13 maxevent = nevents;
180 pam-fi 1.1 };
181     };
182    
183     //**********************************************************************
184     //
185     // LOOP OVER EVENTS
186     //
187     //**********************************************************************
188    
189 pam-fi 1.8 Int_t hcevent=hotr->GetEntries();
190 pam-fi 1.11 Int_t tcevent=totr->GetEntries();
191     ULong64_t HOBT[hcevent], TOBT[tcevent];
192 pam-fi 1.8 for (Int_t i = 0; i < hcevent; i++){
193     hotr->GetEntry(i);
194     ph = eh4->GetPscuHeader();
195     HOBT[i]= ph->GetOrbitalTime();
196 pam-fi 1.11 }
197     for (Int_t i = 0; i < tcevent; i++){
198     totr->GetEntry(i);
199 pam-fi 1.8 ph = eh3->GetPscuHeader();
200     TOBT[i]= ph->GetOrbitalTime();
201     }
202    
203 pam-fi 1.1 printf("\n Scan of calibration packets from %i to %i ... \n\n",minevent+1,maxevent);
204     for (Int_t i = minevent; i < maxevent; i++){
205    
206     otr1->GetEntry(i);
207 pam-fi 1.8 otr2->GetEntry(i);
208    
209 pam-fi 1.1 ctrk.good0[0]=trk1->good0;
210     ctrk.good0[1]=trk2->good0;
211     for (Int_t m = 0; m < 6; m++){
212     ph = eh1->GetPscuHeader();
213 pam-fi 1.8 cod = eh1->GetCounter();
214 pam-fi 1.1 FOBT[0]= ph->GetOrbitalTime();
215 pam-fi 1.14 if(trk1->DSPnumber[m]>0){
216     if(trk1->DSPnumber[m]<13){
217     ctrk.daqmode[trk1->DSPnumber[m]-1]=trk1->DAQmode[m];
218     ctrk.dspnum[trk1->DSPnumber[m]-1]=trk1->DSPnumber[m];
219     ctrk.calibnum[trk1->DSPnumber[m]-1]=trk1->calibnumber[m];
220     ctrk.ncalev[trk1->DSPnumber[m]-1]=trk1->ncalib_event[m];
221     ctrk.ped1[trk1->DSPnumber[m]-1]=trk1->ped_l1[m];
222     ctrk.ped2[trk1->DSPnumber[m]-1]=trk1->ped_l2[m];
223     ctrk.ped3[trk1->DSPnumber[m]-1]=trk1->ped_l3[m];
224     ctrk.sig1[trk1->DSPnumber[m]-1]=trk1->sig_l1[m];
225     ctrk.sig2[trk1->DSPnumber[m]-1]=trk1->sig_l2[m];
226     ctrk.sig3[trk1->DSPnumber[m]-1]=trk1->sig_l3[m];
227     ctrk.nbad1[trk1->DSPnumber[m]-1]=trk1->nbad_l1[m];
228     ctrk.nbad2[trk1->DSPnumber[m]-1]=trk1->nbad_l2[m];
229     ctrk.nbad3[trk1->DSPnumber[m]-1]=trk1->nbad_l3[m];
230     ctrk.calfl[trk1->DSPnumber[m]-1]=trk1->cal_flag[m];
231     ctrk.crc_c[trk1->DSPnumber[m]-1][0]=trk1->crc_cal[m][0];
232     ctrk.crc_c[trk1->DSPnumber[m]-1][1]=trk1->crc_cal[m][1];
233     ctrk.crc_c[trk1->DSPnumber[m]-1][2]=trk1->crc_cal[m][2];
234     ctrk.crc_hc[trk1->DSPnumber[m]-1]=trk1->crc_hcal[m];
235     for (Int_t j = 0; j < 3072; j++){
236     ctrk.dspped[trk1->DSPnumber[m]-1][j]=trk1->DSPped_par[m][j];
237     ctrk.dspsig[trk1->DSPnumber[m]-1][j]=trk1->DSPsig_par[m][j];
238     ctrk.dspbad[trk1->DSPnumber[m]-1][j]=trk1->DSPbad_par[m][j];
239     };
240     }
241     }
242 pam-fi 1.1 ph = eh2->GetPscuHeader();
243     FOBT[1]= ph->GetOrbitalTime();
244 pam-fi 1.14 if(trk2->DSPnumber[m]>0){
245     if(trk2->DSPnumber[m]<13){
246     ctrk.daqmode[trk2->DSPnumber[m]-1]=trk2->DAQmode[m];
247     ctrk.dspnum[trk2->DSPnumber[m]-1]=trk2->DSPnumber[m];
248     ctrk.calibnum[trk2->DSPnumber[m]-1]=trk2->calibnumber[m];
249     ctrk.ncalev[trk2->DSPnumber[m]-1]=trk2->ncalib_event[m];
250     ctrk.ped1[trk2->DSPnumber[m]-1]=trk2->ped_l1[m];
251     ctrk.ped2[trk2->DSPnumber[m]-1]=trk2->ped_l2[m];
252     ctrk.ped3[trk2->DSPnumber[m]-1]=trk2->ped_l3[m];
253     ctrk.sig1[trk2->DSPnumber[m]-1]=trk2->sig_l1[m];
254     ctrk.sig2[trk2->DSPnumber[m]-1]=trk2->sig_l2[m];
255     ctrk.sig3[trk2->DSPnumber[m]-1]=trk2->sig_l3[m];
256     ctrk.nbad1[trk2->DSPnumber[m]-1]=trk2->nbad_l1[m];
257     ctrk.nbad2[trk2->DSPnumber[m]-1]=trk2->nbad_l2[m];
258     ctrk.nbad3[trk2->DSPnumber[m]-1]=trk2->nbad_l3[m];
259     ctrk.calfl[trk2->DSPnumber[m]-1]=trk2->cal_flag[m];
260     ctrk.crc_c[trk1->DSPnumber[m]-1][0]=trk2->crc_cal[m][0];
261     ctrk.crc_c[trk1->DSPnumber[m]-1][1]=trk2->crc_cal[m][1];
262     ctrk.crc_c[trk1->DSPnumber[m]-1][2]=trk2->crc_cal[m][2];
263     ctrk.crc_hc[trk1->DSPnumber[m]-1]=trk2->crc_hcal[m];
264     for (Int_t j = 0; j < 3072; j++){
265     ctrk.dspped[trk2->DSPnumber[m]-1][j]=trk2->DSPped_par[m][j];
266     ctrk.dspsig[trk2->DSPnumber[m]-1][j]=trk2->DSPsig_par[m][j];
267     ctrk.dspbad[trk2->DSPnumber[m]-1][j]=trk2->DSPbad_par[m][j];
268     }
269     }
270 pam-fi 1.8 }
271     }
272 pam-fi 1.1
273    
274     //
275     // other variables definitions
276 pam-fi 1.20
277 pam-fi 1.1 Int_t risposta=0;
278     stringstream fromfile;
279    
280 pam-fi 1.11 fromfile<<"FTrkCalibQLook_EXPERT File: "<<ffile<<" -- CalibHeader OBT= "<<HOBT[(cod->Get(pctp->CalibHeader))-1]<<" -- Calib pkt OBT= "<<FOBT[0]<<" -- CalibTrailer OBT= "<<TOBT[(cod->Get(pctp->CalibTrailer))]<<" --";
281 pam-fi 1.1
282 pam-fi 1.9 gStyle->SetLabelSize(0.07,"x");
283     gStyle->SetLabelSize(0.07,"y");
284 pam-fi 1.1 gStyle->SetTitleFillColor(10);
285 pam-fi 1.9 gStyle->SetTitleFontSize(0.08);
286 pam-fi 1.1 gStyle->SetTitleOffset(0.8,"y");
287 pam-fi 1.9 gStyle->SetTitleOffset(0.9,"x");
288 pam-fi 1.1 gStyle->SetTitleSize(0.06,"y");
289     gStyle->SetTitleSize(0.06,"x");
290 pam-fi 1.9 gStyle->SetOptStat(101110);
291     gStyle->SetStatX(0.9);
292     gStyle->SetStatW(0.4);
293     gStyle->SetStatColor(10);
294     gStyle->SetStatFontSize(0.1);
295 pam-fi 1.1
296     //
297     // draw display area
298 pam-fi 1.9
299 pam-fi 1.1 TLatex *tzz=new TLatex();
300     tzz->SetTextFont(32);
301     tzz->SetTextColor(1);
302     tzz->SetTextAlign(12);
303     tzz->SetTextSize(0.019);
304     Int_t canvasx=1200;
305     Int_t canvasy=900;
306     TCanvas *c1 = new TCanvas("c1","FTrkCalibQLook_EXPERT_ped",canvasx,canvasy);
307     c1->SetFillColor(10);
308     tzz->DrawLatex(.01,0.98,fromfile.str().c_str());
309     tzz->DrawLatex(.90,0.98,"PEDESTAL");
310     TCanvas *c2 = new TCanvas("c2","FTrkCalibQLook_EXPERT_sig",canvasx,canvasy);
311     c2->SetFillColor(10);
312     tzz->DrawLatex(.01,0.98,fromfile.str().c_str());
313     tzz->DrawLatex(.90,0.98,"SIGMA");
314    
315 pam-fi 1.9
316     TCanvas *sig=new TCanvas("sig","FTrkCalibQLook_EXPERT_histosig",canvasx,canvasy);
317     sig->SetFillColor(10);
318     tzz->DrawLatex(.01,0.98,fromfile.str().c_str());
319     tzz->DrawLatex(.85,0.97,"Histograms of the sigmas");
320    
321    
322    
323 pam-fi 1.1 // draw pads
324 pam-fi 1.9 TPad *trkpad1[12],*trkpad2[12],*trkpad3[36]; //pad for histos
325 pam-fi 1.1 TPaveText *trkpadtext[12]; //pad for header
326     TH1F *histosig[12]; //histos of sigma
327     TH1F *histoped[12]; //histos of pedestals
328     TH1F *histoasig[12]; //histos of sigma
329     TH1F *histoaped[12]; //histos of pedestals
330 pam-fi 1.9
331     TH1F *histosiglad[12][3]; //histos of sigma
332     stringstream title;
333     stringstream hid;
334 pam-fi 1.1
335 pam-fi 1.3 Float_t posy = 0.95; // up y-coord - top pads
336     Float_t hpad = 0.15; // pad height
337     Float_t posx1=0; // left x-coord - pad column
338     Float_t posx2=0; // right x-coord - pad olumn
339     Float_t posx0=0; // x-coord - column division
340     Float_t wrel = 0.6; // relative x size of first sub-column
341     Float_t marg = 0.004; // margin among pads
342 pam-fi 1.1
343 pam-fi 1.9
344 pam-fi 1.1 for(Int_t n = 0; n<12; n++){
345     if ( (n+1)%2 ) {
346     if(n>1)posy = posy-(marg*2+hpad);
347     posx1 = marg;
348     posx2 = 0.5 - marg;
349     posx0 = 0.5*wrel;
350 pam-fi 1.9
351 pam-fi 1.1 } else {
352     posx1 = posx1 + 0.5;
353     posx2 = posx2 + 0.5;
354     posx0 = posx0 + 0.5;
355 pam-fi 1.9
356 pam-fi 1.1 };
357     /* -----------> pad for histograms */
358     trkpad1[n] = new TPad("pad1"," ",posx1,posy-hpad,posx0-marg,posy,18,0,0);
359     trkpad2[n] = new TPad("pad2"," ",posx1,posy-hpad,posx0-marg,posy,18,0,0);
360     /* -----------> pad for header dump */
361     trkpadtext[n] = new TPaveText((posx0+marg),(posy-hpad),posx2,posy);
362     /* -----------> HISTOGRAMS */
363     /* calibration parameters */
364     title<<"DSP "<<n+1;
365 pam-fi 1.4 hid<<"h"<<n<<"i"<<i;
366 pam-fi 1.1 histosig[n] = new TH1F(hid.str().c_str(),title.str().c_str(),3072,0.5,3072.5);
367     hid.str("");
368 pam-fi 1.4 hid<<"hh"<<n<<"i"<<i;
369 pam-fi 1.1 histoped[n] = new TH1F(hid.str().c_str(),title.str().c_str(),3072,0.5,3072.5);
370     hid.str("");
371 pam-fi 1.4 hid<<"hhh"<<n<<"i"<<i;
372 pam-fi 1.1 hid.str("");
373     /* AVERAGE calibration parameters */
374 pam-fi 1.4 hid<<"ah"<<n<<"i"<<i;
375 pam-fi 1.1 histoasig[n] = new TH1F(hid.str().c_str(),title.str().c_str(),3,0.5,3072.5);
376     hid.str("");
377 pam-fi 1.4 hid<<"ahh"<<n<<"i"<<i;
378 pam-fi 1.1 histoaped[n] = new TH1F(hid.str().c_str(),title.str().c_str(),3,0.5,3072.5);
379     hid.str("");
380 pam-fi 1.9 for(int ii=0;ii<3;ii++){
381     title.str("");
382     title<<"DSP "<<n+1<<" / Lad "<<ii+1;
383     hid<<"hhhh"<<n<<"i"<<i<<"ii"<<ii;
384     histosiglad[n][ii] = new TH1F(hid.str().c_str(),title.str().c_str(),32,-0.5,30.5);
385     hid.str("");
386     }
387     title.str("");
388 pam-fi 1.1 }; //end loop on views
389 pam-fi 1.9
390     Float_t tposy = 0.95; // up y-coord - top pads
391     Float_t thpad = 0.; // pad height
392     Float_t tposx1=0; // left x-coord - pad column
393     Float_t tposx0=0; // x-coord - column division
394     Float_t twrel = 0.; // relative x size of first sub-column
395     Float_t tmarg = 0.002; // margin among pads
396     thpad = (tposy-tmarg*11)/6;
397     twrel = (1-tmarg*12)/6;
398    
399     for(Int_t n = 0; n<36; n++){
400     if ( (n+1)%6==1 ) {
401     if(n>1) tposy = tposy-(tmarg*2+thpad);
402     tposx1 = tmarg;
403     tposx0 = tposx1 + twrel;
404     } else {
405     tposx1 = tposx0 + 2*tmarg;
406     tposx0 = tposx1 + twrel;
407     }
408     trkpad3[n]= new TPad("pad3"," ",tposx1,tposy-thpad,tposx0,tposy,18,0,0);
409     }
410    
411    
412 pam-fi 1.1 stringstream message;
413 pam-fi 1.9
414 pam-fi 1.1 //--------------------------------
415     //CHECK CALIBRATION procedure
416     //--------------------------------
417     Int_t nn=0;
418     Int_t calok = 0;//BAD
419     for(Int_t n = 0; n<12; n++){
420     if(ctrk.ncalev[n]==0 && ctrk.calfl[n]==0)calok = 1;//GOOD
421 pam-fi 1.9
422 pam-fi 1.17 if(ctrk.dspnum[n]==0)
423 pam-fi 1.16 continue;
424    
425 pam-fi 1.1 nn=ctrk.dspnum[n]-1;
426     /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
427     *
428     * Write event LEVEL0 report
429     *
430     *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/
431     trkpadtext[nn]->SetTextFont(40);
432     trkpadtext[nn]->SetFillColor(33);
433     if(calok==0)trkpadtext[nn]->SetFillColor(2);
434     trkpadtext[nn]->SetTextSize(0.013);
435     trkpadtext[nn]->SetTextAlign(13);
436     trkpadtext[nn]->SetTextColor(1);
437    
438     trkpadtext[nn]->AddText(" ");
439     message<<"DSP num --------> "<<ctrk.dspnum[n];
440     trkpadtext[nn]->AddText(message.str().c_str());
441     message.str("");
442     message<<"DAQ mode -------> "<<ctrk.daqmode[n];
443     trkpadtext[nn]->AddText(message.str().c_str());
444     message.str("");
445     message<<"Calibnumber ----> "<<ctrk.calibnum[n];
446     trkpadtext[nn]->AddText(message.str().c_str());
447     message.str("");
448     message<<"ncalib_event ---> "<<ctrk.ncalev[n];
449     trkpadtext[nn]->AddText(message.str().c_str());
450     message.str("");
451     message<<"Cal_flag -------> "<<ctrk.calfl[n];
452     trkpadtext[nn]->AddText(message.str().c_str());
453     message.str("");
454     message<<"crc_hcal -------> "<<ctrk.crc_hc[n];
455     trkpadtext[nn]->AddText(message.str().c_str());
456     message.str("");
457     message<<"crc_cal: l1- ";message.width(5);message<< ctrk.crc_c[n][0];
458     message<<" l2- ";message.width(5);message<< ctrk.crc_c[n][1];
459     message<<" l3- ";message.width(5);message<< ctrk.crc_c[n][2];
460     trkpadtext[nn]->AddText(message.str().c_str());
461     message.str("");
462     message<<"<PED>: l1- "; message.width(5);message<< ctrk.ped1[n];
463     message<<" l2-"; message.width(5);message<< ctrk.ped2[n];
464     message<<" l3-"; message.width(5);message<< ctrk.ped3[n];
465     trkpadtext[nn]->AddText(message.str().c_str());
466     message.str("");
467     message<<"<SIG>: l1- "; message.width(5);message<< ctrk.sig1[n];
468     message<<" l2-"; message.width(5);message<< ctrk.sig2[n];
469     message<<" l3-"; message.width(5);message<< ctrk.sig3[n];
470     trkpadtext[nn]->AddText(message.str().c_str());
471     message.str("");
472     message<<"n.BAD: l1- "; message.width(5);message<<ctrk.nbad1[n];
473     message<<" l2-"; message.width(5);message<< ctrk.nbad2[n];
474     message<<" l3-"; message.width(5);message<< ctrk.nbad3[n];
475     trkpadtext[nn]->AddText(message.str().c_str());
476     message.str("");
477    
478     if(calok==0){
479    
480     message.str("*** FAILED ***");
481     TText *t=trkpadtext[nn]->AddText(message.str().c_str());
482     t->SetTextSize(0.02);
483     t->SetTextAlign(23);
484     t->SetTextColor(5);
485     };
486    
487     /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
488     *
489     * Plot histo
490     *
491     *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/
492    
493    
494     /******************************************************/
495     /* fill histos */
496     for(Int_t j = 0; j < 3072; j++){
497 pam-fi 1.16 histosig[nn]->Fill(j,ctrk.dspsig[n][j]);
498     histoped[nn]->Fill(j,ctrk.dspped[n][j]);
499     if(j<1024) histosiglad[nn][0]->Fill(ctrk.dspsig[n][j]);
500     if(j>=1024 && j<2048) histosiglad[nn][1]->Fill(ctrk.dspsig[n][j]);
501     if(j>=2048 && j<3072) histosiglad[nn][2]->Fill(ctrk.dspsig[n][j]);
502 pam-fi 1.1 };
503 pam-fi 1.16 histoasig[nn]->Fill(1,ctrk.sig1[n]);
504     histoasig[nn]->Fill(1025,ctrk.sig2[n]);
505     histoasig[nn]->Fill(2049,ctrk.sig3[n]);
506 pam-fi 1.1 histoaped[nn]->Fill(1,ctrk.ped1[nn]);
507 pam-fi 1.16 histoaped[nn]->Fill(1025,ctrk.ped2[n]);
508     histoaped[nn]->Fill(2049,ctrk.ped3[n]);
509 pam-fi 1.1 /******************************************************/
510 pam-fi 1.20
511     TLine li,liva1;
512 pam-fi 1.1 li.SetLineColor(38);
513 pam-fi 1.20 li.SetLineStyle(4);
514 pam-fi 1.1 li.SetLineWidth(2);
515 pam-fi 1.20 liva1.SetLineColor(42);
516     liva1.SetLineStyle(3);
517     liva1.SetLineWidth(1);
518    
519     Float_t maxhist=0,va1x=0;
520 pam-fi 1.2 TBox b;
521 pam-fi 1.1 /* plot PEDESTAL */
522     c1->cd();
523     trkpadtext[nn]->Draw();
524     trkpad1[nn]->Draw();
525     trkpad1[nn]->cd();
526     trkpad1[nn]->SetFillColor(10);
527     trkpad1[nn]->SetFrameFillColor(10);
528 pam-fi 1.9 histoped[nn]->SetStats(kFALSE);
529 pam-fi 1.1 histoped[nn]->SetLineColor(1);
530     histoped[nn]->SetFillColor(12);
531     histoped[nn]->SetLineWidth(1);
532     histoped[nn]->GetYaxis()->SetTitle("PED (ADC channels)");
533     histoped[nn]->GetYaxis()->CenterTitle();
534 pam-fi 1.2 if((nn+1)%2==1) histoped[nn]->GetYaxis()->SetRangeUser(2200,3200);
535     if((nn+1)%2==0) histoped[nn]->GetYaxis()->SetRangeUser(700,1700);
536 pam-fi 1.1 histoaped[nn]->SetLineColor(5);
537     histoaped[nn]->SetLineWidth(1);
538 pam-fi 1.16 // if(ctrk.good0[0]==1 && ctrk.good0[1]==1){
539 pam-fi 1.2 histoped[nn]->Draw("b");
540 pam-fi 1.20 maxhist=histoped[nn]->GetMaximum();
541 pam-fi 1.18 if(nn==0){
542     b.SetFillColor(107);
543     b.SetFillStyle(3945);
544 pam-fi 1.24 b.DrawBox(256.,2200.,384.,maxhist);
545 pam-fi 1.19 b.DrawBox(768.,2200.,2047.,maxhist);
546 pam-fi 1.18 }
547     else if(nn==1){
548 pam-fi 1.9 b.SetFillColor(6);
549     b.SetFillStyle(3945);
550     b.DrawBox(2944.,700.,3060.,maxhist);
551    
552     b.SetFillColor(107);
553     b.SetFillStyle(3954);
554 pam-fi 1.22 b.DrawBox(384.,700.,512.,maxhist);
555 pam-fi 1.23 b.DrawBox(2048.,700.,2432.,maxhist);
556 pam-fi 1.9 b.DrawBox(2816.,700.,2944.,maxhist);
557 pam-fi 1.2 }
558 pam-fi 1.24 else if(nn==3){
559     b.SetFillColor(107);
560     b.SetFillStyle(3954);
561     b.DrawBox(2816.,700.,3070.,maxhist);
562     }
563 pam-fi 1.11 else if(nn==4){
564     b.SetFillColor(107);
565     b.SetFillStyle(3954);
566 pam-fi 1.24 b.DrawBox(256.,2200.,512.,maxhist);
567     b.DrawBox(2816.,2200.,3070.,maxhist);
568 pam-fi 1.11 }
569 pam-fi 1.2 else if(nn==6){
570 pam-fi 1.9 b.SetFillColor(6);
571     b.SetFillStyle(3945);
572 pam-fi 1.22 b.DrawBox(1024.,2200.,1280.,maxhist);
573 pam-fi 1.9
574     b.SetFillColor(107);
575     b.SetFillStyle(3954);
576 pam-fi 1.2 b.DrawBox(512.,2200.,768.,maxhist);
577 pam-fi 1.22 b.DrawBox(1280.,2200.,1792.,maxhist);
578 pam-fi 1.23 b.DrawBox(2560.,2200.,2816.,maxhist);
579 pam-fi 1.9 }
580     else if(nn==7){
581     b.SetFillColor(107);
582     b.SetFillStyle(3954);
583     b.DrawBox(512.,700.,768.,maxhist);
584 pam-fi 1.24 b.DrawBox(1024.,700.,1535.,maxhist);
585 pam-fi 1.2 }
586 pam-fi 1.19 else if(nn==8){
587     b.SetFillColor(107);
588     b.SetFillStyle(3954);
589     b.DrawBox(512.,2200.,768.,maxhist);
590     }
591 pam-fi 1.15 else if(nn==9){
592     b.SetFillColor(107);
593     b.SetFillStyle(3954);
594     b.DrawBox(256.,700.,384.,maxhist);
595 pam-fi 1.22 b.DrawBox(1280.,700.,1535.,maxhist);
596     b.DrawBox(1792.,700.,1920.,maxhist);
597 pam-fi 1.15 }
598 pam-fi 1.20 else if(nn==10){
599     b.SetFillColor(107);
600     b.SetFillStyle(3954);
601 pam-fi 1.23 b.DrawBox(1024.,2200.,1152.,maxhist);
602 pam-fi 1.21 b.DrawBox(2048.,2200.,3070.,maxhist);
603 pam-fi 1.20 }
604 pam-fi 1.2 else if(nn==11){
605 pam-fi 1.9 b.SetFillColor(6);
606     b.SetFillStyle(3945);
607 pam-fi 1.2 b.DrawBox(768.,700.,1024.,maxhist);
608 pam-fi 1.9
609     b.SetFillColor(107);
610     b.SetFillStyle(3954);
611     b.DrawBox(0.,700.,512.,maxhist);
612 pam-fi 1.16 b.DrawBox(1920.,700.,2560.,maxhist);
613 pam-fi 1.2 }
614 pam-fi 1.16 // }
615     // else histoped[nn]->Draw("axis");
616 pam-fi 1.1 histoaped[nn]->Draw("same");
617     if((nn+1)%2==1) {
618 pam-fi 1.20 for(int va=1; va<24; va++){
619     va1x=128*va;
620     liva1.DrawLine(va1x,2200.,va1x,3200.);
621     }
622     li.DrawLine(1024.5,2200.,1024.5,3200.);
623     li.DrawLine(2048.5,2200.,2048.5,3200.);
624 pam-fi 1.1 }
625     if((nn+1)%2==0) {
626 pam-fi 1.20 for(int va=1; va<24; va++){
627     va1x=128*va;
628     liva1.DrawLine(va1x,700.,va1x,1700.);
629     }
630 pam-fi 1.2 li.DrawLine(1024.5,700,1024.5,1700);
631     li.DrawLine(2048.5,700,2048.5,1700);
632 pam-fi 1.1 }
633 pam-fi 1.16 c1->Update();//draw pads in canvas
634 pam-fi 1.1
635 pam-fi 1.2
636 pam-fi 1.1
637     /* plot SIGMA */
638 pam-fi 1.3 Float_t max=500.;
639 pam-fi 1.1 c2->cd();
640     trkpadtext[nn]->Draw();
641     trkpad2[nn]->SetLogy();
642     trkpad2[nn]->Draw();
643     trkpad2[nn]->cd();
644     trkpad2[nn]->SetFillColor(10);
645     trkpad2[nn]->SetFrameFillColor(10);
646 pam-fi 1.9 histosig[nn]->SetStats(kFALSE);
647 pam-fi 1.1 histosig[nn]->SetLineColor(1);
648     histosig[nn]->SetFillColor(12);
649     histosig[nn]->SetLineWidth(1);
650     histosig[nn]->SetMaximum(max);
651     histosig[nn]->SetMinimum(0.5);
652     histosig[nn]->GetYaxis()->SetTitle("SIG (ADC channels)");
653     histosig[nn]->GetYaxis()->CenterTitle();
654     histoasig[nn]->SetLineColor(5);
655     histoasig[nn]->SetLineWidth(1);
656 pam-fi 1.16 // if(ctrk.good0[0]==1 && ctrk.good0[1]==1){
657 pam-fi 1.20 histosig[nn]->Draw("b");
658     maxhist=histosig[nn]->GetMaximum();
659 pam-fi 1.18 if(nn==0){
660     b.SetFillColor(107);
661     b.SetFillStyle(3945);
662 pam-fi 1.24 b.DrawBox(256.,0.,384.,maxhist);
663 pam-fi 1.18 b.DrawBox(768.,0.,2047.,maxhist);
664     }
665     else if(nn==1){
666 pam-fi 1.9 b.SetFillColor(6);
667     b.SetFillStyle(3945);
668 pam-fi 1.20 b.DrawBox(2944.,0.,3070.,maxhist);
669 pam-fi 1.9
670     b.SetFillColor(107);
671     b.SetFillStyle(3954);
672 pam-fi 1.22 b.DrawBox(384.,0.,512.,maxhist);
673 pam-fi 1.23 b.DrawBox(2048.,0.,2432.,maxhist);
674 pam-fi 1.9 b.DrawBox(2816.,0.,2944.,maxhist);
675 pam-fi 1.2 }
676 pam-fi 1.24 else if(nn==3){
677     b.SetFillColor(107);
678     b.SetFillStyle(3954);
679     b.DrawBox(2816.,0.,3070.,maxhist);
680     }
681 pam-fi 1.11 else if(nn==4){
682     b.SetFillColor(107);
683     b.SetFillStyle(3954);
684 pam-fi 1.24 b.DrawBox(256.,0.,512.,maxhist);
685     b.DrawBox(2816.,0.,3070.,maxhist);
686 pam-fi 1.11 }
687 pam-fi 1.2 else if(nn==6){
688 pam-fi 1.9 b.SetFillColor(6);
689     b.SetFillStyle(3945);
690 pam-fi 1.22 b.DrawBox(1024.,0.,1280.,maxhist);
691 pam-fi 1.9
692     b.SetFillColor(107);
693     b.SetFillStyle(3954);
694     b.DrawBox(512.,0.,768.,maxhist);
695 pam-fi 1.22 b.DrawBox(1280.,0.,1792.,maxhist);
696 pam-fi 1.23 b.DrawBox(2560.,0.,2816.,maxhist);
697 pam-fi 1.9 }
698     else if(nn==7){
699     b.SetFillColor(107);
700     b.SetFillStyle(3954);
701 pam-fi 1.2 b.DrawBox(512.,0.,768.,maxhist);
702 pam-fi 1.24 b.DrawBox(1024.,0.,1535.,maxhist);
703 pam-fi 1.2 }
704 pam-fi 1.19 else if(nn==8){
705     b.SetFillColor(107);
706     b.SetFillStyle(3954);
707     b.DrawBox(512.,0.,768.,maxhist);
708     }
709 pam-fi 1.15 else if(nn==9){
710     b.SetFillColor(107);
711     b.SetFillStyle(3954);
712     b.DrawBox(256.,0.,384.,maxhist);
713 pam-fi 1.22 b.DrawBox(1280.,0.,1535.,maxhist);
714     b.DrawBox(1792.,0.,1920.,maxhist);
715 pam-fi 1.15 }
716 pam-fi 1.20 else if(nn==10){
717     b.SetFillColor(107);
718     b.SetFillStyle(3954);
719 pam-fi 1.23 b.DrawBox(1024.,0.,1152.,maxhist);
720 pam-fi 1.21 b.DrawBox(2048.,0.,3070.,maxhist);
721 pam-fi 1.20 }
722 pam-fi 1.2 else if(nn==11){
723 pam-fi 1.9 b.SetFillColor(6);
724     b.SetFillStyle(3945);
725 pam-fi 1.2 b.DrawBox(768.,0.,1024.,maxhist);
726 pam-fi 1.9
727     b.SetFillColor(107);
728     b.SetFillStyle(3954);
729     b.DrawBox(0.,0.,512.,maxhist);
730 pam-fi 1.16 b.DrawBox(1920.,0.,2560.,maxhist);
731 pam-fi 1.2 }
732 pam-fi 1.16 // }
733     // else histosig[nn]->Draw("axis");
734 pam-fi 1.1 histoasig[nn]->Draw("same");
735 pam-fi 1.20 for(int va=1; va<24; va++){
736     va1x=128*va;
737     liva1.DrawLine(va1x,0.,va1x,max);
738     }
739 pam-fi 1.1 li.DrawLine(1024.5,0,1024.5,max);
740     li.DrawLine(2048.5,0,2048.5,max);
741 pam-fi 1.20 c2->Update();//draw pads in canvas
742 pam-fi 1.2
743 pam-fi 1.9 for(int ii=0;ii<3;ii++){
744     sig->cd();
745     trkpad3[nn*3+ii]->Draw();
746     trkpad3[nn*3+ii]->cd();
747     trkpad3[nn*3+ii]->SetFillColor(10);
748     trkpad3[nn*3+ii]->SetFrameFillColor(10);
749     trkpad3[nn*3+ii]->SetLogy();
750     histosiglad[nn][ii]->SetLineColor(1);
751     histosiglad[nn][ii]->SetFillColor(1);
752     histosiglad[nn][ii]->SetLineWidth(1);
753     histosiglad[nn][ii]->GetXaxis()->SetTitle("SIG (ADC channels)");
754     histosiglad[nn][ii]->GetXaxis()->CenterTitle();
755     histosiglad[nn][ii]->Draw("");
756 pam-fi 1.16 }
757    
758 pam-fi 1.1 };//end loop on views
759     c1->Update();//draw pads in canvas
760     c2->Update();//draw pads in canvas
761 pam-fi 1.9 sig->Update();//draw pads in canvas
762    
763     stringstream nom1,nom2,nom3;
764    
765 pam-fi 1.1 if(!strcmp(outfile.Data(),"ps")||!strcmp(outfile.Data(),"pdf")){
766     nom1.str("");
767     nom2.str("");
768 pam-fi 1.9 nom3.str("");
769 pam-fi 1.1 nom1<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps(";
770 pam-fi 1.9 nom2<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps";
771     nom3<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps)";
772 pam-fi 1.1 c1->Print(nom1.str().c_str(),"Landscape");
773     c2->Print(nom2.str().c_str(),"Landscape");
774 pam-fi 1.9 sig->Print(nom3.str().c_str(),"Landscape");
775    
776 pam-fi 1.1 if(!strcmp(outfile.Data(),"pdf")){
777     stringstream com;
778     com<<"ps2pdf13 "<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps "<<out<<ffile<<"_FTrkCalibQlook_EXPERT-pkt"<<i+1<<".pdf";
779     system(com.str().c_str());
780     printf("\n---> ps file converted in pdf format!\n");
781     com.str("");
782     com<<"rm -f "<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps";
783     system(com.str().c_str());
784     printf("---> ps file removed!\n\n");
785     com.str("");
786     }
787     }
788     else{
789     nom1.str("");
790     nom2.str("");
791 pam-fi 1.9 nom3.str("");
792 pam-fi 1.1 nom1<<out<<ffile<<"_FTrkCalibQLook_EXPERT-ped-pkt"<<i+1<<"."<<outfile.Data();
793     nom2<<out<<ffile<<"_FTrkCalibQLook_EXPERT-sig-pkt"<<i+1<<"."<<outfile.Data();
794 pam-fi 1.9 nom3<<out<<ffile<<"_FTrkCalibQLook_EXPERT-histosig-pkt"<<i+1<<"."<<outfile.Data();
795 pam-fi 1.1 c1->Print(nom1.str().c_str());
796     c2->Print(nom2.str().c_str());
797 pam-fi 1.9 sig->Print(nom3.str().c_str());
798 pam-fi 1.1 }
799 pam-fi 1.9
800 pam-fi 1.1 if(step==1 && i!=maxevent-1 ){
801     printf("\n Press 1<enter> to continue, 2<enter> to quit.\n");
802     cin>>risposta;
803     if ( i != maxevent-1 ) {
804     if ( risposta == 2 ) {
805     gROOT->Reset();
806     printf("Exiting...\n");
807     return;
808     }
809     }
810     }
811     };//end loop on events
812    
813     gROOT->Reset();
814     printf("... end of packets. \n");
815     return;
816     }
817    
818    

  ViewVC Help
Powered by ViewVC 1.1.23