musrfit 1.9.9
PFitter Class Reference

#include <PFitter.h>

Collaboration diagram for PFitter:

Public Member Functions

 PFitter (PMsrHandler *runInfo, PRunListCollection *runListCollection, Bool_t chisq_only=false, Bool_t yaml_out=false)
 Constructor for the fitting engine.
 
virtual ~PFitter ()
 Destructor - Cleans up dynamically allocated resources.
 
Bool_t IsValid ()
 
Bool_t IsScanOnly ()
 
Bool_t HasConverged ()
 
Bool_t DoFit ()
 Main entry point for executing the fit.
 

Private Member Functions

void GetPhaseParams ()
 Identifies which parameters represent phase angles.
 
PIntVector GetParFromFun (const TString funStr)
 Extracts parameter numbers from a FUNCTIONS block entry.
 
PIntVector GetParFromMap (const TString mapStr)
 Extracts parameter numbers from a map reference.
 
Bool_t CheckCommands ()
 Validates COMMANDS block syntax and builds execution queue.
 
Bool_t SetParameters ()
 Transfers MSR parameters to Minuit2 parameter state.
 
Bool_t ExecuteContours ()
 Executes CONTOURS command (2D error contours).
 
Bool_t ExecuteFitRange (UInt_t lineNo)
 Executes FIT_RANGE command (optimal time-window search).
 
Bool_t ExecuteFix (UInt_t lineNo)
 Executes FIX command (freeze parameters).
 
Bool_t ExecuteHesse ()
 Executes HESSE command (calculate error matrix).
 
Bool_t ExecuteMigrad ()
 Executes MIGRAD command (gradient descent minimization).
 
Bool_t ExecuteMinimize ()
 Executes MINIMIZE command (automatic algorithm selection).
 
Bool_t ExecuteMinos ()
 Executes MINOS command (asymmetric error analysis).
 
Bool_t ExecutePlot ()
 Executes PLOT command (visualize scan/contour results).
 
Bool_t ExecutePrintLevel (UInt_t lineNo)
 Executes PRINT command (set verbosity level).
 
Bool_t ExecuteRelease (UInt_t lineNo)
 Executes RELEASE command (unfreeze parameters).
 
Bool_t ExecuteRestore ()
 Executes RESTORE command (reload saved parameters).
 
Bool_t ExecuteScan ()
 Executes SCAN command (1D parameter space scan).
 
Bool_t ExecuteSave (Bool_t first)
 Executes SAVE command (store current parameters).
 
Bool_t ExecuteSimplex ()
 Executes SIMPLEX command (non-gradient minimization).
 
void PrepareSector (PDoubleVector &param, PDoubleVector &error)
 Prepares sector χ² analysis data structures.
 
Bool_t ExecuteSector (std::ofstream &fout)
 Executes SECTOR command (time-dependent χ² analysis).
 
Double_t MilliTime ()
 Returns current time in milliseconds.
 
PDoubleVector ParamRound (const PDoubleVector &par, const PDoubleVector &err, Bool_t &ok)
 Rounds parameters for output with appropriate precision.
 

Private Attributes

Bool_t fIsValid
 Overall validity flag: true if fitter initialized successfully.
 
Bool_t fIsScanOnly
 Scan mode flag: true if only parameter scans requested (no minimization)
 
Bool_t fConverged
 Convergence flag: true if fit converged to a valid minimum.
 
Bool_t fChisqOnly
 Evaluation-only flag: true to calculate χ² without fitting.
 
Bool_t fYamlOut
 Output flag: true to generate YAML output file (MINUIT2.OUTPUT → yaml)
 
Bool_t fUseChi2
 Fit mode: true = χ² minimization, false = log-max-likelihood.
 
UInt_t fPrintLevel
 Verbosity level: 0=quiet, 1=normal, 2=verbose (Minuit output)
 
UInt_t fStrategy
 Minuit2 strategy: 0=fast/low-accuracy, 1=default, 2=careful/high-accuracy.
 
PMsrHandlerfRunInfo
 Pointer to MSR file handler (parameters, theory, commands)
 
PRunListCollectionfRunListCollection
 Pointer to preprocessed run data collection.
 
PMsrParamList fParams
 Copy of parameter list from MSR file.
 
PMsrLines fCmdLines
 Raw command lines from MSR COMMANDS block.
 
PIntPairVector fCmdList
 Parsed commands: first=command ID, second=line number.
 
std::unique_ptr< PFitterFcnfFitterFcn
 Objective function for Minuit2 minimization.
 
ROOT::Minuit2::MnUserParameters fMnUserParams
 Minuit2 parameter state (values, errors, limits)
 
std::unique_ptr< ROOT::Minuit2::FunctionMinimum > fFcnMin
 Minuit2 function minimum result.
 
Bool_t fScanAll
 Multi-parameter scan flag: false=1D scan, true=2D scan (not fully implemented)
 
