musrfit 1.10.0
PFitterFcn Class Reference

Objective function interface for ROOT Minuit2 minimization. More...

#include <PFitterFcn.h>

Inheritance diagram for PFitterFcn:
Collaboration diagram for PFitterFcn:

Public Member Functions

 PFitterFcn (PRunListCollection *runList, Bool_t useChi2)
 Constructor for objective function.
 
 ~PFitterFcn ()
 Destructor.
 
Double_t Up () const
 Returns error definition for Minuit2 (Up value).
 
Double_t operator() (const std::vector< Double_t > &par) const
 Evaluates objective function for given parameters.
 
UInt_t GetTotalNoOfFittedBins ()
 Returns total number of bins used in the fit across all runs.
 
UInt_t GetNoOfFittedBins (const UInt_t idx)
 Returns number of fitted bins for a specific run.
 
void CalcExpectedChiSquare (const std::vector< Double_t > &par, Double_t &totalExpectedChisq, std::vector< Double_t > &expectedChisqPerRun)
 Calculates expected χ² (or maxLH) for quality assessment.
 

Private Attributes

Double_t fUp
 Error definition: 1.0 for χ² (1σ = Δχ²=1), 0.5 for maxLH (1σ = ΔmaxLH=0.5)
 
Bool_t fUseChi2
 Fit mode flag: true = χ² minimization, false = max log-likelihood.
 
PRunListCollectionfRunListCollection
 Pointer to preprocessed muSR data collection.
 

Detailed Description

Objective function interface for ROOT Minuit2 minimization.

This class implements the FCNBase interface required by ROOT's Minuit2 minimizer. It provides the objective function (χ² or log-likelihood) that Minuit2 minimizes during parameter optimization.

The class serves as a bridge between musrfit's data structures (PRunListCollection) and Minuit2's optimization algorithms, calculating the goodness-of-fit measure for any given parameter set.

Fitting modes:
  • χ² minimization: Standard least-squares fitting for Gaussian errors
  • Maximum likelihood: Poisson statistics, better for low-count data
Usage in fitting workflow:
  1. PFitter creates a PFitterFcn instance with data and fit mode
  2. Minuit2 calls operator()() repeatedly with trial parameter sets
  3. operator()() calculates χ²/maxLH by evaluating theory vs. data
  4. Minuit2 searches parameter space to minimize the returned value
  5. Up() defines the error criterion (Δχ²=1 or ΔmaxLH=0.5 for 1σ)
See also
PFitter, PRunListCollection
ROOT::Minuit2::FCNBase in ROOT Minuit2 documentation

Definition at line 65 of file PFitterFcn.h.

Constructor & Destructor Documentation

◆ PFitterFcn()

PFitterFcn::PFitterFcn ( PRunListCollection * runList,
Bool_t useChi2 )

Constructor for objective function.

Initializes the function evaluator with preprocessed data and configures the error definition based on the fitting mode.

Parameters
runListPointer to collection of preprocessed run data
useChi2If true, use χ² minimization; if false, use maximum likelihood
Note
The runList pointer must remain valid for the lifetime of this object.

Constructor.

Parameters
runListrun list collection
useChi2if true, a chisq fit will be performed, otherwise a log max-likelihood fit will be carried out.

Definition at line 41 of file PFitterFcn.cpp.

References fRunListCollection, fUp, and fUseChi2.

◆ ~PFitterFcn()

PFitterFcn::~PFitterFcn ( )

Destructor.

Destructor

Definition at line 59 of file PFitterFcn.cpp.

Member Function Documentation

◆ CalcExpectedChiSquare()

void PFitterFcn::CalcExpectedChiSquare ( const std::vector< Double_t > & par,
Double_t & totalExpectedChisq,
std::vector< Double_t > & expectedChisqPerRun )

Calculates expected χ² (or maxLH) for quality assessment.

Computes the theoretical expected value of χ² assuming the model is correct. This is used to assess goodness-of-fit:

  • If observed χ² ≈ expected χ²: fit is consistent with data quality
  • If observed χ² >> expected χ²: systematic deviations present
  • If observed χ² << expected χ²: possible overestimated errors

