00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef ROO_CHI2_VAR
00018 #define ROO_CHI2_VAR
00019
00020 #include "RooAbsOptTestStatistic.h"
00021 #include "RooCmdArg.h"
00022 #include "RooDataHist.h"
00023 #include "RooAbsPdf.h"
00024
00025 class RooChi2Var : public RooAbsOptTestStatistic {
00026 public:
00027
00028
00029 RooChi2Var(const char *name, const char* title, RooAbsReal& func, RooDataHist& data,
00030 const RooCmdArg& arg1 , const RooCmdArg& arg2=RooCmdArg::none(),const RooCmdArg& arg3=RooCmdArg::none(),
00031 const RooCmdArg& arg4=RooCmdArg::none(), const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none(),
00032 const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none(),const RooCmdArg& arg9=RooCmdArg::none()) ;
00033
00034 RooChi2Var(const char *name, const char* title, RooAbsPdf& pdf, RooDataHist& data,
00035 const RooCmdArg& arg1 , const RooCmdArg& arg2=RooCmdArg::none(),const RooCmdArg& arg3=RooCmdArg::none(),
00036 const RooCmdArg& arg4=RooCmdArg::none(), const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none(),
00037 const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none(),const RooCmdArg& arg9=RooCmdArg::none()) ;
00038
00039 enum FuncMode { Function, Pdf, ExtendedPdf } ;
00040
00041 RooChi2Var(const char *name, const char *title, RooAbsPdf& pdf, RooDataHist& data,
00042 Bool_t extended=kFALSE, const char* rangeName=0, const char* addCoefRangeName=0,
00043 Int_t nCPU=1, Bool_t interleave=kFALSE, Bool_t verbose=kTRUE, Bool_t splitCutRange=kTRUE, RooDataHist::ErrorType=RooDataHist::SumW2) ;
00044
00045 RooChi2Var(const char *name, const char *title, RooAbsReal& func, RooDataHist& data,
00046 const RooArgSet& projDeps, FuncMode funcMode, const char* rangeName=0, const char* addCoefRangeName=0,
00047 Int_t nCPU=1, Bool_t interleave=kFALSE, Bool_t verbose=kTRUE, Bool_t splitCutRange=kTRUE, RooDataHist::ErrorType=RooDataHist::SumW2) ;
00048
00049 RooChi2Var(const RooChi2Var& other, const char* name=0);
00050 virtual TObject* clone(const char* newname) const { return new RooChi2Var(*this,newname); }
00051
00052 virtual RooAbsTestStatistic* create(const char *name, const char *title, RooAbsReal& pdf, RooAbsData& dhist,
00053 const RooArgSet& projDeps, const char* rangeName=0, const char* addCoefRangeName=0,
00054 Int_t nCPU=1, Bool_t interleave=kFALSE,Bool_t verbose=kTRUE, Bool_t splitCutRange=kTRUE) {
00055
00056 return new RooChi2Var(name,title,(RooAbsPdf&)pdf,(RooDataHist&)dhist,projDeps,_funcMode,rangeName,
00057 addCoefRangeName,nCPU,interleave,verbose, splitCutRange,_etype) ;
00058 }
00059
00060 virtual ~RooChi2Var();
00061
00062 virtual Double_t defaultErrorLevel() const {
00063
00064 return 1.0 ;
00065 }
00066
00067 protected:
00068
00069 static RooArgSet _emptySet ;
00070
00071 RooDataHist::ErrorType _etype ;
00072 FuncMode _funcMode ;
00073
00074 virtual Double_t evaluatePartition(Int_t firstEvent, Int_t lastEvent, Int_t stepSize) const ;
00075
00076 ClassDef(RooChi2Var,1)
00077 };
00078
00079
00080 #endif