00001
00002
00003 #ifndef XAODEVENTFORMAT_VERSIONS_EVENTFORMAT_V1_H
00004 #define XAODEVENTFORMAT_VERSIONS_EVENTFORMAT_V1_H
00005
00006
00007 extern "C" {
00008 # include <stdint.h>
00009 }
00010
00011
00012 #include <vector>
00013 #include <string>
00014 #include <map>
00015 #include <iosfwd>
00016
00017
00018 #include "xAODEventFormat/EventFormatElement.h"
00019
00020 namespace xAOD {
00021
00033 class EventFormat_v1 {
00034
00036 typedef std::map< std::string, EventFormatElement > KeyedData_t;
00038 typedef std::map< uint32_t, EventFormatElement > HashedData_t;
00039
00040 public:
00042 EventFormat_v1();
00043
00045 void add( const EventFormatElement& element,
00046 bool updatePersistent = true );
00047
00049 bool exists( const std::string& key ) const;
00051 bool exists( uint32_t hash ) const;
00052
00054 const EventFormatElement* get( const std::string& key, bool quiet = false ) const;
00056 const EventFormatElement* get( uint32_t hash, bool quiet = false ) const;
00057
00059 void clear();
00060
00062 typedef KeyedData_t::const_iterator const_iterator;
00064 const_iterator begin() const;
00066 const_iterator end() const;
00067
00069 void toTransient();
00070
00072 void dump() const;
00073
00074 private:
00076 KeyedData_t m_keyedData;
00078 HashedData_t m_hashedData;
00079
00081 std::vector< std::string > m_branchNames;
00083 std::vector< std::string > m_classNames;
00085 std::vector< std::string > m_parentNames;
00087 std::vector< uint32_t > m_branchHashes;
00088
00089 };
00090
00092 std::ostream& operator<<( std::ostream& out,
00093 const EventFormat_v1& format );
00094
00095 }
00096
00097 #endif // XAODEVENTFORMAT_VERSIONS_EVENTFORMAT_V1_H