+ //printf("doing axis: %s, x axis has %d %d bins, min %f %f max %f %f\n", axis, division->GetNbinsX(), proj2->GetNbinsX(), division->GetXaxis()->GetBinLowEdge(1), proj2->GetXaxis()->GetBinLowEdge(1), division->GetXaxis()->GetBinUpEdge(division->GetNbinsX()), proj2->GetXaxis()->GetBinUpEdge(proj2->GetNbinsX()));
+ //printf("doing axis: %s, y axis has %d %d bins, min %f %f max %f %f\n", axis, division->GetNbinsY(), proj2->GetNbinsY(), division->GetYaxis()->GetBinLowEdge(1), proj2->GetYaxis()->GetBinLowEdge(1), division->GetYaxis()->GetBinUpEdge(division->GetNbinsY()), proj2->GetYaxis()->GetBinUpEdge(proj2->GetNbinsY()));
+ division->Divide(proj, proj2, 1, 1, "B");
+ division->SetTitle(Form("%s divided %s", proj->GetTitle(), proj2->GetTitle()));
+
+ if (putErrors)
+ {
+ division->Sumw2();
+ if (division->GetDimension() == 1)
+ {
+ Int_t nBins = division->GetNbinsX();
+ for (Int_t i = 1; i <= nBins; ++i)
+ if (proj2->GetBinContent(i) != 0)
+ division->SetBinError(i, TMath::Sqrt(proj->GetBinContent(i)) / proj2->GetBinContent(i));
+ }
+ else if (division->GetDimension() == 2)
+ {
+ Int_t nBinsX = division->GetNbinsX();
+ Int_t nBinsY = division->GetNbinsY();
+ for (Int_t i = 1; i <= nBinsX; ++i)
+ for (Int_t j = 1; j <= nBinsY; ++j)
+ if (proj2->GetBinContent(i, j) != 0)
+ division->SetBinError(i, j, TMath::Sqrt(proj->GetBinContent(i, j)) / proj2->GetBinContent(i, j));
+ }
+ }
+
+ if (save)
+ {
+ proj->Write();
+ proj2->Write();
+ division->Write();
+ }