00001 #ifndef TRIG_DECISIONUNPACKEREVENTINFO_H
00002 #define TRIG_DECISIONUNPACKEREVENTINFO_H
00003
00004 #include "TrigConfHLTData/HLTChain.h"
00005 #include "TrigConfL1Data/CTPConfig.h"
00006 #include "TrigSteeringEvent/Chain.h"
00007
00008
00009 #include "TrigDecisionTool/IDecisionUnpacker.h"
00010 #include "AsgTools/AsgMessaging.h"
00011
00012 #include "DecisionObjectHandleEventInfo.h"
00013
00014 class StoreGateSvc;
00015
00016 namespace HLT {
00017 class TrigNavStructure;
00018 }
00019
00020 namespace LVL1CTP{
00021 class Lvl1Item;
00022 class Lvl1Result;
00023 }
00024
00025 namespace Trig{
00026
00027
00028 class DecisionUnpackerEventInfo : public IDecisionUnpacker, public Logger {
00029 public:
00030 DecisionUnpackerEventInfo(StoreGateSvc* sg, const std::string& key);
00031 virtual ~DecisionUnpackerEventInfo();
00032 virtual StatusCode unpackDecision(std::map<std::string, const LVL1CTP::Lvl1Item*>&,
00033 std::map<CTPID, LVL1CTP::Lvl1Item*>&,
00034 std::map<std::string, const HLT::Chain*>&,
00035 std::map<CHAIN_COUNTER, HLT::Chain*>&,
00036 std::map<std::string, const HLT::Chain*>&,
00037 std::map<CHAIN_COUNTER, HLT::Chain*>&,
00038 char&,
00039 bool
00040 );
00041 virtual StatusCode unpackNavigation(HLT::TrigNavStructure*);
00042 virtual bool assert_handle();
00043 virtual void validate_handle();
00044 virtual void invalidate_handle();
00045 private:
00046 DecisionObjectHandleEventInfo* m_handle;
00047 StatusCode unpackItems(const std::vector<uint32_t>& level1TriggerInfo,
00048 std::map<CTPID, LVL1CTP::Lvl1Item*>& itemsCache,
00049 std::map<std::string, const LVL1CTP::Lvl1Item*>& itemsByName);
00050 StatusCode unpackChains(const std::vector<uint32_t>& chainTriggerInfo,
00051 std::map<unsigned, HLT::Chain*>& cache,
00052 std::map<std::string, const HLT::Chain*>& output);
00053
00054 };
00055
00056
00057 }
00058
00059 #endif