Import Geant4 5.0.0 source tree
This commit is contained in:
@@ -0,0 +1,275 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// -*- C++ -*-
|
||||
// AID-GENERATED
|
||||
// =========================================================================
|
||||
// This class was generated by AID - Abstract Interface Definition
|
||||
// DO NOT MODIFY, but use the org.freehep.aid.Aid utility to regenerate it.
|
||||
// =========================================================================
|
||||
#ifndef AIDA_IFITTER_H
|
||||
#define AIDA_IFITTER_H 1
|
||||
|
||||
// This file is part of the AIDA library
|
||||
// Copyright (C) 2002 by the AIDA team. All rights reserved.
|
||||
// This library is free software and under the terms of the
|
||||
// GNU Library General Public License described in the LGPL.txt
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace AIDA {
|
||||
|
||||
class IBaseHistogram;
|
||||
class IDataPointSet;
|
||||
class IFitData;
|
||||
class IFitParameterSettings;
|
||||
class IFitResult;
|
||||
class IFunction;
|
||||
|
||||
/** @interface IFitter
|
||||
*
|
||||
* Fitter performs fits, scans and computes contours.
|
||||
*
|
||||
* Fitter never stores association to the data and functions which are
|
||||
* used for fitting. Results of the fit are availabe in the IFitResult
|
||||
* object, which also remebers the initial fit configuration.
|
||||
*
|
||||
* @author The AIDA team (http://aida.freehep.org/)
|
||||
*
|
||||
*/
|
||||
|
||||
class IFitter {
|
||||
|
||||
public:
|
||||
/// Destructor.
|
||||
virtual ~IFitter() { /* nop */; }
|
||||
|
||||
/**
|
||||
* Fit an IFunction to an IFitData.
|
||||
* The result of the fit is an IFitResult.
|
||||
* @param fitData The IFitData to be fitted.
|
||||
* @param func The IFunction to fit on the data.
|
||||
* @return The IFitResult containing the results of the fit.
|
||||
*
|
||||
*/
|
||||
virtual IFitResult * fit(IFitData & fitData, IFunction & func) = 0;
|
||||
|
||||
/**
|
||||
* Shortcut to fit an IBaseHistogram directly with an IFunction.
|
||||
* The dimension of the IBaseHistogram must match the dimension of the IFunction.
|
||||
* IHistograms and IProfiles are for binned fits only, IClouds only for unbinned fits.
|
||||
* @param hist The IBaseHistogram to be fitted.
|
||||
* @param func The IFunction to fit on the data.
|
||||
* @return The IFitResult containing the result of the fit.
|
||||
*
|
||||
*/
|
||||
virtual IFitResult * fit(IBaseHistogram & hist, IFunction & func) = 0;
|
||||
|
||||
/**
|
||||
* Shortcut to fit an IBaseHistogram directly with an IFunction.
|
||||
* The dimension of the IBaseHistogram must match the dimension of the IFunction.
|
||||
* IHistograms and IProfiles are for binned fits only, IClouds only for unbinned fits.
|
||||
* @param hist The IBaseHistogram to be fitted.
|
||||
* @param model The string defining the function to be used.
|
||||
* @return The IFitResult containing the result of the fit.
|
||||
*
|
||||
*/
|
||||
virtual IFitResult * fit(IBaseHistogram & hist, std::string model) = 0;
|
||||
|
||||
/**
|
||||
* Shortcut to fit an IBaseHistogram directly with an IFunction.
|
||||
* The dimension of the IBaseHistogram must match the dimension of the IFunction.
|
||||
* IHistograms and IProfiles are for binned fits only, IClouds only for unbinned fits.
|
||||
* @param hist The IBaseHistogram to be fitted.
|
||||
* @param model The string defining the function to be used.
|
||||
* @param initialParameters The array of the initial parameter values; its size must match the number of
|
||||
* parameters in the function.
|
||||
* @return The IFitResult containing the result of the fit.
|
||||
*
|
||||
*/
|
||||
virtual IFitResult * fit(IBaseHistogram & hist, std::string model, std::vector<double> & initialParameters) = 0;
|
||||
|
||||
/**
|
||||
* Shortcut to fit an IDataPointSet directly with an IFunction.
|
||||
* The dimension of the IDataPointSet must be equal the dimension of the IFunction + 1.
|
||||
* This are binned fits only; the last coordinate of the IDataPointSet is used as
|
||||
* the "height" in a fit to an IBaseHistogram.
|
||||
* @param dataPointSet The IDataPointSet to be fitted.
|
||||
* @param func The IFunction to fit on the data.
|
||||
* @return The IFitResult containing the result of the fit.
|
||||
*
|
||||
*/
|
||||
virtual IFitResult * fit(IDataPointSet & dataPointSet, IFunction & f) = 0;
|
||||
|
||||
/**
|
||||
* Shortcut to fit an IDataPointSet directly with an IFunction.
|
||||
* The dimension of the IDataPointSet must be equal the dimension of the IFunction + 1.
|
||||
* This are binned fits only; the last coordinate of the IDataPointSet is used as
|
||||
* the "height" in a fit to an IBaseHistogram.
|
||||
* @param dataPointSet The IDataPointSet to be fitted.
|
||||
* @param model The string defining the function to be used.
|
||||
* @return The IFitResult containing the result of the fit.
|
||||
*
|
||||
*/
|
||||
virtual IFitResult * fit(IDataPointSet & dataPointSet, std::string model) = 0;
|
||||
|
||||
/**
|
||||
* Shortcut to fit an IDataPointSet directly with an IFunction.
|
||||
* The dimension of the IDataPointSet must be equal the dimension of the IFunction + 1.
|
||||
* This are binned fits only; the last coordinate of the IDataPointSet is used as
|
||||
* the "height" in a fit to an IBaseHistogram.
|
||||
* @param dataPointSet The IDataPointSet to be fitted.
|
||||
* @param model The string defining the function to be used.
|
||||
* @param initialParameters The array of the initial parameter values; its size must match the number of
|
||||
* parameters in the function.
|
||||
* @return The IFitResult containing the result of the fit.
|
||||
*
|
||||
*/
|
||||
virtual IFitResult * fit(IDataPointSet & dataPointSet, std::string model, std::vector<double> & initialParameters) = 0;
|
||||
|
||||
/// Shortcut for the predefined models.
|
||||
virtual IFitResult * fit(IFitData & d, std::string model) = 0;
|
||||
|
||||
virtual IFitResult * fit(IFitData & d, std::string model, std::vector<double> & initialParameters) = 0;
|
||||
|
||||
/**
|
||||
* Set the optimization engine which is used internally for fitting.
|
||||
* @param name The name of the optimizer engine.
|
||||
* Examples of predefined engines: "minuit". The engine name is case-insensitive.
|
||||
* Different engines are provided by different implementations.
|
||||
* @return false If the name does not correspond to a valid engine.
|
||||
*
|
||||
*/
|
||||
virtual bool setEngine(std::string name) = 0;
|
||||
|
||||
/**
|
||||
* Get the name of the engine currently in use.
|
||||
* @return The name of the optimizer engine used by the IFitter.
|
||||
*
|
||||
*/
|
||||
virtual std::string engineName() = 0;
|
||||
|
||||
/**
|
||||
* Access to fit parameter settings. FitParameterSettings object belongs to
|
||||
* and is managed by the fitter. Fitter implementation takes care that the
|
||||
* returned reference is valid thru the lifetime of fitter.
|
||||
* User can set the settings of the parameters independently of the
|
||||
* parameters of the fitted function.
|
||||
* Setting for parameters unknown in the function and set in the
|
||||
* fitter are ignored in the fit.
|
||||
* If settings are not explicitly set in the fitter, their default
|
||||
* values are attached to function parameters during the fit.
|
||||
*/
|
||||
virtual IFitParameterSettings & fitParameterSettings(std::string name) = 0;
|
||||
|
||||
/**
|
||||
* Get a vector of names of all parameter settings defined in the fitter.
|
||||
*/
|
||||
virtual const std::vector<std::string> & listParameterSettings() = 0;
|
||||
|
||||
/**
|
||||
* Reset all parameter settings which fitter remebers.
|
||||
*/
|
||||
virtual void resetParameterSettings() = 0;
|
||||
|
||||
/**
|
||||
* Set a general constraint in the parameter space. The constraint
|
||||
* is a parsed expression. PENDING: The syntax to be fixed.
|
||||
*/
|
||||
virtual bool setConstraint(std::string expr) = 0;
|
||||
|
||||
/// Get the list of all constraints.
|
||||
virtual const std::vector<std::string> & constraints() = 0;
|
||||
|
||||
/**
|
||||
* Reset all the constraints.
|
||||
*/
|
||||
virtual void resetConstraints() = 0;
|
||||
|
||||
/**
|
||||
* Set the fit method type. Examples of pre-defined methods: "chi2", "ml".
|
||||
* The method names are case-insensitive.
|
||||
* @param name The name of the fit method.
|
||||
* @return false If the name does not correspond to a valid fit method.
|
||||
*
|
||||
*/
|
||||
virtual bool setFitMethod(std::string name) = 0;
|
||||
|
||||
/**
|
||||
* Get the name of the fit method currently in use.
|
||||
* @return The name of the fit method.
|
||||
*
|
||||
*/
|
||||
virtual std::string fitMethodName() = 0;
|
||||
|
||||
/// Create a 1D scan of the fit quality for given parameter 'par' of
|
||||
/// the function.
|
||||
/// User must make sure that the returned vector is properly deleted
|
||||
/// after use.
|
||||
/// The vector containes 'npts' points which are evenly sampled in the
|
||||
/// interval ('pmin','pmax').
|
||||
virtual IDataPointSet * createScan1D(IFitData & d, IFunction & f, std::string par, int npts, double pmin, double pmax) = 0;
|
||||
|
||||
/// Create a 2D contour spanned on 'par1' and 'par2',
|
||||
/// with given number of npts points. Contour is create using previously
|
||||
/// obtained fit results. Argument 'up' tells the vertical distance of
|
||||
/// the contour plane above the minimal fit quality value.
|
||||
virtual IDataPointSet * createContour(IFitData & d, IFitResult & r, std::string par1, std::string par2, int npts, double up) = 0;
|
||||
|
||||
/**
|
||||
* Choose between using or not using the
|
||||
* analytical derivatives if provided by the function.
|
||||
* @param useGrad If <code>true</code> the IFitter will use the
|
||||
* analytical derivatives if provided by the IFunction.
|
||||
*
|
||||
*/
|
||||
virtual void setUseFunctionGradient(bool useGrad) = 0;
|
||||
|
||||
/**
|
||||
* Check if the IFitter is set to use the analytical derivatives provided
|
||||
* by the IFunction.
|
||||
* @return <code>true</code> if the IFitter uses the analytical derivatives.
|
||||
*
|
||||
*/
|
||||
virtual bool useFunctionGradient() = 0;
|
||||
|
||||
/**
|
||||
* @link association
|
||||
* @directed
|
||||
* @label <<create>>
|
||||
*/
|
||||
/*# IFitResult lnkIFitResult; */
|
||||
|
||||
/** @link dependency */
|
||||
/*# IFitData lnkIFitData; */
|
||||
|
||||
/** @link aggregation
|
||||
* @supplierRole <<internal copy>>*/
|
||||
/*# IFitParameterSettings lnkIFitParameter; */
|
||||
|
||||
/** @link dependency
|
||||
* @label fitter uses function for fitting*/
|
||||
/*# IFunction lnkIFunction; */
|
||||
}; // class
|
||||
}; // namespace AIDA
|
||||
#endif /* ifndef AIDA_IFITTER_H */
|
||||
Reference in New Issue
Block a user