Go to the documentation of this file.00001 #ifndef CondFormats_L1TObjects_L1TriggerKey_h
00002 #define CondFormats_L1TObjects_L1TriggerKey_h
00003
00004 #include <string>
00005 #include <map>
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 class L1TriggerKey
00022 {
00023 public:
00024 typedef std::map<std::string, std::string> RecordToKey;
00025
00026 enum L1Subsystems
00027 {
00028 kCSCTF,
00029 kDTTF,
00030 kRPC,
00031 kGMT,
00032 kRCT,
00033 kGCT,
00034 kGT,
00035 kTSP0,
00036 kNumberSubsystems
00037 } ;
00038
00039
00040 static std::string kNullKey ;
00041
00042 static std::string kEmptyKey ;
00043
00044
00045 L1TriggerKey ()
00046 {
00047 for( int i = 0 ; i < kNumberSubsystems ; ++i )
00048 {
00049 m_subsystemKeys[ i ] = kNullKey ;
00050 }
00051 }
00052
00053
00054 void add (const std::string & record, const std::string & type, const std::string & key)
00055 { m_recordToKey.insert (std::make_pair (record + "@" + type, key.empty() ? kNullKey : key)); }
00056
00057 void add (const RecordToKey& map)
00058 {
00059 for( RecordToKey::const_iterator itr = map.begin() ;
00060 itr != map.end() ;
00061 ++itr )
00062 {
00063 m_recordToKey.insert( std::make_pair( itr->first, itr->second.empty() ? kNullKey : itr->second ) ) ;
00064 }
00065 }
00066
00067 void setTSCKey( const std::string& tscKey )
00068 { m_tscKey = tscKey ; }
00069
00070 void setSubsystemKey( L1Subsystems subsystem, const std::string& key )
00071 { m_subsystemKeys[ subsystem ] = key.empty() ? kNullKey : key ; }
00072
00073
00074
00075
00076 std::string get (const std::string & record, const std::string & type) const
00077 {
00078 RecordToKey::const_iterator it = m_recordToKey.find (record + "@" + type);
00079 if (it == m_recordToKey.end ())
00080 return std::string ();
00081 else
00082 return it->second == kNullKey ? kEmptyKey : it->second ;
00083 }
00084
00085 const std::string& tscKey() const
00086 { return m_tscKey ; }
00087
00088 const std::string& subsystemKey( L1Subsystems subsystem ) const
00089 { return m_subsystemKeys[ subsystem ] == kNullKey ? kEmptyKey : m_subsystemKeys[ subsystem ] ; }
00090
00091
00092 const RecordToKey& recordToKeyMap() const
00093 { return m_recordToKey ; }
00094
00095 protected:
00096
00097
00098
00099
00100
00101
00102
00103
00104 RecordToKey m_recordToKey;
00105
00106
00107
00108 std::string m_tscKey ;
00109 std::string m_subsystemKeys[ kNumberSubsystems ] ;
00110 };
00111
00112 #endif