+ } // end loop on event
+
+ if (coincmuon==0) {
+ cout << " >>> <E> coincmuon = 0 after event loop " << "\n";
+ cout << " >>> this probably means that input does not contain one (and only one) " << "\n";
+ cout << " >>> muon track per event as it should " << "\n";
+ cout << " >>> see README for further information " << "\n";
+ cout << " >>> exiting now ! " << "\n";
+ return;
+ }
+
+
+ fprintf(fdat,"\n");
+ fprintf(fdat,"\n");
+ fprintf(fdat," Number of events = %d \n",nevents);
+ fprintf(fdat," Number of events with 3/4 coinc = %d \n",(Int_t)coincmuon);
+ fprintf(fdat," Nomber of dimuons with 3/4 coinc Lpt cut = %d \n",(Int_t)lptmuon);
+ fprintf(fdat," Number of dimuons with 3/4 coinc Hpt cut = %d \n",(Int_t)hptmuon);
+ fprintf(fdat,"\n");
+
+ Double_t efficiency,error;
+
+ efficiency=lptmuon/coincmuon;
+ error=efficiency*TMath::Sqrt((lptmuon+coincmuon)/(lptmuon*coincmuon));
+ fprintf(fdat," Efficiency Lpt cut = %4.4f +/- %4.4f\n",efficiency,error);
+
+ efficiency=hptmuon/coincmuon;
+ error=efficiency*TMath::Sqrt((hptmuon+coincmuon)/(hptmuon*coincmuon));
+ fprintf(fdat," Efficiency Hpt cut = %4.4f +/- %4.4f\n",efficiency,error);
+
+ fclose(fdat);
+
+ Double_t x1,x2,xval,xerr;
+
+ for (Int_t i=0;i<50;i++) {
+ x1=ptcoinc->GetBinContent(i+1);
+
+ x2=ptlpt->GetBinContent(i+1);
+ if (x1!=0 && x2!=0) {
+ xval=x2/x1;
+ xerr=xval*TMath::Sqrt((x1+x2)/x1*x2);
+ ptlpt->SetBinContent(i+1,xval);
+ ptlpt->SetBinError(i+1,0);
+ } else {
+ ptlpt->SetBinContent(i+1,0.);
+ ptlpt->SetBinError(i+1,0.);
+ }
+
+ x2=pthpt->GetBinContent(i+1);
+ if (x1!=0 && x2!=0) {
+ xval=x2/x1;
+ xerr=xval*TMath::Sqrt((x1+x2)/x1*x2);
+ pthpt->SetBinContent(i+1,xval);
+ pthpt->SetBinError(i+1,0);
+ } else {
+ pthpt->SetBinContent(i+1,0.);
+ pthpt->SetBinError(i+1,0.);
+ }
+ }
+
+ TF1 *fitlpt = new TF1("fitlpt",fitArc,0.,5.,4);
+ TF1 *fithpt = new TF1("fithpt",fitArc,0.,5.,4);
+
+ TCanvas *c1 = new TCanvas("c1","Trigger efficiency vs pt and y for single muon",200,0,900,400);
+ c1->Divide(2,1);
+
+ c1->cd(1);
+ ptlpt->SetMinimum(0.);
+ ptlpt->SetMaximum(1.05);
+ ptlpt->SetTitle("");
+ ptlpt->GetXaxis()->SetTitle("P_{T} (GeV/c)");
+ ptlpt->GetYaxis()->SetTitle("Efficiency");
+ //ptlpt->GetXaxis()->SetRange(3);
+ ptlpt->Draw("");
+ fitlpt->SetParameters(0.602,0.774,0.273,0.048);
+ fitlpt->SetLineColor(2);
+ fitlpt->SetLineWidth(2);
+ fitlpt->Draw("SAME");
+ TLegend * leg = new TLegend(0.5,0.38,0.85,0.53);
+ leg = new TLegend(0.5,0.38,0.85,0.53);
+ leg->SetBorderSize(0);
+ leg->SetFillColor(0);
+ leg->SetTextSize(0.05);
+ leg->SetTextFont(22);
+ leg->SetHeader("Lpt trigger pt cut");
+ leg->AddEntry(fitlpt,"Ref.","l");
+ leg->AddEntry(ptlpt,"New","l");
+ leg->Draw("SAME");
+
+ c1->cd(2);
+ pthpt->SetMinimum(0.);
+ pthpt->SetMaximum(1.05);
+ pthpt->SetTitle("");
+ pthpt->GetXaxis()->SetTitle("P_{T} (GeV/c)");
+ pthpt->GetYaxis()->SetTitle("Efficiency");
+ //pthpt->GetXaxis()->SetRange(3);
+ pthpt->Draw("");
+ fithpt->SetParameters(0.627,0.393,0.855,0.0081);
+ fithpt->SetLineColor(2);
+ fithpt->SetLineWidth(2);
+ fithpt->Draw("SAME");
+ leg = new TLegend(0.5,0.38,0.85,0.53);
+ leg->SetBorderSize(0);
+ leg->SetFillColor(0);
+ leg->SetTextSize(0.05);
+ leg->SetTextFont(22);
+ leg->SetHeader("Hpt trigger pt cut");
+ leg->AddEntry(fithpt,"Ref.","l");
+ leg->AddEntry(pthpt,"New","l");
+ leg->Draw("SAME");
+
+ c1->SaveAs("MUONTriggerEfficiencyPt.gif");
+ c1->SaveAs("MUONTriggerEfficiencyPt.eps");