00001 TCanvas *can=0;
00002
00003
00004 plZana( int page=3,int pl=0, char *core0="sumFeb21_2011", char *iPath="./", char *oPath="./out/"){
00005
00006 if(page==0) {
00007 doAll();
00008 return;
00009 }
00010
00011
00012 char *nameA[]={"_Z_EventType"};
00013 char *nameB[]={"_Z_et1iso","_Z_et1val","_Z_et1frac","_Z_et2iso","_Z_et2val","_Z_et2frac"};
00014 char *nameC[]={"_Z_phi12","_Z_ZmassLike","_Z_chRecPNp","_Z_ZmassUnlike"};
00015 char *nameD[]={"muEne_Deta","_Z_Ene_Deta"};
00016
00017 gStyle->SetOptFit(1);
00018 TString fullInpName=iPath; fullInpName+=core0;
00019 fullInpName+=".wana.hist.root";
00020 fd=new TFile(fullInpName);
00021 if(! fd->IsOpen()) {
00022 printf("EROR: input histo file not found, quit\n",fullInpName.Data());
00023 return;
00024 } else {
00025 printf("Opened: %s\n",fullInpName.Data());
00026 }
00027 if(page==1){
00028 fd->ls();
00029 h0=(TH1*)fd->Get("_Z_EventType"); assert(h0);
00030 printf("%s: ",h0->GetName());
00031 for(int k=1;k<=14;k++) printf("%.0f, ",h0->GetBinContent(k));
00032 printf("\n");
00033 }
00034 gStyle->SetPalette(1,0);
00035 gStyle->SetOptStat(0);
00036 char padTit[1000];
00037 sprintf(padTit,"%s",core0);
00038
00039 switch (page) {
00040
00041 case 1:{
00042 can=new TCanvas("aa","aa",800,600); TPad *c=makeTitle(can,padTit,page);
00043 c->Divide(1,1);gStyle->SetOptStat(0);
00044 char **nameX=nameA;
00045 for(int i=0;i<1;i++) {
00046 char txt[100];
00047 printf("->%s<\n",nameX[i]);
00048 h=(TH1*)fd->Get(nameX[i]); assert(h);
00049 c->cd(i+1); h->Draw();
00050 if(i==0) h->Draw("h text");
00051 }
00052 c->GetPad(1)->SetLogy();
00053
00054 } break;
00055
00056 case 2:{
00057 can=new TCanvas("aa","aa",800,600); TPad *c=makeTitle(can,padTit,page);
00058 c->Divide(3,2);gStyle->SetOptStat(1110);
00059 char **nameX=nameB;
00060 for(int i=0;i<6;i++) {
00061 char txt[100];
00062 printf("->%s<\n",nameX[i]);
00063 h=(TH1*)fd->Get(nameX[i]); assert(h);
00064 c->cd(i+1); h->Draw();
00065 }
00066 c->GetPad(2)->SetLogy();
00067
00068 } break;
00069
00070
00071 case 3:{
00072 can=new TCanvas("aa","aa",800,600); TPad *c=makeTitle(can,padTit,page);
00073
00074 c->Divide(2,2);gStyle->SetOptStat(10);
00075 char **nameX=nameC;
00076 for(int i=0;i<4;i++) {
00077 char txt[100];
00078 printf("->%s<\n",nameX[i]);
00079 h=(TH1*)fd->Get(nameX[i]); assert(h);
00080 c->cd(i+1); h->Draw();
00081 if(i==2) {
00082 h2=(TH2F*) h;
00083 h2->Rebin2D(2,2);h2->SetMaximum(3);
00084 h2->Draw("box"); h2->SetFillColor(kBlack);
00085 h3=(TH2F*)pubchRecPNp; h3->Rebin2D(2,2);
00086 h3->Draw("colz same");
00087 h2->Draw("box same");
00088 }
00089 if(i==3) {
00090
00091 h->SetAxisRange(0,130);
00092 h->Fit("gaus","","RH",75.,115.);
00093 }
00094 }
00095
00096
00097 } break;
00098
00099 case 4:{
00100 can=new TCanvas("aa","aa",800,600); TPad *c=makeTitle(can,padTit,page);
00101 c->Divide(1,2);gStyle->SetOptStat(1110);
00102 char **nameX=nameD;
00103 for(int i=0;i<2;i++) {
00104 char txt[100];
00105 printf("->%s<\n",nameX[i]);
00106 h2=(TH2F*)fd->Get(nameX[i]); assert(h2);
00107 h2->Rebin2D(2,2);
00108 c->cd(i+1); h2->Draw("colz");
00109 }
00110
00111
00112 } break;
00113
00114 default:
00115 printf("page=%d NOT defined\n",page);
00116
00117 }
00118
00119 char text[100];
00120 sprintf(text,"%s%s_page%03d",oPath,core0,page);
00121 TString tit=text;
00122 can->SetTitle(tit);
00123 can->SetName(tit);
00124
00125
00126 if(pl&1) can->Print(tit+".gif");
00127 if(pl&2) can->Print(tit+".ps");
00128
00129 }
00130
00131
00132 void splitPadX(float x, TPad **cL, TPad **cR) {
00133 (*cL) = new TPad("padL", "apdL",0.0,0.,x,0.95);
00134 (*cL)->Draw();
00135 (*cR) = new TPad("padL", "apdL",x+0.005,0.,1.0,0.95);
00136 (*cR)->Draw();
00137 }
00138
00139
00140 TPad *makeTitle(TCanvas *c,char *core, int page) {
00141 c->Range(0,0,1,1);
00142 TPad *pad0 = new TPad("pad0", "apd0",0.0,0.95,1.,1.);
00143 pad0->Draw();
00144 pad0->cd();
00145
00146 TPaveText *pt = new TPaveText(0,0.,1,1,"br");
00147 pt->Draw();
00148 TDatime dt;
00149 TString txt2=core;
00150 txt2+=", page=";
00151 txt2+=page;
00152 txt2+=", ";
00153 txt2+=dt.AsString();
00154 pt->AddText(txt2);
00155 txt2="--";
00156 pt->AddText(txt2);
00157
00158 c->cd();
00159 pad = new TPad("pad1", "apd1",0.0,0.0,1,.95);
00160 pad->Draw();
00161 return pad;
00162 }
00163
00164
00165 void doAll(){
00166 for(int i=1;i<=4;i++) {
00167 plZana(i,2);
00168 }
00169 }
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210