00001
00002
00003 #ifndef ASGTOOLS_SGTEVENT_H
00004 #define ASGTOOLS_SGTEVENT_H
00005
00006
00007 #include <string>
00008
00009
00010 #include "AsgTools/AsgToolsConf.h"
00011 #include "AsgTools/StatusCode.h"
00012
00013
00014 #ifndef ASGTOOL_STANDALONE
00015 # error( "This header should only be used for standalone ASG" )
00016 #endif
00017
00018
00019 namespace xAOD {
00020 class TEvent;
00021 class TStore;
00022 }
00023
00024 namespace asg {
00025
00041 class SgTEvent {
00042
00043 public:
00045 SgTEvent( xAOD::TEvent* pevm = 0, xAOD::TStore* ptds = 0 );
00046
00048 xAOD::TEvent* event() const;
00049
00051 xAOD::TStore* tds() const;
00052
00055
00057 template< typename T >
00058 bool contains( const std::string& name ) const;
00060 template< typename T >
00061 bool transientContains( const std::string& name ) const;
00062
00064 template< typename T >
00065 T* retrieve( const std::string& name ) const;
00066
00068 template< typename T >
00069 StatusCode retrieve( T*& pobj, const std::string& name );
00071 template< typename T >
00072 StatusCode retrieve( const T*& pobj, const std::string& name ) const;
00073
00075 template< typename T >
00076 StatusCode record( T* pobj, const std::string& cname );
00077
00079 template< typename T >
00080 StatusCode overwrite( T* pobj, const std::string& name,
00081 bool allowMods, bool resetOnly = true,
00082 bool noHist = false );
00083
00085
00086 private:
00088 StatusCode initialize() const;
00089
00091 mutable xAOD::TEvent* m_pevm;
00093 mutable xAOD::TStore* m_ptds;
00094
00095 };
00096
00097 }
00098
00099
00100 #include "AsgTools/SgTEvent.icc"
00101
00102 #endif // ASGTOOLS_SGTEVENT_H