00001 #ifndef TrigConf_HLTUtils 00002 #define TrigConf_HLTUtils 00003 00004 #include <string> 00005 #include <inttypes.h> 00006 #include <set> 00007 #include <vector> 00008 00009 namespace TrigConf { 00010 00011 class HLTChainList; 00012 class HLTChain; 00013 class HLTSequenceList; 00014 class HLTSequence; 00015 class HLTPrescale; 00016 class HLTFrame; 00017 00018 typedef uint32_t HLTHash; 00019 00020 class HLTUtils { 00021 00022 public: 00023 00025 static HLTHash string2hash( const std::string&, const std::string& category="TE" ); 00026 static const std::string hash2string( HLTHash, const std::string& category="TE" ); 00027 00028 00029 00030 00031 00041 static std::vector<unsigned int> allTEsProducedInLevel( const std::string& level, 00042 const HLTChainList& chainList, const HLTSequenceList& sequenceList); 00043 00048 static std::vector<std::string> explicitChainTEs(const HLTChain& ch); 00049 00050 00051 00055 static std::vector<std::string> implicitChainTEs(const HLTChain& ch, const HLTSequenceList& sequenceList); 00056 00057 00058 00062 static std::set<std::string> inputTEs( const std::set<std::string>& TEs, 00063 const TrigConf::HLTSequenceList& sequenceList); 00064 00065 00066 static std::set<std::string> allTEsProducedInL2Chain( const TrigConf::HLTChain& chain, 00067 const TrigConf::HLTSequenceList& sequenceList); 00068 00069 static std::set<std::string> allTEsProducedInEFChain( const TrigConf::HLTChain& chain, 00070 const TrigConf::HLTSequenceList& sequenceList, 00071 const std::set<std::string>& l2tes ); 00072 00073 static std::set<std::string> allTEsProducedInL2( const TrigConf::HLTFrame& frame); 00074 00075 static std::set<std::string> allTEsProducedInEF( const TrigConf::HLTFrame& frame, 00076 std::set<std::string>* l2tes=0 ); 00077 00078 static std::set<std::string> allTEsProduced( const TrigConf::HLTFrame& frame ); 00079 00080 static std::string ChainCondenseDisplay( const HLTChain& chain, 00081 const HLTFrame& frame ); 00082 00083 static std::vector< std::string > splitGroups(const std::string& s); 00084 00085 static HLTSequence* buildSequence(const std::string& desc); 00086 00087 static void mergeHLTChainList( TrigConf::HLTFrame& frame ); 00088 00089 static void mergeHLTChainList2( TrigConf::HLTFrame& frame ); 00090 00091 static void mergeL2EFPrescales( TrigConf::HLTChain* hltchain, 00092 const TrigConf::HLTPrescale& l2ps, 00093 const TrigConf::HLTPrescale& efps); 00094 00095 }; 00096 00097 } 00098 00099 #endif