00001
00002
00003 #ifndef ASGTOOLS_SGTEVENTMETA_H
00004 #define ASGTOOLS_SGTEVENTMETA_H
00005
00006
00007 #include "AsgTools/AsgToolsConf.h"
00008 #include "AsgTools/StatusCode.h"
00009
00010
00011 #ifdef ASGTOOL_ATHENA
00012 # error "This header should not be used in Athena"
00013 #endif // ASGTOOL_ATHENA
00014
00015
00016 namespace xAOD {
00017 class TEvent;
00018 }
00019
00020 namespace asg {
00021
00040 class SgTEventMeta {
00041
00042 public:
00044 enum StoreType {
00045 InputStore = 0,
00046 OutputStore = 1
00047 };
00048
00050 SgTEventMeta( StoreType type, xAOD::TEvent* event = 0 );
00051
00054
00056 template< typename T >
00057 bool contains( const std::string& name );
00059 template< typename T >
00060 bool transientContains( const std::string& name ) const;
00061
00063 template< typename T >
00064 StatusCode retrieve( T*& obj, const std::string& name );
00066 template< typename T >
00067 StatusCode retrieve( const T*& obj, const std::string& name );
00068
00070 template< typename T >
00071 StatusCode record( T* obj, const std::string& name );
00072
00074
00075 private:
00077 StatusCode initialize() const;
00078
00080 StoreType m_type;
00082 mutable xAOD::TEvent* m_event;
00083
00084 };
00085
00086 }
00087
00088
00089 #include "AsgTools/SgTEventMeta.icc"
00090
00091 #endif // ASGTOOLS_SGTEVENTMETA_H