void HistoData::drawResult(TH1 *Summary, bool Vertical, bool SetBinLabel) { // add label to the summary if desired if (SetBinLabel) { Summary->GetXaxis()->SetBinLabel(bin,getRefHisto()->GetTitle()); //Summary->GetXaxis()->SetBinLabel(bin,name.c_str()); } else Summary->GetXaxis()->SetBinLabel(bin,name.c_str()); double minimum = Summary->GetMinimum(); // determine where to draw the result (score axis) // 1: solid bar starts // 2: solid bar ends, hatched bar starts // 3: hatched bar ends double score1 = minimum; double score2 = (lowScore == 10. || lowScore < minimum) ? minimum : lowScore; double score3 = (lowScore == 10.) ? 1 : ((highScore < minimum) ? minimum : highScore); // determine where to draw the result (binning axis) double binCenter = Summary->GetBinCenter(bin); double binWidth = Summary->GetBinWidth(bin); double bin1 = binCenter - binWidth / 3; double bin2 = binCenter + binWidth / 3; // set coordinates of display based on plot alignment double solidX1, solidY1, solidX2, solidY2; double hatchedX1, hatchedY1, hatchedX2, hatchedY2; double axisX1, axisY1, axisX2, axisY2; if (Vertical) { solidX1 = bin1; solidX2 = bin2; solidY1 = score1; solidY2 = score2; hatchedX1 = bin1; hatchedX2 = bin2; hatchedY1 = score2; hatchedY2 = score3; axisX1 = bin1; axisX2 = bin2; axisY1 = minimum; axisY2 = minimum; } else { solidX1 = score1; solidX2 = score2; solidY1 = bin1; solidY2 = bin2; hatchedX1 = score2; hatchedX2 = score3; hatchedY1 = bin1; hatchedY2 = bin2; axisX1 = minimum; axisX2 = minimum; axisY1 = bin1; axisY2 = bin2; } // a solid bar is drawn from zero to the lowest score if (lowScore > minimum && lowScore != 10.) { TPave *solidBar = new TPave(solidX1,solidY1,solidX2,solidY2,1,""); solidBar->SetBit(kCanDelete); solidBar->SetLineColor(lineUseFillColor ? solidFillColor : solidLineColor); solidBar->SetFillColor(solidFillColor); solidBar->SetFillStyle(solidFillStyle); solidBar->Draw(); } // a hatched bar is drawn from the lowest score to the highest score if ((lowScore != highScore && highScore > minimum) || lowScore == 10.) { TPave *hatchedBar = new TPave(hatchedX1,hatchedY1,hatchedX2,hatchedY2,1,""); hatchedBar->SetBit(kCanDelete); hatchedBar->SetLineColor(lineUseFillColor ? shadedFillColor : shadedLineColor); hatchedBar->SetFillColor(shadedFillColor); hatchedBar->SetFillStyle(3004); hatchedBar->Draw(); } // paste a line over the base axis to fix border color artifacts TLine *axisLine = new TLine(axisX1,axisY1,axisX2,axisY2); if (Vertical) axisLine->SetLineColor(Summary->GetAxisColor("X")); else axisLine->SetLineColor(Summary->GetAxisColor("Y")); axisLine->SetBit(kCanDelete); axisLine->Draw("SAME"); //paste a line before (in this proceeding that means after) Barrel and Endcap Plots if ( name == "ERPt" || name == "BRPt" ) { axisY1=axisY2=binCenter+binWidth/2; axisX2=Summary->GetMaximum(); axisX1=Summary->GetMinimum()-200; TLine *regionLine = new TLine(axisX1,axisY1,axisX2,axisY2); regionLine->SetLineColor(Summary->GetAxisColor("X")); regionLine->SetBit(kCanDelete); regionLine->SetLineWidth(3); regionLine->Draw(); } }