00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef RAR_NLL
00011 #define RAR_NLL
00012
00013 #include "TList.h"
00014 #include "TMatrixD.h"
00015 #include "TString.h"
00016 #include "TObject.h"
00017
00018 #include "RooFitCore/RooCurve.hh"
00019
00024 class rarNLL : public TNamed {
00025
00026 public:
00027 rarNLL();
00028 rarNLL(RooCurve *curve,
00029 const char *name="theRARNLL", const char *title="the RARNLL",
00030 const Bool_t verbose=kFALSE);
00031 virtual ~rarNLL();
00032
00035 virtual void setVerbose(Bool_t verbose=kTRUE) {_verbose=verbose;}
00036
00037 virtual void init(RooCurve *curve=0);
00038 Double_t getNLL(Double_t x);
00039 Double_t getY(Double_t x);
00040 TArrayD getX(Double_t y);
00041 void getMin(Double_t &x, Double_t &y);
00042 TArrayD getMin();
00043 Double_t getLIntegral(Double_t x);
00044 Double_t getLIntegral(Double_t xl, Double_t xh);
00045 Double_t getLIntegral();
00046 Double_t getLIntegralInverse(Double_t xl, Double_t iVal);
00047 Double_t getLIntegralInverse(Double_t iVal);
00048 Double_t lIntegralFunc(Double_t x, TMatrixD &A, TMatrixD &lA);
00049 Double_t lIntegralFuncInverse(Double_t x0, Double_t x2, Int_t iter,
00050 Double_t &thisXI,
00051 Double_t &la, Double_t &lb, Double_t &lc);
00052
00053 protected:
00054 void getMin(TArrayD &xy, Double_t x, Double_t a, Double_t b, Double_t c);
00055 TArrayD getMin(Double_t x0, Double_t x1, Double_t x2,
00056 Double_t a, Double_t b, Double_t c);
00057
00058 Int_t _nPoints;
00059 TArrayD _xs;
00060 TArrayD _ys;
00061 Int_t _mIdx;
00062 Int_t _nSteps;
00063 TList _coeffMList;
00064 TList _lCoefMList;
00065 TArrayD _x0s;
00066 TArrayD _x1s;
00067 TArrayD _x2s;
00068 TArrayD _iLIntegrals;
00069 TArrayD _tLIntegrals;
00070
00071 Bool_t _verbose;
00072
00073 private:
00074 rarNLL(const rarNLL&);
00075 ClassDef(rarNLL, 0)
00076 ;
00077 };
00078
00079 #endif