Skip to content

Commit dc3dea2

Browse files
committed
include cleanExpression and RooResolutionModels in sanitization
1 parent 5e2ef44 commit dc3dea2

File tree

2 files changed

+24
-29
lines changed

2 files changed

+24
-29
lines changed

roofit/hs3/src/JSONFactories_RooFitCore.cxx

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -543,12 +543,6 @@ class RooAddPdfStreamer : public RooFit::JSONIO::Exporter {
543543
{
544544
const RooArg_t *pdf = static_cast<const RooArg_t *>(func);
545545
elem["type"] << key();
546-
std::string name = elem["name"].val();
547-
/*elem["name"] << RooJSONFactoryWSTool::sanitizeName(name);
548-
RooJSONFactoryWSTool::fillSeqSanitizedName(elem["summands"], pdf->pdfList());
549-
RooJSONFactoryWSTool::fillSeqSanitizedName(elem["coefficients"], pdf->coefList());
550-
*/
551-
elem["name"] << name;
552546
RooJSONFactoryWSTool::fillSeq(elem["summands"], pdf->pdfList());
553547
RooJSONFactoryWSTool::fillSeq(elem["coefficients"], pdf->coefList());
554548
elem["extended"] << (pdf->extendMode() != RooArg_t::CanNotBeExtended);
@@ -563,12 +557,6 @@ class RooRealSumPdfStreamer : public RooFit::JSONIO::Exporter {
563557
{
564558
const RooRealSumPdf *pdf = static_cast<const RooRealSumPdf *>(func);
565559
elem["type"] << key();
566-
std::string name = elem["name"].val();
567-
/*elem["name"] << RooJSONFactoryWSTool::sanitizeName(name);
568-
RooJSONFactoryWSTool::fillSeqSanitizedName(elem["samples"], pdf->funcList());
569-
RooJSONFactoryWSTool::fillSeqSanitizedName(elem["coefficients"], pdf->coefList());
570-
*/
571-
elem["name"] << name;
572560
RooJSONFactoryWSTool::fillSeq(elem["samples"], pdf->funcList());
573561
RooJSONFactoryWSTool::fillSeq(elem["coefficients"], pdf->coefList());
574562
elem["extended"] << (pdf->extendMode() != RooAbsPdf::CanNotBeExtended);
@@ -583,12 +571,6 @@ class RooRealSumFuncStreamer : public RooFit::JSONIO::Exporter {
583571
{
584572
const RooRealSumFunc *pdf = static_cast<const RooRealSumFunc *>(func);
585573
elem["type"] << key();
586-
std::string name = elem["name"].val();
587-
/*elem["name"] << RooJSONFactoryWSTool::sanitizeName(name);
588-
RooJSONFactoryWSTool::fillSeqSanitizedName(elem["samples"], pdf->funcList());
589-
RooJSONFactoryWSTool::fillSeqSanitizedName(elem["coefficients"], pdf->coefList());
590-
*/
591-
elem["name"] << name;
592574
RooJSONFactoryWSTool::fillSeq(elem["samples"], pdf->funcList());
593575
RooJSONFactoryWSTool::fillSeq(elem["coefficients"], pdf->coefList());
594576
return true;
@@ -687,6 +669,7 @@ class RooFormulaArgStreamer : public RooFit::JSONIO::Exporter {
687669
const RooArg_t *pdf = static_cast<const RooArg_t *>(func);
688670
elem["type"] << key();
689671
TString expression(pdf->expression());
672+
cleanExpression(expression);
690673
// If the tokens follow the "x[#]" convention, the square braces enclosing each number
691674
// ensures that there is a unique mapping between the token and parameter name
692675
// If the tokens follow the "@#" convention, the numbers are not enclosed by braces.
@@ -701,6 +684,18 @@ class RooFormulaArgStreamer : public RooFit::JSONIO::Exporter {
701684
elem["expression"] << expression.Data();
702685
return true;
703686
}
687+
private:
688+
void cleanExpression(TString& expr) const
689+
{
690+
expr.ReplaceAll("TMath::Exp", "exp");
691+
expr.ReplaceAll("TMath::Min", "min");
692+
expr.ReplaceAll("TMath::Max", "max");
693+
expr.ReplaceAll("TMath::Log", "log");
694+
expr.ReplaceAll("TMath::Cos", "cos");
695+
expr.ReplaceAll("TMath::Sin", "sin");
696+
expr.ReplaceAll("TMath::Sqrt", "sqrt");
697+
expr.ReplaceAll("TMath::Power", "pow");
698+
}
704699
};
705700
template <class RooArg_t>
706701
class RooPolynomialStreamer : public RooFit::JSONIO::Exporter {
@@ -784,9 +779,6 @@ class RooTruthModelStreamer : public RooFit::JSONIO::Exporter {
784779
{
785780
auto *pdf = static_cast<const RooTruthModel *>(func);
786781
elem["type"] << key();
787-
std::string name = elem["name"].val();
788-
// elem["name"] << RooJSONFactoryWSTool::sanitizeName(name);
789-
elem["name"] << name;
790782
elem["x"] << pdf->convVar().GetName();
791783

792784
return true;
@@ -800,9 +792,6 @@ class RooGaussModelStreamer : public RooFit::JSONIO::Exporter {
800792
{
801793
auto *pdf = static_cast<const RooGaussModel *>(func);
802794
elem["type"] << key();
803-
std::string name = elem["name"].val();
804-
// elem["name"] << RooJSONFactoryWSTool::sanitizeName(name);
805-
elem["name"] << name;
806795
elem["x"] << pdf->convVar().GetName();
807796
elem["mean"] << pdf->getMean().GetName();
808797
elem["sigma"] << pdf->getSigma().GetName();
@@ -913,10 +902,6 @@ class RooRealIntegralStreamer : public RooFit::JSONIO::Exporter {
913902
bool exportObject(RooJSONFactoryWSTool *, const RooAbsArg *func, JSONNode &elem) const override
914903
{
915904
auto *integral = static_cast<const RooRealIntegral *>(func);
916-
std::string name = elem["name"].val();
917-
// elem["name"] << RooJSONFactoryWSTool::sanitizeName(name);
918-
elem["name"] << name;
919-
920905
elem["type"] << key();
921906
std::string integrand = integral->integrand().GetName();
922907
// elem["integrand"] << RooJSONFactoryWSTool::sanitizeName(integrand);

roofit/hs3/src/RooJSONFactoryWSTool.cxx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2508,6 +2508,10 @@ RooWorkspace RooJSONFactoryWSTool::cleanWS(const RooWorkspace &ws, bool onlyMode
25082508
tmpWS.import(*obj);
25092509
}
25102510

2511+
for (auto *obj : ws.allResolutionModels()) {
2512+
tmpWS.import(*obj);
2513+
}
2514+
25112515
/*
25122516
if (auto* mc = dynamic_cast<RooStats::ModelConfig*>(obj)) {
25132517
// Import the PDF
@@ -2582,7 +2586,13 @@ RooWorkspace RooJSONFactoryWSTool::sanitizeWS(const RooWorkspace &ws)
25822586
obj->SetName(sanitizeName(obj->GetName()).c_str());
25832587
}
25842588
}
2585-
2589+
2590+
// Resolution Models
2591+
for (auto *obj : tmpWS.allResolutionModels()){
2592+
if (!isValidName(obj->GetName())) {
2593+
obj->SetName(sanitizeName(obj->GetName()).c_str());
2594+
}
2595+
}
25862596
// Datasets
25872597
for (auto *data : tmpWS.allData()) {
25882598
// Sanitize dataset name

0 commit comments

Comments
 (0)