Skip to content

[PWGHF] HFInvMassFitter: stabilize fit quality, add fit-quality status to the output - #17348

Open
lubynets wants to merge 34 commits into
AliceO2Group:masterfrom
lubynets:hff
Open

[PWGHF] HFInvMassFitter: stabilize fit quality, add fit-quality status to the output#17348
lubynets wants to merge 34 commits into
AliceO2Group:masterfrom
lubynets:hff

Conversation

@lubynets

@lubynets lubynets commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

1. Fit quality stabilization
With the existing version of the fitter some fits are exceptionally poor, and the shape of background and / or peak is completely wrong. It happens due to wrong estimation of initial values of background's and signal's integral. In this PR:
-- Estimate of background and signal integral was fixed;
-- Pre-fit of background sidebands is now done with chi2FitTo() always, since fitTo() function (likelihood) turned out to be agnostic to the Ranges() parameter, i.e. it also fitted the peak when sidebands were requested (that's why at some fit plots the gray line representing sidebands pre-fit was sometimes completely misfittig, while the total fit looked healthy).

2. Add fit-quality status to the output
-- hFitResult histogram is added to the output, which contains RooFit's status, covariance matrix quality (cov qual), estimated distance to minimum (edm), minimum value of the negative log-likelihood (minNLL) and global correlation coefficient of the signal's integral with other fit parameters (N Sig GCC);
-- CovCorrMatrices/hCovCorrMatrix histograms are added, which contain covariance and correlation across all fit parameters.

3. Code cleaning
-- Avoided crash if a single histogram fitting is failed. Instead the exception is handled and fitting of remaining histograms continues;
-- Fixed (most of) clang-tidy and cpp check errors.

lubynets added 30 commits June 12, 2026 14:28
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown

O2 linter results: ❌ 0 errors, ⚠️ 0 warnings, 🔕 1 disabled

@github-actions github-actions Bot changed the title HFInvMassFitter: stabilize fit quality, add fit-quality status to the output [PWGHF] HFInvMassFitter: stabilize fit quality, add fit-quality status to the output Aug 5, 2026

@vkucera vkucera left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @lubynets , thanks for the fixes!

Comment on lines -498 to +526
auto setFixedValue = [&iSliceVar](bool const& isFix, std::vector<double> const& fixManual, const TH1* histToFix, std::function<void(double)> setFunc, std::string const& var) -> void {
auto setFixedValue = [&iSliceVar, massFitter](bool const& isFix, std::vector<double> const& fixManual, const TH1* histToFix, void (HFInvMassFitter::*setter)(double), std::string const& var) -> void {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the motivation for removing std::function here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wanted to make setFixedValue() uniform with setDscbParameter()

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, thanks. What speaks against using std::function everywhere?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No special reasoning against std::function, it was a random choice. Are there reasons not to use void()()?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No special reasoning against std::function, it was a random choice. Are there reasons not to use void()()?

Isn't it some kind of old unsafe C-style syntax that has been superseded by stuff in the standard library?

@alibuild

alibuild commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Error while checking build/O2Physics/code-check for 0336f86 at 2026-08-05 20:47:

## sw/BUILD/O2Physics-code-check-latest/log
--
========== List of issues found ==========
++ echo 'Found 33 errors and 0 warnings.'
Found 33 errors and 0 warnings.
++ [[ 33 -gt 0 ]]
++ cat /sw/BUILD/abc6e70a00765aeef84332e4662d97fe3d2e9932/O2Physics-code-check/errors.txt
PWGHF/D2H/Macros/HFInvMassFitter.cxx:233:45: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:251:45: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:267:7: error: use auto when initializing with a cast to avoid duplicating the type name [modernize-use-auto,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:279:45: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:294:48: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:362:39: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:368:46: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:370:46: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:376:46: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:382:46: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:389:45: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:396:49: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:526:46: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:527:42: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:528:46: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:529:42: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:549:50: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:551:50: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:553:50: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:555:50: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:561:50: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:563:50: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:565:50: error: use designated initializer list to initialize 'ParameterRanges' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/HFInvMassFitter.cxx:1214:9: error: no header providing "TMatrixDSym" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGHF/D2H/Macros/runMassFitter.C:299:15: error: use designated initializer list to initialize 'DecayInfo' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/runMassFitter.C:300:12: error: use designated initializer list to initialize 'DecayInfo' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/runMassFitter.C:301:12: error: use designated initializer list to initialize 'DecayInfo' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/runMassFitter.C:302:18: error: use designated initializer list to initialize 'DecayInfo' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/runMassFitter.C:303:18: error: use designated initializer list to initialize 'DecayInfo' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/runMassFitter.C:304:15: error: use designated initializer list to initialize 'DecayInfo' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/runMassFitter.C:305:21: error: use designated initializer list to initialize 'DecayInfo' [modernize-use-designated-initializers,-warnings-as-errors]
PWGHF/D2H/Macros/runMassFitter.C:306:17: error: use 'contains' to check for membership [readability-container-contains,-warnings-as-errors]
PWGHF/D2H/Macros/runMassFitter.C:575:25: error: no header providing "std::exception" is directly included [misc-include-cleaner,-warnings-as-errors]
++ [[ 0 -gt 0 ]]
++ [[ 33 -gt 0 ]]
++ exit 1
--

Full log here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pwghf PWG-HF

Development

Successfully merging this pull request may close these issues.

3 participants