00001 #include "GaudiKernel/MsgStream.h"
00002 #include "TreeEmcCalibDataCnv.h"
00003 #include "CalibData/Emc/EmcCalibData.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"
00021 #include "CalibDataSvc/ICalibMetaCnvSvc.h"
00022
00023
00024 #include "CalibData/CalibModel.h"
00025 using namespace CalibData;
00026
00027
00028
00029
00030
00031 TreeEmcCalibDataCnv::TreeEmcCalibDataCnv( ISvcLocator* svc) :
00032 TreeCalBaseCnv(svc, CLID_Calib_EmcCal) {
00033
00034 }
00035
00036
00037 const CLID& TreeEmcCalibDataCnv::objType() const {
00038 return CLID_Calib_EmcCal;
00039 }
00040
00041 const CLID& TreeEmcCalibDataCnv::classID() {
00042 return CLID_Calib_EmcCal;
00043 }
00044
00045 StatusCode TreeEmcCalibDataCnv::i_createObj(IOpaqueAddress* addr,
00046 DataObject*& refpObject) {
00047
00048 MsgStream log(msgSvc(), "TreeEmcCalibDataCnv");
00049 log<<MSG::DEBUG<<"SetProperty"<<endreq;
00050
00051
00052
00053 TreeAddress* add = dynamic_cast<TreeAddress*>(addr);
00054 DatabaseRecord *records=add->pp();
00055 TBufferFile *buf1 = new TBufferFile(TBuffer::kRead);
00056 buf1->SetBuffer((*records)["DigiCalibConst"],512000,kFALSE);
00057
00058 std::cout<<" SftVer is "<<(*records)["SftVer"];
00059 std::cout<<" CalVerSft is "<<(*records)["CalParVer"];
00060 std::cout<<" File name is "<<(*records)["FileName"]<<std::endl;
00061
00062 TTree* Digitree= new TTree();
00063
00064 Digitree->Streamer(*buf1);
00065
00066 Digitree->Print();
00067
00068 CalibData::EmcCalibData *tmpObject = new CalibData::EmcCalibData ;
00069
00070 int i;
00071 int nentries;
00072
00073
00074 double emcdata;
00075
00076
00077
00078
00079
00080
00081 double EmcCalibConst[6240];
00082 int EmcIxtalNumber[6240];
00083 vector<double> DigiCalibConst;
00084 vector<int> IxtalNumber;
00085 Digitree->SetBranchAddress("DigiCalibConst", EmcCalibConst);
00086 Digitree -> SetBranchAddress("IxtalNumber", EmcIxtalNumber);
00087 Digitree -> GetEntry(0);
00088 for(i=0; i<6240; i++){
00089 DigiCalibConst.push_back(EmcCalibConst[i]);
00090 IxtalNumber.push_back(EmcIxtalNumber[i]);
00091 }
00092 tmpObject -> setDigiCalibConst(&DigiCalibConst);
00093 tmpObject -> setIxtalNumber(&IxtalNumber);
00094 refpObject=tmpObject;
00095
00096 delete Digitree;
00097 return StatusCode::SUCCESS;
00098
00099
00100 }
00101