59 {
60 using ptree = boost::property_tree::ptree;
62 top.put(
"filetype",
"hltmenu");
65
66 std::map<std::string, const TrigConf::HLTStreamTag*> allStreams;
67
70 pChain.put("counter", cptr->chain_counter());
71 pChain.put("nameHash", cptr->chain_hash_id());
72 pChain.put("l1item", cptr->lower_chain_name());
75 pChain.add_child(
"sequencers",
asArray(std::vector<std::string>({
"missing"})));
76
77 std::vector<std::string> strNames;
78 for ( const auto st: cptr->streams()) {
79 strNames.push_back(
st->stream());
80 allStreams[
st->stream()] =
st;
81 }
82 pChain.add_child(
"streams",
asArray(strNames));
83
84 pChain.add_child(
"groups",
asArray(cptr->groups()));
85
86
87
88
89 std::vector<uint32_t> counters;
90 std::vector<int> logics;
91 std::vector<std::string>
labels;
92 ptree outputTEs_outerArray;
93
94 for(auto& signature : cptr->signatureList() ){
95 uint32_t cntr = signature->signature_counter();
96 counters.push_back(cntr);
97 logics.push_back(signature->logic());
98 labels.push_back(signature->label());
99 ptree outputTEs_innerArray;
100 for(auto& outputTE : signature->outputTEs()){
101 outputTEs_innerArray.push_back( ptree::value_type("", outputTE->name()) );
102 }
103 outputTEs_outerArray.push_back( ptree::value_type("", outputTEs_innerArray) );
104 }
105
107 pSig.add_child(
"counters",
asArray(counters));
108 pSig.add_child(
"logics",
asArray(logics));
109 pSig.add_child("outputTEs", outputTEs_outerArray);
110 pSig.add_child(
"labels",
asArray(labels));
111
112 pChain.add_child("signature", pSig);
113
114
115 pChains.push_back(std::make_pair(cptr->chain_name(), pChain));
116 }
118 for ( auto [sname, stream]: allStreams ) {
120 pStream.put("name", sname);
121 pStream.put(
"type",
stream->type());
122 pStream.put(
"obeyLB",
stream->obeyLB());
123 pStream.put("forceFullEventBuilding", true);
124 pStreams.push_back(std::make_pair(sname, pStream));
125 }
126
127 top.add_child(
"chains", pChains);
128
129 top.add_child(
"streams", pStreams);
131 pSequencers.add_child(
"missing",
asArray(std::vector<std::string>({
""})));
132 top.add_child(
"sequencers", pSequencers);
133
134
136 std::vector<std::string> outputTEs;
137 ptree inputTEs_outerArray;
138 ptree algorithms_outerArray;
139 for(auto& seq : sequenceList){
140 outputTEs.push_back(
seq->outputTE()->name());
141
142 ptree inputTEs_innerArray;
143 for(
auto& input :
seq->inputTEs()) {
144 inputTEs_innerArray.push_back( ptree::value_type(
"",
input->name()) );
145 }
146 inputTEs_outerArray.push_back( ptree::value_type("", inputTEs_innerArray) );
147
148 ptree algorithms_innerArray;
149 for(
const std::string& alg :
seq->algorithms()) {
150 algorithms_innerArray.push_back( ptree::value_type("", alg) );
151 }
152 algorithms_outerArray.push_back( ptree::value_type("", algorithms_innerArray) );
153 }
155 pSequence.add_child(
"outputTEs",
asArray(outputTEs));
156 pSequence.add_child("inputTEs", inputTEs_outerArray);
157 pSequence.add_child("algorithms", algorithms_outerArray);
158 top.add_child(
"sequence_run2", pSequence);
159
162 return true;
163}
std::vector< int > legMult(const TrigConf::HLTChain *cptr)
std::vector< std::string > l1thresholds(const TrigConf::HLTFrame *frame, const TrigConf::HLTChain *cptr)
boost::property_tree::ptree asArray(const COLL &data)
const HLTSequenceList & getHLTSequenceList() const
const accessor to the list of HLT sequences
const HLTChainList & getHLTChainList() const
const accessor to the list of HLT chains
const std::string & name() const
seq
filter configuration ## -> we use the special sequence 'AthMasterSeq' which is run before any other a...