CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10_patch2/src/HiggsAnalysis/CombinedLimit/interface/FitterAlgoBase.h

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   // configures the minimizer and then calls runSpecific
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   // method that is implemented in the subclass
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   // utilities
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