CGEM BOSS 6.6.5.f
BESIII Offline Software System
Loading...
Searching...
No Matches
TreeEstTofCalibDataCnv.cxx
Go to the documentation of this file.
1#include "GaudiKernel/MsgStream.h"
3#include "CalibData/Tof/TofCalibData.h"
4#include "CalibDataSvc/IInstrumentName.h"
5#include "CalibMySQLCnv/TreeAddress.h"
6#include "TFile.h"
7#include "TTree.h"
8#include "TDirectory.h"
9#include "TObject.h"
10#include "TBuffer.h"
11
12#include "GaudiKernel/CnvFactory.h"
13#include "GaudiKernel/IOpaqueAddress.h"
14#include "GaudiKernel/DataObject.h"
15#include "GaudiKernel/IAddressCreator.h"
16#include "GaudiKernel/IDataProviderSvc.h"
17#include "GaudiKernel/IConversionSvc.h"
18#include "GaudiKernel/GenericAddress.h"
19
20#include "CalibDataSvc/ICalibTreeSvc.h" //maybe
21#include "CalibDataSvc/ICalibMetaCnvSvc.h"
22
23// Temporary. Hope to find a better way to do this
24#include "CalibData/CalibModel.h"
25using namespace CalibData;
26//static CnvFactory<TreeEstTofCalibDataCnv> TofCal_factory;
27//const ICnvFactory& TreeEstTofCalibDataCnvFactory = TofCal_factory;
28
29const unsigned int nBarPar = 10;
30const unsigned int nBarParOff = 20;
31const unsigned int nEndPar = 8;
32const unsigned int nBarOffset = 2;
33
36
37}
38
39
42}
43
46}
47
48StatusCode TreeEstTofCalibDataCnv::i_createObj(IOpaqueAddress* addr,
49 DataObject*& refpObject) {
50
51 MsgStream log(msgSvc(), "TreeEstTofCalibDataCnv");
52 log<<MSG::DEBUG<<"SetProperty"<<endreq;
53
54 TreeAddress* add = dynamic_cast<TreeAddress*>(addr);
55 DatabaseRecord *records=add->pp();
56
57 TBufferFile *buf1 = new TBufferFile(TBuffer::kRead);
58 TBufferFile *buf2 = new TBufferFile(TBuffer::kRead);
59 TBufferFile *buf3 = new TBufferFile(TBuffer::kRead);
60 TBufferFile *buf4 = new TBufferFile(TBuffer::kRead);
61
62 buf1->SetBuffer((*records)["BarTofPar"],512000,kFALSE);
63 buf2->SetBuffer((*records)["EndTofPar"],512000,kFALSE);
64 buf3->SetBuffer((*records)["TofConPar"],512000,kFALSE);
65 buf4->SetBuffer((*records)["BarTof"],512000,kFALSE);
66
67 std::cout<<" CalVerSft is "<<(*records)["CalParVer"];
68 std::cout<<" File name is "<<(*records)["FileName"]<<std::endl;
69
70 TTree *btoftree= new TTree();
71 TTree *etoftree= new TTree();
72 TTree *btofcommontree = new TTree();
73 TTree *CalibInfo = new TTree();
74
75 btoftree->Streamer(*buf1);
76 etoftree->Streamer(*buf2);
77 btofcommontree->Streamer(*buf3);
78 CalibInfo->Streamer(*buf4);
79
84
85 std::vector<CalibData::bTofCalibBase> tmpbTof;
86 std::vector<CalibData::eTofCalibBase> tmpeTof;
87 std::vector<CalibData::bTofCommonCalibBase> tmpbTofCommon;
88 std::vector<CalibData::tofCalibInfoBase> tofinfoCol;
89
90 // Read in the object
91 int cnt;
92 // read btoftree ------------------------------------------------------------
93 double cnvBarPar1[nBarPar];
94 double cnvBarPar2[nBarPar];
95 double cnvBarParOff1_bunch0[nBarParOff];
96 double cnvBarParOff2_bunch0[nBarParOff];
97 double cnvBarParOff1_bunch1[nBarParOff];
98 double cnvBarParOff2_bunch1[nBarParOff];
99 double cnvBarParOff1_bunch2[nBarParOff];
100 double cnvBarParOff2_bunch2[nBarParOff];
101 double cnvBarParOff1_bunch3[nBarParOff];
102 double cnvBarParOff2_bunch3[nBarParOff];
103
104 char brname[10];
105 for( unsigned int i=0; i<nBarPar; i++ ) {
106 sprintf( brname, "P%i", i );
107 btoftree -> SetBranchAddress( brname, &cnvBarPar1[i] );
108 }
109 for( unsigned int i=0; i<nBarPar; i++ ) {
110 sprintf( brname, "P%i", i+nBarPar );
111 btoftree -> SetBranchAddress( brname, &cnvBarPar2[i] );
112 }
113 for( unsigned int i=0; i<nBarParOff; i++ ) {
114 sprintf( brname, "Bunch0_Poff%i", i );
115 btoftree -> SetBranchAddress( brname, &cnvBarParOff1_bunch0[i] );
116 }
117 for( unsigned int i=0; i<nBarParOff; i++ ) {
118 sprintf( brname, "Bunch0_Poff%i", i+nBarParOff );
119 btoftree -> SetBranchAddress( brname, &cnvBarParOff2_bunch0[i] );
120 }
121 for( unsigned int i=0; i<nBarParOff; i++ ) {
122 sprintf( brname, "Bunch1_Poff%i", i );
123 btoftree -> SetBranchAddress( brname, &cnvBarParOff1_bunch1[i] );
124 }
125 for( unsigned int i=0; i<nBarParOff; i++ ) {
126 sprintf( brname, "Bunch1_Poff%i", i+nBarParOff );
127 btoftree -> SetBranchAddress( brname, &cnvBarParOff2_bunch1[i] );
128 }
129 for( unsigned int i=0; i<nBarParOff; i++ ) {
130 sprintf( brname, "Bunch2_Poff%i", i );
131 btoftree -> SetBranchAddress( brname, &cnvBarParOff1_bunch2[i] );
132 }
133 for( unsigned int i=0; i<nBarParOff; i++ ) {
134 sprintf( brname, "Bunch2_Poff%i", i+nBarParOff );
135 btoftree -> SetBranchAddress( brname, &cnvBarParOff2_bunch2[i] );
136 }
137 for( unsigned int i=0; i<nBarParOff; i++ ) {
138 sprintf( brname, "Bunch3_Poff%i", i );
139 btoftree -> SetBranchAddress( brname, &cnvBarParOff1_bunch3[i] );
140 }
141 for( unsigned int i=0; i<nBarParOff; i++ ) {
142 sprintf( brname, "Bunch3_Poff%i", i+nBarParOff );
143 btoftree -> SetBranchAddress( brname, &cnvBarParOff2_bunch3[i] );
144 }
145
146 for(cnt=0; cnt<176; cnt++){
147 btoftree -> GetEntry( cnt );
148 bTof.setP1( cnvBarPar1 );
149 bTof.setP2( cnvBarPar2 );
150 bTof.setPoff1_bunch0( cnvBarParOff1_bunch0 );
151 bTof.setPoff2_bunch0( cnvBarParOff2_bunch0 );
152 bTof.setPoff1_bunch1( cnvBarParOff1_bunch1 );
153 bTof.setPoff2_bunch1( cnvBarParOff2_bunch1 );
154 bTof.setPoff1_bunch2( cnvBarParOff1_bunch2 );
155 bTof.setPoff2_bunch2( cnvBarParOff2_bunch2 );
156 bTof.setPoff1_bunch3( cnvBarParOff1_bunch3 );
157 bTof.setPoff2_bunch3( cnvBarParOff2_bunch3 );
158 tmpbTof.push_back(bTof);
159 }
160
161 //read etoftree
162 double cnvEndPar[nEndPar];
163
164 char ecname[10];
165 for( unsigned int i=0; i<nEndPar; i++ ) {
166 sprintf( ecname, "P%i", i );
167 etoftree -> SetBranchAddress( ecname, &cnvEndPar[i] );
168 }
169
170 for( cnt=0; cnt<96; cnt++ ) {
171 etoftree -> GetEntry( cnt );
172 eTof.setP( cnvEndPar );
173 tmpeTof.push_back( eTof );
174 }
175
176 //read bTofCommonCalibBase
177 double cnvBarOffset[nBarOffset];
178 for( unsigned int i=0; i<nBarOffset; i++ ) {
179 sprintf( brname, "t0offset%i", i );
180 btofcommontree-> SetBranchAddress( brname, &cnvBarOffset[i]);
181 }
182
183 int entries = btofcommontree->GetEntries();
184 for(cnt=0;cnt<entries;cnt++){
185 btofcommontree->GetEntry(cnt);
186 bTofCommon.setOffset( cnvBarOffset );
187 tmpbTofCommon.push_back(bTofCommon);
188 }
189
190 CalibData::TofCalibData *tmpObject = new CalibData::TofCalibData(&tmpbTof,&tmpbTofCommon,&tmpeTof,&tofinfoCol);
191
192 refpObject=tmpObject;
193 delete btoftree;
194 delete etoftree;
195 delete btofcommontree;
196 delete CalibInfo;
197
198 return StatusCode::SUCCESS;
199}
200
data SetBranchAddress("time",&time)
data GetEntry(0)
const unsigned int nBarOffset
const unsigned int nBarParOff
const unsigned int nEndPar
const unsigned int nBarPar
const unsigned int nBarOffset
const unsigned int nBarParOff
const unsigned int nEndPar
const unsigned int nBarPar
void setP2(const double *TofP2)
void setPoff1_bunch3(const double *TofPoff1_bunch3)
void setPoff2_bunch1(const double *TofPoff2_bunch1)
void setPoff1_bunch0(const double *TofPoff1_bunch0)
void setPoff2_bunch2(const double *TofPoff2_bunch2)
void setPoff1_bunch1(const double *TofPoff1_bunch1)
void setPoff1_bunch2(const double *TofPoff1_bunch2)
void setPoff2_bunch3(const double *TofPoff2_bunch3)
void setPoff2_bunch0(const double *TofPoff2_bunch0)
void setP1(const double *TofP1)
void setOffset(const double *offset)
void setP(const double *TofP)
TreeEstTofCalibDataCnv(ISvcLocator *svc)
const CLID & objType() const
static const CLID & classID()
virtual StatusCode i_createObj(IOpaqueAddress *address, DataObject *&refpObject)