// @(#)root/minuit2:$Id: MnMinos.h 21530 2007-12-20 11:14:35Z moneta $ // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005 /********************************************************************** * * * Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT * * * **********************************************************************/ #ifndef ROOT_Minuit2_MnMinos #define ROOT_Minuit2_MnMinos #include "Minuit2/MnStrategy.h" #include namespace ROOT { namespace Minuit2 { class FCNBase; class FunctionMinimum; class MinosError; class MnCross; //__________________________________________________________________ /** API class for Minos Error analysis (asymmetric errors); minimization has to be done before and Minimum must be valid; possibility to ask only for one side of the Minos Error; */ class MnMinos { public: /// construct from FCN + Minimum + strategy MnMinos(const FCNBase& fcn, const FunctionMinimum& min, unsigned int stra = 1); /// construct from FCN + Minimum + strategy MnMinos(const FCNBase& fcn, const FunctionMinimum& min, const MnStrategy& stra); ~MnMinos() {} /// returns the negative (pair.first) and the positive (pair.second) /// Minos Error of the Parameter std::pair operator()(unsigned int, unsigned int maxcalls = 0) const; /// calculate one side (negative or positive Error) of the Parameter double Lower(unsigned int, unsigned int maxcalls = 0) const; double Upper(unsigned int, unsigned int maxcalls = 0) const; MnCross Loval(unsigned int, unsigned int maxcalls = 0) const; MnCross Upval(unsigned int, unsigned int maxcalls = 0) const; /// ask for MinosError (Lower + Upper) /// can be printed via std::cout MinosError Minos(unsigned int, unsigned int maxcalls = 0) const; private: const FCNBase& fFCN; const FunctionMinimum& fMinimum; MnStrategy fStrategy; }; } // namespace Minuit2 } // namespace ROOT #endif // ROOT_Minuit2_MnMinos