const int mx=3; TFile *fd[mx]; TCanvas *c=0; char *zSet[mx]={"Zm30","Z0","Zp30"}; char *zName[mx]={" - 30 cm"," 0 cm "," + 30 cm"}; pl3Z(int page=1, char *core="elePt20",int pl=0) { //1=gif, 2=ps, 3=both TString inPath="out/"; int i; for(i=0;iIsOpen()); fd[i]=fd0; } fd[0]->ls(); gStyle->SetPalette(1,0); TString hname="gNigt"; int colA[mx]={kRed,kGreen,kBlue}; lg=new TLegend(0.4,0.75,0.7,0.99); TString head="Vertex Z "; lg->SetHeader(head); switch (page) { case 1: case 2: case 3: case 4: gStyle->SetOptStat(0); { //........................... c=new TCanvas("aa","aa",500,300); if(page==1) hname="gNfst"; if(page==2) hname="gNfgt"; if(page==3) hname="gNtpc"; if(page==4) hname="gNall"; c->Divide(1,1); int i; for(i=0;iGet(hname); assert(h); if(i==0) h->Draw("box"); else h->Draw("same box"); h->SetMarkerColor(colA[i]); h->SetLineColor(colA[i]); h->SetMarkerSize(1.); h->SetMarkerStyle(2); lg->AddEntry(h,zName[i],"P"); } if(page==4) {ln=new TLine(-.2,4.5,3.5,4.5); ln->Draw(); ln->SetLineColor(kRed); ln->SetLineWidth(2.);} gPad->SetGrid(0,1); lg->Draw(); if(page>2) gPad->SetLogy(); } break; case 5: case 6: gStyle->SetOptStat(0); { //........................... c=new TCanvas("aa","aa",400,300); c->Divide(1,1); if(page==5) hname="gdPhi"; if(page==6) hname="gdTheta"; int i; for(i=0;iGet(hname); assert(h); if(i==0 ) h->Draw(); else h->Draw("same"); // h->SetMarkerColor(colA[i]); h->SetLineColor(colA[i]); // h->SetMarkerSize(1.); // h->SetLineStyle(2); lg->AddEntry(h,zName[i],"l"); if(i==0 && page<=6 ) h->SetAxisRange(-0.007,.007); } // gPad->SetGrid(0,1); lg->Draw(); // if(page>2) gPad->SetLogy(); } break; case 7: gStyle->SetOptStat(1111); { //........................... c=new TCanvas("aa","aa",800,400); c->Divide(3,1); hname="mchi2h2"; int i; for(i=0;iGet(hname); assert(h); c->cd(i+1); h->Draw("box"); h->SetLineColor(colA[i]); h->SetMarkerColor(colA[i]); TString tit="chi2/DOF, zVert="; tit+=zName[i]; h->SetTitle(tit); // h->SetMarkerSize(1.); // h->SetLineStyle(2); } } break; case 8: case 9: gStyle->SetOptStat(0); { //........................... c=new TCanvas("aa","aa",400,400); c->Divide(1,1); int i; for(i=0;iDraw(); else h->Draw("same"); h->SetLineColor(colA[i]); h->SetMarkerColor(colA[i]); TString tit="track reco efficincy"; if(page==9) tit="charge reco efficiency"; tit+=", pT=20 GeV/c"; h->SetTitle(tit); lg->AddEntry(h,zName[i],"lp"); h->SetMarkerStyle(4); if(page==8) h->SetMarkerStyle(27); } lg->Draw(); } break; default: printf("page=%d NOT defined\n",page); } char text[100]; sprintf(text,"page%02d",page); TString tit=text; c->SetTitle(tit); c->SetName(tit); // c->Clear(); if(pl&1) c->Print(tit+".gif"); if(pl&2) c->Print(tit+".ps"); } //----------------- plAll(char *core="muB") { int i; for(i=1;i<=3;i++) plPage(i,core,2); for(i=11;i<=19;i++) plPage(i,core,2); for(i=21;i<=25;i++) plPage(i,core,2); } //=============================== TH1F *doEff(TFile *fd, int xx, int type=0){ // c=new TCanvas("aa","aa",700,800); // c=new TCanvas("aa2","aa2",400,500); // c->Divide(1,2); char *name1="gEtaG"; char *name2="mEta"; if(type!=0)name2="mqEta"; TH1F* h1=(TH1F*)fd->Get(name1); assert(h1); TH1F* h2=(TH1F*)fd->Get(name2); assert(h2); // c->cd(1); h1->Draw(); // h2->Draw("same"); h2->SetLineColor(kRed); TH1F* hef=(TH1F*) h1->Clone(); hef->SetTitle("efficiency vs. #eta; generated #eta; eff "); hef->Reset(); TString tt2="aaa"; tt2+=xx; hef->SetName(tt2); int nb=hef->GetNbinsX(); printf("-------\n"); int ib; for(ib=1;ib<=nb;ib++) { // loop over all histo bins, starts from 1 - how silly! float x=h1->GetBinCenter(ib); float y1=h1->GetBinContent(ib); float y2=h2->GetBinContent(ib); if(y1<=0.) continue; float eff=y2/y1; float effEr=sqrt(y2*(y1-y2)/y1)/y1; printf("bin=%d x=%.2f y1=%.0f y2=%.0f eff=%.2f +/-%.2f\n",ib,x,y1,y2,eff,effEr); hef->SetBinContent(ib,eff); hef->SetBinError(ib,effEr); } // c->cd(2); hef->Draw(); return hef; }