UInt_t fScanParameter [2]
 Parameter indices: [0]=primary scan/contour, [1]=secondary (contours only)
 
UInt_t fScanNoPoints
 Number of scan/contour evaluation points (default=41)
 
Double_t fScanLow
 Scan lower bound: 0.0 = auto (2σ below current value)
 
Double_t fScanHigh
 Scan upper bound: 0.0 = auto (2σ above current value)
 
PDoublePairVector fScanData
 Scan results: (parameter_value, χ²) pairs.
 
PDoublePairVector fOriginalFitRange
 Original fit ranges per run (saved for FIT_RANGE command)
 
PStringVector fElapsedTime
 Timing information for each fit command.
 
Bool_t fSectorFlag
 SECTOR command present flag.
 
std::vector< PSectorChisqfSector
 Sector analysis results (χ² vs. time windows)
 
std::vector< bool > fPhase
 Phase parameter flags: true if parameter is a phase angle.
 

Detailed Description

Main fitting engine interfacing with ROOT Minuit2.

PFitter orchestrates the entire fitting process for musrfit:

  • Initializes Minuit2 with parameters from MSR file
  • Executes COMMANDS block directives (MIGRAD, HESSE, MINOS, etc.)
  • Manages parameter fixing, releasing, and boundaries
  • Performs error analysis (Hessian, MINOS)
  • Conducts parameter scans and contour plots
  • Calculates sector χ² for time-window analysis
  • Generates fit output and statistics

Fitting workflow:

  1. Initialize parameters and set boundaries
  2. Execute COMMANDS block sequentially:
    • MIGRAD: Find minimum using gradient descent
    • HESSE: Calculate symmetric errors from covariance matrix
    • MINOS: Calculate asymmetric errors (optional, slower)
    • SAVE: Save parameter state
  3. Update MSR file with fitted parameters and statistics

Minimization modes:

  • χ² minimization: Standard least-squares fitting
  • Maximum likelihood: Poisson statistics (better for low counts)

Example COMMANDS block:

COMMANDS
SET PRINT 1
MIGRAD
MINOS
SAVE

Definition at line 256 of file PFitter.h.

Constructor & Destructor Documentation

◆ PFitter()

PFitter::PFitter ( PMsrHandler * runInfo,
PRunListCollection * runListCollection,
Bool_t chisq_only = false,
Bool_t yaml_out = false )

Constructor for the fitting engine.

Constructor for fitting engine.

Parameters
runInfoPointer to MSR handler containing fit configuration
runListCollectionPointer to collection of data runs to fit
chisq_onlyIf true, only calculate χ² without fitting
yaml_outIf true, generate YAML output file with fit results

Initializes the fitter with MSR configuration and preprocessed data. Sets up the fitting environment including:

  • Parameter lists and command queues
  • Fit mode (χ² vs. likelihood)
  • Strategy and print level defaults
  • Original fit ranges for RANGE commands
  • Phase parameter identification

The constructor validates the COMMANDS block and creates the objective function (PFitterFcn) but does not start the fit. Call DoFit() to execute.

Parameters
runInfoPointer to MSR file handler containing fit configuration
runListCollectionPointer to preprocessed data collection
chisq_onlyIf true, only evaluate χ² without fitting (useful for validation)
yaml_outIf true, generate YAML output file with fit results
Note
Sets fIsValid = false if command validation fails. Check IsValid() before DoFit().
Initialization sequence:
  1. Copy parameters and commands from MSR handler
  2. Store original fit ranges (for FIT_RANGE command)
  3. Parse and validate COMMANDS block
  4. Identify phase parameters (for angle wrapping)
  5. Create objective function interface

Definition at line 290 of file PFitter.cpp.

References CheckCommands(), fChisqOnly, fCmdLines, fConverged, fFitterFcn, fIsScanOnly, fOriginalFitRange, fParams, fPrintLevel, fRunInfo, fRunListCollection, fScanAll, fScanHigh, fScanLow, fScanNoPoints, fScanParameter, fSectorFlag, fStrategy, fUseChi2, fYamlOut, PMsrGlobalBlock::GetFitRange(), PMsrHandler::GetMsrCommands(), PMsrHandler::GetMsrParamList(), GetPhaseParams(), and PMUSR_UNDEFINED.

◆ ~PFitter()

PFitter::~PFitter ( )
virtual

Destructor - Cleans up dynamically allocated resources.

Frees memory used by command lists, scan data, and timing information. Smart pointers (fFitterFcn, fFcnMin) are automatically cleaned up.

Definition at line 352 of file PFitter.cpp.

References fCmdList, fElapsedTime, and fScanData.

Member Function Documentation

◆ CheckCommands()

Bool_t PFitter::CheckCommands ( )
private

Validates COMMANDS block syntax and builds execution queue.

