forked from root-project/root
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PreprocessFunction.cxx
64 lines (54 loc) · 2.14 KB
/
PreprocessFunction.cxx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// @(#)root/roostats:$Id$
// Author: Kyle Cranmer, George Lewis
/*************************************************************************
* Copyright (C) 1995-2008, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
////////////////////////////////////////////////////////////////////////////////
/**
* \ingroup HistFactory
*/
#include <RooStats/HistFactory/PreprocessFunction.h>
#include <sstream>
namespace {
/// Replaces the XML special characters with their escape codes.
std::string escapeXML(const std::string &src)
{
std::stringstream dst;
for (char ch : src) {
switch (ch) {
case '&': dst << "&"; break;
case '\'': dst << "'"; break;
case '"': dst << """; break;
case '<': dst << "<"; break;
case '>': dst << ">"; break;
default: dst << ch; break;
}
}
return dst.str();
}
} // namespace
RooStats::HistFactory::PreprocessFunction::PreprocessFunction(std::string const &name, std::string const &expression,
std::string const &dependents)
: fName(name), fExpression(expression), fDependents(dependents)
{
}
std::string RooStats::HistFactory::PreprocessFunction::GetCommand() const
{
return "expr::" + fName + "('" + fExpression + "',{" + fDependents + "})";
}
void RooStats::HistFactory::PreprocessFunction::Print(std::ostream &stream) const
{
stream << "\t \t Name: " << fName << "\t \t Expression: " << fExpression << "\t \t Dependents: " << fDependents
<< std::endl;
}
void RooStats::HistFactory::PreprocessFunction::PrintXML(std::ostream &xml) const
{
xml << "<Function Name=\"" << fName << "\" "
<< "Expression=\"" << escapeXML(fExpression) << "\" "
<< "Dependents=\"" << fDependents << "\" "
<< "/>\n";
}