![]() |
|
|
Generated: 18 Jul 2008 |
00001 #ifndef ROOTHISTCNV_RNTUPLECNV_H 00002 #define ROOTHISTCNV_RNTUPLECNV_H 1 00003 00004 // Include files 00005 #include "RConverter.h" 00006 00007 // Forward declarations 00008 class ISvcLocator; 00009 class NTUPLEINFO; 00010 class INTupleItem; 00011 class INTupleSvc; 00012 class INTuple; 00013 class TTree; 00014 00015 namespace RootHistCnv { 00016 00024 class RNTupleCnv : public RConverter { 00025 public: 00027 virtual StatusCode initialize(); 00029 virtual StatusCode finalize(); 00030 00032 virtual StatusCode createObj(IOpaqueAddress* pAddr, DataObject*& refpObj); 00034 virtual StatusCode updateObj( IOpaqueAddress* pAddr, DataObject* refpObj); 00036 virtual StatusCode createRep( DataObject* pObj, IOpaqueAddress*& refpAddr); 00038 virtual StatusCode updateRep( IOpaqueAddress* pAddr, DataObject* pObj); 00039 00040 protected: 00042 RNTupleCnv( ISvcLocator* svc, const CLID& clid ); 00043 00045 virtual ~RNTupleCnv(); 00046 00048 virtual StatusCode load(TTree* tree, INTuple*& refpObj ) = 0; 00050 virtual StatusCode book(const std::string& desc, INTuple* pObj, TTree*& tree) = 0; 00052 virtual StatusCode writeData(TTree* rtree, INTuple* pObj) = 0; 00054 virtual StatusCode readData(TTree* rtree, INTuple* pObj, long ievt) = 0; 00055 00056 protected: 00058 INTupleSvc* m_ntupleSvc; 00059 00060 virtual std::string rootVarType(int); 00061 }; 00062 00064 template<class TYP> 00065 INTupleItem* createNTupleItem(NTUPLEINFO& tags, long i, INTuple* tuple, TYP minimum, TYP maximum, long& size); 00066 00067 template<class TYP> 00068 INTupleItem* createNTupleItem(std::string itemName, std::string blockName, 00069 std::string indexName, 00070 int indexRange, int arraySize, 00071 TYP minimum, TYP maximum, 00072 INTuple* tuple); 00073 00074 bool parseName(std::string full, std::string &blk, std::string &var); 00075 00076 } // namespace RootHistCnv 00077 00078 #endif // RootHistCnv_RNTupleCnv_H