#ifndef ROOSTATS_HybridCalculatorGeneric
#define ROOSTATS_HybridCalculatorGeneric
#ifndef ROOT_Rtypes
#include "Rtypes.h"
#endif
#ifndef ROOSTATS_HypoTestCalculator
#include "RooStats/HypoTestCalculator.h"
#endif
#ifndef ROOSTATS_ModelConfig
#include "RooStats/ModelConfig.h"
#endif
#ifndef ROOSTATS_TestStatistic
#include "RooStats/TestStatistic.h"
#endif
#ifndef ROOSTATS_TestStatSampler
#include "RooStats/TestStatSampler.h"
#endif
#ifndef ROOSTATS_SamplingDistribution
#include "RooStats/SamplingDistribution.h"
#endif
#ifndef ROOSTATS_HypoTestResult
#include "RooStats/HypoTestResult.h"
#endif
namespace RooStats {
class HybridCalculatorGeneric: public HypoTestCalculator {
public:
HybridCalculatorGeneric(
const RooAbsData &data,
const ModelConfig &altModel,
const ModelConfig &nullModel,
TestStatSampler* sampler=0
);
~HybridCalculatorGeneric();
public:
virtual HypoTestResult* GetHypoTest() const;
virtual void SetNullModel(const ModelConfig &nullModel) { fNullModel = &nullModel; }
const ModelConfig* GetNullModel(void) const { return fNullModel; }
virtual void SetAlternateModel(const ModelConfig &altModel) { fAltModel = &altModel; }
const ModelConfig* GetAlternateModel(void) const { return fAltModel; }
virtual void SetData(RooAbsData &data) { fData = &data; }
virtual void ForcePriorNuisanceNull(RooAbsPdf& priorNuisance) { fPriorNuisanceNull = &priorNuisance; }
virtual void ForcePriorNuisanceAlt(RooAbsPdf& priorNuisance) { fPriorNuisanceAlt = &priorNuisance; }
TestStatSampler* GetTestStatSampler(void) const { return fTestStatSampler; }
protected:
virtual int PreNullHook(double ) const { return 0; }
virtual int PreAltHook(double ) const { return 0; }
private:
void SetupSampler(const ModelConfig& model) const;
void SetAdaptiveLimits(Double_t obsTestStat, Bool_t forNull) const;
SamplingDistribution* GenerateSamplingDistribution(
ModelConfig *thisModel,
double obsTestStat,
RooAbsPdf *impDens=NULL,
const RooArgSet *impSnapshot=NULL
) const;
const ModelConfig *fAltModel;
const ModelConfig *fNullModel;
const RooAbsData *fData;
RooAbsPdf *fPriorNuisanceNull;
RooAbsPdf *fPriorNuisanceAlt;
TestStatSampler *fTestStatSampler;
TestStatSampler *fDefaultSampler;
TestStatistic *fDefaultTestStat;
protected:
ClassDef(HybridCalculatorGeneric,1)
};
}
#endif
HybridCalculatorGeneric.h:1 HybridCalculatorGeneric.h:2 HybridCalculatorGeneric.h:3 HybridCalculatorGeneric.h:4 HybridCalculatorGeneric.h:5 HybridCalculatorGeneric.h:6 HybridCalculatorGeneric.h:7 HybridCalculatorGeneric.h:8 HybridCalculatorGeneric.h:9 HybridCalculatorGeneric.h:10 HybridCalculatorGeneric.h:11 HybridCalculatorGeneric.h:12 HybridCalculatorGeneric.h:13 HybridCalculatorGeneric.h:14 HybridCalculatorGeneric.h:15 HybridCalculatorGeneric.h:16 HybridCalculatorGeneric.h:17 HybridCalculatorGeneric.h:18 HybridCalculatorGeneric.h:19 HybridCalculatorGeneric.h:20 HybridCalculatorGeneric.h:21 HybridCalculatorGeneric.h:22 HybridCalculatorGeneric.h:23 HybridCalculatorGeneric.h:24 HybridCalculatorGeneric.h:25 HybridCalculatorGeneric.h:26 HybridCalculatorGeneric.h:27 HybridCalculatorGeneric.h:28 HybridCalculatorGeneric.h:29 HybridCalculatorGeneric.h:30 HybridCalculatorGeneric.h:31 HybridCalculatorGeneric.h:32 HybridCalculatorGeneric.h:33 HybridCalculatorGeneric.h:34 HybridCalculatorGeneric.h:35 HybridCalculatorGeneric.h:36 HybridCalculatorGeneric.h:37 HybridCalculatorGeneric.h:38 HybridCalculatorGeneric.h:39 HybridCalculatorGeneric.h:40 HybridCalculatorGeneric.h:41 HybridCalculatorGeneric.h:42 HybridCalculatorGeneric.h:43 HybridCalculatorGeneric.h:44 HybridCalculatorGeneric.h:45 HybridCalculatorGeneric.h:46 HybridCalculatorGeneric.h:47 HybridCalculatorGeneric.h:48 HybridCalculatorGeneric.h:49 HybridCalculatorGeneric.h:50 HybridCalculatorGeneric.h:51 HybridCalculatorGeneric.h:52 HybridCalculatorGeneric.h:53 HybridCalculatorGeneric.h:54 HybridCalculatorGeneric.h:55 HybridCalculatorGeneric.h:56 HybridCalculatorGeneric.h:57 HybridCalculatorGeneric.h:58 HybridCalculatorGeneric.h:59 HybridCalculatorGeneric.h:60 HybridCalculatorGeneric.h:61 HybridCalculatorGeneric.h:62 HybridCalculatorGeneric.h:63 HybridCalculatorGeneric.h:64 HybridCalculatorGeneric.h:65 HybridCalculatorGeneric.h:66 HybridCalculatorGeneric.h:67 HybridCalculatorGeneric.h:68 HybridCalculatorGeneric.h:69 HybridCalculatorGeneric.h:70 HybridCalculatorGeneric.h:71 HybridCalculatorGeneric.h:72 HybridCalculatorGeneric.h:73 HybridCalculatorGeneric.h:74 HybridCalculatorGeneric.h:75 HybridCalculatorGeneric.h:76 HybridCalculatorGeneric.h:77 HybridCalculatorGeneric.h:78 HybridCalculatorGeneric.h:79 HybridCalculatorGeneric.h:80 HybridCalculatorGeneric.h:81 HybridCalculatorGeneric.h:82 HybridCalculatorGeneric.h:83 HybridCalculatorGeneric.h:84 HybridCalculatorGeneric.h:85 HybridCalculatorGeneric.h:86 HybridCalculatorGeneric.h:87 HybridCalculatorGeneric.h:88 HybridCalculatorGeneric.h:89 HybridCalculatorGeneric.h:90 HybridCalculatorGeneric.h:91 HybridCalculatorGeneric.h:92 HybridCalculatorGeneric.h:93 HybridCalculatorGeneric.h:94 HybridCalculatorGeneric.h:95 HybridCalculatorGeneric.h:96 HybridCalculatorGeneric.h:97 HybridCalculatorGeneric.h:98 HybridCalculatorGeneric.h:99 HybridCalculatorGeneric.h:100 HybridCalculatorGeneric.h:101 HybridCalculatorGeneric.h:102 HybridCalculatorGeneric.h:103 HybridCalculatorGeneric.h:104 HybridCalculatorGeneric.h:105 HybridCalculatorGeneric.h:106 HybridCalculatorGeneric.h:107 HybridCalculatorGeneric.h:108 HybridCalculatorGeneric.h:109 HybridCalculatorGeneric.h:110