BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
TreeEmcCalibDataCnv.cxx
Go to the documentation of this file.
2#include "CalibData/Emc/EmcCalibData.h"
3#include "CalibDataSvc/IInstrumentName.h"
4#include "CalibMySQLCnvSvc/TreeAddress.h"
5#include "GaudiKernel/MsgStream.h"
6#include "TBuffer.h"
7#include "TDirectory.h"
8#include "TFile.h"
9#include "TObject.h"
10#include "TTree.h"
11
12#include "GaudiKernel/DataObject.h"
13#include "GaudiKernel/GenericAddress.h"
14#include "GaudiKernel/IAddressCreator.h"
15#include "GaudiKernel/IConversionSvc.h"
16#include "GaudiKernel/IDataProviderSvc.h"
17#include "GaudiKernel/IOpaqueAddress.h"
18
19#include "CalibDataSvc/ICalibMetaCnvSvc.h"
20#include "CalibDataSvc/ICalibTreeSvc.h" //maybe
21
22// Temporary. Hope to find a better way to do this
23#include "CalibData/CalibModel.h"
24using namespace CalibData;
25// static CnvFactory<TreeEmcCalibDataCnv> EmcCal_factory;
26// const ICnvFactory& TreeEmcCalibDataCnvFactory = EmcCal_factory;
27
30
31const CLID& TreeEmcCalibDataCnv::objType() const { return CLID_Calib_EmcCal; }
32
34
35StatusCode TreeEmcCalibDataCnv::i_createObj( IOpaqueAddress* addr, DataObject*& refpObject ) {
36
37 MsgStream log( msgSvc(), "TreeEmcCalibDataCnv" );
38 log << MSG::DEBUG << "SetProperty" << endmsg;
39 // gROOT->Reset();
40 // gDirectory = gROOT;
41 // TFile("temp.root");
42 TreeAddress* add = dynamic_cast<TreeAddress*>( addr );
43 DatabaseRecord* records = add->pp();
44 TBufferFile* buf1 = new TBufferFile( TBuffer::kRead );
45 buf1->SetBuffer( ( *records )["DigiCalibConst"], 512000, kFALSE );
46
47 std::cout << " SftVer is " << ( *records )["SftVer"];
48 std::cout << " CalVerSft is " << ( *records )["CalParVer"];
49 std::cout << " File name is " << ( *records )["FileName"] << std::endl;
50
51 TTree* Digitree = new TTree();
52
53 Digitree->Streamer( *buf1 );
54
55 Digitree->Print();
56
58 // Read in our object
59 int i;
60 int nentries;
61
62 // read DigiCalibConst ------------------------------------------------------------
63 double emcdata;
64 // Digitree -> SetBranchAddress("DigiCalibConst", &emcdata);
65 // Digitree -> SetBranchAddress("DigiCalibConst", &emcdata);
66 // nentries = Digitree-> GetEntries();
67 // std::cout<<"nentries=="<<nentries<<std::endl;
68
69 double EmcCalibConst[6240];
70 int EmcIxtalNumber[6240];
71 vector<double> DigiCalibConst;
72 vector<int> IxtalNumber;
73 Digitree->SetBranchAddress( "DigiCalibConst", EmcCalibConst );
74 Digitree->SetBranchAddress( "IxtalNumber", EmcIxtalNumber );
75 Digitree->GetEntry( 0 );
76 for ( i = 0; i < 6240; i++ )
77 {
78 DigiCalibConst.push_back( EmcCalibConst[i] );
79 IxtalNumber.push_back( EmcIxtalNumber[i] );
80 }
81 tmpObject->setDigiCalibConst( &DigiCalibConst );
82 tmpObject->setIxtalNumber( &IxtalNumber );
83 refpObject = tmpObject;
84 // temp->Close();
85 delete Digitree;
86 return StatusCode::SUCCESS;
87}
Int_t nentries
IMessageSvc * msgSvc()
void setIxtalNumber(const vector< int > *IxtalNumber)
void setDigiCalibConst(const vector< double > *DigiCalibConst)
TreeCalBaseCnv(ISvcLocator *svc, const CLID &clid)
TreeEmcCalibDataCnv(ISvcLocator *svc)
virtual StatusCode i_createObj(IOpaqueAddress *address, DataObject *&refpObject)
const CLID & objType() const
static const CLID & classID()