Validates COMMANDS block and builds execution queue.

Parses all command lines, checks for syntax errors, extracts parameters, and populates fCmdList for sequential execution.

Returns
true if all commands are valid, false on syntax errors

Parses all command lines from the MSR file's COMMANDS block, validates syntax and parameters, and constructs an ordered execution list. This ensures commands are executable before starting the fit.

Returns
true if all commands are valid and parseable, false on any error
Validation checks:
  • Command keywords are recognized (MIGRAD, HESSE, MINOS, etc.)
  • Numeric arguments are valid (parameter indices, ranges, point counts)
  • Parameter references are within bounds
  • SCAN/CONTOURS have required arguments
  • FIX/RELEASE specify valid parameter lists
Side effects:
  • Populates fCmdList with (command_ID, line_number) pairs
  • Sets fIsValid = false if any command is invalid
  • Configures scan parameters (fScanParameter, fScanNoPoints, etc.)
  • Detects SECTOR command presence (sets fSectorFlag)
Note
Called automatically by constructor. Errors are reported to stderr.
Some legacy commands (SET BATCH, END RETURN) are silently ignored.
See also
PMN_* command constants in PFitter.h

Definition at line 953 of file PFitter.cpp.

References fCmdLines, fCmdList, fIsScanOnly, fIsValid, fOriginalFitRange, fParams, fRunInfo, fScanAll, fScanHigh, fScanLow, fScanNoPoints, fScanParameter, fSector, fSectorFlag, fStrategy, fUseChi2, PMN_CONTOURS, PMN_EIGEN, PMN_FIT_RANGE, PMN_FIX, PMN_HESSE, PMN_INTERACTIVE, PMN_MACHINE_PRECISION, PMN_MIGRAD, PMN_MINIMIZE, PMN_MINOS, PMN_PLOT, PMN_PRINT, PMN_RELEASE, PMN_RESTORE, PMN_SAVE, PMN_SCAN, PMN_SECTOR, PMN_SIMPLEX, PMN_USER_COVARIANCE, PMN_USER_PARAM_STATE, PSectorChisq::SetRunFirstTime(), and PSectorChisq::SetSectorTime().

Referenced by PFitter().

◆ DoFit()

Bool_t PFitter::DoFit ( )

Main entry point for executing the fit.

Executes the complete fitting procedure.

Processes all commands from the COMMANDS block sequentially, performs the fit, calculates errors, and prepares output statistics.

Returns
true if fit completed successfully, false on error

This is the primary method that orchestrates the entire fitting process:

  1. Transfers parameters from MSR to Minuit2
  2. If chisq_only mode: calculates χ²/maxLH and returns
  3. Otherwise: executes COMMANDS block sequentially
  4. Updates MSR file with fit results and statistics
Returns
true if fit completed successfully (or chisq calculated), false on errors
Execution modes:
  • chisq_only = true: Evaluates objective function once with current parameters, reports χ²/maxLH and NDF, useful for validating parameter sets
  • chisq_only = false: Runs full fit according to COMMANDS block, which typically includes MIGRAD (minimization), HESSE (error matrix), optionally MINOS (asymmetric errors)
COMMANDS execution:
Commands are executed in the order they appear in the MSR file. Common sequence:
SET PRINT 1 # Set verbosity
MIGRAD # Find minimum
HESSE # Calculate symmetric errors
MINOS # Calculate asymmetric errors (optional)
SAVE # Save results to MSR file
Note
Check IsValid() before calling. Check HasConverged() after completion.
Updates fRunInfo with final parameters, errors, and fit statistics.
Prints detailed χ² breakdown per run if multiple runs are fitted.
See also
ExecuteMigrad(), ExecuteHesse(), ExecuteMinos(), ExecuteSave()

Definition at line 647 of file PFitter.cpp.

References ExecuteContours(), ExecuteFitRange(), ExecuteFix(), ExecuteHesse(), ExecuteMigrad(), ExecuteMinimize(), ExecuteMinos(), ExecutePlot(), ExecutePrintLevel(), ExecuteRelease(), ExecuteRestore(), ExecuteSave(), ExecuteScan(), ExecuteSimplex(), fChisqOnly, fCmdList, fFitterFcn, fMnUserParams, fParams, fRunInfo, fRunListCollection, fSector, fSectorFlag, fUseChi2, IsValid(), PMN_CONTOURS, PMN_EIGEN, PMN_FIT_RANGE, PMN_FIX, PMN_HESSE, PMN_INTERACTIVE, PMN_MACHINE_PRECISION, PMN_MIGRAD, PMN_MINIMIZE, PMN_MINOS, PMN_PLOT, PMN_PRINT, PMN_RELEASE, PMN_RESTORE, PMN_SAVE, PMN_SCAN, PMN_SECTOR, PMN_SIMPLEX, PMN_USER_COVARIANCE, PMN_USER_PARAM_STATE, SetParameters(), and status.

