Warning, file /include/root/RooStats/RooStatsUtils.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef ROOSTATS_RooStatsUtils
0013 #define ROOSTATS_RooStatsUtils
0014
0015 #include "Math/DistFuncMathCore.h"
0016
0017 #include "RooArgSet.h"
0018 #include "RooRealVar.h"
0019 #include "RooAbsCollection.h"
0020 #include "RooStats/ModelConfig.h"
0021 #include "RooProdPdf.h"
0022 #include "RooDataSet.h"
0023 #include "RooAbsCategoryLValue.h"
0024
0025 class TTree;
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 namespace RooStats {
0039 struct RooStatsConfig {
0040 std::string useLikelihoodOffset = "none";
0041 bool useEvalErrorWall{true};
0042 };
0043
0044
0045
0046 RooStatsConfig& GetGlobalRooStatsConfig();
0047
0048
0049 inline double PValueToSignificance(double pvalue){
0050 return ::ROOT::Math::normal_quantile_c(pvalue,1);
0051 }
0052
0053
0054 inline double SignificanceToPValue(double Z){
0055 return ::ROOT::Math::normal_cdf_c(Z);
0056 }
0057
0058
0059
0060
0061 double AsimovSignificance(double s, double b, double sigma_b = 0.0 );
0062
0063 inline void SetParameters(const RooArgSet* desiredVals, RooArgSet* paramsToChange){
0064 paramsToChange->assign(*desiredVals) ;
0065 }
0066
0067 inline void RemoveConstantParameters(RooArgSet* set){
0068 set->removeConstantParameters();
0069 }
0070
0071 inline void RemoveConstantParameters(RooArgList& set){
0072 set.removeConstantParameters();
0073 }
0074
0075
0076
0077 inline bool SetAllConstant(const RooAbsCollection &coll, bool constant = true) {
0078 bool changed = false;
0079 for (auto *v : dynamic_range_cast<RooRealVar *>(coll)) {
0080 if (v && (v->isConstant() != constant)) {
0081 changed = true;
0082 v->setConstant(constant);
0083 }
0084 }
0085 return changed;
0086 }
0087
0088
0089
0090 inline void RandomizeCollection(RooAbsCollection& set,
0091 bool randomizeConstants = true)
0092 {
0093
0094
0095 if (randomizeConstants) {
0096 for (auto *var : static_range_cast<RooRealVar *>(set))
0097 var->randomize();
0098 }
0099 else {
0100
0101 for (auto *var : static_range_cast<RooRealVar *>(set)) {
0102 if (!var->isConstant() )
0103 var->randomize();
0104 }
0105 }
0106
0107 }
0108
0109 void FactorizePdf(const RooArgSet &observables, RooAbsPdf &pdf, RooArgList &obsTerms, RooArgList &constraints);
0110
0111 void FactorizePdf(RooStats::ModelConfig &model, RooAbsPdf &pdf, RooArgList &obsTerms, RooArgList &constraints);
0112
0113
0114 RooAbsPdf * MakeNuisancePdf(RooAbsPdf &pdf, const RooArgSet &observables, const char *name);
0115 RooAbsPdf * MakeNuisancePdf(const RooStats::ModelConfig &model, const char *name);
0116
0117 RooAbsPdf * MakeUnconstrainedPdf(RooAbsPdf &pdf, const RooArgSet &observables, const char *name = nullptr);
0118 RooAbsPdf * MakeUnconstrainedPdf(const RooStats::ModelConfig &model, const char *name = nullptr);
0119
0120
0121 TTree* GetAsTTree(TString name, TString desc, const RooDataSet& data);
0122
0123
0124 void PrintListContent(const RooArgList & l, std::ostream & os = std::cout);
0125
0126
0127
0128 inline void UseNLLOffset(bool on) {
0129 GetGlobalRooStatsConfig().useLikelihoodOffset = on ? "initial" : "none";
0130 }
0131
0132
0133
0134
0135 inline bool IsNLLOffset() {
0136 return GetGlobalRooStatsConfig().useLikelihoodOffset == "initial";
0137 }
0138
0139
0140
0141
0142 inline void SetNLLOffsetMode(std::string const& mode) {
0143 GetGlobalRooStatsConfig().useLikelihoodOffset = mode;
0144 }
0145
0146
0147 inline std::string const &NLLOffsetMode() {
0148 return GetGlobalRooStatsConfig().useLikelihoodOffset;
0149 }
0150
0151
0152
0153 RooWorkspace* MakeReducedWorkspace(RooWorkspace *oldWS, const char *newName, bool copySnapshots,
0154 const char *mcname, const char *newmcname, bool copyData=true);
0155
0156 }
0157
0158
0159 #endif