00001 #ifndef TRIG_DECISIONUNPACKERATHENA_H
00002 #define TRIG_DECISIONUNPACKERATHENA_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 "TrigDecisionTool/Logger.h"
00011 #include "AsgTools/AsgMessaging.h"
00012
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 DecisionObjectHandleAthena;
00029
00030 class DecisionUnpackerAthena : public IDecisionUnpacker, public Logger {
00031 public:
00032 DecisionUnpackerAthena(StoreGateSvc* sg, const std::string& key);
00033 virtual ~DecisionUnpackerAthena();
00034 virtual StatusCode unpackDecision(std::map<std::string, const LVL1CTP::Lvl1Item*>&,
00035 std::map<CTPID, LVL1CTP::Lvl1Item*>&,
00036 std::map<std::string, const HLT::Chain*>&,
00037 std::map<CHAIN_COUNTER, HLT::Chain*>&,
00038 std::map<std::string, const HLT::Chain*>&,
00039 std::map<CHAIN_COUNTER, HLT::Chain*>&,
00040 char&,
00041 bool
00042 );
00043 virtual StatusCode unpackNavigation(HLT::TrigNavStructure*);
00044 virtual bool assert_handle();
00045 virtual void validate_handle();
00046 virtual void invalidate_handle();
00047 private:
00048 DecisionObjectHandleAthena* m_handle;
00049 StatusCode unpackItems(const LVL1CTP::Lvl1Result& result,
00050 std::map<CTPID, LVL1CTP::Lvl1Item*>&,
00051 std::map<std::string, const LVL1CTP::Lvl1Item*>&);
00052 StatusCode unpackChains(const std::vector<uint32_t>& serialized_chains,
00053 std::map<unsigned, HLT::Chain*>& cache,
00054 std::map<std::string, const HLT::Chain*>& output);
00055
00056 };
00057
00058
00059 }
00060
00061 #endif