16 #ifndef ROO_ABS_TEST_STATISTIC
17 #define ROO_ABS_TEST_STATISTIC
28 class RooSimultaneous ;
31 class RooAbsTestStatistic ;
32 typedef RooAbsTestStatistic* pRooAbsTestStatistic ;
33 typedef RooAbsData* pRooAbsData ;
34 typedef RooRealMPFE* pRooRealMPFE ;
36 class RooAbsTestStatistic :
public RooAbsReal {
37 friend class RooRealMPFE;
41 RooAbsTestStatistic() ;
42 RooAbsTestStatistic(
const char *name,
const char *title, RooAbsReal& real, RooAbsData& data,
43 const RooArgSet& projDeps,
const char* rangeName=0,
const char* addCoefRangeName=0,
44 Int_t nCPU=1, RooFit::MPSplit interleave=RooFit::BulkPartition, Bool_t verbose=kTRUE, Bool_t splitCutRange=kTRUE) ;
45 RooAbsTestStatistic(
const RooAbsTestStatistic& other,
const char* name=0);
46 virtual ~RooAbsTestStatistic();
47 virtual RooAbsTestStatistic* create(
const char *name,
const char *title, RooAbsReal& real, RooAbsData& data,
48 const RooArgSet& projDeps,
const char* rangeName=0,
const char* addCoefRangeName=0,
49 Int_t nCPU=1, RooFit::MPSplit interleave=RooFit::BulkPartition, Bool_t verbose=kTRUE, Bool_t splitCutRange=kFALSE, Bool_t binnedL=kFALSE) = 0 ;
51 virtual void constOptimizeTestStatistic(ConstOpCode opcode, Bool_t doAlsoTrackingOpt=kTRUE) ;
53 virtual Double_t combinedValue(RooAbsReal** gofArray, Int_t nVal)
const = 0 ;
54 virtual Double_t globalNormalization()
const {
59 Bool_t setData(RooAbsData& data, Bool_t cloneData=kTRUE) ;
61 void enableOffsetting(Bool_t flag) ;
62 Bool_t isOffsetting()
const {
return _doOffset ; }
63 virtual Double_t offset()
const {
return _offset ; }
64 virtual Double_t offsetCarry()
const {
return _offsetCarry; }
68 virtual void printCompactTreeHook(std::ostream& os,
const char* indent=
"") ;
70 virtual Bool_t redirectServersHook(
const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive) ;
71 virtual Double_t evaluate()
const ;
73 virtual Double_t evaluatePartition(std::size_t firstEvent, std::size_t lastEvent, std::size_t stepSize)
const = 0 ;
74 virtual Double_t getCarry()
const;
76 void setMPSet(Int_t setNum, Int_t numSets) ;
77 void setSimCount(Int_t simCount) {
79 _simCount = simCount ;
82 void setEventCount(Int_t nEvents) {
87 Int_t numSets()
const {
91 Int_t setNum()
const {
96 RooSetProxy _paramSet ;
98 enum GOFOpMode { SimMaster,MPMaster,Slave } ;
99 GOFOpMode operMode()
const {
107 const RooArgSet* _projDeps ;
108 std::string _rangeName ;
109 std::string _addCoefRangeName ;
114 virtual Bool_t setDataSlave(RooAbsData& , Bool_t =kTRUE, Bool_t =kFALSE) {
return kTRUE ; }
119 virtual Bool_t processEmptyDataSets()
const {
return kTRUE ; }
121 Bool_t initialize() ;
122 void initSimMode(RooSimultaneous* pdf, RooAbsData* data,
const RooArgSet* projDeps,
const char* rangeName,
const char* addCoefRangeName) ;
123 void initMPMode(RooAbsReal* real, RooAbsData* data,
const RooArgSet* projDeps,
const char* rangeName,
const char* addCoefRangeName) ;
125 mutable Bool_t _init ;
126 GOFOpMode _gofOpMode ;
135 pRooAbsTestStatistic* _gofArray ;
136 std::vector<RooFit::MPSplit> _gofSplitMode ;
140 pRooRealMPFE* _mpfeArray ;
142 RooFit::MPSplit _mpinterl ;
144 mutable Double_t _offset ;
145 mutable Double_t _offsetCarry;
146 mutable Double_t _evalCarry;
148 ClassDef(RooAbsTestStatistic,2)