// @(#)root/minuit2:$Id$ // Author: L. Moneta 10/2005 /********************************************************************** * * * Copyright (c) 2005 ROOT Foundation, CERN/PH-SFT * * * **********************************************************************/ #ifndef ROOT_TChi2ExtendedFCN_H_ #define ROOT_TChi2ExtendedFCN_H_ #include "Minuit2/FCNBase.h" // temporary - should use interface class TF1; class TVirtualFitter; class TChi2ExtendedFitData; /** Extended Chi2 Fit method. Use errors in X as well, if asymmetric make them symmetric taking the average */ class TChi2ExtendedFCN : public ROOT::Minuit2::FCNBase { public: // // use a param function instead of TF1 typedef TF1 ModelFunction; /** construct passing fitter which has ROOT data object and model function. */ TChi2ExtendedFCN( const TVirtualFitter & fitter); //Chi2FCN( const DataObject & data, const ModelFunction & func); /** construct objective function passing input data and model function. */ //Chi2FCN( const DataObject & data, const ModelFunction & func); /** this class manages the fit data class. Delete it at the end */ ~TChi2ExtendedFCN(); /** evaluate objective function */ double operator()(const std::vector&) const; /** return error definition for chi2 should be 1 */ double Up() const { return fUp; } void SetErrorDef( double up) { fUp = up; } private: double fUp; ModelFunction * fFunc; TChi2ExtendedFitData * fData; }; #endif