00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_ABS_OPT_TEST_STATISTIC
00017 #define ROO_ABS_OPT_TEST_STATISTIC
00018
00019 #include "Riosfwd.h"
00020 #include "RooAbsTestStatistic.h"
00021 #include "RooSetProxy.h"
00022 #include "RooCategoryProxy.h"
00023 #include "TString.h"
00024
00025 class RooArgSet ;
00026 class RooAbsData ;
00027 class RooAbsReal ;
00028
00029 class RooAbsOptTestStatistic : public RooAbsTestStatistic {
00030 public:
00031
00032
00033 RooAbsOptTestStatistic() ;
00034 RooAbsOptTestStatistic(const char *name, const char *title, RooAbsReal& real, RooAbsData& data,
00035 const RooArgSet& projDeps, const char* rangeName=0, const char* addCoefRangeName=0,
00036 Int_t nCPU=1, Bool_t interleave=kFALSE, Bool_t verbose=kTRUE, Bool_t splitCutRange=kFALSE,
00037 Bool_t cloneInputData=kTRUE) ;
00038 RooAbsOptTestStatistic(const RooAbsOptTestStatistic& other, const char* name=0);
00039 virtual ~RooAbsOptTestStatistic();
00040
00041 virtual Double_t combinedValue(RooAbsReal** gofArray, Int_t nVal) const ;
00042
00043 RooAbsReal& function() { return *_funcClone ; }
00044 const RooAbsReal& function() const { return *_funcClone ; }
00045
00046 RooAbsData& data() ;
00047 const RooAbsData& data() const ;
00048 Bool_t setData(RooAbsData& data, Bool_t cloneData=kTRUE) ;
00049
00050
00051 virtual const char* cacheUniqueSuffix() const { return Form("_%lx", (ULong_t)_dataClone) ; }
00052
00053
00054 virtual Bool_t isDerived() const { return kTRUE ; }
00055
00056 void seal(const char* notice="") { _sealed = kTRUE ; _sealNotice = notice ; }
00057 Bool_t isSealed() const { return _sealed ; }
00058 const char* sealNotice() const { return _sealNotice.Data() ; }
00059
00060 protected:
00061
00062 friend class RooAbsReal ;
00063
00064 virtual Bool_t allowFunctionCache() { return kTRUE ; }
00065 void constOptimizeTestStatistic(ConstOpCode opcode) ;
00066
00067 virtual Bool_t redirectServersHook(const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive) ;
00068 virtual void printCompactTreeHook(ostream& os, const char* indent="") ;
00069 virtual RooArgSet requiredExtraObservables() const { return RooArgSet() ; }
00070 void optimizeCaching() ;
00071 void optimizeConstantTerms(Bool_t) ;
00072
00073 RooArgSet* _normSet ;
00074 RooArgSet* _funcCloneSet ;
00075 RooAbsData* _dataClone ;
00076 RooAbsReal* _funcClone ;
00077 RooArgSet* _projDeps ;
00078 Bool_t _ownData ;
00079 Bool_t _sealed ;
00080 TString _sealNotice ;
00081 ClassDef(RooAbsOptTestStatistic,3)
00082 };
00083
00084 #endif