00001
00002 #ifndef RootCalBaseCnv_h
00003 #define RootCalBaseCnv_h
00004
00013 #include "GaudiKernel/Converter.h"
00014 #include "GaudiKernel/CnvFactory.h"
00015 #include <string>
00016
00017 #include "CalibDataSvc/ICalibRootSvc.h"
00018 #include "TObject.h"
00019
00020 class ISvcLocator;
00021 class GenericAddress;
00022 class ICalibRootSvc;
00023 class ICalibMetaCnvSvc;
00024 class IInstrumentName;
00025 class ITime;
00026
00027 class TFile;
00028 class TTree;
00029 class TDirectory;
00030 class TObject;
00031
00032 namespace CalibData {
00033 class CalibTime;
00034 class CalibBase;
00035 class CalibBase1;
00036 class DacCol;
00037 }
00038
00039 class RootCalBaseCnv : public Converter {
00040
00041
00042 public:
00043
00044 virtual ~RootCalBaseCnv();
00045
00046
00047 virtual StatusCode initialize();
00048 virtual StatusCode finalize();
00049
00055 virtual StatusCode createObj(IOpaqueAddress* addr,
00056 DataObject*& refpObject);
00057
00058 ICalibRootSvc* getCalibRootSvc() {
00059 return m_rootSvc;
00060 }
00061
00062 static const unsigned char storageType() {return CALIBROOT_StorageType;}
00063
00069 RootCalBaseCnv(ISvcLocator* svc, const CLID& clid);
00070
00071
00072
00082 virtual StatusCode createRoot(const std::string& fname,
00083 CalibData::CalibBase1* pTDSObj);
00084
00088 virtual StatusCode readRootObj(const std::string& treename,
00089 const std::string& branch, TObject*& pCalib,
00090 unsigned index=0);
00091
00092 virtual StatusCode readRootObj(TTree* tree,
00093 const std::string& branch, TObject*& pCalib,
00094 unsigned index=0);
00095
00096 protected:
00110 virtual StatusCode internalCreateObj (const std::string& fname,
00111
00112 DataObject*& refpObject,
00113 IOpaqueAddress* address);
00114
00126 virtual StatusCode i_createObj (const std::string& fname,
00127 DataObject*& refpObject);
00128
00130 virtual StatusCode i_processObj(DataObject* pObject,
00131 IOpaqueAddress* address);
00132
00144 virtual StatusCode fillRoot(CalibData::CalibBase* pTDSObj,
00145 TObject* pRootObj);
00146
00147
00157 virtual StatusCode openWrite(const std::string& fname);
00158
00166 StatusCode closeWrite();
00167
00168
00176
00177
00178 StatusCode openRead(const std::string& fname);
00179
00181 StatusCode closeRead();
00182
00186 void setBaseInfo(CalibData::CalibBase1* pObj);
00187
00188
00189
00190
00192
00193 ICalibRootSvc* m_rootSvc;
00194 ICalibMetaCnvSvc* m_metaSvc;
00195 IInstrumentName* m_instrSvc;
00196
00197 int m_serNo;
00198 ITime* m_vstart;
00199 ITime* m_vend;
00200 int m_runfrm;
00201 int m_runto;
00202
00203
00204 TFile* m_outFile;
00205 TTree* m_ttree;
00206
00207 TFile* m_inFile;
00208
00209 TDirectory* m_saveDir;
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219 private:
00220
00221 bool doClean();
00222
00223 };
00224
00225 #endif