57 std::string& itemList, std::string& prescaleList) {
62 std::vector<std::string> chainList = chains->getListOfTriggers();
63 ATH_MSG_DEBUG(
"Number of items in chain is " << chainList.size());
65 for (
auto &trigName : chainList){
68 if ( trigName.empty() )
continue;
75 if ( std::abs(trigChain->getPrescale()-1.0) > 1e-5 )
continue;
78 std::string myItem = trigName;
80 <<
"; result = " << (trigChain->isPassed() ?
"passed" :
"failed")
81 <<
"; prescale = " << trigChain->getPrescale());
84 if ( myItem.find(
"HLT",0) != std::string::npos){
85 myItem.replace(0,4,
"EF_");
92 if ( trigChain->isPassed() ) {
95 itemList +=
"-" + myItem;
98 prescaleList +=
"-" +
DataType( trigChain->getPrescale() ).toString();
104 if ( itemList.empty() ){ itemList =
"empty"; }
105 if ( prescaleList.empty() ){ prescaleList =
"empty"; }
111 return StatusCode::SUCCESS;
126 std::string itemListL1=
"";
127 std::string prescaleListL1=
"";
128 std::string itemListL2=
"";
129 std::string prescaleListL2=
"";
130 std::string itemListEF=
"";
131 std::string prescaleListEF=
"";
132 std::string itemListHLT=
"";
133 std::string prescaleListHLT=
"";
138 int flagL1Passed =
m_allL1->isPassed();
139 ATH_MSG_DEBUG(
"Decision : Level-1 " << ((flagL1Passed)?
"passed":
"failed"));
144 int flagL2Passed =
m_allL2->isPassed();
145 ATH_MSG_DEBUG(
"Decision : Level-2 " << ((flagL2Passed)?
"passed":
"failed"));
150 int flagEFPassed =
m_allEF->isPassed();
151 ATH_MSG_DEBUG(
"Decision : EventFilter " << ((flagEFPassed)?
"passed":
"failed"));
156 int flagHLTPassed =
m_allHLT->isPassed();
157 ATH_MSG_DEBUG(
"Decision : HLT " << ((flagHLTPassed)?
"passed":
"failed"));
160 if ((itemListL1==
"empty") && (itemListL2==
"empty") && (itemListEF==
"empty") && (itemListHLT==
"empty") ){
161 ATH_MSG_INFO(
"All item lists empty, will not write out any data");
162 return StatusCode::SUCCESS;
167 DataVect prescaleListL1Vec; prescaleListL1Vec.push_back(
DataType( prescaleListL1 ));
169 DataVect prescaleListL2Vec; prescaleListL2Vec.push_back(
DataType( prescaleListL2 ));
171 DataVect prescaleListEFVec; prescaleListEFVec.push_back(
DataType( prescaleListEF ));
172 DataVect itemListHLTVec; itemListHLTVec.push_back(
DataType( itemListHLT ));
173 DataVect prescaleListHLTVec; prescaleListHLTVec.push_back(
DataType( prescaleListHLT ));
188 const std::size_t n = itemListL1Vec.size();
189 dataMap[
"ctpItemList"] = std::move(itemListL1Vec);
190 dataMap[
"prescaleListL1"] = std::move(prescaleListL1Vec);
191 dataMap[
"itemListL2"] = std::move(itemListL2Vec);
192 dataMap[
"prescaleListL2"] = std::move(prescaleListL2Vec);
193 dataMap[
"itemListEF"] = std::move(itemListHLTVec);
194 dataMap[
"prescaleListEF"] = std::move(prescaleListHLTVec);
195 dataMap[
"passedTrigger"] = std::move(passedTrigger);
196 dataMap[
"passedL1"] = std::move(passedL1);
197 dataMap[
"passedL2"] = passedHLT;
198 dataMap[
"passedEF"] = std::move(passedHLT);
199 dataMap[
"energySumEt"] = std::move(energySumEt);
200 dataMap[
"energyEx"] = std::move(energyEx);
201 dataMap[
"energyEy"] = std::move(energyEy);
202 dataMap[
"energyEtMiss"] = std::move(energyEtMiss);
206 return FormatTool->AddToEvent(
dataTypeName(),
"TrigDecision", &dataMap);