◆ ExecuteContours()

Bool_t PFitter::ExecuteContours ( )
private

Executes CONTOURS command (2D error contours).

Calculates confidence regions in 2D parameter space by evaluating χ² on a grid around the minimum.

Returns
true if contour calculation succeeded

Execute the minuit2 contour command. Makes sure that a valid minuit2 minimum is present.

return: true if the contour command could be executed successfully, otherwise returns false.

Definition at line 1688 of file PFitter.cpp.

References fFcnMin, fFitterFcn, fScanData, fScanNoPoints, and fScanParameter.

Referenced by DoFit().

◆ ExecuteFitRange()

Bool_t PFitter::ExecuteFitRange ( UInt_t lineNo)
private

Executes FIT_RANGE command (optimal time-window search).

Scans fit quality vs. fit start time to find the optimal first-good-bin. Useful for determining when background subtraction is adequate.

Parameters
lineNoCommand line number in MSR file
Returns
true if range scan succeeded

Change the fit range via command block.

Parameters
lineNothe line number of the command block

return: true if done, otherwise returns false.

Definition at line 1723 of file PFitter.cpp.

References fCmdLines, fOriginalFitRange, fRunInfo, and fRunListCollection.

Referenced by DoFit().

◆ ExecuteFix()

Bool_t PFitter::ExecuteFix ( UInt_t lineNo)
private

Executes FIX command (freeze parameters).

Prevents specified parameters from varying during subsequent minimization.

Parameters
lineNoCommand line number in MSR file
Returns
true if parameters fixed successfully

Fix parameter list given at lineNo of the command block.

Parameters
lineNothe line number of the command block

return: true if done, otherwise returns false.

Definition at line 1794 of file PFitter.cpp.

References fCmdLines, and fMnUserParams.

Referenced by DoFit().

◆ ExecuteHesse()

Bool_t PFitter::ExecuteHesse ( )
private

Executes HESSE command (calculate error matrix).

Computes the covariance matrix by evaluating second derivatives at the current minimum. Provides symmetric (parabolic) parameter errors.

Returns
true if Hessian calculation succeeded

Execute the minuit2 hesse command.

return: true if the hesse command could be executed successfully, otherwise returns false.

Definition at line 1832 of file PFitter.cpp.

References fElapsedTime, fFitterFcn, fMnUserParams, fParams, fPrintLevel, fRunInfo, and MilliTime().

Referenced by DoFit().

◆ ExecuteMigrad()

Bool_t PFitter::ExecuteMigrad ( )
private

Executes MIGRAD command (gradient descent minimization).

Runs Minuit2's MIGRAD algorithm, the recommended robust minimizer using first derivatives and approximate Hessian updates.

Returns
true if MIGRAD converged to a valid minimum

Execute the minuit2 migrad command.

return: true if the migrad command could be executed successfully, otherwise returns false.

Definition at line 1881 of file PFitter.cpp.

References fConverged, fElapsedTime, fFcnMin, fFitterFcn, fIsValid, fMnUserParams, fParams, fPhase, fPrintLevel, fRunInfo, fStrategy, and MilliTime().

Referenced by DoFit().

◆ ExecuteMinimize()

Bool_t PFitter::ExecuteMinimize ( )
private

Executes MINIMIZE command (automatic algorithm selection).

Lets Minuit2 choose the best minimization strategy. Usually equivalent to MIGRAD for well-behaved problems.

Returns
true if minimization converged

Execute the minuit2 minimize command.

return: true if the minimize command could be executed successfully, otherwise returns false.

Definition at line 1957 of file PFitter.cpp.

References fConverged, fElapsedTime, fFcnMin, fFitterFcn, fIsValid, fMnUserParams, fParams, fPhase, fPrintLevel, fRunInfo, fStrategy, and MilliTime().

Referenced by DoFit().

◆ ExecuteMinos()

Bool_t PFitter::ExecuteMinos ( )
private

Executes MINOS command (asymmetric error analysis).

Computes accurate asymmetric confidence intervals by scanning χ² along each parameter axis. Slower but more accurate than HESSE.

Returns
true if MINOS analysis completed

Execute the minuit2 minos command.

return: true if the minos command could be executed successfully, otherwise returns false.

Definition at line 2034 of file PFitter.cpp.

References fElapsedTime, fFcnMin, fFitterFcn, fMnUserParams, fParams, fRunInfo, and MilliTime().

Referenced by DoFit().

◆ ExecutePlot()

Bool_t PFitter::ExecutePlot ( )
private

Executes PLOT command (visualize scan/contour results).

Displays scan or contour data from previous SCAN/CONTOURS commands.

Returns
true if plot generated successfully

Execute the minuit2 plot command.

return: true.

Definition at line 2103 of file PFitter.cpp.

