00001 #ifndef ROOTHISTCNV_RNTUPLECNV_H
00002 #define ROOTHISTCNV_RNTUPLECNV_H 1
00003
00004
00005
00006 #include "RConverter.h"
00007 #include <map>
00008 #include <string>
00009
00010
00011 class ISvcLocator;
00012 class NTUPLEINFO;
00013 class INTupleItem;
00014 class INTupleSvc;
00015 class INTuple;
00016
00017
00018 class TTree;
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 namespace RootHistCnv {
00032
00033 class RNTupleCnv : public RConverter {
00034
00035 public:
00037 virtual StatusCode initialize();
00039 virtual StatusCode finalize();
00041 virtual StatusCode createObj(IOpaqueAddress* pAddress, DataObject*& refpObject);
00043 virtual StatusCode updateObj( IOpaqueAddress* pAddress, DataObject* refpObject );
00045 virtual StatusCode createRep( DataObject* pObject, IOpaqueAddress*& refpAddress );
00047 virtual StatusCode updateRep( IOpaqueAddress* pAddress, DataObject* pObject );
00048
00049 protected:
00051 RNTupleCnv( ISvcLocator* svc, const CLID& clid );
00053 virtual ~RNTupleCnv();
00055 virtual StatusCode load( long id, INTuple*& refpObject ) = 0;
00057 virtual StatusCode book( long idh, const std::string& loc, INTuple* pObject) = 0;
00059 virtual StatusCode writeData(long idh, INTuple* pObject) = 0;
00061 virtual StatusCode readData(long idh, INTuple* pObject, long ievt) = 0;
00062
00063 protected:
00065 INTupleSvc* m_ntupleSvc;
00066
00067 virtual std::string rootVarType(int);
00068
00069 };
00070
00072 template<class TYP>
00073 INTupleItem* createNTupleItem(NTUPLEINFO& tags, long i, INTuple* tuple, TYP minimum, TYP maximum, long& size);
00074
00075 bool parseName(std::string full, std::string &blk, std::string &var);
00076
00077 }
00078
00079
00080 #endif // RootHistCnv_RNTupleCnv_H