{ gROOT->Reset(); Int_t MAXRESULTS = 30; Float_t analysisIndex[MAXRESULTS]; Float_t ZeroArray[MAXRESULTS]; TString analysisDescription[MAXRESULTS]; Float_t analysisLuminosityPb[MAXRESULTS]; Float_t centralValue[MAXRESULTS]; Float_t statErrorPos[MAXRESULTS]; Float_t statErrorNeg[MAXRESULTS]; Float_t systErrorPos[MAXRESULTS]; Float_t systErrorNeg[MAXRESULTS]; Float_t statSystErrorPos[MAXRESULTS]; Float_t statSystErrorNeg[MAXRESULTS]; for (Int_t j = 0; j < MAXRESULTS; j++) { analysisIndex[j] = j + 1; ZeroArray[j] = 0.; } Int_t i = -1; // You can put in all of the different analyses here. i++; analysisDescription[i] = "^{*}Tevatron Summer'06"; analysisLuminosityPb[i] = 100.; centralValue[i] = 171.4; statErrorPos[i] = 1.2; statErrorNeg[i] = 1.2; systErrorPos[i] = 1.8; systErrorNeg[i] = 1.8; i++; analysisDescription[i] = "^{*}CDF Summer 2006"; analysisLuminosityPb[i] = 1030.; centralValue[i] = 170.9; statErrorPos[i] = 1.4; statErrorNeg[i] = 1.4; systErrorPos[i] = 1.9; systErrorNeg[i] = 1.9; i++; analysisDescription[i] = "^{*}All hadronic: Ideogram"; analysisLuminosityPb[i] = 310.; centralValue[i] = 177.1; statErrorPos[i] = 4.9; statErrorNeg[i] = 4.9; systErrorPos[i] = 4.7; systErrorNeg[i] = 4.7; i++; analysisDescription[i] = "^{*}All hadronic: Template"; analysisLuminosityPb[i] = 1020.; centralValue[i] = 174.0; statErrorPos[i] = 2.2; statErrorNeg[i] = 2.2; systErrorPos[i] = 4.8; systErrorNeg[i] = 4.8; i++;: analysisDescription[i] = "^{*}Lepton+Jets: M^{top}_{reco}+W #rightarrow jj"; analysisLuminosityPb[i] = 680.; centralValue[i] = 173.4; statErrorPos[i] = 1.7; statErrorNeg[i] = 1.7; systErrorPos[i] = 2.2; systErrorNeg[i] = 2.2; i++; analysisDescription[i] = "^{*}Lepton+Jets: Matrix Element"; analysisLuminosityPb[i] = 940.; centralValue[i] = 170.9; statErrorPos[i] = 1.6; statErrorNeg[i] = 1.6; systErrorPos[i] = 2.0; systErrorNeg[i] = 2.0; i++; analysisDescription[i] = "^{*}Lepton+Jets: L_{xy}"; analysisLuminosityPb[i] = 695.; centralValue[i] = 183.9; statErrorPos[i] = 15.7; statErrorNeg[i] = 13.9; systErrorPos[i] = 5.6; systErrorNeg[i] = 5.6; i++; analysisDescription[i] = "Lepton+Jets: DLM"; analysisLuminosityPb[i] = 318.; centralValue[i] = 173.2; statErrorPos[i] = 2.6; statErrorNeg[i] = 2.4; systErrorPos[i] = 3.2; systErrorNeg[i] = 3.2; i++; analysisDescription[i] = "^{*}Dilepton: DLM"; analysisLuminosityPb[i] = 340.; centralValue[i] = 166.6; statErrorPos[i] = 7.3; statErrorNeg[i] = 6.7; systErrorPos[i] = 3.2; systErrorNeg[i] = 3.2; i++; analysisDescription[i] = "Dilepton: #phi of #nu"; analysisLuminosityPb[i] = 340.; centralValue[i] = 169.7; statErrorPos[i] = 8.9; statErrorNeg[i] = 9.0; systErrorPos[i] = 4.0; systErrorNeg[i] = 4.0; i++; analysisDescription[i] = "Dilepton: P_{z}(t#bar{t})"; analysisLuminosityPb[i] = 340.; centralValue[i] = 169.5; statErrorPos[i] = 7.7; statErrorNeg[i] = 7.2; systErrorPos[i] = 4.0; systErrorNeg[i] = 4.0; i++; analysisDescription[i] = "Dilepton: #nu weighting"; analysisLuminosityPb[i] = 360.; centralValue[i] = 170.7; statErrorPos[i] = 6.9; statErrorNeg[i] = 6.5; systErrorPos[i] = 3.7; systErrorNeg[i] = 3.7; i++; analysisDescription[i] = "Dilepton: Combined"; analysisLuminosityPb[i] = 360.; centralValue[i] = 167.9; statErrorPos[i] = 5.2; statErrorNeg[i] = 5.2; systErrorPos[i] = 3.7; systErrorNeg[i] = 3.7; i++; analysisDescription[i] = "^{*}Dilepton: Matrix Element"; analysisLuminosityPb[i] = 1030.; centralValue[i] = 164.5; statErrorPos[i] = 3.9; statErrorNeg[i] = 3.9; systErrorPos[i] = 3.9; systErrorNeg[i] = 3.9; i++; analysisDescription[i] = "^{*}Dilepton: Matrix Element b-tag"; analysisLuminosityPb[i] = 955.; centralValue[i] = 167.3; statErrorPos[i] = 4.6; statErrorNeg[i] = 4.6; systErrorPos[i] = 3.8; systErrorNeg[i] = 3.8; i++; analysisDescription[i] = "Run 1 All-hadronic"; analysisLuminosityPb[i] = 100.; centralValue[i] = 186.0; statErrorPos[i] = 10.0; statErrorNeg[i] = 10.0; systErrorPos[i] = 5.7; systErrorNeg[i] = 5.7; i++; analysisDescription[i] = "Run 1 Lepton+Jets"; analysisLuminosityPb[i] = 100.; centralValue[i] = 176.1; statErrorPos[i] = 5.1; statErrorNeg[i] = 5.1; systErrorPos[i] = 5.3; systErrorNeg[i] = 5.3; i++; analysisDescription[i] = "Run 1 Dilepton"; analysisLuminosityPb[i] = 100.; centralValue[i] = 167.4; statErrorPos[i] = 10.3; statErrorNeg[i] = 10.3; systErrorPos[i] = 4.9; systErrorNeg[i] = 4.9; //Set up a graph with statistical uncertainties only... grStat = new TGraphAsymmErrors(i+1, centralValue, analysisIndex, statErrorNeg, statErrorPos, ZeroArray, ZeroArray); grStat->SetTitle("Results (stat. errors)"); //..and with stat+syst uncertainties for (Int_t j = 0; j < MAXRESULTS; j++) { statSystErrorNeg[j] = sqrt(statErrorNeg[j]**2 + systErrorNeg[j]**2); statSystErrorPos[j] = sqrt(statErrorPos[j]**2 + systErrorPos[j]**2); } grStatSyst = new TGraphAsymmErrors(i+1, centralValue, analysisIndex, statSystErrorNeg, statSystErrorPos, ZeroArray, ZeroArray); grStatSyst->SetTitle(""); //Now draw everything gROOT->SetStyle("Plain"); gStyle->SetOptStat(0); TCanvas *myCanvas = new TCanvas("myCanvas","Summary of CDF Top Mass Measurements", 500, 950); myCanvas->SetBottomMargin(0.1); myCanvas->SetLeftMargin(0.05); myCanvas->SetRightMargin(0.05); myCanvas->SetTopMargin(0.025); //Little trick to control size of x and y axes float ncurrent = i; ncurrent+=2.0; TH2F *nullTH2F = new TH2F("nullTH2F", "", 20, 145., 205., 20, 0., ncurrent); nullTH2F->GetXaxis()->SetTitle("Top Quark Mass (GeV/c^{2})"); nullTH2F->GetYaxis()->SetLabelColor(0); nullTH2F->GetYaxis()->SetNdivisions(1); nullTH2F->GetXaxis()->SetNdivisions(6); nullTH2F->GetXaxis()->CenterTitle(); nullTH2F->Draw(); nullTH2F->Draw(); //Well, this is world average but never mind... //Now it is best single result Float_t theoryCentralValue = centralValue[0]; Float_t theoryErrorNeg = statSystErrorNeg[0]; Float_t theoryErrorPos = statSystErrorPos[0]; TPave *theoryPave = new TPave(theoryCentralValue-theoryErrorNeg, analysisIndex[0]-0.8, theoryCentralValue+theoryErrorPos, analysisIndex[i]+0.4, 0, "br"); //theoryPave->SetFillColor(11); //theoryPave->SetFillStyle(3013); theoryPave->SetFillColor(5); theoryPave->Draw(); //Draw results grStatSyst->SetLineColor(4); grStatSyst->SetLineWidth(3); grStatSyst->SetMarkerColor(2); grStatSyst->SetMarkerStyle(20); grStatSyst->SetMarkerSize(2.0); grStatSyst->Draw("P"); grStat->SetLineColor(2); grStat->SetLineWidth(3); grStat->SetMarkerColor(2); grStat->SetMarkerStyle(20); grStat->SetMarkerSize(2.0); grStat->Draw("P"); //Print numerical values to a string first TLatex *analysisLabel = new TLatex(); for (Int_t j = 0; j <= i; j++) { char cv[20]; TString analysisResult = ""; TString analysisLumi = "("; sprintf(cv,"%4.1f",centralValue[j]); analysisResult += cv; if(statErrorPos[j] == statErrorNeg[j]){ analysisResult += " #pm"; sprintf(cv,"%4.1f",statErrorPos[j]); analysisResult += cv; analysisResult += " #pm "; }else{ analysisResult += " #pm ^{"; sprintf(cv,"%4.1f",statErrorPos[j]); analysisResult += cv; analysisResult += "}_{"; sprintf(cv,"%4.1f",statErrorNeg[j]); analysisResult += cv; analysisResult += "} #pm "; } //symmetric systematic errors sprintf(cv,"%3.1f",systErrorPos[j]); analysisResult += cv; if(j==0){ analysisLumi += "CDF+D0 Run I+II)"; analysisLabel->SetTextColor(4); }else if(j>14){ analysisLumi += "Run 1 only)"; analysisLabel->SetTextColor(1); }else { analysisLabel->SetTextColor(1); if(j==1 || j==3 || j==5 || j==13 || j==14) analysisLabel->SetTextColor(2); analysisLumi = "(L="; sprintf(cv,"%4.0f",analysisLuminosityPb[j]); analysisLumi += cv; analysisLumi += " pb^{-1})"; } std::cout << j << " " << analysisResult << std::endl; //Add description, results and lumi to plot analysisLabel->SetTextSize(0.035); analysisLabel->SetTextFont(62); analysisLabel->DrawLatex(146., analysisIndex[j]-0.45, analysisDescription[j]); analysisLabel->SetTextSize(0.055); analysisLabel->DrawLatex(179., analysisIndex[j]-0.67, analysisResult); analysisLabel->SetTextSize(0.03); analysisLabel->SetTextFont(52); analysisLabel->DrawLatex(148., analysisIndex[j]-0.8, analysisLumi); if(j==i){ TString cdfText = "CDF (*Preliminary)"; analysisLabel->SetTextSize(0.045); analysisLabel->SetTextFont(62); analysisLabel->SetTextColor(1); analysisLabel->DrawLatex(165., analysisIndex[j]+0.52, cdfText); } if(j==0){ TString analysisErrors = "(stat.) #pm (syst.)"; analysisLabel->DrawLatex(191., analysisIndex[j]-0.95, analysisErrors); } } }