00001 #include "GaudiKernel/MsgStream.h" 00002 #include "TreeMdcAlignDataCnv.h" 00003 #include "CalibData/Mdc/MdcAlignData.h" 00004 #include "CalibDataSvc/IInstrumentName.h" 00005 #include "CalibMySQLCnv/TreeAddress.h" 00006 #include "TFile.h" 00007 #include "TTree.h" 00008 #include "TDirectory.h" 00009 #include "TObject.h" 00010 #include "TBuffer.h" 00011 00012 #include "GaudiKernel/CnvFactory.h" 00013 #include "GaudiKernel/IOpaqueAddress.h" 00014 #include "GaudiKernel/DataObject.h" 00015 #include "GaudiKernel/IAddressCreator.h" 00016 #include "GaudiKernel/IDataProviderSvc.h" 00017 #include "GaudiKernel/IConversionSvc.h" 00018 #include "GaudiKernel/GenericAddress.h" 00019 00020 #include "CalibDataSvc/ICalibTreeSvc.h" //maybe 00021 #include "CalibDataSvc/ICalibMetaCnvSvc.h" 00022 00023 // Temporary. Hope to find a better way to do this 00024 #include "CalibData/CalibModel.h" 00025 using namespace CalibData; 00026 //static CnvFactory<TreeMdcAlignDataCnv> DedxCal_factory; 00027 //const ICnvFactory& TreeMdcAlignDataCnvFactory = DedxCal_factory; 00028 00029 00030 00031 TreeMdcAlignDataCnv::TreeMdcAlignDataCnv( ISvcLocator* svc) : 00032 TreeCalBaseCnv(svc, CLID_Calib_MdcAlign) { 00033 00034 } 00035 00036 00037 const CLID& TreeMdcAlignDataCnv::objType() const { 00038 return CLID_Calib_MdcAlign; 00039 } 00040 00041 const CLID& TreeMdcAlignDataCnv::classID() { 00042 return CLID_Calib_MdcAlign; 00043 } 00044 00045 StatusCode TreeMdcAlignDataCnv::i_createObj(IOpaqueAddress* addr, 00046 DataObject*& refpObject) { 00047 00048 MsgStream log(msgSvc(), "TreeMdcAlignDataCnv"); 00049 log<<MSG::DEBUG<<"SetProperty"<<endreq; 00050 00051 CalibData::MdcAlignData *tmpObject = new CalibData::MdcAlignData; 00052 TreeAddress* add = dynamic_cast<TreeAddress*>(addr); 00053 00054 DatabaseRecord *records=add->pp(); 00055 std::cout<<" SftVer is "<<(*records)["SftVer"]; 00056 std::cout<<" CalVerSft is "<<(*records)["MdcAlignVer"]; 00057 std::cout<<" File name is "<<(*records)["AlignEPFileName"]<<std::endl; 00058 00059 /*char mem[1024000]; 00060 char mem1[1024000]; 00061 char mem2[1024000]; 00062 00063 memcpy(mem,par0,treesize[0]); 00064 memcpy(mem1,par0+1024000,treesize[1]); 00065 memcpy(mem2,par0+1024000*2,treesize[2]);*/ 00066 // std::cout<<"mem="<<mem<<" mem1:"<<mem1<<"mem2:"<<mem2<<std::endl; 00067 tmpObject->readPar((*records)["AlignEndPlate"],(*records)["WirePos"],(*records)["WireTension"]); 00068 refpObject=tmpObject; 00069 return StatusCode::SUCCESS; 00070 00071 00072 } 00073