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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.30 - (show annotations) (download)
Mon Jul 30 14:23:02 2007 UTC (17 years, 4 months ago) by pam-fi
Branch: MAIN
CVS Tags: v1r31
Changes since 1.29: +45 -18 lines
*** empty log message ***

1 /**
2 * FTrkCalibQLookExpert.cxx
3 *
4 * autor: D.Fedele
5 * version v1r28
6 * 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 #include <TFile.h>
22 #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 typedef struct caltrk_def{
34 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 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
67 TString out;
68 if(outdir.Length()==0){
69 out = base;
70 }else{
71 out = outdir;
72 }
73 if(out.Last('/')+1<out.Length()) out+="/";
74
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 ULong_t FOBT[2];
81
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 ctrk.dspnum[i]=0;
91 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 pamela::CalibTrk2Event *trk2 = 0;
125 pamela::EventCounter *cod=0;
126
127 pamela::PacketType *pctp=0;
128
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 maxevent = nevents;
180 };
181 };
182
183 //**********************************************************************
184 //
185 // LOOP OVER EVENTS
186 //
187 //**********************************************************************
188
189 Int_t hcevent=hotr->GetEntries();
190 Int_t tcevent=totr->GetEntries();
191 ULong_t HOBT[hcevent], TOBT[tcevent];
192 for (Int_t i = 0; i < hcevent; i++){
193 hotr->GetEntry(i);
194 ph = eh4->GetPscuHeader();
195 HOBT[i]= ph->GetOrbitalTime();
196 }
197 for (Int_t i = 0; i < tcevent; i++){
198 totr->GetEntry(i);
199 ph = eh3->GetPscuHeader();
200 TOBT[i]= ph->GetOrbitalTime();
201 }
202
203 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 otr2->GetEntry(i);
208
209 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 cod = eh1->GetCounter();
214 FOBT[0]= ph->GetOrbitalTime();
215 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 ph = eh2->GetPscuHeader();
243 FOBT[1]= ph->GetOrbitalTime();
244 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 }
271 }
272
273
274 //
275 // other variables definitions
276
277 Int_t risposta=0;
278 stringstream fromfile,isfile;
279
280 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
282 gStyle->SetLabelSize(0.07,"x");
283 gStyle->SetLabelSize(0.07,"y");
284 gStyle->SetTitleFillColor(10);
285 gStyle->SetTitleFontSize(0.08);
286 gStyle->SetTitleOffset(0.8,"y");
287 gStyle->SetTitleOffset(0.9,"x");
288 gStyle->SetTitleSize(0.06,"y");
289 gStyle->SetTitleSize(0.06,"x");
290 gStyle->SetOptStat(101110);
291 gStyle->SetStatX(0.9);
292 gStyle->SetStatW(0.4);
293 gStyle->SetStatColor(10);
294 gStyle->SetStatFontSize(0.1);
295
296 //
297 // draw display area
298
299 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,.98,fromfile.str().c_str());
309 tzz->DrawLatex(.90,.98,"PEDESTAL");
310
311 isfile<<"Boxes so colored point out chips broken before the launch and never resumed";
312 tzz->SetTextColor(6);
313 tzz->SetTextSize(0.018);
314 tzz->DrawLatex(.5,.96,isfile.str().c_str());
315 isfile.str("");
316
317 isfile<<"Boxes so colored point out anomalous chips (not necessarily broken)";
318 tzz->SetTextColor(107);
319 tzz->DrawLatex(.05,.96,isfile.str().c_str());
320 isfile.str("");
321
322 TCanvas *c2 = new TCanvas("c2","FTrkCalibQLook_EXPERT_sig",canvasx,canvasy);
323 c2->SetFillColor(10);
324 tzz->SetTextColor(1);
325 tzz->DrawLatex(.01,.98,fromfile.str().c_str());
326 tzz->DrawLatex(.90,.98,"SIGMA");
327
328 isfile<<"Boxes so colored point out chips broken before the launch and never resumed";
329 tzz->SetTextColor(6);
330 tzz->SetTextSize(0.018);
331 tzz->DrawLatex(.5,.96,isfile.str().c_str());
332 isfile.str("");
333
334 isfile<<"Boxes so colored point out anomalous chips (not necessarily broken)";
335 tzz->SetTextColor(107);
336 tzz->DrawLatex(.05,.96,isfile.str().c_str());
337 isfile.str("");
338
339
340 TCanvas *sig=new TCanvas("sig","FTrkCalibQLook_EXPERT_histosig",canvasx,canvasy);
341 sig->SetFillColor(10);
342 tzz->SetTextColor(1);
343 tzz->DrawLatex(.01,.98,fromfile.str().c_str());
344 tzz->DrawLatex(.85,.97,"Histograms of the sigmas");
345
346
347
348 // draw pads
349 TPad *trkpad1[12],*trkpad2[12],*trkpad3[36]; //pad for histos
350 TPaveText *trkpadtext[12]; //pad for header
351 TH1F *histosig[12]; //histos of sigma
352 TH1F *histoped[12]; //histos of pedestals
353 TH1F *histoasig[12]; //histos of sigma
354 TH1F *histoaped[12]; //histos of pedestals
355
356 TH1F *histosiglad[12][3]; //histos of sigma
357 stringstream title;
358 stringstream hid;
359
360 Float_t posy = 0.95; // up y-coord - top pads
361 Float_t hpad = 0.15; // pad height
362 Float_t posx1=0; // left x-coord - pad column
363 Float_t posx2=0; // right x-coord - pad olumn
364 Float_t posx0=0; // x-coord - column division
365 Float_t wrel = 0.6; // relative x size of first sub-column
366 Float_t marg = 0.004; // margin among pads
367
368
369 for(Int_t n = 0; n<12; n++){
370 if ( (n+1)%2 ) {
371 if(n>1)posy = posy-(marg*2+hpad);
372 posx1 = marg;
373 posx2 = 0.5 - marg;
374 posx0 = 0.5*wrel;
375
376 } else {
377 posx1 = posx1 + 0.5;
378 posx2 = posx2 + 0.5;
379 posx0 = posx0 + 0.5;
380
381 };
382 /* -----------> pad for histograms */
383 trkpad1[n] = new TPad("pad1"," ",posx1,posy-hpad,posx0-marg,posy,18,0,0);
384 trkpad2[n] = new TPad("pad2"," ",posx1,posy-hpad,posx0-marg,posy,18,0,0);
385 /* -----------> pad for header dump */
386 trkpadtext[n] = new TPaveText((posx0+marg),(posy-hpad),posx2,posy);
387 /* -----------> HISTOGRAMS */
388 /* calibration parameters */
389 title<<"DSP "<<n+1;
390 hid<<"h"<<n<<"i"<<i;
391 histosig[n] = new TH1F(hid.str().c_str(),title.str().c_str(),3072,0.5,3072.5);
392 hid.str("");
393 hid<<"hh"<<n<<"i"<<i;
394 histoped[n] = new TH1F(hid.str().c_str(),title.str().c_str(),3072,0.5,3072.5);
395 hid.str("");
396 hid<<"hhh"<<n<<"i"<<i;
397 hid.str("");
398 /* AVERAGE calibration parameters */
399 hid<<"ah"<<n<<"i"<<i;
400 histoasig[n] = new TH1F(hid.str().c_str(),title.str().c_str(),3,0.5,3072.5);
401 hid.str("");
402 hid<<"ahh"<<n<<"i"<<i;
403 histoaped[n] = new TH1F(hid.str().c_str(),title.str().c_str(),3,0.5,3072.5);
404 hid.str("");
405 for(int ii=0;ii<3;ii++){
406 title.str("");
407 title<<"DSP "<<n+1<<" / Lad "<<ii+1;
408 hid<<"hhhh"<<n<<"i"<<i<<"ii"<<ii;
409 histosiglad[n][ii] = new TH1F(hid.str().c_str(),title.str().c_str(),32,-0.5,30.5);
410 hid.str("");
411 }
412 title.str("");
413 }; //end loop on views
414
415 Float_t tposy = 0.95; // up y-coord - top pads
416 Float_t thpad = 0.; // pad height
417 Float_t tposx1=0; // left x-coord - pad column
418 Float_t tposx0=0; // x-coord - column division
419 Float_t twrel = 0.; // relative x size of first sub-column
420 Float_t tmarg = 0.002; // margin among pads
421 thpad = (tposy-tmarg*11)/6;
422 twrel = (1-tmarg*12)/6;
423
424 for(Int_t n = 0; n<36; n++){
425 if ( (n+1)%6==1 ) {
426 if(n>1) tposy = tposy-(tmarg*2+thpad);
427 tposx1 = tmarg;
428 tposx0 = tposx1 + twrel;
429 } else {
430 tposx1 = tposx0 + 2*tmarg;
431 tposx0 = tposx1 + twrel;
432 }
433 trkpad3[n]= new TPad("pad3"," ",tposx1,tposy-thpad,tposx0,tposy,18,0,0);
434 }
435
436
437 stringstream message;
438
439 //--------------------------------
440 //CHECK CALIBRATION procedure
441 //--------------------------------
442 Int_t nn=0;
443 Int_t calok = 0;//BAD
444 for(Int_t n = 0; n<12; n++){
445 if(ctrk.ncalev[n]==0 && ctrk.calfl[n]==0)calok = 1;//GOOD
446
447 if(ctrk.dspnum[n]==0)
448 continue;
449
450 nn=ctrk.dspnum[n]-1;
451 /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
452 *
453 * Write event LEVEL0 report
454 *
455 *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/
456 trkpadtext[nn]->SetTextFont(40);
457 trkpadtext[nn]->SetFillColor(33);
458 if(calok==0)trkpadtext[nn]->SetFillColor(2);
459 trkpadtext[nn]->SetTextSize(0.013);
460 trkpadtext[nn]->SetTextAlign(13);
461 trkpadtext[nn]->SetTextColor(1);
462
463 trkpadtext[nn]->AddText(" ");
464 message<<"DSP num --------> "<<ctrk.dspnum[n];
465 trkpadtext[nn]->AddText(message.str().c_str());
466 message.str("");
467 message<<"DAQ mode -------> "<<ctrk.daqmode[n];
468 trkpadtext[nn]->AddText(message.str().c_str());
469 message.str("");
470 message<<"Calibnumber ----> "<<ctrk.calibnum[n];
471 trkpadtext[nn]->AddText(message.str().c_str());
472 message.str("");
473 message<<"ncalib_event ---> "<<ctrk.ncalev[n];
474 trkpadtext[nn]->AddText(message.str().c_str());
475 message.str("");
476 message<<"Cal_flag -------> "<<ctrk.calfl[n];
477 trkpadtext[nn]->AddText(message.str().c_str());
478 message.str("");
479 message<<"crc_hcal -------> "<<ctrk.crc_hc[n];
480 trkpadtext[nn]->AddText(message.str().c_str());
481 message.str("");
482 message<<"crc_cal: l1- ";message.width(5);message<< ctrk.crc_c[n][0];
483 message<<" l2- ";message.width(5);message<< ctrk.crc_c[n][1];
484 message<<" l3- ";message.width(5);message<< ctrk.crc_c[n][2];
485 trkpadtext[nn]->AddText(message.str().c_str());
486 message.str("");
487 message<<"<PED>: l1- "; message.width(5);message<< ctrk.ped1[n];
488 message<<" l2-"; message.width(5);message<< ctrk.ped2[n];
489 message<<" l3-"; message.width(5);message<< ctrk.ped3[n];
490 trkpadtext[nn]->AddText(message.str().c_str());
491 message.str("");
492 message<<"<SIG>: l1- "; message.width(5);message<< ctrk.sig1[n];
493 message<<" l2-"; message.width(5);message<< ctrk.sig2[n];
494 message<<" l3-"; message.width(5);message<< ctrk.sig3[n];
495 trkpadtext[nn]->AddText(message.str().c_str());
496 message.str("");
497 message<<"n.BAD: l1- "; message.width(5);message<<ctrk.nbad1[n];
498 message<<" l2-"; message.width(5);message<< ctrk.nbad2[n];
499 message<<" l3-"; message.width(5);message<< ctrk.nbad3[n];
500 trkpadtext[nn]->AddText(message.str().c_str());
501 message.str("");
502
503 if(calok==0){
504
505 message.str("*** FAILED ***");
506 TText *t=trkpadtext[nn]->AddText(message.str().c_str());
507 t->SetTextSize(0.02);
508 t->SetTextAlign(23);
509 t->SetTextColor(5);
510 };
511
512 /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
513 *
514 * Plot histo
515 *
516 *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/
517
518
519 /******************************************************/
520 /* fill histos */
521 for(Int_t j = 0; j < 3072; j++){
522 histosig[nn]->Fill(j,ctrk.dspsig[n][j]);
523 histoped[nn]->Fill(j,ctrk.dspped[n][j]);
524 if(j<1024) histosiglad[nn][0]->Fill(ctrk.dspsig[n][j]);
525 if(j>=1024 && j<2048) histosiglad[nn][1]->Fill(ctrk.dspsig[n][j]);
526 if(j>=2048 && j<3072) histosiglad[nn][2]->Fill(ctrk.dspsig[n][j]);
527 };
528 histoasig[nn]->Fill(1,ctrk.sig1[n]);
529 histoasig[nn]->Fill(1025,ctrk.sig2[n]);
530 histoasig[nn]->Fill(2049,ctrk.sig3[n]);
531 histoaped[nn]->Fill(1,ctrk.ped1[nn]);
532 histoaped[nn]->Fill(1025,ctrk.ped2[n]);
533 histoaped[nn]->Fill(2049,ctrk.ped3[n]);
534 /******************************************************/
535
536 TLine li,liva1;
537 li.SetLineColor(38);
538 li.SetLineStyle(4);
539 li.SetLineWidth(2);
540 liva1.SetLineColor(42);
541 liva1.SetLineStyle(3);
542 liva1.SetLineWidth(1);
543
544 Float_t maxhist=0,va1x=0;
545 TBox b;
546 /* plot PEDESTAL */
547 c1->cd();
548 trkpadtext[nn]->Draw();
549 trkpad1[nn]->Draw();
550 trkpad1[nn]->cd();
551 trkpad1[nn]->SetFillColor(10);
552 trkpad1[nn]->SetFrameFillColor(10);
553 histoped[nn]->SetStats(kFALSE);
554 histoped[nn]->SetLineColor(1);
555 histoped[nn]->SetFillColor(12);
556 histoped[nn]->SetLineWidth(1);
557 histoped[nn]->GetYaxis()->SetTitle("PED (ADC channels)");
558 histoped[nn]->GetYaxis()->CenterTitle();
559 if((nn+1)%2==1) histoped[nn]->GetYaxis()->SetRangeUser(2200,3200);
560 if((nn+1)%2==0) histoped[nn]->GetYaxis()->SetRangeUser(700,1700);
561 histoaped[nn]->SetLineColor(5);
562 histoaped[nn]->SetLineWidth(1);
563 // if(ctrk.good0[0]==1 && ctrk.good0[1]==1){
564 histoped[nn]->Draw("b");
565 maxhist=histoped[nn]->GetMaximum();
566 if(nn==0){
567 b.SetFillColor(107);
568 b.SetFillStyle(3945);
569 b.DrawBox(256.,2200.,384.,maxhist);
570 b.DrawBox(768.,2200.,2047.,maxhist);
571 }
572 else if(nn==1){
573 b.SetFillColor(6);
574 b.SetFillStyle(3945);
575 b.DrawBox(2944.,700.,3060.,maxhist);
576
577 b.SetFillColor(107);
578 b.SetFillStyle(3954);
579 b.DrawBox(384.,700.,512.,maxhist);
580 b.DrawBox(896.,700.,1024.,maxhist);
581 b.DrawBox(2048.,700.,2432.,maxhist);
582 b.DrawBox(2816.,700.,2944.,maxhist);
583 }
584 else if(nn==3){
585 b.SetFillColor(107);
586 b.SetFillStyle(3954);
587 b.DrawBox(2816.,700.,3070.,maxhist);
588 }
589 else if(nn==4){
590 b.SetFillColor(107);
591 b.SetFillStyle(3954);
592 b.DrawBox(256.,2200.,512.,maxhist);
593 b.DrawBox(2816.,2200.,3070.,maxhist);
594 }
595 else if(nn==5){
596 b.SetFillColor(107);
597 b.SetFillStyle(3954);
598 b.DrawBox(896.,700.,1024.,maxhist);
599 // b.DrawBox(1664.,0.,1792.,maxhist);
600 }
601 else if(nn==6){
602 b.SetFillColor(107);
603 b.SetFillStyle(3954);
604 b.DrawBox(512.,2200.,768.,maxhist);
605 b.DrawBox(1024.,2200.,1280.,maxhist);
606 b.DrawBox(1280.,2200.,1792.,maxhist);
607 b.DrawBox(2560.,2200.,2816.,maxhist);
608 }
609 else if(nn==7){
610 b.SetFillColor(107);
611 b.SetFillStyle(3954);
612 b.DrawBox(512.,700.,768.,maxhist);
613 b.DrawBox(896.,700.,1535.,maxhist);
614 b.DrawBox(2024.,700.,2280.,maxhist);
615 }
616 else if(nn==8){
617 b.SetFillColor(107);
618 b.SetFillStyle(3954);
619 b.DrawBox(512.,2200.,768.,maxhist);
620 }
621 else if(nn==9){
622 b.SetFillColor(107);
623 b.SetFillStyle(3954);
624 b.DrawBox(0.,700.,128.,maxhist);
625 b.DrawBox(256.,700.,384.,maxhist);
626 b.DrawBox(512.,700.,640.,maxhist);
627 b.DrawBox(896.,700.,1024.,maxhist);
628 b.DrawBox(1280.,700.,1535.,maxhist);
629 b.DrawBox(1664.,700.,1920.,maxhist);
630 }
631 else if(nn==10){
632 b.SetFillColor(107);
633 b.SetFillStyle(3954);
634 b.DrawBox(0.,2200.,512.,maxhist);
635 b.DrawBox(1024.,2200.,3070.,maxhist);
636 }
637 else if(nn==11){
638 b.SetFillColor(6);
639 b.SetFillStyle(3945);
640 b.DrawBox(768.,700.,1024.,maxhist);
641
642 b.SetFillColor(107);
643 b.SetFillStyle(3954);
644 b.DrawBox(0.,700.,512.,maxhist);
645 b.DrawBox(1920.,700.,2560.,maxhist);
646 b.DrawBox(2816.,700.,3070.,maxhist);
647 }
648 // }
649 // else histoped[nn]->Draw("axis");
650 histoaped[nn]->Draw("same");
651 if((nn+1)%2==1) {
652 for(int va=1; va<24; va++){
653 va1x=128*va;
654 liva1.DrawLine(va1x,2200.,va1x,3200.);
655 }
656 li.DrawLine(1024.5,2200.,1024.5,3200.);
657 li.DrawLine(2048.5,2200.,2048.5,3200.);
658 }
659 if((nn+1)%2==0) {
660 for(int va=1; va<24; va++){
661 va1x=128*va;
662 liva1.DrawLine(va1x,700.,va1x,1700.);
663 }
664 li.DrawLine(1024.5,700,1024.5,1700);
665 li.DrawLine(2048.5,700,2048.5,1700);
666 }
667 c1->Update();//draw pads in canvas
668
669
670
671 /* plot SIGMA */
672 Float_t max=500.;
673 c2->cd();
674 trkpadtext[nn]->Draw();
675 trkpad2[nn]->SetLogy();
676 trkpad2[nn]->Draw();
677 trkpad2[nn]->cd();
678 trkpad2[nn]->SetFillColor(10);
679 trkpad2[nn]->SetFrameFillColor(10);
680 histosig[nn]->SetStats(kFALSE);
681 histosig[nn]->SetLineColor(1);
682 histosig[nn]->SetFillColor(12);
683 histosig[nn]->SetLineWidth(1);
684 histosig[nn]->SetMaximum(max);
685 histosig[nn]->SetMinimum(0.5);
686 histosig[nn]->GetYaxis()->SetTitle("SIG (ADC channels)");
687 histosig[nn]->GetYaxis()->CenterTitle();
688 histoasig[nn]->SetLineColor(5);
689 histoasig[nn]->SetLineWidth(1);
690 // if(ctrk.good0[0]==1 && ctrk.good0[1]==1){
691 histosig[nn]->Draw("b");
692 maxhist=histosig[nn]->GetMaximum();
693 if(nn==0){
694 b.SetFillColor(107);
695 b.SetFillStyle(3945);
696 b.DrawBox(256.,0.,384.,maxhist);
697 b.DrawBox(768.,0.,2047.,maxhist);
698 }
699 else if(nn==1){
700 b.SetFillColor(6);
701 b.SetFillStyle(3945);
702 b.DrawBox(2944.,0.,3070.,maxhist);
703
704 b.SetFillColor(107);
705 b.SetFillStyle(3954);
706 b.DrawBox(384.,0.,512.,maxhist);
707 b.DrawBox(896.,0.,1024.,maxhist);
708 b.DrawBox(2048.,0.,2432.,maxhist);
709 b.DrawBox(2816.,0.,2944.,maxhist);
710 }
711 else if(nn==3){
712 b.SetFillColor(107);
713 b.SetFillStyle(3954);
714 b.DrawBox(2816.,0.,3070.,maxhist);
715 }
716 else if(nn==4){
717 b.SetFillColor(107);
718 b.SetFillStyle(3954);
719 b.DrawBox(256.,0.,512.,maxhist);
720 b.DrawBox(2816.,0.,3070.,maxhist);
721 }
722 else if(nn==5){
723 b.SetFillColor(107);
724 b.SetFillStyle(3954);
725 b.DrawBox(896.,0.,1024.,maxhist);
726 // b.DrawBox(1664.,0.,1792.,maxhist);
727 }
728 else if(nn==6){
729 b.SetFillColor(107);
730 b.SetFillStyle(3954);
731 b.DrawBox(512.,0.,768.,maxhist);
732 b.DrawBox(1024.,0.,1280.,maxhist);
733 b.DrawBox(1280.,0.,1792.,maxhist);
734 b.DrawBox(2560.,0.,2816.,maxhist);
735 }
736 else if(nn==7){
737 b.SetFillColor(107);
738 b.SetFillStyle(3954);
739 b.DrawBox(512.,0.,768.,maxhist);
740 b.DrawBox(896.,0.,1535.,maxhist);
741 b.DrawBox(2024.,0.,2280.,maxhist);
742 }
743 else if(nn==8){
744 b.SetFillColor(107);
745 b.SetFillStyle(3954);
746 b.DrawBox(512.,0.,768.,maxhist);
747 }
748 else if(nn==9){
749 b.SetFillColor(107);
750 b.SetFillStyle(3954);
751 b.DrawBox(0.,0.,128.,maxhist);
752 b.DrawBox(256.,0.,384.,maxhist);
753 b.DrawBox(512.,0.,640.,maxhist);
754 b.DrawBox(896.,0.,1024.,maxhist);
755 b.DrawBox(1280.,0.,1535.,maxhist);
756 b.DrawBox(1664.,0.,1920.,maxhist);
757 }
758 else if(nn==10){
759 b.SetFillColor(107);
760 b.SetFillStyle(3954);
761 b.DrawBox(0.,0.,512.,maxhist);
762 b.DrawBox(1024.,0.,3070.,maxhist);
763 }
764 else if(nn==11){
765 b.SetFillColor(6);
766 b.SetFillStyle(3945);
767 b.DrawBox(768.,0.,1024.,maxhist);
768
769 b.SetFillColor(107);
770 b.SetFillStyle(3954);
771 b.DrawBox(0.,0.,512.,maxhist);
772 b.DrawBox(1920.,0.,2560.,maxhist);
773 b.DrawBox(2816.,0.,3070.,maxhist);
774 }
775 // }
776 // else histosig[nn]->Draw("axis");
777 histoasig[nn]->Draw("same");
778 for(int va=1; va<24; va++){
779 va1x=128*va;
780 liva1.DrawLine(va1x,0.,va1x,max);
781 }
782 li.DrawLine(1024.5,0,1024.5,max);
783 li.DrawLine(2048.5,0,2048.5,max);
784 c2->Update();//draw pads in canvas
785
786 for(int ii=0;ii<3;ii++){
787 sig->cd();
788 trkpad3[nn*3+ii]->Draw();
789 trkpad3[nn*3+ii]->cd();
790 trkpad3[nn*3+ii]->SetFillColor(10);
791 trkpad3[nn*3+ii]->SetFrameFillColor(10);
792 trkpad3[nn*3+ii]->SetLogy();
793 histosiglad[nn][ii]->SetLineColor(1);
794 histosiglad[nn][ii]->SetFillColor(1);
795 histosiglad[nn][ii]->SetLineWidth(1);
796 histosiglad[nn][ii]->GetXaxis()->SetTitle("SIG (ADC channels)");
797 histosiglad[nn][ii]->GetXaxis()->CenterTitle();
798 histosiglad[nn][ii]->Draw("");
799 }
800
801 };//end loop on views
802 c1->Update();//draw pads in canvas
803 c2->Update();//draw pads in canvas
804 sig->Update();//draw pads in canvas
805
806 stringstream nom1,nom2,nom3;
807
808 if(!strcmp(outfile.Data(),"ps")||!strcmp(outfile.Data(),"pdf")){
809 nom1.str("");
810 nom2.str("");
811 nom3.str("");
812 nom1<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps(";
813 nom2<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps";
814 nom3<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps)";
815 c1->Print(nom1.str().c_str(),"Landscape");
816 c2->Print(nom2.str().c_str(),"Landscape");
817 sig->Print(nom3.str().c_str(),"Landscape");
818
819 if(!strcmp(outfile.Data(),"pdf")){
820 stringstream com;
821 com<<"ps2pdf13 "<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps "<<out<<ffile<<"_FTrkCalibQlook_EXPERT-pkt"<<i+1<<".pdf";
822 system(com.str().c_str());
823 printf("\n---> ps file converted in pdf format!\n");
824 com.str("");
825 com<<"rm -f "<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps";
826 system(com.str().c_str());
827 printf("---> ps file removed!\n\n");
828 com.str("");
829 }
830 }
831 else{
832 nom1.str("");
833 nom2.str("");
834 nom3.str("");
835 nom1<<out<<ffile<<"_FTrkCalibQLook_EXPERT-ped-pkt"<<i+1<<"."<<outfile.Data();
836 nom2<<out<<ffile<<"_FTrkCalibQLook_EXPERT-sig-pkt"<<i+1<<"."<<outfile.Data();
837 nom3<<out<<ffile<<"_FTrkCalibQLook_EXPERT-histosig-pkt"<<i+1<<"."<<outfile.Data();
838 c1->Print(nom1.str().c_str());
839 c2->Print(nom2.str().c_str());
840 sig->Print(nom3.str().c_str());
841 }
842
843 if(step==1 && i!=maxevent-1 ){
844 printf("\n Press 1<enter> to continue, 2<enter> to quit.\n");
845 cin>>risposta;
846 if ( i != maxevent-1 ) {
847 if ( risposta == 2 ) {
848 gROOT->Reset();
849 printf("Exiting...\n");
850 return;
851 }
852 }
853 }
854 };//end loop on events
855
856 gROOT->Reset();
857 printf("... end of packets. \n");
858 return;
859 }
860
861

  ViewVC Help
Powered by ViewVC 1.1.23