For single histogram fits, expected χ² = NDF. For asymmetry fits, the calculation is more complex due to error propagation.

Parameters
parParameter vector for evaluation
totalExpectedChisqReturns total expected χ²/maxLH (output)
expectedChisqPerRunReturns expected χ²/maxLH for each run (output)
Note
The expectedChisqPerRun vector is resized and filled by this method.

Calculates the expected chisq, expected chisq per run, and chisq per run, if applicable.

Parameters
par
totalExpectedChisqexpected chisq for all run blocks
expectedChisqPerRunexpected chisq vector for all the run blocks

Definition at line 106 of file PFitterFcn.cpp.

References fRunListCollection, and fUseChi2.

◆ GetNoOfFittedBins()

UInt_t PFitterFcn::GetNoOfFittedBins ( const UInt_t idx)
inline

Returns number of fitted bins for a specific run.

Parameters
idxRun index (0-based)
Returns
Number of bins fitted for the specified run

Definition at line 142 of file PFitterFcn.h.

References fRunListCollection.

◆ GetTotalNoOfFittedBins()

UInt_t PFitterFcn::GetTotalNoOfFittedBins ( )
inline

Returns total number of bins used in the fit across all runs.

Returns
Total count of fitted bins (summed over all runs)

Definition at line 133 of file PFitterFcn.h.

References fRunListCollection.

◆ operator()()

Double_t PFitterFcn::operator() ( const std::vector< Double_t > & par) const

Evaluates objective function for given parameters.

This is the core function called by Minuit2 during minimization. It computes either χ² or negative log-likelihood by:

  1. Passing parameters to PRunListCollection
  2. Calculating theory predictions for all runs
  3. Comparing theory vs. data across all fitted bins
  4. Returning the total χ²/maxLH value
Parameters
parParameter vector with current trial values
Returns
χ² value (if fUseChi2=true) or -2×log-likelihood (if fUseChi2=false)
Note
This function must be const as required by FCNBase interface.
For likelihood fits, returns -2×ln(L) so minimization is equivalent to maximizing L.
Performance:
This function is called hundreds to thousands of times during a fit, so it's optimized for speed (parallel evaluation if OpenMP enabled).

Minuit2 interface function call routine. This is the function which should be minimized.

Parameters
para vector with all the parameters of the function

Definition at line 71 of file PFitterFcn.cpp.

References fRunListCollection, and fUseChi2.

◆ Up()

Double_t PFitterFcn::Up ( ) const
inline

Returns error definition for Minuit2 (Up value).

The "Up" value defines what change in the objective function corresponds to 1σ error bars on parameters:

  • For χ² fits: Up = 1.0 (parabolic errors, Δχ²=1)
  • For max likelihood: Up = 0.5 (asymmetric errors, ΔmaxLH=0.5)

This value is used by Minuit2's error analysis algorithms (HESSE, MINOS).

Returns
Error definition value (1.0 for χ², 0.5 for likelihood)
See also
ROOT::Minuit2::FCNBase::Up() in Minuit2 manual

Definition at line 102 of file PFitterFcn.h.

References fUp.

Member Data Documentation

◆ fRunListCollection

PRunListCollection* PFitterFcn::fRunListCollection
private

Pointer to preprocessed muSR data collection.

Definition at line 168 of file PFitterFcn.h.

Referenced by CalcExpectedChiSquare(), GetNoOfFittedBins(), GetTotalNoOfFittedBins(), operator()(), and PFitterFcn().

◆ fUp

Double_t PFitterFcn::fUp
private

Error definition: 1.0 for χ² (1σ = Δχ²=1), 0.5 for maxLH (1σ = ΔmaxLH=0.5)

Definition at line 166 of file PFitterFcn.h.

Referenced by PFitterFcn(), and Up().

◆ fUseChi2

Bool_t PFitterFcn::fUseChi2
private

Fit mode flag: true = χ² minimization, false = max log-likelihood.

Definition at line 167 of file PFitterFcn.h.

Referenced by CalcExpectedChiSquare(), operator()(), and PFitterFcn().


The documentation for this class was generated from the following files: