StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
PlotTimeShape_ps.C
1 PlotTimeShape_ps(Int_t runnum=0)
2 {
3  //macro to generate the time shape analysis plots from the TTree output of the StFgtTimeShapeMaker
4  gStyle->SetPalette(1);
5  gStyle->SetOptFit(1111);
6  gStyle->SetCanvasColor(0);
7  gStyle->SetPadColor(0);
8  gStyle->SetFillColor(0);
9  gStyle->SetStatBorderSize(0);
10 
11  Int_t adcth=600;
12  Int_t intth=1000;
13  Float_t t0min=1.5;
14  Float_t t0max=2.5;
15  Float_t ch2th=2.;
16 
17  char tname[100];
18  sprintf(tname,"run%d.*tree.root",runnum);
19 
20  TChain* tFgt=new TChain("tFgt");
21  tFgt->Add(tname);
22 
23  Int_t iEvt;
24  Int_t rdo;
25  Int_t arm;
26  Int_t apv;
27  Int_t chn;
28  Short_t disk;
29  Short_t quad;
30  Short_t strip;
31  Short_t stat;
32  Double_t ordinate;
33  Double_t lowerSpan;
34  Double_t upperSpan;
35  Char_t layer;
36  Double_t ped;
37  Double_t pedSig;
38  Int_t adc[7];
39  Int_t adcmax;
40  Int_t mmax;
41  Int_t mmin;
42  Float_t chi2;
43  Float_t fmax;
44  Float_t norm;
45  Float_t tau;
46  Float_t t0;
47  Float_t offset;
48  Int_t errCode;
49 
50  tFgt->SetBranchAddress("iEvt",&iEvt);
51  tFgt->SetBranchAddress("rdo",&rdo);
52  tFgt->SetBranchAddress("arm",&arm);
53  tFgt->SetBranchAddress("apv",&apv);
54  tFgt->SetBranchAddress("chn",&chn);
55  tFgt->SetBranchAddress("disk",&disk);
56  tFgt->SetBranchAddress("quad",&quad);
57  tFgt->SetBranchAddress("strip",&strip);
58  tFgt->SetBranchAddress("stat",&stat);
59  tFgt->SetBranchAddress("ordinate",&ordinate);
60  tFgt->SetBranchAddress("lowerSpan",&lowerSpan);
61  tFgt->SetBranchAddress("upperSpan",&upperSpan);
62  tFgt->SetBranchAddress("layer",&layer);
63  tFgt->SetBranchAddress("adc",adc);
64  tFgt->SetBranchAddress("ped",&ped);
65  tFgt->SetBranchAddress("pedSig",&pedSig);
66  tFgt->SetBranchAddress("adcmax",&adcmax);
67  tFgt->SetBranchAddress("mmin",&mmin);
68  tFgt->SetBranchAddress("mmax",&mmax);
69  tFgt->SetBranchAddress("chi2",&chi2);
70  tFgt->SetBranchAddress("fmax",&fmax);
71  tFgt->SetBranchAddress("norm",&norm);
72  tFgt->SetBranchAddress("tau",&tau);
73  tFgt->SetBranchAddress("t0",&t0);
74  tFgt->SetBranchAddress("offset",&offset);
75  tFgt->SetBranchAddress("errCode",&errCode);
76 
77  TH2F htauapv("htauapv","tau (width) Parameter per APV;binAPV;tau (width)",240,0,240,100,0,5);
78  TH2F ht0apv("ht0apv","t0 (rise point) Parameter per APV;binAPV;t0 (time offset)",240,0,240,120,-5,7);
79  TH2F ht0apv2("ht0apv2","t0 (rise point) Parameter per APV;iapv;t0 (time offset)",288,0,288,120,-5,7);
80  TH2F htmapv2("htmapv2","t-mean per APV;iapv;t-mean",288,0,288,120,-5,7);
81  TH2F hoffapv("hoffapv","Y-offset per APV;binAPV;Y-offset",240,0,240,200,-1000,1000);
82 
83  TH2F hch2apv("hch2apv","Chi2/dof per APV;binAPV;chi2/dof",240,0,240,200,0,40);
84  TH2F hfmxapv("hfmxapv","Time of Maximum per APV;binAPV;fmax (time of maximum)",240,0,240,120,-2,10);
85  TH2F hintapv("hintapv","Integral of Fit Funtion per APV;binAPV;Integral of Fit Function",240,0,240,200,0,20000);
86 
87  TH2F hamxapv("hamxapv","ADCMAX per APV;binAPV;ADCMAX",240,0,240,400,0,4000);
88  TH2F hpedapv("hpedapv","Pedestal per APV;binAPV;Pedestal",240,0,240,200,0,1000);
89  TH2F hsigapv("hsigapv","Pedestal Sigma per APV;binAPV;Pedestal Sigma",240,0,240,200,0,200);
90  TH2F herrapv("herrapv","Error Code Fraction per APV;binAPV;Error Code Type",240,0,240,5,0,5);
91 
92  TH2F hmaxapv("hmaxapv","Max time bin per APV;binAPV;Max time bin",240,0,240,7,0,7);
93  TH2F hminapv("hminapv","Min time bin per APV;binAPV;Min time bin",240,0,240,7,0,7);
94 
95  TH2F hxbquad("hxbquad","Quadrant diagnostic XBin;binQUAD;Xbin",24,0,24,5,0,5);
96  TH2F hamxquad("hamxquad","Maximum ADC per Quadrant;binQUAD;adcmax",24,0,24,400,0,4000);
97  TH2F hch2quad("hch2quad","Chi2/dof per Quadrant;binQUAD;chi2/dof",24,0,24,200,0,40);
98  TH2F hfmxquad("hfmxquad","Time of Maximum per Quadrant;binQUAD;fmax (time of maximum)",24,0,24,120,-2,10);
99  TH2F ht0quad("ht0quad","t0 (time offset) per Quadrant;binQUAD;t0 (time offset)",24,0,24,120,-5,7);
100  TH2F hintquad("hintquad","Integral of Fit Funtion per Quadrant;binQUAD;integral",24,0,24,200,0,20000);
101 
102  TString quadname[48];
103  TString quadname2[24];
104 
105  for(Int_t di=0;di<6;di++)
106  {
107  for(Int_t qu=0;qu<4;qu++)
108  {
109  char qc=65+qu;
110  quadname[2*(di*4 + qu)]+=di+1;
111  quadname[2*(di*4 + qu)]+=qc;
112  quadname[2*(di*4 + qu)]+='L';
113  quadname[2*(di*4 + qu)+1]+=di+1;
114  quadname[2*(di*4 + qu)+1]+=qc;
115  quadname[2*(di*4 + qu)+1]+='S';
116  quadname2[di*4 + qu]+=di+1;
117  quadname2[di*4 + qu]+=qc;
118  }
119  }
120 
121  htauapv.GetXaxis()->SetTitleOffset(1.2);
122  ht0apv.GetXaxis()->SetTitleOffset(1.2);
123  hoffapv.GetXaxis()->SetTitleOffset(1.2);
124 
125  hch2apv.GetXaxis()->SetTitleOffset(1.2);
126  hfmxapv.GetXaxis()->SetTitleOffset(1.2);
127  hintapv.GetXaxis()->SetTitleOffset(1.2);
128 
129  hamxapv.GetXaxis()->SetTitleOffset(1.2);
130  hpedapv.GetXaxis()->SetTitleOffset(1.2);
131  hsigapv.GetXaxis()->SetTitleOffset(1.2);
132  herrapv.GetXaxis()->SetTitleOffset(1.2);
133 
134  hmaxapv.GetXaxis()->SetTitleOffset(1.2);
135  hminapv.GetXaxis()->SetTitleOffset(1.2);
136 
137  htauapv.SetStats(0);
138  ht0apv.SetStats(0);
139  hoffapv.SetStats(0);
140 
141  hch2apv.SetStats(0);
142  hfmxapv.SetStats(0);
143  hintapv.SetStats(0);
144 
145  hamxapv.SetStats(0);
146  hpedapv.SetStats(0);
147  hsigapv.SetStats(0);
148  herrapv.SetStats(0);
149 
150  hmaxapv.SetStats(0);
151  hminapv.SetStats(0);
152 
153  Int_t bcnt=0;
154  for(Int_t ib=0;ib<240;ib++)
155  {
156  if(ib%5==2)
157  {
158  htauapv.GetXaxis()->SetBinLabel(ib+1,quadname[bcnt]);
159  ht0apv.GetXaxis()->SetBinLabel(ib+1,quadname[bcnt]);
160  hoffapv.GetXaxis()->SetBinLabel(ib+1,quadname[bcnt]);
161 
162  hch2apv.GetXaxis()->SetBinLabel(ib+1,quadname[bcnt]);
163  hfmxapv.GetXaxis()->SetBinLabel(ib+1,quadname[bcnt]);
164  hintapv.GetXaxis()->SetBinLabel(ib+1,quadname[bcnt]);
165 
166  hamxapv.GetXaxis()->SetBinLabel(ib+1,quadname[bcnt]);
167  hpedapv.GetXaxis()->SetBinLabel(ib+1,quadname[bcnt]);
168  hsigapv.GetXaxis()->SetBinLabel(ib+1,quadname[bcnt]);
169  herrapv.GetXaxis()->SetBinLabel(ib+1,quadname[bcnt]);
170 
171  hmaxapv.GetXaxis()->SetBinLabel(ib+1,quadname[bcnt]);
172  hminapv.GetXaxis()->SetBinLabel(ib+1,quadname[bcnt]);
173  bcnt++;
174  };
175  };
176 
177  herrapv.GetYaxis()->SetBinLabel(1,"Good events");
178  herrapv.GetYaxis()->SetBinLabel(2,"Oscillation");
179  herrapv.GetYaxis()->SetBinLabel(3,"Saturation");
180 
181  hxbquad.GetXaxis()->SetTitleOffset(1.);
182  hamxquad.GetXaxis()->SetTitleOffset(1.);
183  hch2quad.GetXaxis()->SetTitleOffset(1.);
184  hfmxquad.GetXaxis()->SetTitleOffset(1.);
185  hintquad.GetXaxis()->SetTitleOffset(1.);
186  hxbquad.SetStats(0);
187  //hamxquad.SetStats(0);
188  //hch2quad.SetStats(0);
189  //hfmxquad.SetStats(0);
190  //hintquad.SetStats(0);
191  for(Int_t ib=0;ib<24;ib++)
192  {
193  hxbquad.GetXaxis()->SetBinLabel(ib+1,quadname2[ib]);
194  hamxquad.GetXaxis()->SetBinLabel(ib+1,quadname2[ib]);
195  hch2quad.GetXaxis()->SetBinLabel(ib+1,quadname2[ib]);
196  hfmxquad.GetXaxis()->SetBinLabel(ib+1,quadname2[ib]);
197  hintquad.GetXaxis()->SetBinLabel(ib+1,quadname2[ib]);
198  };
199 
200  c1=new TCanvas("c1","c1",850,1100);
201  c1->SetGridx();
202  c1->SetLogz();
203 
204 
205  c10=new TCanvas("c10","c10",850,1100);
206  c10->Divide(5,10);
207  c11=new TCanvas("c11","c11",850,1100);
208  c11->Divide(5,10);
209 
210  TH1F* h;
211  char hname[100];
212  char fname[100];
213  Int_t nevents=tFgt->GetEntries();
214  printf("nevents=%d \n",nevents);
215  Int_t evtCnt[10]={0,0,0,0,0,0,0,0,0,0};
216  Int_t jCnt=0;
217  Int_t plotCnt=0;
218  Int_t plotCnt2=0;
219  sprintf(fname,"runpdfs/pulses_run%d.ps(",runnum);
220  c10->Print(fname);
221  sprintf(fname,"runpdfs/pulseschi2_run%d.ps(",runnum);
222  c11->Print(fname);
223  for(Int_t i=0;i<nevents;i++)
224  {
225  tFgt->GetEntry(i);
226  if(iEvt<evtCnt[jCnt])
227  {
228  jCnt++;
229  };
230  evtCnt[jCnt]=iEvt;
231  if(i%10000==0)printf("evt=%d %d--------------------\n",iEvt,evtCnt[jCnt]);
232  Int_t binAPV = disk*40 + quad*10 + (apv%12);
233  Int_t binQUAD = disk*4 + quad;
234  //printf("%d %d %d %d\n",binAPV,binQUAD,disk,quad);
235  if(adcmax>adcth && errCode==0 && stat==0 && plotCnt<1000)
236  {
237  sprintf(hname,"hpulse_rdo%d_arm%d_apv%d_chn%d_%d",rdo,arm,apv,chn,plotCnt);
238  h=new TH1F(hname,hname,7,0,7);
239  Float_t tmean=0;
240  Float_t wsum=0;
241  for(Int_t j=0;j<7;j++)
242  {
243  h->SetBinContent(j+1,adc[j]);
244  h->SetBinError(j+1,pedSig);
245  tmean+=adc[j]*j;
246  wsum+=adc[j];
247  };
248  tmean=tmean/wsum;
249  c10->cd(plotCnt%50+1);
250  h->Draw();
251  c10->Update();
252  if(plotCnt%50==49)
253  {
254  sprintf(fname,"runpdfs/pulses_run%d.ps",runnum);
255  c10->Print(fname);
256  };
257  plotCnt++;
258  if(chi2<ch2th)
259  {
260  c11->cd(plotCnt2%50+1);
261  h->Draw();
262  if(plotCnt2%50==49)
263  {
264  sprintf(fname,"runpdfs/pulseschi2_run%d.ps",runnum);
265  c11->Print(fname);
266  };
267  plotCnt2++;
268  };
269  };
270  if(stat==0)
271  {
272  herrapv.Fill(binAPV,errCode);
273  if(errCode==0)
274  {
275  hamxquad.Fill(binQUAD,adcmax);
276  hamxapv.Fill(binAPV,adcmax);
277  hmaxapv.Fill(binAPV,mmax);
278  hminapv.Fill(binAPV,mmin);
279  hpedapv.Fill(binAPV,ped);
280  hsigapv.Fill(binAPV,pedSig);
281  if(adcmax>adcth && chi2>0.)
282  {
283  hch2apv.Fill(binAPV,chi2);
284  hch2quad.Fill(binQUAD,chi2);
285  hxbquad.Fill(binQUAD,1);
286  if(chi2<ch2th)
287  {
288  Int_t irdo=rdo-1;
289  Int_t iarm=arm+6*irdo;
290  Int_t iapv=apv+24*iarm;
291  htauapv.Fill(binAPV,tau);
292  ht0apv.Fill(binAPV,t0);
293  ht0apv2.Fill(iapv,t0);
294  htmapv2.Fill(iapv,tmean);
295  hoffapv.Fill(binAPV,offset);
296  hfmxapv.Fill(binAPV,fmax);
297  TF1 fs("fs","[0]*(x-[4])**[2]*exp(-(x-[4])/[1])+[3]",-100,100);
298  fs.SetParameter(0,norm);
299  fs.SetParameter(1,tau);
300  fs.SetParameter(2,2.);
301  fs.SetParameter(3,offset);
302  fs.SetParameter(4,t0);
303  Float_t integral=fs.Integral(t0,t0+10);
304  hintapv.Fill(binAPV,integral);
305 
306  hfmxquad.Fill(binQUAD,fmax);
307  ht0quad.Fill(binQUAD,t0);
308  hxbquad.Fill(binQUAD,2);
309  if(t0>t0min && t0<t0max)
310  {
311  hintquad.Fill(binQUAD,integral);
312  hxbquad.Fill(binQUAD,3);
313  if(integral>intth)
314  {
315  hxbquad.Fill(binQUAD,4);
316  };
317  };
318  };
319  };
320  };
321  };
322 
323  };
324  sprintf(fname,"runpdfs/pulses_run%d.ps)",runnum);
325  c10->Print(fname);
326  sprintf(fname,"runpdfs/pulseschi2_run%d.ps)",runnum);
327  c11->Print(fname);
328 
329  Int_t totCnt=0;
330  for(Int_t i=0;i<10;i++){printf("evtCnt = %d \n",evtCnt[i]);totCnt+=evtCnt[i];};
331 
332  for(Int_t i=0;i<24;i++)
333  {
334  hxbquad.SetBinContent(i+1,1,totCnt);
335  };
336 
337  for(Int_t i=0;i<240;i++)
338  {
339  Float_t Ntot=herrapv.Integral(i+1,i+1,1,5);
340  for(Int_t k=0;k<5;k++)
341  {
342  Float_t nn=herrapv.GetBinContent(i+1,k+1);
343  if(Ntot>0)herrapv.SetBinContent(i+1,k+1,nn/Ntot);
344  };
345  };
346 
347 
348  c1->Clear();
349  TPad *c=makeTitle(c1,"APV Fit Parameters",runnum,0); c->cd();
350  c->Divide(1,3);
351  c->cd(1);
352  c->GetPad(1)->SetLogz();
353  c->GetPad(1)->SetGridx();
354  htauapv.Draw("colz");
355  c->cd(2);
356  c->GetPad(2)->SetLogz();
357  c->GetPad(2)->SetGridx();
358  ht0apv.Draw("colz");
359  c->cd(3);
360  c->GetPad(3)->SetLogz();
361  c->GetPad(3)->SetGridx();
362  hoffapv.Draw("colz");
363  sprintf(fname,"runpdfs/apv_run%d.ps(",runnum);
364  c1->Print(fname);
365  c1->Update();
366 
367  c1->Clear();
368  TPad *c=makeTitle(c1,"APV Fit Results",runnum,1); c->cd();
369  c->Divide(1,3);
370  c->cd(1);
371  c->GetPad(1)->SetLogz();
372  c->GetPad(1)->SetGridx();
373  hch2apv.Draw("colz");
374  c->cd(2);
375  c->GetPad(2)->SetLogz();
376  c->GetPad(2)->SetGridx();
377  hfmxapv.Draw("colz");
378  c->cd(3);
379  c->GetPad(3)->SetLogz();
380  c->GetPad(3)->SetGridx();
381  hintapv.Draw("colz");
382  sprintf(fname,"runpdfs/apv_run%d.ps",runnum);
383  c1->Print(fname);
384  c1->Update();
385 
386  c1->Clear();
387  TPad *c=makeTitle(c1,"APV Diagnostics",runnum,1); c->cd();
388  c->Divide(1,3);
389  c->cd(1);
390  c->GetPad(1)->SetLogz();
391  c->GetPad(1)->SetGridx();
392  hamxapv.Draw("colz");
393  c->cd(2);
394  c->GetPad(2)->SetLogz();
395  c->GetPad(2)->SetGridx();
396  hpedapv.Draw("colz");
397  c->cd(3);
398  c->GetPad(3)->SetLogz();
399  c->GetPad(3)->SetGridx();
400  hsigapv.Draw("colz");
401  sprintf(fname,"runpdfs/apv_run%d.ps",runnum);
402  c1->Print(fname);
403 
404  c1->Clear();
405  TPad *c=makeTitle(c1,"APV Diagnostics 2",runnum,1); c->cd();
406  c->Divide(1,3);
407  c->cd(1);
408  c->GetPad(1)->SetLogz();
409  c->GetPad(1)->SetGridx();
410  hmaxapv.Draw("colz");
411  c->cd(2);
412  c->GetPad(2)->SetLogz();
413  c->GetPad(2)->SetGridx();
414  hminapv.Draw("colz");
415  c->cd(3);
416  c->GetPad(3)->SetLogz();
417  c->GetPad(3)->SetGridx();
418  herrapv.Draw("colz");
419  sprintf(fname,"runpdfs/apv_run%d.ps)",runnum);
420  c1->Print(fname);
421 
422 
423  c2=new TCanvas("c2","c2",850,1100);
424  sprintf(fname,"runpdfs/quad_run%d.ps[",runnum);
425  c2->Print(fname);
426  TH1D* htemp;
427  TLine* line;
428  char label[100];
429  for(Int_t i=0;i<24;i++)
430  {
431  TString pagetitle;
432  pagetitle+="Quadrant ";
433  pagetitle+=quadname2[i];
434  TPad *c=makeTitle(c2,pagetitle,runnum,i+1); c->cd();
435  c->Divide(1,5);
436 
437  c->cd(1);
438  htemp=hxbquad.ProjectionY(quadname2[i],i+1,i+1);htemp->Draw();
439  htemp->GetXaxis()->SetBinLabel(1,"Nevent");
440  sprintf(label,"ADCMAX > %d",adcth);
441  htemp->GetXaxis()->SetBinLabel(2,label);
442  sprintf(label,"chi2/dof < %d",ch2th);
443  htemp->GetXaxis()->SetBinLabel(3,label);
444  sprintf(label,"%.1f < t0 < %.1f ",t0min,t0max);
445  htemp->GetXaxis()->SetBinLabel(4,label);
446  sprintf(label,"Integral > %d",intth);
447  htemp->GetXaxis()->SetBinLabel(5,label);
448  htemp->GetXaxis()->SetLabelSize(.1);
449  if(htemp->GetEntries()>0)c->GetPad(1)->SetLogy();
450 
451  c->cd(2);
452  htemp=hamxquad.ProjectionY(quadname2[i]+=' ',i+1,i+1);htemp->Draw();
453  if(htemp->GetEntries()>0)c->GetPad(2)->SetLogy();
454  line = new TLine(adcth,0.,adcth,2.*htemp->GetMaximum());
455  line->SetLineColor(2);
456  line->Draw();
457 
458  c->cd(3);
459  htemp=hch2quad.ProjectionY(quadname2[i]+=' ',i+1,i+1);htemp->Draw();
460  //if(htemp->GetEntries()>0)c->GetPad(3)->SetLogy();
461  line = new TLine(ch2th,0.,ch2th,2.*htemp->GetMaximum());
462  line->SetLineColor(2);
463  line->Draw();
464 
465  c->cd(4);
466  htemp=ht0quad.ProjectionY(quadname2[i]+=' ',i+1,i+1);htemp->Draw();
467  if(htemp->GetEntries()>0)c->GetPad(4)->SetLogy();
468  line = new TLine(t0min,0.,t0min,2.*htemp->GetMaximum());
469  line->SetLineColor(2);
470  line->Draw();
471  line = new TLine(t0max,0.,t0max,2.*htemp->GetMaximum());
472  line->SetLineColor(2);
473  line->Draw();
474 
475  c->cd(5);
476  htemp=hintquad.ProjectionY(quadname2[i]+=' ',i+1,i+1);htemp->Draw();
477  if(htemp->GetEntries()>0)c->GetPad(5)->SetLogy();
478  line = new TLine(intth,0.,intth,2.*htemp->GetMaximum());
479  line->SetLineColor(2);
480  line->Draw();
481 
482  sprintf(fname,"runpdfs/quad_run%d.ps",runnum);
483  c2->Print(fname);
484  }
485  sprintf(fname,"runpdfs/quad_run%d.ps]",runnum);
486  c2->Print(fname);
487 
488  char command[500];
489  sprintf(command,"ps2pdf runpdfs/apv_run%d.ps runpdfs/pdfs/apv_run%d.pdf",runnum,runnum);
490  system(command);
491  sprintf(command,"ps2pdf runpdfs/quad_run%d.ps runpdfs/pdfs/quad_run%d.pdf",runnum,runnum);
492  system(command);
493  sprintf(command,"ps2pdf runpdfs/pulses_run%d.ps runpdfs/pdfs/pulses_run%d.pdf",runnum,runnum);
494  system(command);
495  sprintf(command,"ps2pdf runpdfs/pulseschi2_run%d.ps runpdfs/pdfs/pulseschi2_run%d.pdf",runnum,runnum);
496  system(command);
497 
498  sprintf(fname,"hfgt_run%d.root",runnum);
499  TFile out(fname,"recreate");
500  htauapv.Write();
501  ht0apv.Write();
502  ht0apv2.Write();
503  htmapv2.Write();
504  hoffapv.Write();
505 
506  hch2apv.Write();
507  hfmxapv.Write();
508  hintapv.Write();
509 
510  hamxapv.Write();
511  hpedapv.Write();
512  hsigapv.Write();
513  herrapv.Write();
514 
515  hmaxapv.Write();
516  hminapv.Write();
517 
518  hxbquad.Write();
519  hamxquad.Write();
520  hch2quad.Write();
521  hfmxquad.Write();
522  ht0quad.Write();
523  hintquad.Write();
524 
525 }
526 
527 TPad *makeTitle(TCanvas *c,TString core, int runnum, int page) {
528  c->Clear();
529  c->Range(0,0,1,1);
530  char pname[100];
531  sprintf(pname,"pad0_%d",page);
532  TPad *pad0 = new TPad(pname,pname,0.0,0.96,1.,1.);
533  pad0->Draw();
534  pad0->cd();
535 
536  TPaveText *pt = new TPaveText(0,0.,1,1,"br");
537  pt->Draw();
538  TDatime dt;
539  TString txt2=core;
540  txt2+=", ";
541  if(runnum>0)
542  {
543  txt2+="run";
544  txt2+=runnum;
545  txt2+=", ";
546  };
547  txt2+=dt.AsString();
548  pt->AddText(txt2);
549  txt2=" -- ";
550  pt->AddText(txt2);
551  pt->Draw();
552 
553  c->cd();
554  char pname[100];
555  sprintf(pname,"pad1_%d",page);
556  pad = new TPad(pname, pname,0.0,0.0,1,.95);
557  pad->Draw();
558  return pad;
559 }