#include int xft_eff(Char_t* filename="119632.hbk") { //Clear out variables on the stack (avoids much grief) gROOT->Reset(); gROOT->LoadMacro("xft_effCalc.C"); gStyle->SetHistLineWidth(1); gStyle->SetPadGridX(true); gStyle->SetPadGridY(true); gStyle->SetLabelSize(0.07,"XY"); gStyle->SetTitleSize(0.08, "XY"); gStyle->SetTitleOffset(0.3, "XY"); gStyle->SetFuncColor(6); gStyle->SetFuncWidth(6.); gStyle->SetOptStat(0); //Integral, Overflow, Underflow, RMS, Mean, Nent, Name gStyle->SetOptFit(11); //probability, Chi2, errors, name/values of parameters //Open histogram file cout << "filename is "<< filename << endl; TFile* f= new TFile(filename); //Open file in which to store pictures TPostScript *ps = new TPostScript("XFT_efficiency.ps",111); //Open Canvas TCanvas *myc = new TCanvas("MyC","Test Canvas",700,700); //Some numbers about efficiency Int_t mx = offPt->GetNbinsX(); Float_t mtotal = 0.,mmissed =0.; for(Int_t i=0;i<=mx+1;i++){ Float_t mc = offPt->GetBinCenter(i); Float_t mbin1 = offPt->GetBinContent(i); Float_t mbin2 = offPtMissed->GetBinContent(i); printf("\n bin %6d center %8.3f total %8.1f missed %8.1f",i,mc,mbin1,mbin2); if(mc>10.){ mtotal += mbin1; mmissed += mbin2; } } Float_t efficiency=0., error = 0.; if(mtotal > 1.){ efficiency = (mtotal - mmissed)/mtotal; error = sqrt( efficiency*(1.-efficiency)/mtotal ); } printf("\n L3 pt above 10 GeV/c"); printf("\n Number of good quality L3 tracks= %8.1f Number XFT missed = %8.1f",mtotal,mmissed); printf("\n XFT Efficiency= %8.3f +- %8.3f percent\n",efficiency*100.,error*100.); Int_t nx = offPhi->GetNbinsX(); Float_t ototal = offPhi->GetEntries(); Float_t omissed = offPhiMissed->GetEntries(); // Float_t efficiency=0., error = 0.; if(ototal > 1.){ efficiency = (ototal - omissed)/ototal; error = sqrt( efficiency*(1.-efficiency)/ototal ); } printf("\n L3 pt above 1.5GeV/c"); printf("\n Number of good quality L3 tracks= %8.1f Number XFT missed = %8.1f ",ototal,omissed); printf("\n XFT Efficiency= %8.3f +- %8.3f percent\n",efficiency*100.,error*100.); ps->NewPage(); myc->Clear(); myc->Divide(1,3); myc->cd(1); offPtEff->SetTitle("Efficiency vs L3 pT"); offPtEff->SetXTitle("L3 pT (GeV/c)"); offPtEff->SetYTitle("Efficiency"); offPtEff->GetXaxis()->SetRange(0,200); offPtEff->Draw("e0"); myc->cd(2); offPhiEff->SetTitle("Efficiency vs L3 #phi"); offPhiEff->SetXTitle("L3 #phi (radians)"); offPhiEff->SetYTitle("Efficiency"); offPhiEff->Fit("pol0","Q"); myc->cd(3); offEtaEff->SetTitle("Efficiency vs L3 #eta"); offEtaEff->SetXTitle("L3 #eta "); offEtaEff->SetYTitle("Efficiency"); offEtaEff->Draw("e0"); myc->Update(); char *ch = new char[1]; printf("Hit Enter to continue \n"); gets(ch); ps->NewPage(); myc->Clear(); myc->Divide(1,3); myc->cd(1); offPtEff->SetMinimum(0.9); offPtEff->SetMaximum(1.01); offPtEff->Draw("e0"); myc->cd(2); offPhiEff->SetMinimum(0.9); offPhiEff->SetMaximum(1.01); offPhiEff->Draw("e0"); myc->cd(3); offEtaEff->SetMinimum(0.9); offEtaEff->SetMaximum(1.01); offEtaEff->Draw("e0"); myc->Update(); char *ch = new char[1]; printf("Hit Enter to continue \n"); gets(ch); ps->NewPage(); myc->Clear(); myc->Divide(1,3); myc->cd(1); offPt->GetXaxis()->SetRange(0,200); offPt->Draw("e0"); offPtMissed->SetFillColor(2); offPtMissed->Draw("same"); offPt->SetXTitle("L3 Pt (GeV/c)"); offPt->SetYTitle("Tracks"); myc->cd(2); offPhi->Draw("e0"); offPhiMissed->SetFillColor(2); offPhiMissed->Draw("same"); offPhi->SetXTitle("L3 #phi (radians)"); offPhi->SetYTitle("Tracks"); myc->cd(3); offEta->Draw("e0"); offEtaMissed->SetFillColor(2); offEtaMissed->Draw("same"); offEta->SetXTitle("L3 #eta"); offEta->SetYTitle("Tracks"); myc->Update(); char *ch = new char[1]; printf("Hit Enter to continue \n"); gets(ch); ps->NewPage(); myc->Clear(); myc->Divide(1,3); myc->cd(1); offd0Eff->SetTitle("Efficiency vs L3 d0"); offd0Eff->SetXTitle("L3 d0 (cm)"); offd0Eff->SetYTitle("Efficiency"); offd0Eff->Draw("e0"); myc->cd(2); offz0Eff->SetTitle("Efficiency vs L3 z0"); offz0Eff->SetXTitle("L3 z0 (cm)"); offz0Eff->SetYTitle("Efficiency"); offz0Eff->Draw("e0"); myc->cd(3); offCotanEff->SetTitle("Efficiency vs L3 cotan #theta"); offCotanEff->SetXTitle("L3 Cotan #theta "); offCotanEff->SetYTitle("Efficiency"); offCotanEff->Draw("e0"); myc->Update(); char *ch = new char[1]; printf("Hit Enter to continue \n"); gets(ch); ps->NewPage(); myc->Clear(); myc->Divide(1,3); myc->cd(1); offd0Eff->SetMinimum(0.9); offd0Eff->SetMaximum(1.01); offd0Eff->Draw("e0"); myc->cd(2); offz0Eff->SetMinimum(0.9); offz0Eff->SetMaximum(1.01); offz0Eff->Draw("e0"); myc->cd(3); offCotanEff->SetMinimum(0.9); offCotanEff->SetMaximum(1.01); offCotanEff->Draw("e0"); myc->Update(); char *ch = new char[1]; printf("Hit Enter to continue \n"); gets(ch); ps->NewPage(); myc->Clear(); myc->Divide(1,3); myc->cd(1); offd0->Draw("e0"); offd0Missed->SetFillColor(2); offd0Missed->Draw("same"); offd0->SetXTitle("L3 d0 (cm)"); offd0->SetYTitle("Tracks"); myc->cd(2); offz0->Draw("e0"); offz0Missed->SetFillColor(2); offz0Missed->Draw("same"); offz0->SetXTitle("L3 z0 (cm)"); offz0->SetYTitle("Tracks"); myc->cd(3); offCotan->Draw("e0"); offCotanMissed->SetFillColor(2); offCotanMissed->Draw("same"); offCotan->SetXTitle("L3 Cotan#theta"); offCotan->SetYTitle("Tracks"); myc->Update(); char *ch = new char[1]; printf("Hit Enter to continue \n"); gets(ch); ps->NewPage(); myc->Clear(); myc->Divide(1,4); myc->cd(1); xft_effCalc(offZSl0Found,offZSl0,offZSl0Eff); offZSl0Eff->SetTitle("Efficiency vs L3 COT SL 2 z position"); offZSl0Eff->SetXTitle("L3 z position in COT SL 2 (cm)"); offZSl0Eff->SetYTitle("Efficiency"); offZSl0Eff->Draw("e0"); myc->cd(2); xft_effCalc(offZSl1Found,offZSl1,offZSl1Eff); offZSl1Eff->SetTitle("Efficiency vs L3 COT SL 4 z position"); offZSl1Eff->SetXTitle("L3 z position in COT SL 4 (cm)"); offZSl1Eff->SetYTitle("Efficiency"); offZSl1Eff->Draw("e0"); myc->cd(3); xft_effCalc(offZSl2Found,offZSl2,offZSl2Eff); offZSl2Eff->SetTitle("Efficiency vs L3 COT SL 6 z position"); offZSl2Eff->SetXTitle("L3 z position in COT SL 6 (cm)"); offZSl2Eff->SetYTitle("Efficiency"); offZSl2Eff->Draw("e0"); myc->cd(4); xft_effCalc(offZSl3Found,offZSl3,offZSl3Eff); offZSl3Eff->SetTitle("Efficiency vs L3 COT SL 8 z position"); offZSl3Eff->SetXTitle("L3 z position in COT SL 8 (cm)"); offZSl3Eff->SetYTitle("Efficiency"); offZSl3Eff->Draw("e0"); myc->Update(); char *ch = new char[1]; printf("Hit Enter to continue \n"); gets(ch); ps->NewPage(); myc->Clear(); myc->Divide(1,4); myc->cd(1); offZSl0Eff->SetMinimum(0.5); offZSl0Eff->SetMaximum(1.01); offZSl0Eff->Draw("e0"); myc->cd(2); offZSl1Eff->SetMinimum(0.5); offZSl1Eff->SetMaximum(1.01); offZSl1Eff->Draw("e0"); myc->cd(3); offZSl2Eff->SetMinimum(0.5); offZSl2Eff->SetMaximum(1.01); offZSl2Eff->Draw("e0"); myc->cd(4); offZSl3Eff->SetMinimum(0.5); offZSl3Eff->SetMaximum(1.01); offZSl3Eff->Draw("e0"); myc->Update(); char *ch = new char[1]; printf("Hit Enter to continue \n"); gets(ch); ps->NewPage(); myc->Clear(); myc->Divide(1,4); myc->cd(1); offZSl0->Draw("e0"); offZSl0Missed->SetFillColor(2); offZSl0Missed->Draw("same"); offZSl0->SetXTitle("L3 z at SL2 (cm)"); offZSl0->SetYTitle("Tracks"); myc->cd(2); offZSl1->Draw("e0"); offZSl1Missed->SetFillColor(2); offZSl1Missed->Draw("same"); offZSl1->SetXTitle("L3 z at SL4 (cm)"); offZSl1->SetYTitle("Tracks"); myc->cd(3); offZSl2->Draw("e0"); offZSl2Missed->SetFillColor(2); offZSl2Missed->Draw("same"); offZSl2->SetXTitle("L3 z at SL6 (cm)"); offZSl2->SetYTitle("Tracks"); myc->cd(4); offZSl3->Draw("e0"); offZSl3Missed->SetFillColor(2); offZSl3Missed->Draw("same"); offZSl3->SetXTitle("L3 z at SL8 (cm)"); offZSl3->SetYTitle("Tracks"); myc->Update(); char *ch = new char[1]; printf("Hit Enter to continue \n"); gets(ch); ps->NewPage(); myc->Clear(); myc->Divide(1,3); myc->cd(1); CotHitsTotEff->SetMinimum(0.7); CotHitsTotEff->SetMaximum(1.01); CotHitsTotEff->Draw("e0"); myc->cd(2); CotHitsAxEff->SetMinimum(0.7); CotHitsAxEff->SetMaximum(1.01); CotHitsAxEff->Draw("e0"); myc->cd(3); CotHitsStEff->SetMinimum(0.7); CotHitsStEff->SetMaximum(1.01); CotHitsStEff->Draw("e0"); myc->Update(); char *ch = new char[1]; printf("Hit Enter to continue \n"); gets(ch); ps->NewPage(); myc->Clear(); myc->Divide(1,3); myc->cd(1); CotHitsTot->Draw("e0"); CotHitsTotMissed->SetFillColor(2); CotHitsTotMissed->Draw("same"); CotHitsTot->SetXTitle("L3 Total number of COT hits"); CotHitsTot->SetYTitle("Tracks"); myc->cd(2); CotHitsAx->Draw("e0"); CotHitsAxMissed->SetFillColor(2); CotHitsAxMissed->Draw("same"); CotHitsAx->SetXTitle("L3 Axial number of COT hits"); CotHitsAx->SetYTitle("Tracks"); myc->cd(3); CotHitsSt->Draw("e0"); CotHitsStMissed->SetFillColor(2); CotHitsStMissed->Draw("same"); CotHitsSt->SetXTitle("L3 Stereo number of COT hits"); CotHitsSt->SetYTitle("Tracks"); myc->Update(); ps->Close(); char *ch = new char[1]; printf(" Hit Enter to continue \n"); gets(ch); return 0; }