#include "DecisionSvc.h"
#include "GaudiKernel/EventContext.h"
#include "PersistentDataModel/AthenaAttributeList.h"
#include <algorithm>
Go to the source code of this file.
◆ ATLAS_NOT_THREAD_SAFE()
StatusCode DecisionSvc::DeclareToCutFlowSvc ATLAS_NOT_THREAD_SAFE |
( |
| ) |
|
Install fatal handler with default options.
This is meant to be easy to call from python via ctypes.
Definition at line 368 of file DecisionSvc.cxx.
373 for(
auto ait = m_streamNames.begin();
374 ait != m_streamNames.end(); ++ait) {
376 const std::vector<std::string> *accFilt=
nullptr;
377 const std::vector<std::string> *reqFilt=
nullptr;
378 const std::vector<std::string> *vetFilt=
nullptr;
379 std::vector< const std::vector<std::string>* > totFilt;
380 if (
auto itr = m_stream_accept.find(
streamName); itr != m_stream_accept.end()) {
381 accFilt = &itr->second;
382 totFilt.push_back(accFilt);
384 if (
auto itr = m_stream_require.find(
streamName); itr != m_stream_require.end()) {
385 reqFilt = &itr->second;
386 totFilt.push_back(reqFilt);
388 if (
auto itr = m_stream_veto.find(
streamName); itr != m_stream_veto.end()) {
389 vetFilt = &itr->second;
390 totFilt.push_back(vetFilt);
395 std::string accstring(
""), reqstring(
""), vetstring(
"");
397 for (
auto it = accFilt->begin();
it != accFilt->end(); ++
it) {
398 if(!accstring.empty()) accstring +=
"||";
399 else accstring +=
'(';
404 for (
auto it = reqFilt->begin();
it != reqFilt->end(); ++
it) {
405 if(!reqstring.empty()) reqstring +=
"&&";
406 else reqstring +=
'(';
411 for (
auto it = vetFilt->begin();
it != vetFilt->end(); ++
it) {
412 if(!vetstring.empty()) vetstring +=
"||";
413 else vetstring +=
'(';
417 std::string logicalKey(
"");
418 if(!accstring.empty()) {
420 logicalKey += accstring;
422 if(!reqstring.empty()) {
424 if (!logicalKey.empty()) logicalKey +=
"&&";
425 logicalKey += reqstring;
427 if(!vetstring.empty()) {
429 if (!logicalKey.empty()) logicalKey +=
"&&";
431 logicalKey += vetstring;
434 if (logicalKey.empty()) logicalKey=
"PassThru";
438 for(
auto vec = totFilt.begin();
439 vec != totFilt.end(); ++
vec) {
441 for (
auto filter = (*vec)->begin();
443 if(!m_cutflowSvc.empty()) {m_cutflowSvc->registerTopFilter( (*
filter), logicalKey, 2,
streamName,
true ); }
448 return StatusCode::SUCCESS;