BOSS 7.0.4
BESIII Offline Software System
Loading...
Searching...
No Matches
TreeTofCalibDataCnv.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<TreeTofCalibDataCnv> TofCal_factory;
27//const ICnvFactory& TreeTofCalibDataCnvFactory = TofCal_factory;
28
29const unsigned int nBarAtten = 8;
30const unsigned int nBarSpeed = 2;
31const unsigned int nBarPar = 10;
32const unsigned int nBarParOff = 20;
33const unsigned int nBarSigma = 5;
34const unsigned int nBarSigCnt = 10;
35
36const unsigned int nBarSigCor = 8;
37const unsigned int nBarOffset = 2;
38
39const unsigned int nEndAtten = 5;
40const unsigned int nEndSpeed = 4;
41const unsigned int nEndPar = 8;
42const unsigned int nEndSigma = 5;
43
44const unsigned int nEtfSpeed = 4;
45const unsigned int nEtfPar = 20;
46const unsigned int nEtfBunch = 4;
47
50
51 }
52
53
54const CLID& TreeTofCalibDataCnv::objType() const {
55 return CLID_Calib_TofCal;
56}
57
59 return CLID_Calib_TofCal;
60}
61
62StatusCode TreeTofCalibDataCnv::i_createObj(IOpaqueAddress* addr,
63 DataObject*& refpObject) {
64
65 MsgStream log(msgSvc(), "TreeTofCalibDataCnv");
66 log<<MSG::DEBUG<<"SetProperty"<<endreq;
67
68 TreeAddress* add = dynamic_cast<TreeAddress*>(addr);
69
70 DatabaseRecord *records=add->pp();
71
72 TBufferFile *buf1 = new TBufferFile(TBuffer::kRead);
73 TBufferFile *buf2 = new TBufferFile(TBuffer::kRead);
74 TBufferFile *buf3 = new TBufferFile(TBuffer::kRead);
75 TBufferFile *buf4 = new TBufferFile(TBuffer::kRead);
76 TBufferFile *buf5 = 0;
77 TBufferFile *buf6 = 0;
78
79 buf1->SetBuffer((*records)["BarTofPar"],512000,kFALSE);
80 buf2->SetBuffer((*records)["EndTofPar"],512000,kFALSE);
81 buf3->SetBuffer((*records)["TofConPar"],512000,kFALSE);
82 buf4->SetBuffer((*records)["BarTof"], 512000,kFALSE);
83 if( (*records)["EtfTofPar"]!=0 ) {
84 buf5 = new TBufferFile(TBuffer::kRead);
85 buf5->SetBuffer((*records)["EtfTofPar"],512000,kFALSE);
86 }
87 if( (*records)["EtfTofBunch"]!=0 ) {
88 buf6 = new TBufferFile(TBuffer::kRead);
89 buf6->SetBuffer((*records)["EtfTofBunch"],512000,kFALSE);
90 }
91
92 std::cout<<" SftVer is "<<(*records)["SftVer"];
93 std::cout<<" CalVerSft is "<<(*records)["CalParVer"];
94 std::cout<<" File name is "<<(*records)["FileName"]<<std::endl;
95
96 TTree *btoftree = new TTree();
97 TTree *etoftree = new TTree();
98 TTree *etftree = new TTree();
99 TTree *etfbunchtree = new TTree();
100 TTree *btofcommontree = new TTree();
101 TTree *CalibInfo = new TTree();
102
103 btoftree->Streamer(*buf1);
104 etoftree->Streamer(*buf2);
105 btofcommontree->Streamer(*buf3);
106 CalibInfo->Streamer(*buf4);
107 if( buf5 ) {
108 etftree->Streamer(*buf5);
109 }
110 if( buf6 ) {
111 etfbunchtree->Streamer(*buf6);
112 }
113
120
121 std::vector<CalibData::bTofCalibBase> tmpbTof;
122 std::vector<CalibData::eTofCalibBase> tmpeTof;
123 std::vector<CalibData::etfCalibBase> tmpetf;
124 std::vector<CalibData::etfBunchCalibBase> tmpetfBunch;
125 std::vector<CalibData::bTofCommonCalibBase> tmpbTofCommon;
126 std::vector<CalibData::tofCalibInfoBase> tofinfoCol;
127
128 // Read in the object
129 int cnt;
130 // read btoftree ------------------------------------------------------------
131 double cnvBarAtten[nBarAtten];
132 double cnvBarSpeed[nBarSpeed];
133 double cnvBarPar1[nBarPar];
134 double cnvBarPar2[nBarPar];
135 double cnvBarParOff1_bunch0[nBarParOff];
136 double cnvBarParOff2_bunch0[nBarParOff];
137 double cnvBarParOff1_bunch1[nBarParOff];
138 double cnvBarParOff2_bunch1[nBarParOff];
139 double cnvBarParOff1_bunch2[nBarParOff];
140 double cnvBarParOff2_bunch2[nBarParOff];
141 double cnvBarParOff1_bunch3[nBarParOff];
142 double cnvBarParOff2_bunch3[nBarParOff];
143 double cnvFLeft[nBarSigma];
144 double cnvFRight[nBarSigma];
145 double cnvFCount[nBarSigCnt];
146
147 char brname[10];
148 for( unsigned int i=0; i<nBarAtten; i++ ) {
149 sprintf( brname, "Atten%i", i );
150 btoftree -> SetBranchAddress( brname, &cnvBarAtten[i] );
151 }
152 for( unsigned int i=0; i<nBarSpeed; i++ ) {
153 sprintf( brname, "Speed%i", i );
154 btoftree -> SetBranchAddress( brname, &cnvBarSpeed[i] );
155 }
156 for( unsigned int i=0; i<nBarPar; i++ ) {
157 sprintf( brname, "P%i", i );
158 btoftree -> SetBranchAddress( brname, &cnvBarPar1[i] );
159 }
160 for( unsigned int i=0; i<nBarPar; i++ ) {
161 sprintf( brname, "P%i", i+nBarPar );
162 btoftree -> SetBranchAddress( brname, &cnvBarPar2[i] );
163 }
164 for( unsigned int i=0; i<nBarParOff; i++ ) {
165 sprintf( brname, "Bunch0_Poff%i", i );
166 btoftree -> SetBranchAddress( brname, &cnvBarParOff1_bunch0[i] );
167 }
168 for( unsigned int i=0; i<nBarParOff; i++ ) {
169 sprintf( brname, "Bunch0_Poff%i", i+nBarParOff );
170 btoftree -> SetBranchAddress( brname, &cnvBarParOff2_bunch0[i] );
171 }
172 for( unsigned int i=0; i<nBarParOff; i++ ) {
173 sprintf( brname, "Bunch1_Poff%i", i );
174 btoftree -> SetBranchAddress( brname, &cnvBarParOff1_bunch1[i] );
175 }
176 for( unsigned int i=0; i<nBarParOff; i++ ) {
177 sprintf( brname, "Bunch1_Poff%i", i+nBarParOff );
178 btoftree -> SetBranchAddress( brname, &cnvBarParOff2_bunch1[i] );
179 }
180 for( unsigned int i=0; i<nBarParOff; i++ ) {
181 sprintf( brname, "Bunch2_Poff%i", i );
182 btoftree -> SetBranchAddress( brname, &cnvBarParOff1_bunch2[i] );
183 }
184 for( unsigned int i=0; i<nBarParOff; i++ ) {
185 sprintf( brname, "Bunch2_Poff%i", i+nBarParOff );
186 btoftree -> SetBranchAddress( brname, &cnvBarParOff2_bunch2[i] );
187 }
188 for( unsigned int i=0; i<nBarParOff; i++ ) {
189 sprintf( brname, "Bunch3_Poff%i", i );
190 btoftree -> SetBranchAddress( brname, &cnvBarParOff1_bunch3[i] );
191 }
192 for( unsigned int i=0; i<nBarParOff; i++ ) {
193 sprintf( brname, "Bunch3_Poff%i", i+nBarParOff );
194 btoftree -> SetBranchAddress( brname, &cnvBarParOff2_bunch3[i] );
195 }
196 for( unsigned int i=0; i<nBarSigma; i++ ) {
197 sprintf( brname, "FLeft%i", i );
198 btoftree -> SetBranchAddress( brname, &cnvFLeft[i] );
199 }
200 for( unsigned int i=0; i<nBarSigma; i++ ) {
201 sprintf( brname, "FRight%i", i );
202 btoftree -> SetBranchAddress( brname, &cnvFRight[i] );
203 }
204 for( unsigned int i=0; i<nBarSigCnt; i++ ) {
205 sprintf( brname, "FCounter%i", i );
206 btoftree -> SetBranchAddress( brname, &cnvFCount[i] );
207 }
208
209 for(cnt=0; cnt<176; cnt++){
210 btoftree -> GetEntry(cnt);
211 bTof.setAtten( cnvBarAtten );
212 bTof.setSpeed( cnvBarSpeed );
213 bTof.setP1( cnvBarPar1 );
214 bTof.setP2( cnvBarPar2 );
215 bTof.setPoff1_bunch0( cnvBarParOff1_bunch0 );
216 bTof.setPoff2_bunch0( cnvBarParOff2_bunch0 );
217 bTof.setPoff1_bunch1( cnvBarParOff1_bunch1 );
218 bTof.setPoff2_bunch1( cnvBarParOff2_bunch1 );
219 bTof.setPoff1_bunch2( cnvBarParOff1_bunch2 );
220 bTof.setPoff2_bunch2( cnvBarParOff2_bunch2 );
221 bTof.setPoff1_bunch3( cnvBarParOff1_bunch3 );
222 bTof.setPoff2_bunch3( cnvBarParOff2_bunch3 );
223 bTof.setFPleft( cnvFLeft );
224 bTof.setFPright( cnvFRight );
225 bTof.setFPcounter( cnvFCount );
226 tmpbTof.push_back(bTof);
227 }
228
229 //read etoftree
230 double cnvEndAtten[nEndAtten];
231 double cnvEndSpeed[nEndSpeed];
232 double cnvEndPar[nEndPar];
233 double cnvEndFPar[nEndSigma];
234
235 char ecname[10];
236 for( unsigned int i=0; i<nEndAtten; i++ ) {
237 sprintf( ecname, "Atten%i", i );
238 etoftree -> SetBranchAddress( ecname, &cnvEndAtten[i] );
239 }
240 for( unsigned int i=0; i<nEndSpeed; i++ ) {
241 sprintf( ecname, "Speed%i", i );
242 etoftree -> SetBranchAddress( ecname, &cnvEndSpeed[i] );
243 }
244 for( unsigned int i=0; i<nEndPar; i++ ) {
245 sprintf( ecname, "P%i", i );
246 etoftree -> SetBranchAddress( ecname, &cnvEndPar[i] );
247 }
248 for( unsigned int i=0; i<nEndSigma; i++ ) {
249 sprintf( ecname, "FCounter%i", i );
250 etoftree -> SetBranchAddress( ecname, &cnvEndFPar[i] );
251 }
252
253 for(cnt=0; cnt<96; cnt++){
254 etoftree -> GetEntry(cnt);
255 eTof.setAtten( cnvEndAtten );
256 eTof.setSpeed( cnvEndSpeed );
257 eTof.setP( cnvEndPar );
258 eTof.setFP( cnvEndFPar );
259 tmpeTof.push_back(eTof);
260 }
261
262
263 //read etftree
264 if( etftree->GetEntries() != 0 ) {
265
266 double cnvEtfSpeed[nEtfSpeed];
267 double cnvEtfPar[nEtfPar];
268 double cnvEtfPar1[nEtfPar];
269 double cnvEtfPar2[nEtfPar];
270
271 char etfname[10];
272 for( unsigned int i=0; i<nEtfSpeed; i++ ) {
273 sprintf( etfname, "Speed%i", i );
274 etftree -> SetBranchAddress( etfname, &cnvEtfSpeed[i] );
275 }
276 for( unsigned int i=0; i<nEtfPar; i++ ) {
277 sprintf( etfname, "P%i", i );
278 etftree -> SetBranchAddress( etfname, &cnvEtfPar[i] );
279 sprintf( etfname, "P%i", nEtfPar+i );
280 etftree -> SetBranchAddress( etfname, &cnvEtfPar1[i] );
281 sprintf( etfname, "P%i", 2*nEtfPar+i );
282 etftree -> SetBranchAddress( etfname, &cnvEtfPar2[i] );
283 }
284
285 for(cnt=0; cnt<(72*12); cnt++){
286 etftree -> GetEntry(cnt);
287 etf.setSpeed( cnvEtfSpeed );
288 etf.setP( cnvEtfPar );
289 etf.setP1( cnvEtfPar1 );
290 etf.setP2( cnvEtfPar2 );
291 tmpetf.push_back(etf);
292 }
293
294 }
295
296
297 //read etftree
298 if( etfbunchtree->GetEntries() != 0 ) {
299 double cnvEtfBunchP[nEtfBunch];
300 char etfbunchname[10];
301 for( unsigned int i=0; i<nEtfBunch; i++ ) {
302 sprintf( etfbunchname, "pbunch%i", i );
303 etfbunchtree -> SetBranchAddress( etfbunchname, &cnvEtfBunchP[i] );
304 }
305 int entries= etfbunchtree->GetEntries();
306 for(cnt=0;cnt<entries;cnt++){
307 etfbunchtree -> GetEntry(cnt);
308 etfBunch.setPBunch( cnvEtfBunchP );
309 tmpetfBunch.push_back( etfBunch );
310 }
311 }
312
313
314 //read bTofCommonCalibBase
315 double cnvBarSigCor[nBarSigCor];
316 double cnvBarOffset[nBarOffset];
317 for( unsigned int i=0; i<nBarSigCor; i++ ) {
318 sprintf( brname, "sigmaCorr%i", i );
319 btofcommontree-> SetBranchAddress( brname, &cnvBarSigCor[i] );
320 }
321 for( unsigned int i=0; i<nBarOffset; i++ ) {
322 sprintf( brname, "t0offset%i", i );
323 btofcommontree-> SetBranchAddress( brname, &cnvBarOffset[i]);
324 }
325
326 int entries = btofcommontree->GetEntries();
327 for(cnt=0;cnt<entries;cnt++){
328 btofcommontree->GetEntry(cnt);
329 bTofCommon.setSigmaCorr( cnvBarSigCor );
330 bTofCommon.setOffset( cnvBarOffset );
331 tmpbTofCommon.push_back(bTofCommon);
332 }
333
334
335 int m_run1, m_run2, m_version;
336 int m_qCorr, m_qElec, m_misLable;
337 int m_tofidEast[5], m_tofidWest[5], m_tofidEndcap[5];
338
339 CalibInfo->SetBranchAddress("Run1",&m_run1);
340 CalibInfo->SetBranchAddress("Run2",&m_run2);
341 CalibInfo->SetBranchAddress("Version",&m_version);
342 CalibInfo->SetBranchAddress("ebrId0",&m_tofidEast[0]);
343 CalibInfo->SetBranchAddress("ebrId1",&m_tofidEast[1]);
344 CalibInfo->SetBranchAddress("ebrId2",&m_tofidEast[2]);
345 CalibInfo->SetBranchAddress("ebrId3",&m_tofidEast[3]);
346 CalibInfo->SetBranchAddress("ebrId4",&m_tofidEast[4]);
347 CalibInfo->SetBranchAddress("ecId0",&m_tofidEndcap[0]);
348 CalibInfo->SetBranchAddress("ecId1",&m_tofidEndcap[1]);
349 CalibInfo->SetBranchAddress("ecId2",&m_tofidEndcap[2]);
350 CalibInfo->SetBranchAddress("ecId3",&m_tofidEndcap[3]);
351 CalibInfo->SetBranchAddress("ecId4",&m_tofidEndcap[4]);
352 CalibInfo->SetBranchAddress("wbrId0",&m_tofidWest[0]);
353 CalibInfo->SetBranchAddress("wbrId1",&m_tofidWest[1]);
354 CalibInfo->SetBranchAddress("wbrId2",&m_tofidWest[2]);
355 CalibInfo->SetBranchAddress("wbrId3",&m_tofidWest[3]);
356 CalibInfo->SetBranchAddress("wbrId4",&m_tofidWest[4]);
357 CalibInfo->SetBranchAddress("misLable",&m_misLable);
358 CalibInfo->SetBranchAddress("qCorr",&m_qCorr);
359 CalibInfo->SetBranchAddress("qElec",&m_qElec);
360
361 entries= CalibInfo->GetEntries();
362 for(cnt=0;cnt<entries;cnt++){
363 CalibInfo->GetEntry(cnt);
364 tofinfo.setRunBegin(m_run1);
365 tofinfo.setRunEnd(m_run2);
366 tofinfo.setVersion(m_version);
367 tofinfo.setQCorr(m_qCorr);
368 tofinfo.setQElec(m_qElec);
369 tofinfo.setMisLable(m_misLable);
370 tofinfo.setBrEast(m_tofidEast);
371 tofinfo.setBrWest(m_tofidWest);
372 tofinfo.setEndcap(m_tofidEndcap);
373 tofinfoCol.push_back(tofinfo);
374 }
375
376 CalibData::TofCalibData *tmpObject = new CalibData::TofCalibData(&tmpbTof,&tmpbTofCommon,&tmpeTof,&tmpetf,&tmpetfBunch,&tofinfoCol);
377
378 refpObject=tmpObject;
379 delete btoftree;
380 delete etoftree;
381 delete etftree;
382 delete etfbunchtree;
383 delete btofcommontree;
384 delete CalibInfo;
385
386 return StatusCode::SUCCESS;
387}
388
data SetBranchAddress("time",&time)
data GetEntry(0)
const unsigned int nBarOffset
const unsigned int nBarParOff
const unsigned int nEndPar
const unsigned int nEtfPar
const unsigned int nBarPar
const unsigned int nBarSigma
const unsigned int nEndSigma
const unsigned int nBarSigCor
const unsigned int nEndSpeed
const unsigned int nEtfSpeed
const unsigned int nEtfBunch
const unsigned int nBarSpeed
const unsigned int nEndAtten
const unsigned int nBarAtten
const unsigned int nBarSigCnt
const unsigned int nBarSigma
const unsigned int nEndSigma
const unsigned int nBarSigCor
const unsigned int nEndSpeed
const unsigned int nBarOffset
const unsigned int nBarParOff
const unsigned int nEtfSpeed
const unsigned int nEtfBunch
const unsigned int nEndPar
const unsigned int nEtfPar
const unsigned int nBarSpeed
const unsigned int nEndAtten
const unsigned int nBarAtten
const unsigned int nBarSigCnt
const unsigned int nBarPar
void setP2(const double *TofP2)
void setPoff1_bunch3(const double *TofPoff1_bunch3)
void setFPleft(const double *FP1)
void setPoff2_bunch1(const double *TofPoff2_bunch1)
void setSpeed(const double *Speed)
void setAtten(const double *Atten)
void setPoff1_bunch0(const double *TofPoff1_bunch0)
void setPoff2_bunch2(const double *TofPoff2_bunch2)
void setPoff1_bunch1(const double *TofPoff1_bunch1)
void setFPcounter(const double *FP3)
void setPoff1_bunch2(const double *TofPoff1_bunch2)
void setPoff2_bunch3(const double *TofPoff2_bunch3)
void setFPright(const double *FP2)
void setPoff2_bunch0(const double *TofPoff2_bunch0)
void setP1(const double *TofP1)
void setSigmaCorr(const double *sigmaCorr)
void setOffset(const double *offset)
void setAtten(const double *Atten)
void setP(const double *TofP)
void setFP(const double *FP)
void setSpeed(const double *Speed)
void setPBunch(const double *etfBunchP)
void setSpeed(const double *Speed)
Definition: etfCalibBase.cxx:6
void setP(const double *etfP)
void setP1(const double *etfP1)
void setP2(const double *etfP2)
void setBrWest(const int *tofidWest)
void setBrEast(const int *tofidEast)
void setEndcap(const int *tofidEndcap)
const CLID & objType() const
virtual StatusCode i_createObj(IOpaqueAddress *address, DataObject *&refpObject)
static const CLID & classID()
TreeTofCalibDataCnv(ISvcLocator *svc)
sprintf(cut,"kal_costheta0_em>-0.93&&kal_costheta0_em<0.93&&kal_pxy0_em>=0.05+%d*0.1&&kal_pxy0_em<0.15+%d*0.1&&NGch>=2", j, j)