14#include "CLHEP/Random/RandomEngine.h"
15#include "CLHEP/Random/RandFlat.h"
17#include "boost/algorithm/string.hpp"
18#include <boost/tokenizer.hpp>
25 const std::string & itemName( item.name() );
28 unsigned int ctpId = item.ctpId();
34 ctpItem->
setLogic(item.definition());
38 m_map[ itemName ] = ctpItem;
46 for(
auto & entry :
m_map ) {
59 const std::string & itemName( item->name() );
62 unsigned int ctpId = item->ctpId();
65 ctpItem->
setPrescale( prescales.prescales_float()[ ctpId ] );
71 m_map[ itemName ] = ctpItem;
89 std::vector<std::string> thresholdlist;
90 std::string logic, conditions;
93 std::map<unsigned int, std::string> thrNames;
95 for(
const std::string & thrmult : thresholdlist) {
96 std::vector<std::string>
res;
97 boost::split(
res, thrmult, boost::is_any_of(
","));
99 std::string name_mult(
"");
100 if(
res.size() == 1) {
103 name_mult =
res[2]+
"[x"+
res[0]+
"]";
105 thrNames[idx++] = std::move(name_mult);
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]);
118 tokens.emplace_back(tok);
123 std::string definition(
"");
124 for(
auto & tok : tokens ) {
std::pair< std::vector< unsigned int >, bool > res
Class storing information helping to make the CTP decision.
void setPrescale(int prescale)
void setBunchGroups(const std::vector< std::string > &bunchGroups)
void setCtpId(unsigned int ctpid)
void setName(const std::string &name)
void setLogic(const std::string &logicExpr)
void setTriggerType(unsigned char triggerType)
std::set< std::string > m_itemNames
~ItemMap()
default destructor
ItemMap(const TrigConf::L1Menu *l1menu)
std::string getDefinition(const TrigConf::TriggerItem *item) const
std::map< std::string, const CTPTriggerItem * > m_map
map from item name to CTPTriggerItem
L1 threshold configuration.
void buildLogic(std::string &logic, std::vector< std::string > &conditionList) const
const std::string & definition() const
boost::multi_index::multi_index_container< TriggerItem *, boost::multi_index::indexed_by< boost::multi_index::random_access<>, boost::multi_index::ordered_unique< boost::multi_index::identity< TriggerItem > >, boost::multi_index::ordered_unique< boost::multi_index::tag< tag_ctpid >, boost::multi_index::const_mem_fun< TriggerItem, int, &TriggerItem::ctpId > >, boost::multi_index::hashed_unique< boost::multi_index::tag< tag_name_hash >, boost::multi_index::const_mem_fun< TrigConfData, const std::string &, &TrigConfData::name > > > > ItemContainer