00001
00002
00003 #ifndef TrigDecision_TrigDecisionTool_h
00004 #define TrigDecision_TrigDecisionTool_h
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "AsgTools/AsgToolsConf.h"
00019 #include "AsgTools/AsgMetadataTool.h"
00020 #include "AsgTools/ToolHandle.h"
00021
00022 #include "TrigConfInterfaces/ITrigConfigTool.h"
00023 #ifdef ASGTOOL_ATHENA
00024
00025
00026 #ifndef XAOD_ANALYSIS
00027 #include "TrigNavigation/Navigation.h"
00028 #include "TrigConfInterfaces/ITrigConfigSvc.h"
00029 #include "GaudiKernel/IIncidentListener.h"
00030 #include "GaudiKernel/ServiceHandle.h"
00031 #endif
00032
00033 #endif
00034
00035
00036
00037 #include "TrigDecisionInterface/ITrigDecisionTool.h"
00038
00039
00040 #include "TrigDecisionTool/TrigDecisionToolCore.h"
00041 #include "TrigDecisionTool/Logger.h"
00042
00043 namespace TrigConf {
00044 class ITrigConfigSvc;
00045 }
00046
00047 namespace Trig {
00048 class TrigDecisionTool :
00049 public asg::AsgMetadataTool,
00050 virtual Trig::ITrigDecisionTool,
00051 public TrigDecisionToolCore
00052 {
00053
00054 ASG_TOOL_INTERFACE(Trig::TrigDecisionTool)
00055 ASG_TOOL_CLASS2(TrigDecisionTool,Trig::ITrigDecisionTool,Trig::TrigDecisionTool)
00056
00057 public:
00058 using Logger::msgLvl;
00059 using Logger::msg;
00060
00061
00062 TrigDecisionTool(const std::string& name);
00063 virtual ~TrigDecisionTool();
00064
00065
00066 StatusCode initialize();
00067
00068 StatusCode beginEvent();
00069
00070 StatusCode beginInputFile();
00071
00072 StatusCode finalize();
00073
00074 #ifdef ASGTOOL_ATHENA
00075 void outputlevelupdateHandler(Property& p);
00076
00077 #endif
00078
00079 #ifndef XAOD_ANALYSIS
00080
00081 virtual void handle(const Incident& inc);
00082 #endif
00083
00090 virtual bool isPassed(const std::string& chain,
00091 unsigned int condition) const;
00093 virtual bool isPassed(const std::string& chain) const;
00095 virtual unsigned int isPassedBits( const std::string& chain ) const;
00096
00097 using TrigDecisionToolCore::isPassed;
00098 using TrigDecisionToolCore::isPassedBits;
00099
00100 bool msgLvl(const MSG::Level lvl) const { return Logger::msgLvl(lvl); }
00101
00102 private:
00103
00104 bool configKeysMatch(uint32_t smk, uint32_t lvl1psk, uint32_t hltpsk);
00105 std::vector<uint32_t> m_configKeysCache;
00106 bool m_configKeysCached;
00107 ToolHandle<TrigConf::ITrigConfigTool> m_configTool;
00108
00109
00110
00111
00112 #if defined(ASGTOOL_ATHENA) && !defined(XAOD_ANALYSIS)
00113 ServiceHandle<TrigConf::ITrigConfigSvc> m_configSvc;
00114 ToolHandle<HLT::Navigation> m_fullNavigation;
00115 #endif
00116 HLT::TrigNavStructure* m_navigation;
00117
00118 bool m_acceptMultipleInstance;
00119 bool m_useAODDecision;
00120 std::string m_decisionKey;
00121
00122 TrigDecisionTool& operator= (const TrigDecisionTool&);
00123
00124 std::map<std::string, std::string> m_publicChainGroups;
00125
00126 };
00127
00128 }
00129
00130
00131 #endif