Go to the documentation of this file.00001 #ifndef HiggsAnalysis_CombinedLimit_FitterAlgoBase_h
00002 #define HiggsAnalysis_CombinedLimit_FitterAlgoBase_h
00003
00011 #include "../interface/LimitAlgo.h"
00012 #include "../interface/ProfileLikelihood.h"
00013 class RooFitResult;
00014 class RooMinimizer;
00015 class RooCmdArg;
00016 class RooAbsReal;
00017 class RooArgList;
00018 class CascadeMinimizer;
00019
00020 class FitterAlgoBase : public LimitAlgo {
00021 public:
00022 FitterAlgoBase(const char *title="<FillMe> specific options") ;
00023
00024 void applyOptionsBase(const boost::program_options::variables_map &vm) ;
00025
00026
00027 virtual bool run(RooWorkspace *w, RooStats::ModelConfig *mc_s, RooStats::ModelConfig *mc_b, RooAbsData &data, double &limit, double &limitErr, const double *hint);
00028
00029 protected:
00030 static std::string minimizerAlgo_, minimizerAlgoForMinos_;
00031 static float minimizerTolerance_, minimizerToleranceForMinos_;
00032 static int minimizerStrategy_, minimizerStrategyForMinos_;
00033
00034 static float preFitValue_;
00035
00036 static bool robustFit_, do95_;
00037 static float stepSize_;
00038 static int maxFailedSteps_;
00039
00040 static bool saveNLL_, keepFailures_;
00041 static float nllValue_;
00042 std::auto_ptr<RooAbsReal> nll;
00043
00044 virtual bool runSpecific(RooWorkspace *w, RooStats::ModelConfig *mc_s, RooStats::ModelConfig *mc_b, RooAbsData &data, double &limit, double &limitErr, const double *hint) = 0;
00045
00046
00050 RooFitResult *doFit(RooAbsPdf &pdf, RooAbsData &data, RooRealVar &r, const RooCmdArg &constrain, bool doHesse=true, int ndim=1,bool reuseNLL=false) ;
00051 RooFitResult *doFit(RooAbsPdf &pdf, RooAbsData &data, const RooArgList &rs, const RooCmdArg &constrain, bool doHesse=true, int ndim=1,bool reuseNLL=false) ;
00052 double findCrossing(CascadeMinimizer &minim, RooAbsReal &nll, RooRealVar &r, double level, double rStart, double rBound) ;
00053 };
00054
00055
00056 #endif