BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EstTofCaliSvc/test/convert2root.cxx
Go to the documentation of this file.
1//=====================================================
2// this script is used to convert result in text file//
3// to root files. it is based on files named that start
4// by "calib_barrel" .it means thest result from barrel. //
5//=====================================================
6#include "TFile.h"
7#include "TTree.h"
8#include <assert.h>
9#include <fstream>
10#include <iostream>
11using namespace std;
13 // this method so bothered
14
15 TTree* t0 = new TTree( "EsTimeOffset", "EsTimeOffset" );
16 double offset[2] = { 0. };
17 ;
18 char estbrname[20];
19 char estptname[20];
20 for ( int i = 0; i < 2; i++ )
21 {
22 sprintf( estbrname, "Offset%d", i );
23 sprintf( estptname, "Offset%d/D", i );
24 t0->Branch( estbrname, &offset[i], estptname );
25 }
26
27 ifstream inf0;
28 ifstream inf01;
29 inf0.open( "calib_EsTimeOffset.txt", ios::in );
30 inf01.open( "EsTimeOffset.txt", ios::in );
31 if ( inf0.good() && inf01.good() )
32 {
33 try
34 {
35 inf0 >> offset[0];
36 inf01 >> offset[1];
37 t0->Fill();
38 } catch ( ... )
39 { return false; }
40 }
41 else
42 {
43 std::cerr << "file: calib_estimeOffset.txt or est_estimeOffset can't be found!"
44 << std::endl;
45 }
46 inf0.close();
47 inf01.close();
48
49 TTree* t = new TTree( "BarTofPar", "barrel parameters" );
50 // create a full tree;
51 double p[20] = { 0. };
52 ;
53 char brname[20]; // branch name
54 char ptname[20]; // pattern name
55 for ( int i = 0; i < 20; i++ )
56 {
57 sprintf( brname, "P%d", i );
58 sprintf( ptname, "p%d/D", i );
59 t->Branch( brname, &p[i], ptname );
60 }
61 double w[4];
62 for ( int i = 0; i < 4; i++ )
63 {
64 sprintf( brname, "W%d", i );
65 sprintf( ptname, "w%d/D", i );
66 t->Branch( brname, &w[i], ptname );
67 }
68 double Atten[8] = { 0. };
69 for ( int i = 0; i < 8; i++ )
70 {
71 sprintf( brname, "Atten%d", i );
72 sprintf( ptname, "Atten%d/D", i );
73 t->Branch( brname, &Atten[i], ptname );
74 }
75 double Speed[2] = { 0. }, Q0[1] = { 0. };
76 t->Branch( "Speed0", &Speed[0], "Speed0/D" );
77 t->Branch( "Speed1", &Speed[1], "Speed1/D" );
78 t->Branch( "Q0", Q0, "Q0[1]/D" );
79 double fitfun[20] = { 0. };
80 ;
81 char fbrname1[5]; // branch name
82 char fptname1[5]; // pattern name
83 char fbrname2[5]; // branch name
84 char fptname2[5]; // pattern name
85 char fbrname3[10]; // branch name
86 char fptname3[10]; // pattern name
87 for ( int i = 0; i < 5; i++ )
88 {
89 sprintf( fbrname1, "FLeft%d", i );
90 sprintf( fptname1, "fleft%d/D", i );
91 t->Branch( fbrname1, &fitfun[i], fptname1 );
92 sprintf( fbrname2, "FRight%d", i );
93 sprintf( fptname2, "fright%d/D", i );
94 t->Branch( fbrname2, &fitfun[5 + i], fptname2 );
95 }
96 for ( int i = 0; i < 10; i++ )
97 {
98 sprintf( fbrname3, "FCounter%d", i );
99 sprintf( fptname3, "fcounter%d/D", i );
100 t->Branch( fbrname3, &fitfun[10 + i], fptname3 );
101 }
102 const int N = 10;
103 ifstream inf[N];
104 bool is_open[N] = { false };
105 const char* filelist[N] = { "calib_barrel_left.txt", "calib_barrel_right.txt",
106 "calib_barrel_w.txt", "calib_barrel_atten.txt",
107 "calib_barrel_veff.txt", "calib_barrel_sigma.txt",
108 "calib_barrel_left1.txt", "calib_barrel_right1.txt",
109 "calib_barrel_common.txt", "calib_barrel_q0.txt" };
110 for ( int m = 0; m < N; m++ )
111 {
112 inf[m].open( filelist[m], ios::in );
113 if ( inf[m].good() ) is_open[m] = true;
114 else std::cerr << "file: " << filelist[N] << " can't be found!" << std::endl;
115 }
116 try
117 {
118 for ( int k = 0; k < 176; k++ )
119 {
120 //------------set p-------------------------
121 if ( is_open[0] && is_open[1] )
122 {
123 for ( int j = 0; j < 7; j++ )
124 {
125 inf[0] >> p[j];
126 // cout<<p[j]<<' ';
127 }
128 for ( int l = 10; l < 17; l++ ) inf[1] >> p[l];
129 }
130 //--------------w pars---------------------
131 if ( is_open[2] )
132 {
133 for ( int j = 0; j < 4; j++ ) inf[2] >> w[j];
134 }
135 //-----------atten lenght------------------
136 if ( is_open[3] )
137 {
138 for ( int j = 0; j < 2; j++ ) { inf[3] >> Atten[j]; }
139 Atten[0] = 1. / Atten[0];
140 }
141 //-------------speed-----------------------
142 if ( is_open[4] )
143 {
144 for ( int j = 0; j < 2; j++ ) { inf[4] >> Speed[j]; }
145 Speed[0] = 1. / Speed[0];
146 }
147 if ( is_open[5] )
148 {
149 for ( int j = 0; j < 4; j++ ) { inf[5] >> fitfun[j]; }
150 for ( int j = 5; j < 9; j++ ) { inf[5] >> fitfun[j]; }
151 for ( int j = 10; j < 13; j++ ) { inf[5] >> fitfun[j]; }
152 }
153 //--------------Q0-----------------
154 if ( is_open[9] )
155 {
156 for ( int j = 2; j < 5; j++ ) { inf[9] >> Atten[j]; }
157 }
158 //-------------Q0----------------------------
159 // for(int j=0;j<1;j++)
160 // inf[5]>>Q0[j];
161 //-------------fill-----------------------
162 t->Fill();
163 }
164 } catch ( ... )
165 { return false; }
166
167 TTree* t1 = new TTree( "BarTofParInner", "barrel inner layer parameters" );
168 // create a full tree;
169 double p1[20] = { 0. };
170 ;
171 char brname1[20]; // branch name
172 char ptname1[20]; // pattern name
173 for ( int i = 0; i < 20; i++ )
174 {
175 sprintf( brname1, "P%d", i );
176 sprintf( ptname1, "p%d/D", i );
177 t1->Branch( brname1, &p1[i], ptname1 );
178 }
179 try
180 {
181 for ( int k = 0; k < 88; k++ )
182 {
183 //------------set p-------------------------
184 if ( is_open[6] && is_open[7] )
185 {
186 for ( int j = 0; j < 7; j++ )
187 {
188 inf[6] >> p1[j];
189 // cout<<p[j]<<' ';
190 }
191 for ( int l = 10; l < 17; l++ ) inf[7] >> p1[l];
192 }
193 t1->Fill();
194 }
195 } catch ( ... )
196 { return false; }
197
198 TTree* t2 = new TTree( "BarTofParCommon", "common part of barrel" );
199 double t0Offset[2] = { 0. }, sigmaCorr[8] = { 0. };
200 for ( int i = 0; i < 2; i++ )
201 {
202 sprintf( brname, "t0offset%d", i );
203 sprintf( ptname, "t0offset%d/D", i );
204 t2->Branch( brname, &t0Offset[i], ptname );
205 }
206 for ( int i = 0; i < 8; i++ )
207 {
208 sprintf( brname, "sigmaCorr%d", i );
209 sprintf( ptname, "sigmaCorr%d/D", i );
210 t2->Branch( brname, &sigmaCorr[i], ptname );
211 }
212 try
213 {
214 if ( is_open[8] ) { inf[8] >> sigmaCorr[0] >> sigmaCorr[1] >> t0Offset[0] >> t0Offset[1]; }
215 t2->Fill();
216 } catch ( ... )
217 { return false; }
218 for ( int m = 0; m < N; m++ ) inf[m].close();
219 //-------------------------------------------
220 TFile f( "BarTofPar.root", "RECREATE" );
221 t0->Write();
222 t->Write();
223 t1->Write();
224 t2->Write();
225 f.Close();
226 delete t0;
227 delete t;
228 delete t1;
229 delete t2;
230 t0 = NULL;
231 t = NULL;
232 t1 = NULL;
233 t2 = NULL;
234 return true;
235}
236//=====================================================
237// this script is used to convert result in text file//
238// to root files. it is based on files named that start
239// by "calib_endcap_" .it means thest result from endcap. //
240//=====================================================
242 // this method so bothered
243
244 TTree* t0 = new TTree( "EsTimeOffset", "EsTimeOffset" );
245 double offset[2] = { 0. };
246 char estbrname[20];
247 char estptname[20];
248 for ( int i = 0; i < 2; i++ )
249 {
250 sprintf( estbrname, "Offset%d", i );
251 sprintf( estptname, "Offset%d/D", i );
252 t0->Branch( estbrname, &offset[i], estptname );
253 }
254
255 ifstream inf0;
256 ifstream inf01;
257 inf0.open( "calib_estimeOffset.txt", ios::in );
258 inf01.open( "est_estimeOffset.txt", ios::in );
259 if ( inf0.good() && inf01.good() )
260 {
261 try
262 {
263 inf0 >> offset[0];
264 inf01 >> offset[1];
265 t0->Fill();
266 } catch ( ... )
267 { return false; }
268 }
269 else
270 {
271 std::cerr << "file: calib_estimeOffset.txt or est_estimeOffset can't be found!"
272 << std::endl;
273 }
274 inf0.close();
275 inf01.close();
276
277 TTree* t = new TTree( "EndTofPar", "endcap parameters" );
278 // create a full tree;
279 double p[8] = { 0. };
280 ;
281 char brname[8]; // branch name
282 char ptname[8]; // pattern name
283 for ( int i = 0; i < 8; i++ )
284 {
285 sprintf( brname, "P%d", i );
286 sprintf( ptname, "p%d/D", i );
287 t->Branch( brname, &p[i], ptname );
288 }
289 double Atten[5] = { 0. }, Speed[3] = { 0. }, Q0[1] = { 0. };
290 t->Branch( "Atten0", &Atten[0], "Atten0/D" );
291 t->Branch( "Atten1", &Atten[1], "Atten1/D" );
292 t->Branch( "Atten2", &Atten[2], "Atten2/D" );
293 t->Branch( "Atten3", &Atten[3], "Atten3/D" );
294 t->Branch( "Atten4", &Atten[4], "Atten4/D" );
295 t->Branch( "Speed0", &Speed[0], "Speed0/D" );
296 t->Branch( "Speed1", &Speed[1], "Speed1/D" );
297 t->Branch( "Speed2", &Speed[2], "Speed2/D" );
298 t->Branch( "Q0", Q0, "Q0[1]/D" );
299 const int N = 3;
300 ifstream inf[N];
301 bool is_open[N] = { false };
302 const char* filelist[N] = { "calib_endcap_left.txt", "calib_endcap_atten.txt",
303 "calib_endcap_veff.txt" };
304 for ( int m = 0; m < N; m++ )
305 {
306 inf[m].open( filelist[m], ios::in );
307 if ( inf[m].good() ) is_open[m] = true;
308 else { std::cerr << "File: " << filelist[m] << " can't be opened" << std::endl; }
309 }
310 try
311 {
312 for ( int k = 0; k < 96; k++ )
313 {
314 //------------set p-------------------------
315 if ( is_open[0] && is_open[1] )
316 {
317 for ( int j = 0; j < 5; j++ )
318 {
319 inf[0] >> p[j];
320 // cout<<p[j]<<' ';
321 }
322 }
323 //-----------atten lenght------------------
324 if ( is_open[1] )
325 {
326 for ( int j = 0; j < 3; j++ ) { inf[1] >> Atten[j]; }
327 Atten[0] = 1. / Atten[0];
328 }
329 //-------------speed-----------------------
330 if ( is_open[2] )
331 {
332 for ( int j = 0; j < 3; j++ ) { inf[2] >> Speed[j]; }
333 Speed[0] = 1. / Speed[0];
334 }
335 //-------------Q0----------------------------
336 // for(int j=0;j<1;j++)
337 // inf[5]>>Q0[j];
338 //-------------fill-----------------------
339 t->Fill();
340 }
341 } catch ( ... )
342 { return false; }
343 for ( int m = 0; m < N; m++ ) inf[m].close();
344 //-------------------------------------------
345 TFile f( "EndTofPar.root", "RECREATE" );
346 t0->Write();
347 t->Write();
348 f.Close();
349 delete t0;
350 delete t;
351 t = NULL;
352 t = NULL;
353 return true;
354}
355bool join() {
356
357 TTree* t0 = new TTree( "EsTimeOffset", "EsTimeOffset" );
358 double offset[2] = { 0. };
359 char estbrname[20];
360 char estptname[20];
361 for ( int i = 0; i < 2; i++ )
362 {
363 sprintf( estbrname, "Offset%d", i );
364 sprintf( estptname, "Offset%d/D", i );
365 t0->Branch( estbrname, &offset[i], estptname );
366 }
367
368 ifstream inf0;
369 ifstream inf01;
370 inf0.open( "calib_estimeOffset.txt", ios::in );
371 inf01.open( "est_estimeOffset.txt", ios::in );
372 if ( inf0.good() && inf01.good() )
373 {
374 try
375 {
376 inf0 >> offset[0];
377 inf01 >> offset[1];
378 t0->Fill();
379 } catch ( ... )
380 { return false; }
381 }
382 else
383 {
384 std::cerr << "file: calib_estimeOffset.txt or est_estimeOffset can't be found!"
385 << std::endl;
386 }
387 inf0.close();
388 inf01.close();
389
390 TFile f( "EndTofPar.root" );
391 TTree* t = (TTree*)f.Get( "EndTofPar" );
392 if ( 0 == t )
393 {
394 std::cerr << " can't get tree :EndTofPar in file EndTofPar.root" << std::endl;
395 return false;
396 }
397 TFile f1( "BarTofPar.root" );
398 TTree* t1 = (TTree*)f1.Get( "BarTofPar" );
399 if ( 0 == t1 )
400 {
401 std::cerr << " can't get tree :BarTofPar in file BarTofPar.root" << std::endl;
402 return false;
403 }
404 TTree* t2 = (TTree*)f1.Get( "BarTofParInner" );
405 if ( 0 == t2 )
406 {
407 std::cerr << " can't get tree :BarTofPar Inner Layer in file BarTofPar.root" << std::endl;
408 return false;
409 }
410 TTree* t3 = (TTree*)f1.Get( "BarTofParCommon" );
411 if ( 0 == t3 )
412 {
413 std::cerr << " can't get tree :BarTofPar Common in file BarTofPar.root" << std::endl;
414 return false;
415 }
416 TFile fnew( "TofCalConst.root", "RECREATE" );
417 t0->Write();
418 t->Write();
419 t1->Write();
420 t2->Write();
421 t3->Write();
422 f.Close();
423 f1.Close();
424 fnew.Close();
425 t0 = NULL;
426 t = NULL;
427 t1 = NULL;
428 t2 = NULL;
429 t3 = NULL;
430 return true;
431}
432int main() {
435 join();
436}
double p1[4]
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)
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
TFile * f1
double w
int t()
Definition t.c:1