File indexing completed on 2025-12-16 10:29:44
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef ROOSTATS_CombinedCalculator
0012 #define ROOSTATS_CombinedCalculator
0013
0014
0015 #include "RooStats/IntervalCalculator.h"
0016
0017 #include "RooStats/HypoTestCalculator.h"
0018
0019 #include "RooStats/ModelConfig.h"
0020
0021 #include "RooAbsPdf.h"
0022
0023 #include "RooAbsData.h"
0024
0025 #include "RooArgSet.h"
0026
0027
0028
0029
0030
0031 namespace RooStats {
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062 class CombinedCalculator : public IntervalCalculator, public HypoTestCalculator {
0063
0064 public:
0065
0066 CombinedCalculator() = default;
0067
0068 CombinedCalculator(RooAbsData& data, RooAbsPdf& pdf, const RooArgSet& paramsOfInterest,
0069 double size = 0.05, const RooArgSet* nullParams = nullptr, const RooArgSet* altParams = nullptr, const RooArgSet* nuisParams = nullptr) :
0070
0071 fPdf(&pdf),
0072 fData(&data),
0073 fPOI(paramsOfInterest)
0074 {
0075 if (nullParams) fNullParams.add(*nullParams);
0076 if (altParams) fAlternateParams.add(*altParams);
0077 if (nuisParams) fNuisParams.add(*nuisParams);
0078 SetTestSize(size);
0079 }
0080
0081
0082 CombinedCalculator(RooAbsData& data, const ModelConfig& model,
0083 double size = 0.05) :
0084 fPdf(nullptr),
0085 fData(&data)
0086 {
0087 SetModel(model);
0088 SetTestSize(size);
0089 }
0090
0091
0092 ConfInterval* GetInterval() const override = 0;
0093
0094 HypoTestResult* GetHypoTest() const override = 0;
0095
0096
0097 void SetTestSize(double size) override {fSize = size;}
0098
0099 void SetConfidenceLevel(double cl) override {fSize = 1.-cl;}
0100
0101 double Size() const override {return fSize;}
0102
0103 double ConfidenceLevel() const override {return 1.-fSize;}
0104
0105
0106 void SetData(RooAbsData & data) override {
0107 fData = &data;
0108 }
0109
0110
0111 void SetModel(const ModelConfig & model) override {
0112 fPdf = model.GetPdf();
0113 if (model.GetParametersOfInterest()) SetParameters(*model.GetParametersOfInterest());
0114 if (model.GetSnapshot()) SetNullParameters(*model.GetSnapshot());
0115 if (model.GetNuisanceParameters()) SetNuisanceParameters(*model.GetNuisanceParameters());
0116 if (model.GetConditionalObservables()) SetConditionalObservables(*model.GetConditionalObservables());
0117 if (model.GetGlobalObservables()) SetGlobalObservables(*model.GetGlobalObservables());
0118 }
0119
0120 void SetNullModel( const ModelConfig &) override {
0121 }
0122 void SetAlternateModel(const ModelConfig &) override {
0123 }
0124
0125
0126
0127
0128 virtual void SetPdf(RooAbsPdf& pdf) { fPdf = &pdf; }
0129
0130
0131 virtual void SetParameters(const RooArgSet& set) { fPOI.removeAll(); fPOI.add(set); }
0132
0133
0134 virtual void SetNuisanceParameters(const RooArgSet& set) {fNuisParams.removeAll(); fNuisParams.add(set);}
0135
0136
0137 virtual void SetNullParameters(const RooArgSet& set) {fNullParams.removeAll(); fNullParams.add(set);}
0138
0139
0140 virtual void SetAlternateParameters(const RooArgSet& set) {fAlternateParams.removeAll(); fAlternateParams.add(set);}
0141
0142
0143 virtual void SetConditionalObservables(const RooArgSet& set) {fConditionalObs.removeAll(); fConditionalObs.add(set);}
0144
0145
0146 virtual void SetGlobalObservables(const RooArgSet& set) {fGlobalObs.removeAll(); fGlobalObs.add(set);}
0147
0148
0149 protected:
0150
0151 RooAbsPdf * GetPdf() const { return fPdf; }
0152 RooAbsData * GetData() const { return fData; }
0153
0154 double fSize = 0.0;
0155
0156 RooAbsPdf * fPdf = nullptr;
0157 RooAbsData * fData = nullptr;
0158 RooArgSet fPOI;
0159 RooArgSet fNullParams;
0160 RooArgSet fAlternateParams;
0161 RooArgSet fNuisParams;
0162 RooArgSet fConditionalObs;
0163 RooArgSet fGlobalObs;
0164
0165
0166 ClassDefOverride(CombinedCalculator,2)
0167
0168 };
0169 }
0170
0171
0172 #endif