Go to the documentation of this file.00001 #ifndef DQMOFFLINE_TRIGGER_EGHLTTRIGCODES
00002 #define DQMOFFLINE_TRIGGER_EGHLTTRIGCODES
00003
00004
00005
00006
00007
00008
00009 #include <cstring>
00010 #include <string>
00011 #include <iostream>
00012 #include <bitset>
00013 #include <vector>
00014 #include <algorithm>
00015
00016
00017
00018
00019
00020 namespace egHLT {
00021 class TrigCodes {
00022
00023 public:
00024 static const int maxNrBits_=64;
00025 typedef std::bitset<maxNrBits_> TrigBitSet;
00026
00027 class TrigBitSetMap {
00028
00029 private:
00030
00031 std::vector<std::pair<std::string,TrigBitSet> > codeDefs_;
00032
00033 public:
00034 TrigBitSetMap(){}
00035 ~TrigBitSetMap(){}
00036
00037 public:
00038 TrigBitSet getCode(const char *descript)const;
00039 void getCodeName(TrigBitSet code,std::string& id)const;
00040
00041
00042 void setCode(const char *descript,TrigBitSet code);
00043 void setCode(const char *descript,int bitNr);
00044
00045
00046 static bool keyComp(const std::pair<std::string,TrigBitSet>& lhs,const std::pair<std::string,TrigBitSet>& rhs);
00047 void sort(){std::sort(codeDefs_.begin(),codeDefs_.end(),keyComp);}
00048 size_t size()const{return codeDefs_.size();}
00049 void printCodes();
00050 };
00051
00052
00053 private:
00054 static TrigBitSetMap trigBitSetMap_;
00055
00056 private:
00057 TrigCodes(){}
00058 ~TrigCodes(){}
00059
00060 public:
00061
00062
00063 static void setCodes(std::vector<std::string>& filterNames);
00064
00065
00066 static TrigBitSet getCode(const std::string& descript){return trigBitSetMap_.getCode(descript.c_str());}
00067 static void getCodeName(TrigBitSet code,std::string& id){return trigBitSetMap_.getCodeName(code,id);}
00068 static int maxNrBits(){return maxNrBits_;}
00069 static void printCodes(){return trigBitSetMap_.printCodes();}
00070
00071 };
00072 }
00073
00074 #endif