void drawplotC1(TH1D *h1,TH1D *h2,TH1D *h3,TH1D *h4){ char meantxt1[30]; char meantxt2[30]; char meantxt3[30]; char meantxt4[30]; Double_t max, mh1,mh2,mh3,mh4; mh1 = h1->GetMaximum(); mh2 = h2->GetMaximum(); mh3 = h3->GetMaximum(); mh4 = h4->GetMaximum(); max=mh1; if (mh1 >= mh2 && mh1>=mh3 && mh1>=mh4)max = mh1; if (mh2 >= mh1 && mh2>=mh3 && mh2>=mh4)max = mh2; if (mh3 >= mh1 && mh3>=mh2 && mh3>=mh4)max = mh3; if (mh4 >= mh1 && mh4>=mh2 && mh4>=mh3)max = mh4; h1->GetXaxis()->SetTitle("Number of rings per event"); h1->GetYaxis()->SetTitle("Entries"); h1->SetMaximum(1.1*max); h1->SetLineColor(2); h1->Draw("L"); h2->SetLineColor(103); h2->Draw("LSAME"); h3->SetLineColor(4); h3->Draw("LSAME"); h4->SetLineColor(6); h4->Draw("LSAME"); TLegend* l1 = new TLegend(0.75,0.5,0.99,0.99); l1->SetHeader("Mean Value"); sprintf(meantxt1,"%01.2f",h1->GetMean()); sprintf(meantxt2,"%01.2f",h2->GetMean()); sprintf(meantxt3,"%01.2f",h3->GetMean()); sprintf(meantxt4,"%01.2f",h4->GetMean()); l1->AddEntry(h1,meantxt1,"l"); l1->AddEntry(h2,meantxt2,"l"); l1->AddEntry(h3,meantxt3,"l"); l1->AddEntry(h4,meantxt4,"l"); l1->Draw(); TLegend* l2 = new TLegend(0.75,0.2,0.99,0.49); l2->SetHeader("Number of hits"); l2->AddEntry(h1,"All","l"); l2->AddEntry(h2,">=5","l"); l2->AddEntry(h3,">=10","l"); l2->AddEntry(h4,">=15","l"); l2->Draw(); } void drawplotC2(TH1D *h1, TH1D *h2, TString header, TString YaxisTitle){ Double_t max, mh1,mh2,mh3,mh4; mh1 = h1->GetMaximum(); mh2 = h2->GetMaximum(); max=mh1; if (mh1 >= mh2)max = mh1; if (mh2 >= mh1)max = mh2; h1->GetXaxis()->SetTitle(YaxisTitle); h1->GetYaxis()->SetTitle("Entries"); h1->SetMaximum(1.1*max); char meantxt1[30]; char meantxt2[30]; h1->SetLineColor(kRed); h1->DrawCopy("L"); h2->SetLineColor(kBlue); h2->DrawCopy("SAMEL"); /*TLegend* l1 = new TLegend(0.15,0.78,0.3,0.9); l1->SetHeader("Entries"); sprintf(meantxt1,"%01.0f",h1->GetEntries()); sprintf(meantxt2,"%01.0f",h2->GetEntries()); l1->AddEntry(h1,meantxt1,"l"); l1->AddEntry(h2,meantxt2,"l"); l1->Draw(); */ TLegend* l2 = new TLegend(0.31,0.78,0.47,0.9); l2->SetHeader(header); l2->AddEntry(h1,"found","l"); l2->AddEntry(h2,"MC","l"); l2->Draw(); } void drawplotC3(TH1D *h1, TH1D *h2, TH1D* h3, TH1D* h4, TString XaxisTitle){ h1->SetStats(0); Double_t max, mh1,mh2,mh3,mh4; mh1 = h1->GetMaximum(); mh2 = h2->GetMaximum(); mh3 = h3->GetMaximum(); mh4 = h4->GetMaximum(); max=mh1; if (mh1 >= mh2 && mh1>=mh3 && mh1>=mh4)max = mh1; if (mh2 >= mh1 && mh2>=mh3 && mh2>=mh4)max = mh2; if (mh3 >= mh1 && mh3>=mh2 && mh3>=mh4)max = mh3; if (mh4 >= mh1 && mh4>=mh2 && mh4>=mh3)max = mh4; h1->GetXaxis()->SetTitle(XaxisTitle); h1->GetYaxis()->SetTitle("Entries"); h1->SetMaximum(1.1*max); h1->SetLineColor(103); h1->Draw("L"); h2->SetLineColor(4); h2->Draw("SAMEL"); h3->SetLineColor(6); h3->Draw("SAMEL"); h4->SetLineColor(2); h4->Draw("SAMEL"); TLegend* l2 = new TLegend(0.1,0.65,0.4,0.9); l2->AddEntry(h1,"true E ring","l"); l2->AddEntry(h2,"true Pi rings","l"); l2->AddEntry(h3,"fake rings","l"); l2->AddEntry(h4,"fake E rings","l"); l2->Draw(); } void drawplotC4(TH1D *h1, TH1D *h2){ char meantxt1[30]; char meantxt2[30]; double mh1 = h1->GetMaximum(); double mh2 = h2->GetMaximum(); double max=mh1; if (mh1 <= mh2)max = mh2; h1->SetLineColor(103); h2->SetLineColor(kRed); h1->Draw(); h2->Draw("SAME"); h1->Sumw2(); h2->Sumw2(); h1->Fit("gaus"); h2->Fit("gaus"); TLegend* l1 = new TLegend(0.1,0.7,0.3,0.9); l1->SetHeader("Entries"); sprintf(meantxt1,"%01.2f",h1->GetEntries()); sprintf(meantxt2,"%01.2f",h2->GetEntries()); l1->AddEntry(h1,meantxt1,"l"); l1->AddEntry(h2,meantxt2,"l"); l1->Draw(); TLegend* l2 = new TLegend(0.1,0.5,0.3,0.7); l2->AddEntry(h1,"Electrons","l"); l2->AddEntry(h2,"Pions","l"); l2->Draw(); } void CbmRichRingQaDrawHist(){ TFile *file = new TFile("/d/cbm02/slebedev/rich/auau.25gev.centr.reco.richqa.0001.root"); //gROOT->SetStyle("Plain"); // gStyle->SetOptStat(0000); gStyle->SetPalette(1,0); gStyle->SetHistLineWidth(3); gStyle->SetHistLineStyle(9); gROOT->ForceStyle(); gStyle->SetOptStat(0); //gStyle->SetOptFit(1); TCanvas *c1 = new TCanvas("CbmRichRingQac1","c1",1200,1000); c1->Divide(3,3); c1->cd(1); drawplotC1(fh_nAllRings,fh_n5HitsAllRings,fh_n10HitsAllRings,fh_n15HitsAllRings); c1->cd(2); drawplotC1(fh_nERings,fh_n5HitsERings,fh_n10HitsERings,fh_n15HitsERings); c1->cd(3); drawplotC1(fh_nPiRings,fh_n5HitsPiRings,fh_n10HitsPiRings,fh_n15HitsPiRings); c1->cd(4); drawplotC1(fh_n6StsAllRings,fh_n5Hits6StsAllRings,fh_n10Hits6StsAllRings,fh_n15Hits6StsAllRings); c1->cd(5); drawplotC1(fh_n6StsERings,fh_n5Hits6StsERings,fh_n10Hits6StsERings,fh_n15Hits6StsERings); c1->cd(6); drawplotC1(fh_n6StsPiRings,fh_n5Hits6StsPiRings,fh_n10Hits6StsPiRings,fh_n15Hits6StsPiRings); c1->cd(7); drawplotC1(fh_n6StsProjAllRings,fh_n5Hits6StsProjAllRings,fh_n10Hits6StsProjAllRings,fh_n15Hits6StsProjAllRings); c1->cd(8); drawplotC1(fh_n6StsProjERings,fh_n5Hits6StsProjERings,fh_n10Hits6StsProjERings,fh_n15Hits6StsProjERings); c1->cd(9); drawplotC1(fh_n6StsProjPiRings,fh_n5Hits6StsProjPiRings,fh_n10Hits6StsProjPiRings,fh_n15Hits6StsProjPiRings); TCanvas *c2 = new TCanvas("CbmRichRingQac2","c2",1200,1000); c2->Divide(3,3); TString header; header = "normalization"; c2->cd(1); drawplotC2(fh_percOfTrueHitsAll,fh_percOfTrueMCHitsAll,header,"ratio of true hits"); c2->cd(2); drawplotC2(fh_percOfTrueHitsE,fh_percOfTrueMCHitsE,header,"ratio of true hits"); c2->cd(3); drawplotC2(fh_percOfTrueHitsPi,fh_percOfTrueMCHitsPi,header,"ratio of true hits"); header = "rings"; c2->cd(4); drawplotC2(fh_True10HitsFoundRingsMomAll,fh_10HitsMCRingsMomAll,header,"p [GeV]"); c2->cd(5); drawplotC2(fh_True10HitsFoundRingsMomE,fh_10HitsMCRingsMomE,header,"p [GeV]"); c2->cd(6); drawplotC2(fh_True10HitsFoundRingsMomPi,fh_10HitsMCRingsMomPi,header,"p [GeV]"); fh_True10HitsFoundRingsMomAll->Sumw2(); fh_10HitsMCRingsMomAll->Sumw2(); fh_True10HitsFoundRingsMomE->Sumw2(); fh_10HitsMCRingsMomE->Sumw2(); fh_True10HitsFoundRingsMomPi->Sumw2(); fh_10HitsMCRingsMomPi->Sumw2(); TH1D* th1 = new TH1D("th1","Efficiency all",40,0,15); TH1D* th2 = new TH1D("th2","Efficiency Electrons. Proj",40,0,10); TH1D* th3 = new TH1D("th3","Efficiency Pions. Proj",40,0,15); th1->Divide(fh_True10HitsFoundRingsMomAll,fh_10HitsMCRingsMomAll,100); th2->Divide(fh_True10HitsFoundRingsMomE,fh_10HitsMCRingsMomE,100); th3->Divide(fh_True10HitsFoundRingsMomPi,fh_10HitsMCRingsMomPi,100); th1->GetXaxis()->SetTitle("p [Gev]"); th1->GetYaxis()->SetTitle("Efficiency [%]"); th2->GetXaxis()->SetTitle("p [Gev]"); th2->GetYaxis()->SetTitle("Efficiency [%]"); th3->GetXaxis()->SetTitle("p [Gev]"); th3->GetYaxis()->SetTitle("Efficiency [%]"); c2->cd(7); th1->Draw("E"); c2->cd(8); th2->Draw("E"); c2->cd(9); th3->Draw("E"); TCanvas *c3 = new TCanvas("CbmRichRingQac3","c3",1200,1000); c3->Divide(3,3); c3->cd(1); fh_HitsXY->GetXaxis()->SetTitle("X[cm]"); fh_HitsXY->GetYaxis()->SetTitle("Y[cm]"); fh_HitsXY->Draw("COLZ"); c3->cd(2); fh_FakeFoundRingsXYAll->Draw("COLZ"); fh_FakeFoundRingsXYAll->GetXaxis()->SetTitle("X [cm]"); fh_FakeFoundRingsXYAll->GetYaxis()->SetTitle("Y [cm]"); c3->cd(3); fh_TrueFoundRingsXYE->Draw("COLZ"); fh_TrueFoundRingsXYE->GetXaxis()->SetTitle("X [cm]"); fh_TrueFoundRingsXYE->GetYaxis()->SetTitle("Y [cm]"); c3->cd(4); fh_TrueFoundRingsXYPi->Draw("COLZ"); fh_TrueFoundRingsXYPi->GetXaxis()->SetTitle("X[cm]"); fh_TrueFoundRingsXYPi->GetYaxis()->SetTitle("Y[cm]"); gStyle->SetOptStat(1); c3->cd(5); fh_NhitsPerEvent->GetXaxis()->SetTitle("Number of hits"); fh_NhitsPerEvent->GetYaxis()->SetTitle("Entries"); fh_NhitsPerEvent->DrawCopy("L"); c3->cd(6); fh_NprojPerEvent->GetXaxis()->SetTitle("Number of projections"); fh_NprojPerEvent->GetYaxis()->SetTitle("Entries"); fh_NprojPerEvent->DrawCopy("L"); c3->cd(7); fh_RvsMomTrue->SetStats(0); fh_RvsMomTrue->Draw("COLZ"); fh_RvsMomTrue->GetXaxis()->SetTitle("p [Gev]"); fh_RvsMomTrue->GetYaxis()->SetTitle("radius [cm]"); c3->cd(8); fh_RvsMomFake->SetStats(0); fh_RvsMomFake->Draw("COLZ"); fh_RvsMomFake->GetXaxis()->SetTitle("p [Gev]"); fh_RvsMomFake->GetYaxis()->SetTitle("radius [cm]"); TCanvas *c4 = new TCanvas("CbmRichRingQac4","c4",1200,1000); c4->Divide(3,3); //gStyle->SetOptStat(1); c4->cd(1); drawplotC4(fh_MomSlice1GeVE,fh_MomSlice1GeVPi); c4->cd(2); drawplotC4(fh_MomSlice7GeVE,fh_MomSlice7GeVPi); c4->cd(3); drawplotC4(fh_MomSlice9GeVE,fh_MomSlice9GeVPi); c4->cd(4); fh_CloneMom->SetStats(0); fh_CloneMom->GetXaxis()->SetTitle("p [GeV]"); fh_CloneMom->GetYaxis()->SetTitle("Entries"); fh_CloneMom->Draw(); c4->cd(5); //fh_CloneMom->SetStats(1); fh_NClonesPerEvent->GetXaxis()->SetTitle("Number of clone rings/event"); fh_NClonesPerEvent->GetYaxis()->SetTitle("Entries"); fh_NClonesPerEvent->DrawCopy(); c4->cd(6); fh_NFakesPerEvent->GetXaxis()->SetTitle("Number of fake rings/event"); fh_NFakesPerEvent->GetYaxis()->SetTitle("Entries"); fh_NFakesPerEvent->DrawCopy(); TCanvas *c5 = new TCanvas("CbmRichRingQac5","c5",1200,1000); c5->Divide(3,3); c5->cd(1); //fh_TrueRingsNhitsE->SetStats(0); drawplotC3(fh_TrueRingsNhitsE,fh_TrueRingsNhitsPi,fh_Fake7RingsNhits, fh_Fake8RingsNhits, "Number of hits"); c5->cd(2); //fh_TrueRingsNhitsE->SetStats(0); drawplotC3(fh_TrueRingTrackDistE,fh_TrueRingTrackDistPi,fh_Fake7RingTrackDist, fh_Fake8RingTrackDist, "distance [cm]"); c5->cd(3); //fh_TrueRingsNhitsE->SetStats(0); drawplotC3(fh_TrueAngleE,fh_TrueAnglePi,fh_Fake7Angle,fh_Fake8Angle, "angle [rad]" ); c5->cd(4); //fh_TrueRingsTBsumE->SetStats(0); drawplotC3(fh_TrueRingsTBsumE,fh_TrueRingsTBsumPi,fh_Fake7RingsTBsum,fh_Fake8RingsTBsum, "TBSum" ); c5->cd(5); //fh_TrueRingsTBsumNhitsE->SetStats(0); drawplotC3(fh_TrueRingsTBsumNhitsE,fh_TrueRingsTBsumNhitsPi,fh_Fake7RingsTBsumNhits,fh_Fake8RingsTBsumNhits,"TBSum / Nhits" ); c5->cd(6); //fh_TrueRingsChi2E->SetStats(0); drawplotC3(fh_TrueRingsChi2E,fh_TrueRingsChi2Pi,fh_Fake7RingsChi2,fh_Fake8RingsChi2,"chi2"); }