References fScanData.

Referenced by DoFit().

◆ ExecutePrintLevel()

Bool_t PFitter::ExecutePrintLevel ( UInt_t lineNo)
private

Executes PRINT command (set verbosity level).

Controls Minuit2 output detail: 0=minimal, 1=normal, 2=debug.

Parameters
lineNoCommand line number in MSR file
Returns
true if print level set successfully

Set the print level.

Parameters
lineNothe line number of the command block

return: true if done, otherwise returns false.

Definition at line 2123 of file PFitter.cpp.

References fCmdLines, and fPrintLevel.

Referenced by DoFit().

◆ ExecuteRelease()

Bool_t PFitter::ExecuteRelease ( UInt_t lineNo)
private

Executes RELEASE command (unfreeze parameters).

Allows previously fixed parameters to vary in subsequent fits.

Parameters
lineNoCommand line number in MSR file
Returns
true if parameters released successfully

Release parameter list given at lineNo of the command block.

Parameters
lineNothe line number of the command block

return: true if done, otherwise returns false.

Definition at line 2181 of file PFitter.cpp.

References fCmdLines, and fMnUserParams.

Referenced by DoFit().

◆ ExecuteRestore()

Bool_t PFitter::ExecuteRestore ( )
private

Executes RESTORE command (reload saved parameters).

Restores parameter values from the last SAVE command.

Returns
true if parameters restored successfully

Release all fixed parameters

return: true.

Definition at line 2223 of file PFitter.cpp.

References fMnUserParams.

Referenced by DoFit().

◆ ExecuteSave()

Bool_t PFitter::ExecuteSave ( Bool_t firstSave)
private

Executes SAVE command (store current parameters).

Saves current parameter state for later RESTORE. Updates MSR file statistics on first save (after final fit).

Parameters
firstTrue if this is the first SAVE command in the session
Returns
true if parameters saved successfully

Execute the save command.

Parameters
firstSaveflag indication if this is the first save call and hence write a fresh MINUIT2.OUTPUT

return: true if the valid minuit2 state is found, otherwise returns false.

Definition at line 2272 of file PFitter.cpp.

References ExecuteSector(), fElapsedTime, fFcnMin, fFitterFcn, PMsrStatisticStructure::fMin, PMsrStatisticStructure::fMinExpected, PMsrStatisticStructure::fMinExpectedPerHisto, PMsrStatisticStructure::fMinPerHisto, fMnUserParams, PMsrStatisticStructure::fNdf, PMsrStatisticStructure::fNdfPerHisto, fParams, fRunInfo, fRunListCollection, fSectorFlag, fUseChi2, fYamlOut, PMsrGlobalBlock::GetFitRange(), ParamRound(), PMUSR_UNDEFINED, and PrepareSector().

Referenced by DoFit().

◆ ExecuteScan()

Bool_t PFitter::ExecuteScan ( )
private

Executes SCAN command (1D parameter space scan).

Evaluates χ² along one or two parameter axes to visualize the objective function landscape near the minimum.

Returns
true if scan completed

Execute the minuit2 scan command.

return: true.

Definition at line 2245 of file PFitter.cpp.

References fConverged, fFitterFcn, fMnUserParams, fScanAll, fScanData, fScanHigh, fScanLow, fScanNoPoints, and fScanParameter.

Referenced by DoFit().

◆ ExecuteSector()

Bool_t PFitter::ExecuteSector ( std::ofstream & fout)
private

Executes SECTOR command (time-dependent χ² analysis).

Calculates χ² for progressively wider time windows to identify optimal fit ranges and systematic time-dependent effects.

Parameters
foutOutput stream for sector analysis results
Returns
true if sector analysis completed

Write all chisq/maxLH sector information to MINUIT.OUTPUT and dump it to stdout.

return: if the sector command was successful, otherwise return flase.

Definition at line 2971 of file PFitter.cpp.

References fSector, and fUseChi2.

Referenced by ExecuteSave().

◆ ExecuteSimplex()

Bool_t PFitter::ExecuteSimplex ( )
private

Executes SIMPLEX command (non-gradient minimization).

Runs the Nelder-Mead simplex algorithm. Robust for rough objective functions but slow to converge. Often used before MIGRAD for difficult fits.

Returns
true if SIMPLEX found a minimum

Execute the minuit2 simplex command.

return: true if the simplex command could be executed successfully, otherwise returns false.

Definition at line 2781 of file PFitter.cpp.

References fConverged, fElapsedTime, fFcnMin, fFitterFcn, fIsValid, fMnUserParams, fParams, fPhase, fPrintLevel, fRunInfo, fStrategy, and MilliTime().

Referenced by DoFit().

◆ GetParFromFun()

PIntVector PFitter::GetParFromFun ( const TString funStr)
private

Extracts parameter numbers from a FUNCTIONS block entry.

