14 #include "CLHEP/Random/RandomEngine.h"
15 #include "CLHEP/Random/RandFlat.h"
17 #include "boost/algorithm/string.hpp"
18 #include <boost/tokenizer.hpp>
20 #include <string_view>
25 const std::string & itemName(
item.name() );
28 unsigned int ctpId =
item.ctpId();
38 m_map[ itemName ] = ctpItem;
46 for(
auto entry : m_map ) {
57 std::string definition = getDefinition(
item);
59 const std::string & itemName(
item->name() );
62 unsigned int ctpId =
item->ctpId();
71 m_map[ itemName ] = ctpItem;
72 m_itemNames.insert( itemName );
89 std::vector<std::string> thresholdlist;
90 std::string logic, conditions;
91 item->buildLogic(logic, thresholdlist);
93 std::map<unsigned int, std::string> thrNames;
95 for(
const std::string & thrmult : thresholdlist) {
96 std::vector<std::string>
res;
99 std::string name_mult(
"");
100 if(
res.size() == 1) {
103 name_mult =
res[2]+
"[x"+
res[0]+
"]";
105 thrNames[
idx++] = name_mult;
109 std::string def =
item->definition();
110 std::vector<std::string>
tokens;
112 for (
auto & tok : boost::tokenizer<boost::char_separator<char> > (
item->definition(), boost::char_separator<char>(
" ",
"()&|!")) ) {
114 auto [
ptr, ec] = std::from_chars(tok.data(), tok.data() + tok.size(),
n);
115 if (ec == std::errc()) {
116 tokens.emplace_back(thrNames[
n]);
123 std::string definition(
"");
124 for(
auto & tok :
tokens ) {