StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
pl3DbeamLine.C
1 class TFile;
2 
3 TFile *fd=0;
4 pl3DbeamLine( int page=3,char *core="R13078011",int pl=0){ //1=ps
5 
6  char *inPath="out/";
7  TString outPath=inPath;
8  TString fullInpName=Form("%s3D_beam_%s.hist.root",inPath,core);
9 
10  fd=new TFile(fullInpName);
11  if(! fd->IsOpen()) {
12  printf("EROR: input histo file not found, quit\n",fullInpName.Data());
13  return;
14  }
15  // fd->ls();
16  gStyle->SetPalette(1,0);
17 
18  char *nameA[]={"trStat","trCh2","trZ","trX","trY","trP",,"trPt"};
19  char *nameB[]={"fcnChiXY","fcnChiXnX","fcnChiYnY"};
20  char *nameC[]={"bmSol","fcnDet","fcnDca","fcnDcaZ","fcnNtr"};
21 
22  switch (page) {
23  case 1:{ // general stats , input
24  can=new TCanvas("aa","aa",800,800); TPad *c=makeTitle(can,core,page);
25  c->Divide(3,3);gStyle->SetOptStat(111111);
26  char **nameX=nameA;
27  for(int i=0;i<7;i++) { // tmp, w/o clust-finder
28  printf("->%s<\n",nameX[i]);
29  h=(TH1*)fd->Get(nameX[i]); assert(h);
30  c->cd(i+1); h->Draw();
31  }
32  break;
33  }//--------------------------------------
34 
35 
36  case 2:{ // general stats , input
37  can=new TCanvas("aa","aa",900,650); TPad *c=makeTitle(can,core,page,0.85);
38  c->Divide(3,2);gStyle->SetOptStat(0);
39  char **nameX=nameB;
40  for(int i=0;i<3;i++) { // tmp, w/o clust-finder
41  printf("->%s<\n",nameX[i]);
42  h=(TH1*)fd->Get(nameX[i]); assert(h);
43  c->cd(i+1); gPad->SetLeftMargin(0.15);
44  h->Draw("colz");
45  }
46 
47  c->cd(4); bmSol->Draw();
48  bmSol->GetXaxis()->SetTitleOffset(0.9);
49 
50  break;
51  }//--------------------------------------
52 
53 
54  case 3:{ // explore minima
55  can=new TCanvas("aa","aa",900,800); TPad *c=makeTitle(can,core,page);
56  c->Divide(3,2);gStyle->SetOptStat(111111);
57  char **nameX=nameC;
58  for(int i=0;i<5;i++) { // tmp, w/o clust-finder
59  printf("->%s<\n",nameX[i]);
60  h=(TH1*)fd->Get(nameX[i]); assert(h);
61  c->cd(i+1); h->Draw();
62  if(i==3) h->Draw("colz");
63  }
64  break;
65  }//--------------------------------------
66 
67 
68 
69  default:
70  printf("page=%d NOT defined\n",page);
71 
72  }
73 
74  char text[100];
75  sprintf(text,"%s_page%02d",core,page);
76  TString tit=text;
77  can->SetTitle(tit);
78  can->SetName(tit);
79  // c->Clear();
80 
81 
82  if(pl) can->Print(outPath+tit+".ps");
83 
84 }
85 
86 
87 //------------------------
88 TPad *makeTitle(TCanvas *c,char *core, int page,float frac=0.95) {
89 
90  c->Range(0,0,1,1);
91  TPad *pad0 = new TPad("pad0", "apd0",0.0,frac,1.,1.);
92  pad0->Draw();
93  pad0->cd();
94 
95  TPaveText *pt = new TPaveText(0,0.,1,1,"br");
96  pt->Draw();
97  TDatime dt;
98  TString txt2=core;
99  txt2+=", page=";
100  txt2+=page;
101  txt2+=", ";
102  txt2+=dt.AsString();
103  pt->AddText(txt2);
104  txt2="--";
105  pt->AddText(txt2);
106 
107  c->cd();
108  pad = new TPad("pad1", "apd1",0.0,0.0,1,frac);
109  pad->Draw();
110  return pad;
111 }
112 
113 //============================
114 void doStat(char *name0, char *name3){
115  printf("->%s<\n",name0);
116  h0=(TH1*)fd->Get(name0); assert(h0);
117  int nEve=h0->GetEntries()/ h0->GetNbinsX();
118  printf("nEve=%d\n",nEve);
119 
120  h3=(TH1F*)fd->Get(name3); assert(h3);
121  int nb=h3->GetNbinsX();
122  int i,n=0,n1=0;
123  for(i=1; i<=nb;i++) {
124  float y=h3->GetBinContent(i);
125  if(y<=0) continue;
126  n++;
127  float r=y/nEve;
128  float er=sqrt(y)/nEve;
129  if(r>0.001){ printf("* "); n1++;}
130  else continue;
131  //intf(" ");
132 
133  printf(" HankCh=%d failProb=%.3f +/- %.3f\n", i-1,r,er);
134  }
135  printf("bigErr n1=%d n=%d\n",n1,n);
136 }
137 
138 //===================================
139 //==========================
140 //==========================
141 spreadFit( TH2* h2, double Ymx=370) {
142 
143  ln0=new TLine(0,0,450,0); ln0->SetLineColor(kBlack);ln0->SetLineWidth(2.);
144  ln0->SetLineStyle(2);
145  TString tt=h2->GetName();
146  h2->GetListOfFunctions()->Clear(); // drop strip contur
147  TString tt=h2->GetName();
148  h2->FitSlicesY();
149  TH1D*hd= (TH1D*)gROOT->FindObject(tt+"_1");
150  h2->SetAxisRange(-Ymx,Ymx,"y");
151 
152  hd->SetMarkerStyle(20);
153  h2->Draw("colz");
154  hd->Draw("same");
155 
156  //........ draw +/- 1 sig error band for projection
157  Stat_t er1[1000];
158  memset(er1,0,sizeof(er1));
159 
160  TH1D *he= (TH1D*)gROOT->FindObject(tt+"_2");
161  he->Fit("pol1","","same");
162 
163  TH1D *yu=(TH1D*) hd->Clone(); yu->SetLineColor(kMagenta);
164  yu->Add(he); yu->SetError(er1);yu->SetLineWidth(2.);
165  yu->Draw("same");
166 
167  TH1D *yd=(TH1D*) hd->Clone();
168  yd->Add(he,-1); yd->SetError(er1); yd->SetLineColor(kMagenta);
169  yd->Draw("same");yd->SetLineWidth(2.);
170  ln0->Draw();
171 
172 }
173 
174 
175 
176 plAll(char *core="d1") {
177  int i;
178  for(i=1; i<=4; i++) plFgtSS(i,core,2);
179  for(i=6; i<=7; i++) plFgtSS(i,core,2);
180  // for(i=101; i<=105; i++) plFgtSS(i,core,2); // Jan's cluster finder QA
181 }
182 
183 /*
184  .L plSS.C
185  plAll("minb_d1r");
186  plAll("minb_d6r");
187  plAll("mu2_d1r");
188  plAll("mu2_d6r");
189 cat minb_d1r*ps |ps2pdf - >minb_d1r.pdf
190 cat minb_d6r*ps |ps2pdf - >minb_d6r.pdf
191 cat mu2_d1r*ps |ps2pdf - >mu2_d1r.pdf
192 cat mu2_d6r*ps |ps2pdf - >mu2_d6r.pdf
193 
194 
195 */