Parses "funX" references in theory lines to find all parameters used in the function definition.

Parameters
funStrFunction identifier string (e.g., "fun1", "fun23")
Returns
Vector of parameter numbers (1-indexed) used in the function

Parses a function definition to find all parameters it references. Recursively handles nested map references within the function.

Parameters
funStrFunction identifier (e.g., "fun1", "fun23")
Returns
Vector of parameter numbers (1-indexed) used in the function
Example:
If FUNCTIONS block contains:
fun1 = par3 * par7 + map2
Then GetParFromFun("fun1") returns [3, 7, ...params from map2...]
Note
Returns empty vector if function not found or parsing fails.

Definition at line 489 of file PFitter.cpp.

References fRunInfo, and GetParFromMap().

Referenced by GetPhaseParams().

◆ GetParFromMap()

PIntVector PFitter::GetParFromMap ( const TString mapStr)
private

Extracts parameter numbers from a map reference.

Parses "mapX" references to find mapped parameters across all runs. Maps allow different runs to use different parameters for the same theoretical component.

Parameters
mapStrMap identifier string (e.g., "map1", "map5")
Returns
Vector of parameter numbers (1-indexed) referenced by the map

Parses "mapX" to find which parameters are mapped to the X-th position across all RUN blocks. Maps allow different runs to use different parameters for the same theoretical component, enabling multi-run fits with run-dependent parameters.

Parameters
mapStrMap identifier (e.g., "map1", "map5")
Returns
Vector of parameter numbers (1-indexed) mapped at this position
Example:
If RUN blocks have:
RUN 1: map 7 8 9
RUN 2: map 10 11 12
Then GetParFromMap("map1") returns [7, 10] (first map entry per run)
Note
Returns empty vector if map index is out of range or invalid.

Definition at line 570 of file PFitter.cpp.

References fRunInfo.

Referenced by GetParFromFun(), and GetPhaseParams().

◆ GetPhaseParams()

void PFitter::GetPhaseParams ( )
private

Identifies which parameters represent phase angles.

Scans the THEORY block to detect parameters used as phases in standard functions (TFieldCos, bessel, etc.). Phase parameters are constrained to [-360°, +360°] during fitting.

Scans the THEORY block to detect parameters used as phases in standard muSR functions. Phase parameters are flagged to enable automatic wrapping to the interval [-360°, +360°] during fitting, preventing meaningless phase values outside this range.

Recognized phase-containing functions:

  • TFieldCos/tf: phase is 1st parameter
  • bessel/b: phase is 1st parameter
  • skewedGss/skg: phase is 1st parameter
  • staticNKTF/snktf: phase is 1st parameter
  • dynamicNKTF/dnktf: phase is 1st parameter
  • internFld/if: phase is 2nd parameter
  • internBsl/ib: phase is 2nd parameter
  • muMinusExpTF/mmsetf: phase is 5th parameter

Phase references can be:

  • Direct parameter numbers (e.g., "7" → par7)
  • Function references (e.g., "fun3" → all params in function 3)
  • Map references (e.g., "map2" → parameters mapped across runs)
Note
Populates fPhase vector where fPhase[i] = true means parameter i+1 is a phase.
User-defined functions cannot be automatically analyzed for phases.

Definition at line 390 of file PFitter.cpp.

References fPhase, fRunInfo, GetParFromFun(), and GetParFromMap().

Referenced by PFitter().

◆ HasConverged()

Bool_t PFitter::HasConverged ( )
inline

Returns true if fit converged successfully

Returns
Convergence status

Definition at line 281 of file PFitter.h.

References fConverged.

◆ IsScanOnly()

Bool_t PFitter::IsScanOnly ( )
inline

Returns true if only parameter scan requested (no minimization)

Returns
Scan-only flag

Definition at line 277 of file PFitter.h.

References fIsScanOnly.

◆ IsValid()

Bool_t PFitter::IsValid ( )
inline

Returns true if fitter initialized successfully

Returns
Validity status

Definition at line 273 of file PFitter.h.

References fIsValid.

Referenced by DoFit().

◆ MilliTime()

Double_t PFitter::MilliTime ( )
private

Returns current time in milliseconds.

Used for timing fit commands and generating performance statistics.

Returns
Timestamp in milliseconds since epoch

return:

Definition at line 3027 of file PFitter.cpp.

Referenced by ExecuteHesse(), ExecuteMigrad(), ExecuteMinimize(), ExecuteMinos(), and ExecuteSimplex().

◆ ParamRound()

PDoubleVector PFitter::ParamRound ( const PDoubleVector & par,
const PDoubleVector & err,
Bool_t & ok )
private

Rounds parameters for output with appropriate precision.

Determines significant figures based on errors and formats parameters for display in MSR file output.

Parameters
parParameter values
errParameter errors
okOutput flag: false if rounding failed
Returns
Rounded parameter values

