00001 // Dear emacs, this is -*- c++ -*- 00002 // $Id: TAuxBranchManager.h 595278 2014-05-03 09:31:05Z krasznaa $ 00003 #ifndef XAODROOTACCESS_TOOLS_TAUXBRANCHMANAGER_H 00004 #define XAODROOTACCESS_TOOLS_TAUXBRANCHMANAGER_H 00005 00006 // EDM include(s): 00007 #include "AthContainersInterfaces/AuxTypes.h" 00008 00009 // Local include(s): 00010 #include "TVirtualManager.h" 00011 00012 // Forward declaration(s): 00013 namespace SG { 00014 class IAuxTypeVector; 00015 } 00016 00017 namespace xAOD { 00018 00019 // Forward declaration(s): 00020 class THolder; 00021 00032 class TAuxBranchManager : public TVirtualManager { 00033 00034 public: 00036 typedef SG::auxid_t auxid_t; 00037 00039 TAuxBranchManager( auxid_t auxid, 00040 ::TBranch* br = 0, THolder* holder = 0 ); 00042 TAuxBranchManager( const TAuxBranchManager& parent ); 00044 ~TAuxBranchManager(); 00045 00047 TAuxBranchManager& operator=( const TAuxBranchManager& rhs ); 00048 00050 ::TBranch* branch() const; 00052 ::TBranch** branchPtr(); 00054 const THolder* holder() const; 00056 THolder* holder(); 00057 00059 virtual ::Int_t getEntry( ::Long64_t entry, ::Int_t getall = 0 ); 00060 00062 virtual void* object() const; 00064 virtual void setObject( void* obj ); 00065 00067 virtual ::Bool_t isSet( ::Bool_t forceSet = kTRUE ) const; 00069 virtual void reset(); 00070 00071 private: 00073 ::TBranch* m_branch; 00075 THolder* m_holder; 00077 ::Long64_t m_entry; 00079 mutable ::Bool_t m_isSet; 00080 00082 auxid_t m_auxId; 00084 mutable SG::IAuxTypeVector* m_vector; 00085 00086 }; // class TAuxBranchManager 00087 00088 } // namespace xAOD 00089 00090 #endif // XAODROOTACCESS_TOOLS_TAUXBRANCHMANAGER_H