Skip to content

Commit c4053d5

Browse files
committed
do not crash when one of slice fits is failed
1 parent 5aee216 commit c4053d5

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

PWGHF/D2H/Macros/HFInvMassFitter.cxx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,7 @@ void HFInvMassFitter::fillWorkspace(RooWorkspace& workspace) const
575575
// draw fit output
576576
void HFInvMassFitter::drawFit(TVirtualPad* pad, const std::vector<std::string>& plotLabels, bool writeParInfo)
577577
{
578+
std::cout << "drawFit() start\n";
578579
gStyle->SetOptStat(0);
579580
gStyle->SetCanvasColor(0);
580581
gStyle->SetFrameFillColor(0);
@@ -634,11 +635,17 @@ void HFInvMassFitter::drawFit(TVirtualPad* pad, const std::vector<std::string>&
634635
if (mHistoTemplateRefl) {
635636
mReflFrame->Draw("same");
636637
}
638+
std::cout << "drawFit() finish\n";
637639
}
638640

639641
// draw residual distribution on canvas
640642
void HFInvMassFitter::drawResidual(TVirtualPad* pad)
641643
{
644+
std::cout << "drawResidual() start\n";
645+
if (mResidualFrame == nullptr) {
646+
printf("Warning HFInvMassFitter::drawResidual(): mResidualFrame == nullptr and will not be drawn\n");
647+
return;
648+
}
642649
pad->cd();
643650
mResidualFrame->GetYaxis()->SetTitle("");
644651
auto* textInfo = new TPaveText(0.12, 0.65, 0.47, .89, "NDC");
@@ -655,11 +662,17 @@ void HFInvMassFitter::drawResidual(TVirtualPad* pad)
655662
mResidualFrame->addObject(textInfo);
656663
mResidualFrame->Draw();
657664
highlightPeakRegion(mResidualFrame);
665+
std::cout << "drawResidual() finish\n";
658666
}
659667

660668
// draw ratio on canvas
661669
void HFInvMassFitter::drawRatio(TVirtualPad* pad)
662670
{
671+
std::cout << "drawRatio() start\n";
672+
if (mRatioFrame == nullptr) {
673+
printf("Warning HFInvMassFitter::drawRatio(): mRatioFrame == nullptr and will not be drawn\n");
674+
return;
675+
}
663676
pad->cd();
664677
mRatioFrame->GetXaxis()->SetTitleOffset(1.2);
665678
mRatioFrame->GetYaxis()->SetTitleOffset(1.5);
@@ -673,6 +686,7 @@ void HFInvMassFitter::drawRatio(TVirtualPad* pad)
673686
mRatioFrame->addObject(line);
674687
mRatioFrame->Draw();
675688
highlightPeakRegion(mRatioFrame);
689+
std::cout << "drawRatio() finish\n";
676690
}
677691

678692
// draw peak region with vertical lines
@@ -1162,13 +1176,17 @@ double HFInvMassFitter::randomizeInitialParameter(const ParameterRanges& paramet
11621176

11631177
double HFInvMassFitter::integrateHistoInvMassOverWorkspaceRanges(const std::vector<std::string>& ranges) const
11641178
{
1179+
std::cout << "integrateHistoInvMassOverWorkspaceRanges()\n";
11651180
double sumEntries{0.};
11661181
double sumLengths{0.};
11671182
for (const auto& range : ranges) {
11681183
const auto [lo, hi] = mWorkspace->var("mass")->getRange(range.c_str());
11691184
sumEntries += mHistoInvMass->Integral(mHistoInvMass->FindBin(lo), mHistoInvMass->FindBin(hi));
11701185
sumLengths += (hi - lo);
1186+
std::cout << "lo = " << lo << ", hi = " << hi << "\n";
1187+
std::cout << "sumEntries = " << sumEntries << "\n";
11711188
}
1189+
mHistoInvMass->SaveAs("mHistoInvMass.root");
11721190
const auto [fullLo, fullHi] = mWorkspace->var("mass")->getRange("full");
11731191
const double fullLength = fullHi - fullLo;
11741192

PWGHF/D2H/Macros/runMassFitter.C

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,11 @@ void runMassFitter(const std::string& configFileName)
542542
setDscbParameter(dscbNRLower, &HFInvMassFitter::setDscbNRLowLimit);
543543
setDscbParameter(dscbNRUpper, &HFInvMassFitter::setDscbNRUpLimit);
544544

545-
massFitter->doFit();
545+
try {
546+
massFitter->doFit();
547+
} catch (...) {
548+
std::cout << "exception caught while doing fit\n";
549+
}
546550

547551
auto drawOnCanvas = [&](std::vector<TCanvas*>& canvas, std::function<void()> drawer) {
548552
if (nHistograms > 1) {

0 commit comments

Comments
 (0)