Rounds the parameter vector value according to the given error estimate, so that the msr-file value and the fitter result are consistent with each other. This means that musrfit -c, and musrfit -e -t should give essentially the same values of expected chisq (up to small rounding values).

Parameters
parparameter value vector
errerror value vector
oktrue if size of par and err are identically, otherwise false.
Returns
rounded parameter value vector, compatible with the msr-file output.

Definition at line 3050 of file PFitter.cpp.

Referenced by ExecuteSave().

◆ PrepareSector()

void PFitter::PrepareSector ( PDoubleVector & param,
PDoubleVector & error )
private

Prepares sector χ² analysis data structures.

Initializes sector time windows and allocates storage for sector results.

Parameters
paramCurrent parameter values
errorCurrent parameter errors

Collect all the necessary chisq/maxLH sector information.

Parameters
paramparameter value vector of the converged fit.
errorstep value vector of the converged fit.

Definition at line 2858 of file PFitter.cpp.

References fFitterFcn, fRunInfo, fRunListCollection, fSector, and fUseChi2.

Referenced by ExecuteSave().

◆ SetParameters()

Bool_t PFitter::SetParameters ( )
private

Transfers MSR parameters to Minuit2 parameter state.

Initializes fMnUserParams with values, errors, and bounds from the MSR file's PARAMETERS block.

Returns
true if parameters set successfully

Feeds the internal minuit2 fit parameters. It also makes sure that unused parameters are fixed.

return: true.

Definition at line 1640 of file PFitter.cpp.

References fMnUserParams, fParams, and fRunInfo.

Referenced by DoFit().

Member Data Documentation

◆ fChisqOnly

Bool_t PFitter::fChisqOnly
private

Evaluation-only flag: true to calculate χ² without fitting.

Definition at line 298 of file PFitter.h.

Referenced by DoFit(), and PFitter().

◆ fCmdLines

PMsrLines PFitter::fCmdLines
private

Raw command lines from MSR COMMANDS block.

Definition at line 311 of file PFitter.h.

Referenced by CheckCommands(), ExecuteFitRange(), ExecuteFix(), ExecutePrintLevel(), ExecuteRelease(), and PFitter().

◆ fCmdList

PIntPairVector PFitter::fCmdList
private

Parsed commands: first=command ID, second=line number.

Definition at line 312 of file PFitter.h.

Referenced by CheckCommands(), DoFit(), and ~PFitter().

◆ fConverged

Bool_t PFitter::fConverged
private

Convergence flag: true if fit converged to a valid minimum.

Definition at line 297 of file PFitter.h.

Referenced by ExecuteMigrad(), ExecuteMinimize(), ExecuteScan(), ExecuteSimplex(), HasConverged(), and PFitter().

◆ fElapsedTime

PStringVector PFitter::fElapsedTime
private

Timing information for each fit command.

Definition at line 329 of file PFitter.h.

Referenced by ExecuteHesse(), ExecuteMigrad(), ExecuteMinimize(), ExecuteMinos(), ExecuteSave(), ExecuteSimplex(), and ~PFitter().

◆ fFcnMin

std::unique_ptr<ROOT::Minuit2::FunctionMinimum> PFitter::fFcnMin
private

Minuit2 function minimum result.

Definition at line 317 of file PFitter.h.

Referenced by ExecuteContours(), ExecuteMigrad(), ExecuteMinimize(), ExecuteMinos(), ExecuteSave(), and ExecuteSimplex().

◆ fFitterFcn

std::unique_ptr<PFitterFcn> PFitter::fFitterFcn
private

Objective function for Minuit2 minimization.

Definition at line 314 of file PFitter.h.

Referenced by DoFit(), ExecuteContours(), ExecuteHesse(), ExecuteMigrad(), ExecuteMinimize(), ExecuteMinos(), ExecuteSave(), ExecuteScan(), ExecuteSimplex(), PFitter(), and PrepareSector().

◆ fIsScanOnly

Bool_t PFitter::fIsScanOnly
private

Scan mode flag: true if only parameter scans requested (no minimization)

Definition at line 296 of file PFitter.h.

Referenced by CheckCommands(), IsScanOnly(), and PFitter().

◆ fIsValid

Bool_t PFitter::fIsValid
private

Overall validity flag: true if fitter initialized successfully.

Definition at line 295 of file PFitter.h.

Referenced by CheckCommands(), ExecuteMigrad(), ExecuteMinimize(), ExecuteSimplex(), and IsValid().

◆ fMnUserParams

ROOT::Minuit2::MnUserParameters PFitter::fMnUserParams
private

Minuit2 parameter state (values, errors, limits)

Definition at line 316 of file PFitter.h.

