00001
00002
00003 #ifndef TRIGDECISIONTOOL_DECISIONUNPACKERSTANDALONE_H
00004 #define TRIGDECISIONTOOL_DECISIONUNPACKERSTANDALONE_H
00005
00006
00007 #include "AsgTools/AsgToolsConf.h"
00008 #include "AsgTools/AsgMessaging.h"
00009
00010
00011 #include "TrigConfHLTData/HLTChain.h"
00012 #include "TrigConfL1Data/CTPConfig.h"
00013
00014
00015 #include "TrigDecisionTool/IDecisionUnpacker.h"
00016 #include "TrigDecisionTool/Logger.h"
00017 #include "TrigDecisionTool/EventPtrDef.h"
00018
00019
00020 namespace HLT {
00021 class TrigNavStructure;
00022 }
00023
00024
00025 namespace TrigConf {
00026 class ITrigConfigTool;
00027 }
00028
00029 namespace Trig {
00030
00031
00032 class DecisionObjectHandleStandalone;
00033
00035 class DecisionUnpackerStandalone : public IDecisionUnpacker, public Logger {
00036
00037 public:
00039 DecisionUnpackerStandalone( EventPtr_t sg, const std::string& deckey,
00040 const std::string& navikey);
00042 virtual ~DecisionUnpackerStandalone();
00043
00044 DecisionUnpackerStandalone( const DecisionUnpackerStandalone& ) = delete;
00045 DecisionUnpackerStandalone& operator= ( const DecisionUnpackerStandalone& ) = delete;
00046
00048 virtual StatusCode
00049 unpackDecision( std::map< std::string,
00050 const LVL1CTP::Lvl1Item* >& itemsByName,
00051 std::map< CTPID, LVL1CTP::Lvl1Item* >& itemsCache,
00052 std::map< std::string,
00053 const HLT::Chain* >& l2chainsByName,
00054 std::map< CHAIN_COUNTER, HLT::Chain* >& l1chainsCache,
00055 std::map< std::string,
00056 const HLT::Chain* >& efchainsByName,
00057 std::map< CHAIN_COUNTER, HLT::Chain* >& efchainsCache,
00058 char& bgCode,
00059 bool unpackHLT );
00061
00062 virtual StatusCode unpackNavigation( HLT::TrigNavStructure* nav );
00063
00066
00067 virtual bool assert_handle();
00068 virtual void validate_handle();
00069 virtual void invalidate_handle();
00070
00072
00073 private:
00075 StatusCode unpackItems( std::map< CTPID, LVL1CTP::Lvl1Item* >& itemsCache,
00076 std::map< std::string,
00077 const LVL1CTP::Lvl1Item*>& itemsByName );
00079 StatusCode unpackChains( std::map< unsigned, HLT::Chain* >& cache,
00080 const std::vector< uint32_t >& raw,
00081 const std::vector< uint32_t >& passedThrough,
00082 const std::vector< uint32_t >& prescaled,
00083 const std::vector< uint32_t >& resurrected,
00084 std::map< std::string,
00085 const HLT::Chain* >& output );
00086
00088 DecisionObjectHandleStandalone* m_handle;
00089 };
00090
00091 }
00092
00093 #endif // TRIGDECISIONTOOL_DECISIONUNPACKERSTANDALONE_H