00001
00002 #ifndef CalibRootCnvSvc_h
00003
00004 #define CalibRootCnvSvc_h
00005
00006 #include <string>
00007
00008 #include "CalibDataSvc/ICalibRootSvc.h"
00009 #include "GaudiKernel/ConversionSvc.h"
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00023 template <class TYPE> class SvcFactory;
00024
00025 class IDetDataSvc;
00026 class IOpaqueAddress;
00027
00028 namespace CalibData {
00029 class CalibBase;
00030 class CalibBase1;
00031 }
00032
00034
00041
00042 class CalibRootCnvSvc : public ConversionSvc, virtual public ICalibRootSvc
00043 {
00045 friend class SvcFactory<CalibRootCnvSvc>;
00046
00047 protected:
00048
00049 CalibRootCnvSvc(const std::string& name, ISvcLocator* svc );
00050 virtual ~CalibRootCnvSvc() {}
00051
00052 public:
00053
00054
00055
00056 virtual StatusCode queryInterface( const InterfaceID& riid,
00057 void** ppvInterface);
00058
00059
00060 virtual StatusCode writeToRoot(const std::string& outputFile,
00061 const std::string& tdsPath);
00062 virtual StatusCode writeToRoot(const std::string& outputFile,
00063 CalibData::CalibBase1 *calib);
00064 virtual StatusCode updateObj ( IOpaqueAddress* pAddress,
00065 DataObject* pObject );
00066
00067 public:
00068
00069
00070
00071 virtual StatusCode initialize();
00072 virtual StatusCode finalize();
00073
00085
00086 virtual StatusCode createAddress(long svc_type,
00087 const CLID& clid,
00088 const std::string* par,
00089 const unsigned long* ip,
00090 IOpaqueAddress*& refpAddress);
00091 std::string getrootfile()
00092 { return m_rootfile[0];}
00093 StatusCode decodeDescription(const std::string& oldpath,
00094 std::string& realpath );
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 private:
00106
00107
00108
00110 IConversionSvc* m_detPersSvc;
00111
00113 IDataProviderSvc* m_detDataSvc;
00114 std::string m_rootfile[10];
00115 };
00116 #endif