00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef ROO_XY_CHI2_VAR
00018 #define ROO_XY_CHI2_VAR
00019
00020 #include "RooAbsOptTestStatistic.h"
00021 #include "RooCmdArg.h"
00022 #include "RooDataSet.h"
00023 #include "RooAbsPdf.h"
00024 #include "RooNumIntConfig.h"
00025 #include <list>
00026 class RooAbsIntegrator ;
00027
00028
00029 class RooXYChi2Var : public RooAbsOptTestStatistic {
00030 public:
00031
00032
00033 RooXYChi2Var() ;
00034 RooXYChi2Var(const char *name, const char* title, RooAbsReal& func, RooDataSet& data, Bool_t integrate=kFALSE) ;
00035 RooXYChi2Var(const char *name, const char* title, RooAbsReal& func, RooDataSet& data, RooRealVar& yvar, Bool_t integrate=kFALSE) ;
00036 RooXYChi2Var(const char *name, const char* title, RooAbsPdf& extPdf, RooDataSet& data, Bool_t integrate=kFALSE) ;
00037 RooXYChi2Var(const char *name, const char* title, RooAbsPdf& extPdf, RooDataSet& data, RooRealVar& yvar, Bool_t integrate=kFALSE) ;
00038
00039 RooXYChi2Var(const RooXYChi2Var& other, const char* name=0);
00040 virtual TObject* clone(const char* newname) const { return new RooXYChi2Var(*this,newname); }
00041
00042 virtual RooAbsTestStatistic* create(const char *name, const char *title, RooAbsReal& pdf, RooAbsData& adata,
00043 const RooArgSet&, const char*, const char*,Int_t, Bool_t,Bool_t, Bool_t) {
00044
00045 return new RooXYChi2Var(name,title,pdf,(RooDataSet&)adata) ;
00046 }
00047
00048 virtual ~RooXYChi2Var();
00049
00050 virtual Double_t defaultErrorLevel() const {
00051
00052 return 1.0 ;
00053 }
00054
00055 RooNumIntConfig& binIntegratorConfig() { return _intConfig ; }
00056 const RooNumIntConfig& binIntegratorConfig() const { return _intConfig ; }
00057
00058 protected:
00059
00060 Bool_t allowFunctionCache() {
00061
00062
00063 return !_integrate ;
00064 }
00065
00066 RooArgSet requiredExtraObservables() const ;
00067
00068 Double_t fy() const ;
00069
00070 Bool_t _extended ;
00071 Bool_t _integrate ;
00072
00073 RooRealVar* _yvar ;
00074 RooArgSet _rrvArgs ;
00075 TIterator* _rrvIter ;
00076
00077 void initialize() ;
00078 void initIntegrator() ;
00079 Double_t xErrorContribution(Double_t ydata) const ;
00080
00081 virtual Double_t evaluatePartition(Int_t firstEvent, Int_t lastEvent, Int_t stepSize) const ;
00082
00083 RooNumIntConfig _intConfig ;
00084 RooAbsReal* _funcInt ;
00085 std::list<RooAbsBinning*> _binList ;
00086
00087 ClassDef(RooXYChi2Var,1)
00088 };
00089
00090
00091 #endif