/[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.5 - (show annotations) (download)
Thu Jun 8 17:03:57 2006 UTC (18 years, 5 months ago) by pam-fi
Branch: MAIN
CVS Tags: R3v00
Changes since 1.4: +1 -1 lines
release R3v00

1 /**
2 * FTrkCalibQLookExpert.cpp
3 *
4 * autor: D.Fedele
5 * version 3.0
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 <TTree.h>
22 #include <TGraph.h>
23 #include <TStyle.h>
24 #include <TString.h>
25 //
26 #include <PscuHeader.h>
27 #include <EventHeader.h>
28 #include <CalibTrk1Event.h>
29 #include <CalibTrk2Event.h>
30 //
31
32
33 void stringcopy(TString& s1, const TString& s2, Int_t from=0, Int_t to=0){
34 if ( to == 0 ){
35 Int_t t2length = s2.Length();
36 s1 = "";
37 to = t2length;
38 };
39 for (Int_t i = from; i<to; i++){
40 s1.Append(s2[i],1);
41 };
42 };
43
44 typedef struct caltrk_def{
45 Int_t good0[2];
46 Int_t daqmode[12];
47 Int_t dspnum[12];
48 Int_t calibnum[12];
49 Int_t ncalev[12];
50 Int_t calfl[12];
51 Int_t ped1[12];
52 Int_t ped2[12];
53 Int_t ped3[12];
54 Int_t sig1[12];
55 Int_t sig2[12];
56 Int_t sig3[12];
57 Int_t nbad1[12];
58 Int_t nbad2[12];
59 Int_t nbad3[12];
60 Float_t dspped[12][3702];
61 Float_t dspsig[12][3702];
62 Float_t dspbad[12][3702];
63 Int_t crc_c[12][3];
64 Int_t crc_hc[12];
65 };
66
67
68 void FTrkCalibQLook_EXPERT(TString file,Int_t step,Int_t fromevent, Int_t toevent,TString outdir,TString outfile)
69 {
70 //
71 // obtain information about the data file and select the output dir
72 const string filepath=file.Data();
73 Int_t dwpos = filepath.rfind("/");
74 Int_t dwpos1 = filepath.rfind(".root");
75 TString fpath=(filepath.c_str());
76 TString base,ffile;
77 stringcopy(base,fpath,0,dwpos);
78 stringcopy(ffile,fpath,dwpos+1,dwpos1);
79 if(dwpos>0) base+="/";
80
81 TString out;
82 if(outdir.Length()==0){
83 out = base;
84 }else{
85 out = outdir;
86 }
87
88 //
89 // inizialise the variables and open the file
90 Int_t nevents=0;
91 Int_t minevent = 0;
92 Int_t maxevent = 0;
93 ULong64_t FOBT[2], HOBT=0, TOBT=0;
94
95 FOBT[0]=0;
96 FOBT[1]=0;
97
98 struct caltrk_def ctrk;
99 ctrk.good0[0]=0;
100 ctrk.good0[1]=0;
101 for(Int_t i=0;i<12;i++){
102 ctrk.daqmode[i]=0;
103 ctrk.dspnum[i]=0;
104 ctrk.calibnum[i]=0;
105 ctrk.ncalev[i]=0;
106 ctrk.calfl[i]=0;
107 ctrk.ped1[i]=0;
108 ctrk.ped2[i]=0;
109 ctrk.ped3[i]=0;
110 ctrk.sig1[i]=0;
111 ctrk.sig2[i]=0;
112 ctrk.sig3[i]=0;
113 ctrk.nbad1[i]=0;
114 ctrk.nbad2[i]=0;
115 ctrk.nbad3[i]=0;
116 ctrk.crc_c[i][0]=0;
117 ctrk.crc_c[i][1]=0;
118 ctrk.crc_c[i][2]=0;
119 ctrk.crc_hc[i]=0;
120 for(Int_t iii=0;iii<3072;iii++){
121 ctrk.dspped[i][iii]=0;
122 ctrk.dspsig[i][iii]=0;
123 ctrk.dspbad[i][iii]=0;
124 };
125
126 };
127
128 TFile *calibFile = new TFile(file);
129 if ( !calibFile ){
130 printf("No data file, exiting...\n");
131 return;
132 };
133 TTree *otr1,*otr2,*hotr,*totr;
134 pamela::EventHeader *eh1=0,*eh2=0,*eh4=0,*eh3=0;
135 pamela::PscuHeader *ph=0;
136 pamela::CalibTrk1Event *trk1 = 0;
137 pamela::CalibTrk2Event *trk2 = 0;
138
139 hotr = (TTree*)calibFile->Get("CalibHeader");
140 hotr->SetBranchAddress("Header", &eh4);
141
142 totr = (TTree*)calibFile->Get("CalibTrailer");
143 totr->SetBranchAddress("Header", &eh3);
144
145 otr1 = (TTree*)calibFile->Get("CalibTrk1");
146 otr1->SetBranchAddress("CalibTrk1", &trk1);
147 otr1->SetBranchAddress("Header",&eh1);
148 otr2 = (TTree*)calibFile->Get("CalibTrk2");
149 otr2->SetBranchAddress("CalibTrk2", &trk2);
150 otr2->SetBranchAddress("Header",&eh2);
151
152 if(otr1->GetEntries()==otr2->GetEntries())
153 nevents = otr1->GetEntries();
154 else{
155 printf("WARNING: CalibTrk1 entries is different from CalibTrk2 entries");
156 return;}
157 if (nevents<=0) {
158 calibFile->Close();
159 printf("No calibration packets found, exiting...\n");
160 return;
161 };
162
163 printf("Number of calibration packets: %i\n",nevents);
164
165 if ( fromevent > toevent && toevent ){
166 printf("It must be fromevent < toevent \n");
167 return;
168 };
169
170 if ( fromevent > nevents || fromevent < 0 ) {
171 printf("You can choose fromevent between 0 (all) and %i \n",nevents);
172 return;
173 };
174
175 if ( toevent > nevents || toevent < 0 ) {
176 printf("You can choose toevent between 0 (all) and %i \n",nevents);
177 return;
178 };
179 if ( fromevent == 0 ) {
180 minevent = 0;
181 maxevent = nevents;
182 } else {
183 minevent = fromevent - 1;
184 if ( toevent > 0 ){
185 maxevent = toevent;
186 } else if (toevent > nevents) {
187 maxevent = nevents;
188 } else {
189 maxevent = fromevent;
190 };
191 };
192
193 //**********************************************************************
194 //
195 // LOOP OVER EVENTS
196 //
197 //**********************************************************************
198
199 printf("\n Scan of calibration packets from %i to %i ... \n\n",minevent+1,maxevent);
200 for (Int_t i = minevent; i < maxevent; i++){
201
202 otr1->GetEntry(i);
203 otr2->GetEntry(i);
204 totr->GetEntry(i);
205 hotr->GetEntry(i);
206 ph = eh4->GetPscuHeader();
207 HOBT= ph->GetOrbitalTime();
208 ph = eh3->GetPscuHeader();
209 TOBT= ph->GetOrbitalTime();
210
211 ctrk.good0[0]=trk1->good0;
212 ctrk.good0[1]=trk2->good0;
213 for (Int_t m = 0; m < 6; m++){
214 ph = eh1->GetPscuHeader();
215 FOBT[0]= ph->GetOrbitalTime();
216 ctrk.daqmode[trk1->DSPnumber[m]-1]=trk1->DAQmode[m];
217 ctrk.dspnum[trk1->DSPnumber[m]-1]=trk1->DSPnumber[m];
218 ctrk.calibnum[trk1->DSPnumber[m]-1]=trk1->calibnumber[m];
219 ctrk.ncalev[trk1->DSPnumber[m]-1]=trk1->ncalib_event[m];
220 ctrk.ped1[trk1->DSPnumber[m]-1]=trk1->ped_l1[m];
221 ctrk.ped2[trk1->DSPnumber[m]-1]=trk1->ped_l2[m];
222 ctrk.ped3[trk1->DSPnumber[m]-1]=trk1->ped_l3[m];
223 ctrk.sig1[trk1->DSPnumber[m]-1]=trk1->sig_l1[m];
224 ctrk.sig2[trk1->DSPnumber[m]-1]=trk1->sig_l2[m];
225 ctrk.sig3[trk1->DSPnumber[m]-1]=trk1->sig_l3[m];
226 ctrk.nbad1[trk1->DSPnumber[m]-1]=trk1->nbad_l1[m];
227 ctrk.nbad2[trk1->DSPnumber[m]-1]=trk1->nbad_l2[m];
228 ctrk.nbad3[trk1->DSPnumber[m]-1]=trk1->nbad_l3[m];
229 ctrk.calfl[trk1->DSPnumber[m]-1]=trk1->cal_flag[m];
230 ctrk.crc_c[trk1->DSPnumber[m]-1][0]=trk1->crc_cal[m][0];
231 ctrk.crc_c[trk1->DSPnumber[m]-1][1]=trk1->crc_cal[m][1];
232 ctrk.crc_c[trk1->DSPnumber[m]-1][2]=trk1->crc_cal[m][2];
233 ctrk.crc_hc[trk1->DSPnumber[m]-1]=trk1->crc_hcal[m];
234 for (Int_t j = 0; j < 3072; j++){
235 ctrk.dspped[trk1->DSPnumber[m]-1][j]=trk1->DSPped_par[m][j];
236 ctrk.dspsig[trk1->DSPnumber[m]-1][j]=trk1->DSPsig_par[m][j];
237 ctrk.dspbad[trk1->DSPnumber[m]-1][j]=trk1->DSPbad_par[m][j];
238 };
239 ph = eh2->GetPscuHeader();
240 FOBT[1]= ph->GetOrbitalTime();
241 ctrk.daqmode[trk2->DSPnumber[m]-1]=trk2->DAQmode[m];
242 ctrk.dspnum[trk2->DSPnumber[m]-1]=trk2->DSPnumber[m];
243 ctrk.calibnum[trk2->DSPnumber[m]-1]=trk2->calibnumber[m];
244 ctrk.ncalev[trk2->DSPnumber[m]-1]=trk2->ncalib_event[m];
245 ctrk.ped1[trk2->DSPnumber[m]-1]=trk2->ped_l1[m];
246 ctrk.ped2[trk2->DSPnumber[m]-1]=trk2->ped_l2[m];
247 ctrk.ped3[trk2->DSPnumber[m]-1]=trk2->ped_l3[m];
248 ctrk.sig1[trk2->DSPnumber[m]-1]=trk2->sig_l1[m];
249 ctrk.sig2[trk2->DSPnumber[m]-1]=trk2->sig_l2[m];
250 ctrk.sig3[trk2->DSPnumber[m]-1]=trk2->sig_l3[m];
251 ctrk.nbad1[trk2->DSPnumber[m]-1]=trk2->nbad_l1[m];
252 ctrk.nbad2[trk2->DSPnumber[m]-1]=trk2->nbad_l2[m];
253 ctrk.nbad3[trk2->DSPnumber[m]-1]=trk2->nbad_l3[m];
254 ctrk.calfl[trk2->DSPnumber[m]-1]=trk2->cal_flag[m];
255 ctrk.crc_c[trk1->DSPnumber[m]-1][0]=trk2->crc_cal[m][0];
256 ctrk.crc_c[trk1->DSPnumber[m]-1][1]=trk2->crc_cal[m][1];
257 ctrk.crc_c[trk1->DSPnumber[m]-1][2]=trk2->crc_cal[m][2];
258 ctrk.crc_hc[trk1->DSPnumber[m]-1]=trk2->crc_hcal[m];
259 for (Int_t j = 0; j < 3072; j++){
260 ctrk.dspped[trk2->DSPnumber[m]-1][j]=trk2->DSPped_par[m][j];
261 ctrk.dspsig[trk2->DSPnumber[m]-1][j]=trk2->DSPsig_par[m][j];
262 ctrk.dspbad[trk2->DSPnumber[m]-1][j]=trk2->DSPbad_par[m][j];
263 };
264 };
265
266
267 //
268 // other variables definitions
269 Int_t risposta=0;
270 stringstream fromfile;
271
272 fromfile<<"FTrkCalibQLook_EXPERT File: "<<ffile<<" -- CalibHeader OBT= "<<HOBT<<" -- Calib pkt OBT= "<<FOBT[0]<<" -- CalibTrailer OBT= "<<TOBT<<" --";
273
274 gStyle->SetLabelSize(0.08,"x");
275 gStyle->SetLabelSize(0.08,"y");
276 gStyle->SetTitleFillColor(10);
277 gStyle->SetTitleFontSize(0.1);
278 gStyle->SetTitleOffset(0.8,"y");
279 gStyle->SetTitleOffset(1.,"x");
280 gStyle->SetTitleSize(0.06,"y");
281 gStyle->SetTitleSize(0.06,"x");
282 gStyle->SetOptStat(0);
283
284 //
285 // draw display area
286 TLatex *tzz=new TLatex();
287 tzz->SetTextFont(32);
288 tzz->SetTextColor(1);
289 tzz->SetTextAlign(12);
290 tzz->SetTextSize(0.019);
291 Int_t canvasx=1200;
292 Int_t canvasy=900;
293 TCanvas *c1 = new TCanvas("c1","FTrkCalibQLook_EXPERT_ped",canvasx,canvasy);
294 c1->SetFillColor(10);
295 tzz->DrawLatex(.01,0.98,fromfile.str().c_str());
296 tzz->DrawLatex(.90,0.98,"PEDESTAL");
297 TCanvas *c2 = new TCanvas("c2","FTrkCalibQLook_EXPERT_sig",canvasx,canvasy);
298 c2->SetFillColor(10);
299 tzz->DrawLatex(.01,0.98,fromfile.str().c_str());
300 tzz->DrawLatex(.90,0.98,"SIGMA");
301
302 // draw pads
303 TPad *trkpad1[12],*trkpad2[12]; //pad for histos
304 TPaveText *trkpadtext[12]; //pad for header
305 TH1F *histosig[12]; //histos of sigma
306 TH1F *histoped[12]; //histos of pedestals
307 TH1F *histoasig[12]; //histos of sigma
308 TH1F *histoaped[12]; //histos of pedestals
309
310 Float_t posy = 0.95; // up y-coord - top pads
311 Float_t hpad = 0.15; // pad height
312 Float_t posx1=0; // left x-coord - pad column
313 Float_t posx2=0; // right x-coord - pad olumn
314 Float_t posx0=0; // x-coord - column division
315 Float_t wrel = 0.6; // relative x size of first sub-column
316 Float_t marg = 0.004; // margin among pads
317 stringstream title;
318 stringstream hid;
319
320 for(Int_t n = 0; n<12; n++){
321 if ( (n+1)%2 ) {
322 if(n>1)posy = posy-(marg*2+hpad);
323 posx1 = marg;
324 posx2 = 0.5 - marg;
325 posx0 = 0.5*wrel;
326 } else {
327 posx1 = posx1 + 0.5;
328 posx2 = posx2 + 0.5;
329 posx0 = posx0 + 0.5;
330 };
331 /* -----------> pad for histograms */
332 trkpad1[n] = new TPad("pad1"," ",posx1,posy-hpad,posx0-marg,posy,18,0,0);
333 trkpad2[n] = new TPad("pad2"," ",posx1,posy-hpad,posx0-marg,posy,18,0,0);
334 /* -----------> pad for header dump */
335 trkpadtext[n] = new TPaveText((posx0+marg),(posy-hpad),posx2,posy);
336 /* -----------> HISTOGRAMS */
337 /* calibration parameters */
338 title<<"DSP "<<n+1;
339 hid<<"h"<<n<<"i"<<i;
340 histosig[n] = new TH1F(hid.str().c_str(),title.str().c_str(),3072,0.5,3072.5);
341 hid.str("");
342 hid<<"hh"<<n<<"i"<<i;
343 histoped[n] = new TH1F(hid.str().c_str(),title.str().c_str(),3072,0.5,3072.5);
344 hid.str("");
345 hid<<"hhh"<<n<<"i"<<i;
346 title.str("");
347 hid.str("");
348 /* AVERAGE calibration parameters */
349 hid<<"ah"<<n<<"i"<<i;
350 histoasig[n] = new TH1F(hid.str().c_str(),title.str().c_str(),3,0.5,3072.5);
351 hid.str("");
352 hid<<"ahh"<<n<<"i"<<i;
353 histoaped[n] = new TH1F(hid.str().c_str(),title.str().c_str(),3,0.5,3072.5);
354 hid.str("");
355 }; //end loop on views
356
357
358 stringstream message;
359
360 //--------------------------------
361 //CHECK CALIBRATION procedure
362 //--------------------------------
363 Int_t nn=0;
364 Int_t calok = 0;//BAD
365 for(Int_t n = 0; n<12; n++){
366 if(ctrk.ncalev[n]==0 && ctrk.calfl[n]==0)calok = 1;//GOOD
367
368
369 nn=ctrk.dspnum[n]-1;
370 /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
371 *
372 * Write event LEVEL0 report
373 *
374 *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/
375 trkpadtext[nn]->SetTextFont(40);
376 trkpadtext[nn]->SetFillColor(33);
377 if(calok==0)trkpadtext[nn]->SetFillColor(2);
378 trkpadtext[nn]->SetTextSize(0.013);
379 trkpadtext[nn]->SetTextAlign(13);
380 trkpadtext[nn]->SetTextColor(1);
381
382 trkpadtext[nn]->AddText(" ");
383 message<<"DSP num --------> "<<ctrk.dspnum[n];
384 trkpadtext[nn]->AddText(message.str().c_str());
385 message.str("");
386 message<<"DAQ mode -------> "<<ctrk.daqmode[n];
387 trkpadtext[nn]->AddText(message.str().c_str());
388 message.str("");
389 message<<"Calibnumber ----> "<<ctrk.calibnum[n];
390 trkpadtext[nn]->AddText(message.str().c_str());
391 message.str("");
392 message<<"ncalib_event ---> "<<ctrk.ncalev[n];
393 trkpadtext[nn]->AddText(message.str().c_str());
394 message.str("");
395 message<<"Cal_flag -------> "<<ctrk.calfl[n];
396 trkpadtext[nn]->AddText(message.str().c_str());
397 message.str("");
398 message<<"crc_hcal -------> "<<ctrk.crc_hc[n];
399 trkpadtext[nn]->AddText(message.str().c_str());
400 message.str("");
401 message<<"crc_cal: l1- ";message.width(5);message<< ctrk.crc_c[n][0];
402 message<<" l2- ";message.width(5);message<< ctrk.crc_c[n][1];
403 message<<" l3- ";message.width(5);message<< ctrk.crc_c[n][2];
404 trkpadtext[nn]->AddText(message.str().c_str());
405 message.str("");
406 message<<"<PED>: l1- "; message.width(5);message<< ctrk.ped1[n];
407 message<<" l2-"; message.width(5);message<< ctrk.ped2[n];
408 message<<" l3-"; message.width(5);message<< ctrk.ped3[n];
409 trkpadtext[nn]->AddText(message.str().c_str());
410 message.str("");
411 message<<"<SIG>: l1- "; message.width(5);message<< ctrk.sig1[n];
412 message<<" l2-"; message.width(5);message<< ctrk.sig2[n];
413 message<<" l3-"; message.width(5);message<< ctrk.sig3[n];
414 trkpadtext[nn]->AddText(message.str().c_str());
415 message.str("");
416 message<<"n.BAD: l1- "; message.width(5);message<<ctrk.nbad1[n];
417 message<<" l2-"; message.width(5);message<< ctrk.nbad2[n];
418 message<<" l3-"; message.width(5);message<< ctrk.nbad3[n];
419 trkpadtext[nn]->AddText(message.str().c_str());
420 message.str("");
421
422 if(calok==0){
423
424 message.str("*** FAILED ***");
425 TText *t=trkpadtext[nn]->AddText(message.str().c_str());
426 t->SetTextSize(0.02);
427 t->SetTextAlign(23);
428 t->SetTextColor(5);
429 };
430
431 /*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
432 *
433 * Plot histo
434 *
435 *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*/
436
437
438 /******************************************************/
439 /* fill histos */
440 for(Int_t j = 0; j < 3072; j++){
441 histosig[nn]->Fill((Float_t)j,ctrk.dspsig[nn][j]);
442 histoped[nn]->Fill((Float_t)j,ctrk.dspped[nn][j]);
443 };
444 histoasig[nn]->Fill(1,ctrk.sig1[nn]);
445 histoasig[nn]->Fill(1025,ctrk.sig2[nn]);
446 histoasig[nn]->Fill(2049,ctrk.sig3[nn]);
447 histoaped[nn]->Fill(1,ctrk.ped1[nn]);
448 histoaped[nn]->Fill(1025,ctrk.ped2[nn]);
449 histoaped[nn]->Fill(2049,ctrk.ped3[nn]);
450 /******************************************************/
451
452 TLine li;
453 li.SetLineColor(38);
454 li.SetLineStyle(3);
455 li.SetLineWidth(2);
456
457 Float_t maxhist=0;
458 TBox b;
459 b.SetFillColor(6);
460 b.SetFillStyle(3945);
461 /* plot PEDESTAL */
462 c1->cd();
463 trkpadtext[nn]->Draw();
464 trkpad1[nn]->Draw();
465 trkpad1[nn]->cd();
466 trkpad1[nn]->SetFillColor(10);
467 trkpad1[nn]->SetFrameFillColor(10);
468 histoped[nn]->SetLineColor(1);
469 histoped[nn]->SetFillColor(12);
470 histoped[nn]->SetLineWidth(1);
471 histoped[nn]->GetYaxis()->SetTitle("PED (ADC channels)");
472 histoped[nn]->GetYaxis()->CenterTitle();
473 if((nn+1)%2==1) histoped[nn]->GetYaxis()->SetRangeUser(2200,3200);
474 if((nn+1)%2==0) histoped[nn]->GetYaxis()->SetRangeUser(700,1700);
475 histoaped[nn]->SetLineColor(5);
476 histoaped[nn]->SetLineWidth(1);
477 if(ctrk.good0[0]==1 && ctrk.good0[1]==1){
478 histoped[nn]->Draw("b");
479 if(nn==1){
480 maxhist=histoped[nn]->GetMaximum();
481 b.DrawBox(2816.,700.,3060.,maxhist);
482 }
483 else if(nn==6){
484 maxhist=histoped[nn]->GetMaximum();
485 b.DrawBox(2560.,2200.,2816.,maxhist);
486 b.DrawBox(512.,2200.,768.,maxhist);
487 b.DrawBox(1024.,2200.,1792.,maxhist);
488 }
489 else if(nn==11){
490 maxhist=histoped[nn]->GetMaximum();
491 b.DrawBox(768.,700.,1024.,maxhist);
492 }
493 }
494 else histoped[nn]->Draw("axis");
495 histoaped[nn]->Draw("same");
496 if((nn+1)%2==1) {
497 li.DrawLine(1024.5,2200,1024.5,3200);
498 li.DrawLine(2048.5,2200,2048.5,3200);
499 }
500 if((nn+1)%2==0) {
501 li.DrawLine(1024.5,700,1024.5,1700);
502 li.DrawLine(2048.5,700,2048.5,1700);
503 }
504
505
506
507 /* plot SIGMA */
508 Float_t max=500.;
509 c2->cd();
510 trkpadtext[nn]->Draw();
511 trkpad2[nn]->SetLogy();
512 trkpad2[nn]->Draw();
513 trkpad2[nn]->cd();
514 trkpad2[nn]->SetFillColor(10);
515 trkpad2[nn]->SetFrameFillColor(10);
516 histosig[nn]->SetLineColor(1);
517 histosig[nn]->SetFillColor(12);
518 histosig[nn]->SetLineWidth(1);
519 histosig[nn]->SetMaximum(max);
520 histosig[nn]->SetMinimum(0.5);
521 histosig[nn]->GetYaxis()->SetTitle("SIG (ADC channels)");
522 histosig[nn]->GetYaxis()->CenterTitle();
523 histoasig[nn]->SetLineColor(5);
524 histoasig[nn]->SetLineWidth(1);
525 if(ctrk.good0[0]==1 && ctrk.good0[1]==1){
526 histosig[nn]->Draw("b");
527 if(nn==1){
528 maxhist=histosig[nn]->GetMaximum();
529 b.DrawBox(2816.,0.,3060.,maxhist);
530 }
531 else if(nn==6){
532 maxhist=histosig[nn]->GetMaximum();
533 b.DrawBox(2560.,0.,2816.,maxhist);
534 b.DrawBox(512.,0.,768.,maxhist);
535 b.DrawBox(1024.,0.,1792.,maxhist);
536 }
537 else if(nn==11){
538 maxhist=histosig[nn]->GetMaximum();
539 b.DrawBox(768.,0.,1024.,maxhist);
540 }
541 }
542 else histosig[nn]->Draw("axis");
543 histoasig[nn]->Draw("same");
544 li.DrawLine(1024.5,0,1024.5,max);
545 li.DrawLine(2048.5,0,2048.5,max);
546
547
548
549 };//end loop on views
550
551 c1->Update();//draw pads in canvas
552 c2->Update();//draw pads in canvas
553
554 stringstream nom1;
555 stringstream nom2;
556
557 if(!strcmp(outfile.Data(),"ps")||!strcmp(outfile.Data(),"pdf")){
558 nom1.str("");
559 nom2.str("");
560 nom1<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps(";
561 nom2<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps)";
562 c1->Print(nom1.str().c_str(),"Landscape");
563 c2->Print(nom2.str().c_str(),"Landscape");
564 if(!strcmp(outfile.Data(),"pdf")){
565 stringstream com;
566 com<<"ps2pdf13 "<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps "<<out<<ffile<<"_FTrkCalibQlook_EXPERT-pkt"<<i+1<<".pdf";
567 system(com.str().c_str());
568 printf("\n---> ps file converted in pdf format!\n");
569 com.str("");
570 com<<"rm -f "<<out<<ffile<<"_FTrkCalibQLook_EXPERT-pkt"<<i+1<<".ps";
571 system(com.str().c_str());
572 printf("---> ps file removed!\n\n");
573 com.str("");
574 }
575 }
576 else{
577 nom1.str("");
578 nom2.str("");
579 nom1<<out<<ffile<<"_FTrkCalibQLook_EXPERT-ped-pkt"<<i+1<<"."<<outfile.Data();
580 nom2<<out<<ffile<<"_FTrkCalibQLook_EXPERT-sig-pkt"<<i+1<<"."<<outfile.Data();
581 c1->Print(nom1.str().c_str());
582 c2->Print(nom2.str().c_str());
583 }
584
585 if(step==1 && i!=maxevent-1 ){
586 printf("\n Press 1<enter> to continue, 2<enter> to quit.\n");
587 cin>>risposta;
588 if ( i != maxevent-1 ) {
589 if ( risposta == 2 ) {
590 gROOT->Reset();
591 printf("Exiting...\n");
592 return;
593 }
594 }
595 }
596 };//end loop on events
597
598 gROOT->Reset();
599 printf("... end of packets. \n");
600 return;
601 }
602
603

  ViewVC Help
Powered by ViewVC 1.1.23