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