File indexing completed on 2025-12-16 10:29:45
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef ROOSTATS_HypoTestCalculatorGeneric
0012 #define ROOSTATS_HypoTestCalculatorGeneric
0013
0014
0015 #ifndef ROOT_Rtypes
0016 #include "Rtypes.h" // necessary for TNamed
0017 #endif
0018
0019 #include "RooStats/HypoTestCalculator.h"
0020
0021 #include "RooStats/ModelConfig.h"
0022
0023 #include "RooStats/TestStatistic.h"
0024
0025 #include "RooStats/TestStatSampler.h"
0026
0027 #include "RooStats/SamplingDistribution.h"
0028
0029 #include "RooStats/HypoTestResult.h"
0030
0031
0032 namespace RooStats {
0033
0034 class HypoTestCalculatorGeneric : public HypoTestCalculator {
0035
0036 public:
0037 HypoTestCalculatorGeneric(
0038 const RooAbsData &data,
0039 const ModelConfig &altModel,
0040 const ModelConfig &nullModel,
0041 TestStatSampler* sampler=nullptr
0042 );
0043
0044
0045 ~HypoTestCalculatorGeneric() override;
0046
0047
0048 HypoTestResult* GetHypoTest() const override;
0049
0050
0051 void SetNullModel(const ModelConfig &nullModel) override { fNullModel = &nullModel; }
0052 const RooAbsData * GetData(void) const { return fData; }
0053 const ModelConfig* GetNullModel(void) const { return fNullModel; }
0054 virtual const RooArgSet* GetFitInfo() const { return nullptr; }
0055
0056 void SetAlternateModel(const ModelConfig &altModel) override { fAltModel = &altModel; }
0057 const ModelConfig* GetAlternateModel(void) const { return fAltModel; }
0058
0059 void SetData(RooAbsData &data) override { fData = &data; }
0060
0061
0062
0063 TestStatSampler* GetTestStatSampler(void) const { return fTestStatSampler; }
0064
0065
0066
0067
0068 void UseSameAltToys();
0069
0070
0071 protected:
0072
0073 virtual int CheckHook(void) const { return 0; }
0074 virtual int PreNullHook(RooArgSet* , double ) const { return 0; }
0075 virtual int PreAltHook(RooArgSet* , double ) const { return 0; }
0076 virtual void PreHook() const { }
0077 virtual void PostHook() const { }
0078
0079 protected:
0080 const ModelConfig *fAltModel;
0081 const ModelConfig *fNullModel;
0082 const RooAbsData *fData;
0083 TestStatSampler *fTestStatSampler;
0084 TestStatSampler *fDefaultSampler;
0085 TestStatistic *fDefaultTestStat;
0086
0087 unsigned int fAltToysSeed;
0088
0089 private:
0090 void SetupSampler(const ModelConfig& model) const;
0091 void SetAdaptiveLimits(double obsTestStat, bool forNull) const;
0092 SamplingDistribution* GenerateSamplingDistribution(
0093 ModelConfig *thisModel,
0094 double obsTestStat,
0095 RooAbsPdf *impDens=nullptr,
0096 const RooArgSet *impSnapshot=nullptr
0097 ) const;
0098
0099
0100 protected:
0101 ClassDefOverride(HypoTestCalculatorGeneric,0)
0102 };
0103 }
0104
0105 #endif