39 int nVersions =
fpObjDB->GetNofVersions();
40 int iDef =
fpObjDB->GetDefaultID();
43 std::string sOption = opt;
44 for (
auto& ch : sOption) {
45 ch = std::tolower(ch);
47 bool bDrawRatio = sOption.find(
"r") != std::string::npos;
48 bool bDrawDiff = sOption.find(
"d") != std::string::npos;
51 TString xAxisTitle =
static_cast<TProfile*
>(
fvpObjects[0])->GetXaxis()->GetTitle();
52 TString yAxisTitle =
static_cast<TProfile*
>(
fvpObjects[0])->GetYaxis()->GetTitle();
57 TString sCanvT = TString(
"Comparison result for \"") +
fsBaseName +
"\"";
58 fpCanvasCmp = std::make_shared<TCanvas>(sCanvN, sCanvT, 500, 500);
62 for (
int iV = 0; iV < nVersions; ++iV) {
63 auto* pCopy =
new TGraphAsymmErrors((TH1*)
fvpObjects[iV]);
64 pCopy->SetMarkerStyle(20);
65 pCopy->SetTitle(
fpObjDB->GetVersionLabel(iV).c_str());
66 pMultiGraphOrig->Add(pCopy,
"P");
68 pMultiGraphOrig->GetXaxis()->SetTitle(xAxisTitle);
69 pMultiGraphOrig->GetYaxis()->SetTitle(yAxisTitle);
70 pMultiGraphOrig->Draw(
"A pmc plc");
74 auto* pDefault =
static_cast<TProfile*
>(
fvpObjects[iDef])->ProjectionX();
79 TString sCanvT = TString(
"Comparison result for \"") +
fsBaseName +
"\" (ratio)";
80 fpCanvasRat = std::make_shared<TCanvas>(sCanvN, sCanvT, 500, 500);
83 TString titleRatio = Form(
"Ratio to %s",
fpObjDB->GetVersionLabel(iDef).c_str());
84 auto* pMultiGraphRatio =
new TMultiGraph((
fsBaseName +
"_ratio").c_str(), titleRatio);
85 for (
int iV = 0; iV < nVersions; ++iV) {
89 auto* pRatio =
static_cast<TProfile*
>(
fvpObjects[iV])->ProjectionX();
90 auto currErrorLevel = gErrorIgnoreLevel;
91 gErrorIgnoreLevel = kError;
92 auto* pCopy =
new TGraphAsymmErrors(pRatio, pDefault,
"pois");
93 gErrorIgnoreLevel = currErrorLevel;
94 pCopy->GetYaxis()->SetTitle(
"ratio");
95 pCopy->SetTitle(
fpObjDB->GetVersionLabel(iV).c_str());
96 pCopy->SetMarkerStyle(20);
97 pMultiGraphRatio->Add(pCopy,
"P");
103 pMultiGraphRatio->GetXaxis()->SetTitle(xAxisTitle);
104 pMultiGraphRatio->GetYaxis()->SetTitle(
"ratio");
105 pMultiGraphRatio->Draw(
"A pmc plc");
112 TString sCanvT = TString(
"Comparison result for \"") +
fsBaseName +
"\" (ratio)";
113 fpCanvasDiff = std::make_shared<TCanvas>(sCanvN, sCanvT, 500, 500);
116 TString titleDiff = Form(
"Difference from %s",
fpObjDB->GetVersionLabel(iDef).c_str());
117 auto* pMultiGraphDiff =
new TMultiGraph((
fsBaseName +
"_diff").c_str(), titleDiff);
118 for (
int iV = 0; iV < nVersions; ++iV) {
122 auto* pDiff =
static_cast<TProfile*
>(
fvpObjects[iV])->ProjectionX();
123 pDiff->Add(pDefault, -1.);
124 auto* pCopy =
new TGraphAsymmErrors(pDiff);
125 pCopy->GetYaxis()->SetTitle(
"difference");
126 pCopy->SetTitle(
fpObjDB->GetVersionLabel(iV).c_str());
127 pCopy->SetMarkerStyle(20);
128 pMultiGraphDiff->Add(pCopy,
"P");
134 pMultiGraphDiff->GetXaxis()->SetTitle(xAxisTitle);
135 pMultiGraphDiff->GetYaxis()->SetTitle(
"difference");
136 pMultiGraphDiff->Draw(
"A pmc plc");