Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions roofit/hs3/inc/RooFitHS3/RooJSONFactoryWSTool.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,15 @@ class ModelConfig;
class RooJSONFactoryWSTool {
public:
static constexpr bool useListsInsteadOfDicts = true;
static bool allowExportInvalidNames;
static bool allowSanitizeNames;
static bool importNoDomainParametersAsRooConstVars;

struct Config {
bool allowExportInvalidNames = true;
bool allowSanitizeNames = true;
bool importNoDomainParametersAsRooConstVars = true;
};

static Config &config();

static RooWorkspace sanitizeWS(const RooWorkspace &ws);
static RooWorkspace cleanWS(const RooWorkspace &ws, bool onlyModelConfig = false);

Expand Down
17 changes: 10 additions & 7 deletions roofit/hs3/src/RooJSONFactoryWSTool.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -981,16 +981,13 @@ bool RooJSONFactoryWSTool::isValidName(const std::string &str)
return true;
}

bool RooJSONFactoryWSTool::allowExportInvalidNames(true);
bool RooJSONFactoryWSTool::allowSanitizeNames(true);
bool RooJSONFactoryWSTool::importNoDomainParametersAsRooConstVars(true);
bool RooJSONFactoryWSTool::testValidName(const std::string &name, bool forceError)
{
if (!RooJSONFactoryWSTool::isValidName(name)) {
std::stringstream ss;
ss << "RooJSONFactoryWSTool() name '" << name << "' is not valid!" << std::endl
<< "Sanitize names by setting RooJSONFactoryWSTool::allowSanitizeNames = True." << std::endl;
if (RooJSONFactoryWSTool::allowExportInvalidNames && !forceError) {
<< "Sanitize names by setting RooJSONFactoryWSTool::config().allowSanitizeNames = true." << std::endl;
if (RooJSONFactoryWSTool::config().allowExportInvalidNames && !forceError) {
RooJSONFactoryWSTool::warning(ss.str());
return false;
} else {
Expand Down Expand Up @@ -1801,7 +1798,7 @@ void RooJSONFactoryWSTool::importVariable(const JSONNode &p)
oocoutE(nullptr, InputArguments) << ss.str() << std::endl;
return;
}
if (importNoDomainParametersAsRooConstVars && !_domains->hasVariable(name.c_str())) {
if (config().importNoDomainParametersAsRooConstVars && !_domains->hasVariable(name.c_str())) {
if (!p.has_child("value")) {
RooJSONFactoryWSTool::error("cannot instantiate RooConstVar '" + name + "' without \"value\"!");
}
Expand Down Expand Up @@ -2518,7 +2515,7 @@ void RooJSONFactoryWSTool::error(const char *s)
std::string RooJSONFactoryWSTool::sanitizeName(const std::string str)
{
std::string result;
if (RooJSONFactoryWSTool::allowSanitizeNames) {
if (RooJSONFactoryWSTool::config().allowSanitizeNames) {
for (char c : str) {
switch (c) {
case '[':
Expand Down Expand Up @@ -2591,6 +2588,12 @@ RooWorkspace RooJSONFactoryWSTool::cleanWS(const RooWorkspace &ws, bool onlyMode
return tmpWS;
}

RooJSONFactoryWSTool::Config &RooJSONFactoryWSTool::config()
{
static Config conf;
return conf;
}

// Sanitize all names in the workspace to be HS3 compliant
RooWorkspace RooJSONFactoryWSTool::sanitizeWS(const RooWorkspace &ws)
{
Expand Down
9 changes: 6 additions & 3 deletions roofit/hs3/test/testRooFitHS3.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -169,12 +169,15 @@ std::string defaultDomainAxesNode(std::string const &json)
class ScopedNoDomainConstVarImportFlag {
public:
explicit ScopedNoDomainConstVarImportFlag(bool value)
: _oldValue{RooJSONFactoryWSTool::importNoDomainParametersAsRooConstVars}
: _oldValue{RooJSONFactoryWSTool::config().importNoDomainParametersAsRooConstVars}
{
RooJSONFactoryWSTool::importNoDomainParametersAsRooConstVars = value;
RooJSONFactoryWSTool::config().importNoDomainParametersAsRooConstVars = value;
}

~ScopedNoDomainConstVarImportFlag() { RooJSONFactoryWSTool::importNoDomainParametersAsRooConstVars = _oldValue; }
~ScopedNoDomainConstVarImportFlag()
{
RooJSONFactoryWSTool::config().importNoDomainParametersAsRooConstVars = _oldValue;
}

private:
bool _oldValue;
Expand Down
Loading