Skip to content
Snippets Groups Projects
  1. Jan 12, 2023
    • Jonas Rembser's avatar
      [RF] Fix ranged integrals with factorized variables · ae7ef4fe
      Jonas Rembser authored
      The `RooRealIntegral` class is smart enough to figure out which
      variables the function the integrated function doesn't depend on and
      trivially integrates them itself by multiplying with the variable
      definition range.
      
      However, if the integration range is a subrange of the variable range,
      this was not considered. This resulted in wrong results. for integrals
      like `pdf.createIntegral(x, "subrange")`, where the pdf doesn't depend
      on x. These kind of integrals can occur in the projections that the
      RooAddPdf does, so it's important that they work, and fixing this
      partially addresses #11486.
      
      This change also fixes a so-far unknown bug in the `RooXYChi2Var`, which
      also used these kind of integrals. Without this fix, the `Integrate()`
      feature for `chi2FitTo()` was completely broken, which can be seen in
      the output of the `rf609` tutorial with any previous ROOT version. The
      tutorial looks okay by chance, because the function is dominted by the
      quadratic term in `x` that is constant in the fit. But if one makes this
      a floating parameter, the problem gets obvious.
      
      Probably that was the reason why the main model parameter was set
      constant to begin with, to sweep the bug under the rug. Now, the
      tutorials are updated to have the quadratic coefficient floating too.
      And also `stressRooFit`, since the reference file has to be updated
      anyway.
      
      To demonstrate that things work correctly now, a new unit test was
      implemented that does the closure check of the `integrate()` feature of
      the `RooXYChi2Var` with a linear fit function.
      ae7ef4fe
  2. Jan 09, 2023
    • Jonas Rembser's avatar
      [RF] Fix copy-paste error in rf205 tutorial and stressRooFit test · 3da7a349
      Jonas Rembser authored
      In the `rf205` tutorial and the associated stressRooFit test, the `bkg`
      RooAddPdf was created using the `sig1frac`, while it is clearly the idea
      to use the `bkg1frac` parameter.
      
      This is fixed in this commit, also fixing the name of the `bkg1frac`
      parameter, which was accidentally set to `sig1frac` (probably a
      copy-paste error).
      
      However, to not change the output of the tutorial and the stressRooFit
      test, the value of `bkg1frac` was set to the same value as `sig1frac`,
      such that this commit only fixes the model but doesn't change the
      tutorial and test output.
      3da7a349
  3. Jan 02, 2023
  4. Dec 19, 2022
    • Lorenzo Moneta's avatar
      [hist] Return direct a zero Hessian for linear functions · 9b702ee5
      Lorenzo Moneta authored
      In the WrappedMultiTF1 when trying to compute the Hessian for linear functions via TFormula::HessianPar , the code asserts in CLAD since there is no Hessian to compute.
      Return then by default a zero value
      
      [math][minuit2] Fix some warning message in Minuit2
      
      [math][fit] Enable External Hessian computation only for Minuit2 to avoid Hessian check in case of linear fitting
      
      Fix also an issue with TFumiliMinimizer (divide correctly by  2 in chi2)
      and fix a bug in computing Chi2 hessian element that is used by fumili
      
      In stressHistoFit uses Fumili2 for test without analytical gradients (w/o option G)
      9b702ee5
  5. Dec 09, 2022
  6. Dec 05, 2022
    • Jonas Rembser's avatar
      [RF] Improve `RooHistPdf::plotSamplingHint` · a7b99bee
      Jonas Rembser authored
      In the implementation of `RooHistPdf::plotSamplingHint`, some of the
      returned values can be outside the variable definition range. This might
      lead to invalid evaluations when the sampling hints are also used to
      evaluate other PDF components of a composite PDF, as reported in #11482.
      
      This commit suggests an improved algorithm for the sampling hint:
      consider only bin boundaries that are strictly between the plot limits
      within some epsilon, and for the limits just sample two additional
      points left and light that are some epsilon aways from the plot limits.
      
      The `stressRooFit_ref.root` reference file needs to be updated with this
      change, because the sampling changes the RooPlots that are used as
      reference objects.
      
      Closes #11482.
      a7b99bee
  7. Dec 01, 2022
  8. Nov 14, 2022
  9. Nov 08, 2022
  10. Oct 27, 2022
  11. Sep 29, 2022
  12. Sep 23, 2022
  13. Sep 22, 2022
  14. Sep 21, 2022
  15. Sep 15, 2022
  16. Aug 24, 2022
  17. Aug 17, 2022
    • Jonas Rembser's avatar
      [RF] Use `recursiveRedirectServers()` in NormalizationHelpers · 4b5afbe8
      Jonas Rembser authored
      In the `foldIntegrals()` function that reverses the unfolting of
      normalization integrals in the computation graph, some custom logic was
      used to redirect the servers. However, it caused some failures in the
      ASAN builds because it accessed invalid memory.
      
      This commit suggests to fix that by using the already existing
      `RooAbsArg::recursiveRedirectServers()` function for the same logic.
      
      Furthermore, in `unfoldIntegrals()`, clients outside the computation
      graph are not considered for the server redirection, which also fixes
      ASAN build failures.
      4b5afbe8
  18. Aug 16, 2022
  19. Aug 05, 2022
    • Jonas Rembser's avatar
      [RF] Also test different BatchModes in `createNLL` in stressRooFit · 21cef8d6
      Jonas Rembser authored
      In stressRooFit, you could already globally select the BatchMode for
      `fitTo` calls. With this commit, the selection is also considered for
      `createNLL` calls, widening the test coverage of the new BatchMode.
      
      In particular, this tests the plotting of likelihood functions, which is
      much faster when using the new BatchMode backend (up to a factor of 10
      in the first profile NLL tuutorial).
      21cef8d6
  20. Jul 25, 2022
    • Axel Naumann's avatar
      [cmake,test] Get rid of `lsb_release`: · 2dde3d06
      Axel Naumann authored
      It is available less and less often, and we do not actually
      benefit a lot from printing the distro (stress) or we can get
      the same info from /etc/os-release (cmake).
      2dde3d06
  21. Jul 20, 2022
  22. Jun 29, 2022
  23. Jun 21, 2022
  24. Jun 09, 2022
  25. May 30, 2022
  26. May 19, 2022
  27. May 18, 2022
    • Jonas Rembser's avatar
      [RF] Make non-command arg constructors of `RooChi2Var` private · 30d9e625
      Jonas Rembser authored
      In the RooChi2Var, there was another case of inconsistency between
      constructors that seemingly do the same but actually don't.
      
      A RooChi2Var should be created with the constructors that take RooFit
      command arguments. However, there were also other constructors used by
      the RooFit test statistic implementation details (i.e. in
      `RooAbsOptTestStatistic::create`) that when used with default aruments
      behave inconsistently with the command arg constructors: the default
      error type is different, and errors will be estimated from the pdf and
      not from the data.
      
      This lead to the confusing situation that when creates a `RooChi2Var`
      without any command arguments, the default error mode is suddenly
      different. This inconsistency should be removed by having only the
      command argument constructors part of the public interface.
      
      Making these constructors private should not be a problem. There were
      already considered implementaiton details before, and their interface
      was already changed anyway to use the configuration structs in 6.26.
      Nobody has complained about that so far.
      
      Closes #10557.
      30d9e625
  28. May 06, 2022
  29. May 03, 2022
  30. Mar 17, 2022
  31. Mar 15, 2022
  32. Feb 24, 2022
Loading