Referenced by DoFit(), ExecuteFix(), ExecuteHesse(), ExecuteMigrad(), ExecuteMinimize(), ExecuteMinos(), ExecuteRelease(), ExecuteRestore(), ExecuteSave(), ExecuteScan(), ExecuteSimplex(), and SetParameters().

◆ fOriginalFitRange

PDoublePairVector PFitter::fOriginalFitRange
private

Original fit ranges per run (saved for FIT_RANGE command)

Definition at line 327 of file PFitter.h.

Referenced by CheckCommands(), ExecuteFitRange(), and PFitter().

◆ fParams

PMsrParamList PFitter::fParams
private

Copy of parameter list from MSR file.

Definition at line 309 of file PFitter.h.

Referenced by CheckCommands(), DoFit(), ExecuteHesse(), ExecuteMigrad(), ExecuteMinimize(), ExecuteMinos(), ExecuteSave(), ExecuteSimplex(), PFitter(), and SetParameters().

◆ fPhase

std::vector<bool> PFitter::fPhase
private

Phase parameter flags: true if parameter is a phase angle.

Definition at line 335 of file PFitter.h.

Referenced by ExecuteMigrad(), ExecuteMinimize(), ExecuteSimplex(), and GetPhaseParams().

◆ fPrintLevel

UInt_t PFitter::fPrintLevel
private

Verbosity level: 0=quiet, 1=normal, 2=verbose (Minuit output)

Definition at line 301 of file PFitter.h.

Referenced by ExecuteHesse(), ExecuteMigrad(), ExecuteMinimize(), ExecutePrintLevel(), ExecuteSimplex(), and PFitter().

◆ fRunInfo

PMsrHandler* PFitter::fRunInfo
private

◆ fRunListCollection

PRunListCollection* PFitter::fRunListCollection
private

Pointer to preprocessed run data collection.

Definition at line 307 of file PFitter.h.

Referenced by DoFit(), ExecuteFitRange(), ExecuteSave(), PFitter(), and PrepareSector().

◆ fScanAll

Bool_t PFitter::fScanAll
private

Multi-parameter scan flag: false=1D scan, true=2D scan (not fully implemented)

Definition at line 320 of file PFitter.h.

Referenced by CheckCommands(), ExecuteScan(), and PFitter().

◆ fScanData

PDoublePairVector PFitter::fScanData
private

Scan results: (parameter_value, χ²) pairs.

Definition at line 325 of file PFitter.h.

Referenced by ExecuteContours(), ExecutePlot(), ExecuteScan(), and ~PFitter().

◆ fScanHigh

Double_t PFitter::fScanHigh
private

Scan upper bound: 0.0 = auto (2σ above current value)

Definition at line 324 of file PFitter.h.

Referenced by CheckCommands(), ExecuteScan(), and PFitter().

◆ fScanLow

Double_t PFitter::fScanLow
private

Scan lower bound: 0.0 = auto (2σ below current value)

Definition at line 323 of file PFitter.h.

Referenced by CheckCommands(), ExecuteScan(), and PFitter().

◆ fScanNoPoints

UInt_t PFitter::fScanNoPoints
private

Number of scan/contour evaluation points (default=41)

Definition at line 322 of file PFitter.h.

Referenced by CheckCommands(), ExecuteContours(), ExecuteScan(), and PFitter().

◆ fScanParameter

UInt_t PFitter::fScanParameter[2]
private

Parameter indices: [0]=primary scan/contour, [1]=secondary (contours only)

Definition at line 321 of file PFitter.h.

Referenced by CheckCommands(), ExecuteContours(), ExecuteScan(), and PFitter().

◆ fSector

std::vector<PSectorChisq> PFitter::fSector
private

Sector analysis results (χ² vs. time windows)

Definition at line 333 of file PFitter.h.

Referenced by CheckCommands(), DoFit(), ExecuteSector(), and PrepareSector().

◆ fSectorFlag

Bool_t PFitter::fSectorFlag
private

SECTOR command present flag.

Definition at line 332 of file PFitter.h.

Referenced by CheckCommands(), DoFit(), ExecuteSave(), and PFitter().

◆ fStrategy

UInt_t PFitter::fStrategy
private

Minuit2 strategy: 0=fast/low-accuracy, 1=default, 2=careful/high-accuracy.

Definition at line 303 of file PFitter.h.

Referenced by CheckCommands(), ExecuteMigrad(), ExecuteMinimize(), ExecuteSimplex(), and PFitter().

◆ fUseChi2

Bool_t PFitter::fUseChi2
private

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

Definition at line 300 of file PFitter.h.

Referenced by CheckCommands(), DoFit(), ExecuteSave(), ExecuteSector(), PFitter(), and PrepareSector().

◆ fYamlOut

Bool_t PFitter::fYamlOut
private

Output flag: true to generate YAML output file (MINUIT2.OUTPUT → yaml)

Definition at line 299 of file PFitter.h.

Referenced by ExecuteSave(), and PFitter().


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