BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
TofCalibManager Class Reference

#include <TofCalibManager.h>

Public Member Functions

 ~TofCalibManager ()
TofDataSetdataSet ()
void addCalib (TofCalib *cal_item1, int isbarrel)
void addCalib (TofCalibFit *cal_item2, bool isbarrel)
void doCalibration ()
void fillTxt (string &dir)
void fillRoot (string &dir)

Static Public Member Functions

static TofCalibManagergetManager ()

Protected Member Functions

 TofCalibManager ()

Detailed Description

Definition at line 7 of file TofCalibManager.h.

Constructor & Destructor Documentation

◆ TofCalibManager()

TofCalibManager::TofCalibManager ( )
protected

Definition at line 11 of file TofCalibManager.cxx.

11 {
12 m_dataset = new TofDataSet;
13 return;
14}

Referenced by getManager().

◆ ~TofCalibManager()

TofCalibManager::~TofCalibManager ( )

Definition at line 16 of file TofCalibManager.cxx.

16 {
17 if ( !calib_barrel_item.empty() )
18 {
19 std::vector<TofCalib*>::iterator iter = calib_barrel_item.begin();
20 for ( ; iter != calib_barrel_item.end(); iter++ )
21 {
22 if ( ( *iter ) ) delete ( *iter );
23 }
24 calib_barrel_item.clear();
25 }
26 if ( !calib_endcap_item.empty() )
27 {
28 std::vector<TofCalib*>::iterator iter = calib_endcap_item.begin();
29 for ( ; iter != calib_endcap_item.end(); iter++ )
30 {
31 if ( ( *iter ) ) delete ( *iter );
32 }
33 calib_endcap_item.clear();
34 }
35 if ( !calib_etf_item.empty() )
36 {
37 std::vector<TofCalib*>::iterator iter = calib_etf_item.begin();
38 for ( ; iter != calib_etf_item.end(); iter++ )
39 {
40 if ( ( *iter ) ) delete ( *iter );
41 }
42 calib_etf_item.clear();
43 }
44 if ( !calibration_barrel_item.empty() )
45 {
46 std::vector<TofCalibFit*>::iterator iter = calibration_barrel_item.begin();
47 for ( ; iter != calibration_barrel_item.end(); iter++ )
48 {
49 if ( ( *iter ) ) delete ( *iter );
50 }
51 calibration_barrel_item.clear();
52 }
53 if ( !calibration_barrel_item2.empty() )
54 {
55 std::vector<TofCalibFit*>::iterator iter = calibration_barrel_item2.begin();
56 for ( ; iter != calibration_barrel_item2.end(); iter++ )
57 {
58 if ( ( *iter ) ) delete ( *iter );
59 }
60 calibration_barrel_item2.clear();
61 }
62 if ( !calibration_endcap_item.empty() )
63 {
64 std::vector<TofCalibFit*>::iterator iter = calibration_endcap_item.begin();
65 for ( ; iter != calibration_endcap_item.end(); iter++ )
66 {
67 if ( ( *iter ) ) delete ( *iter );
68 }
69 calibration_endcap_item.clear();
70 }
71
72 delete m_dataset;
73 return;
74}
EvtStreamInputIterator< typename Generator::result_type > iter(Generator gen, int N=0)

Member Function Documentation

◆ addCalib() [1/2]

void TofCalibManager::addCalib ( TofCalib * cal_item1,
int isbarrel )

Definition at line 76 of file TofCalibManager.cxx.

76 {
77 if ( isbarrel == 1 ) { calib_barrel_item.push_back( cal_item1 ); }
78 else if ( isbarrel == 0 ) { calib_endcap_item.push_back( cal_item1 ); }
79 else if ( isbarrel == 2 ) { calib_etf_item.push_back( cal_item1 ); }
80 else
81 { cout << "Tof::tofcalgsec::TofCalibManaer: addCalib: isbarrel is OUT of range!" << endl; }
82 return;
83}

Referenced by tofcalgsec::finalize().

◆ addCalib() [2/2]

void TofCalibManager::addCalib ( TofCalibFit * cal_item2,
bool isbarrel )

Definition at line 85 of file TofCalibManager.cxx.

85 {
86 if ( isbarrel )
87 {
88 if ( cal_item2->name() == "calib_barrel_sigma" )
89 { calibration_barrel_item2.push_back( cal_item2 ); }
90 else { calibration_barrel_item.push_back( cal_item2 ); }
91 }
92 else
93 {
94 // calibration_endcap_item.push_back(cal_item2);
95 calibration_etf_item.push_back( cal_item2 );
96 }
97 return;
98}
const std::string & name() const
Definition TofCalibFit.h:27

◆ dataSet()

TofDataSet * TofCalibManager::dataSet ( )
inline

Definition at line 16 of file TofCalibManager.h.

16{ return m_dataset; }

Referenced by tofcalgsec::execute(), and tofcalgsec::finalize().

◆ doCalibration()

void TofCalibManager::doCalibration ( )

Definition at line 100 of file TofCalibManager.cxx.

100 {
101
102 if ( !calib_barrel_item.empty() || !calibration_barrel_item.empty() )
103 {
104 std::cout << "Begin barrel counters calibration..." << std::endl;
105 std::cout << setiosflags( ios::left ) << setw( 10 ) << "TOF ID" << setw( 8 ) << "Entries"
106 << setw( 30 ) << "What Calibration" << std::endl;
107 HepVector tcorrelation;
108 for ( unsigned int i = 0; i < NBarrel; i++ )
109 {
110 RecordSet* barrelData = m_dataset->getBarrelData( i );
111 if ( !calib_barrel_item.empty() )
112 {
113 std::vector<TofCalib*>::iterator iter1 = calib_barrel_item.begin();
114 for ( ; iter1 != calib_barrel_item.end(); iter1++ )
115 {
116 ( *iter1 )->reset();
117 ( *iter1 )->calculate( barrelData, i );
118 }
119 }
120 if ( !calibration_barrel_item.empty() )
121 {
122 std::vector<TofCalibFit*>::iterator iter2 = calibration_barrel_item.begin();
123 for ( ; iter2 != calibration_barrel_item.end(); iter2++ )
124 {
125 ( *iter2 )->calculate( barrelData, i );
126 if ( i == ( NBarrel - 1 ) )
127 {
128 if ( ( *iter2 )->name() == "calib_barrel_common" )
129 { tcorrelation = ( *iter2 )->tcorrelation(); }
130 }
131 }
132 }
133 }
134
135 for ( unsigned int i = 0; i < NBarrel; i++ )
136 {
137 RecordSet* barrelData = m_dataset->getBarrelData( i );
138 if ( !calibration_barrel_item2.empty() )
139 {
140 std::vector<TofCalibFit*>::iterator iter2 = calibration_barrel_item2.begin();
141 for ( ; iter2 != calibration_barrel_item2.end(); iter2++ )
142 {
143 if ( i == 0 )
144 {
145 if ( ( *iter2 )->name() == "calib_barrel_sigma" )
146 { ( *iter2 )->setTCorrelation( tcorrelation ); }
147 }
148 ( *iter2 )->calculate( barrelData, i );
149 }
150 }
151 }
152 }
153
154 if ( !calib_endcap_item.empty() || !calibration_endcap_item.empty() )
155 {
156 std::cout << "Begin endcap counters calibration..." << std::endl;
157 std::cout << setiosflags( ios::left ) << setw( 10 ) << "TOF ID" << setw( 8 ) << "Entries"
158 << setw( 30 ) << "What Calibration" << std::endl;
159 for ( unsigned int i = 0; i < NEndcap; i++ )
160 {
161 RecordSet* endcapData = m_dataset->getEndcapData( i );
162 if ( !calib_endcap_item.empty() )
163 {
164 std::vector<TofCalib*>::iterator iter1 = calib_endcap_item.begin();
165 for ( ; iter1 != calib_endcap_item.end(); iter1++ )
166 {
167 ( *iter1 )->reset();
168 ( *iter1 )->calculate( endcapData, i );
169 }
170 }
171 if ( !calibration_endcap_item.empty() )
172 {
173 std::vector<TofCalibFit*>::iterator iter2 = calibration_endcap_item.begin();
174 for ( ; iter2 != calibration_endcap_item.end(); iter2++ )
175 { ( *iter2 )->calculate( endcapData, i ); }
176 }
177 }
178 }
179
180 if ( !calib_etf_item.empty() || !calibration_etf_item.empty() )
181 {
182 std::cout << "Begin ETF(MRPC) calibration..." << std::endl;
183 std::cout << setiosflags( ios::left ) << setw( 10 ) << "TOF ID *12 + STRIP" << setw( 8 )
184 << "Entries" << setw( 30 ) << "What Calibration" << std::endl;
185 HepVector tcorrelation;
186 for ( unsigned int i = 0; i < NEtf * NStrip; i++ )
187 {
188 RecordSet* etfData = m_dataset->getEtfData( i );
189 if ( !calib_etf_item.empty() )
190 {
191 std::vector<TofCalib*>::iterator iter1 = calib_etf_item.begin();
192 for ( ; iter1 != calib_etf_item.end(); iter1++ )
193 {
194 ( *iter1 )->reset();
195 ( *iter1 )->calculate( etfData, i );
196 }
197 }
198 if ( !calibration_etf_item.empty() )
199 {
200 std::vector<TofCalibFit*>::iterator iter2 = calibration_etf_item.begin();
201 for ( ; iter2 != calibration_etf_item.end(); iter2++ )
202 { ( *iter2 )->calculate( etfData, i ); }
203 }
204 }
205 }
206
207 return;
208}
std::vector< Record * > RecordSet
Definition TofDataSet.h:97
const unsigned int NStrip
Definition TofDataSet.h:15
const unsigned int NEtf
Definition TofDataSet.h:14
const unsigned int NBarrel
Definition TofDataSet.h:12
const unsigned int NEndcap
Definition TofDataSet.h:13

Referenced by tofcalgsec::finalize().

◆ fillRoot()

void TofCalibManager::fillRoot ( string & dir)

Definition at line 284 of file TofCalibManager.cxx.

284 {
285 int count = 1;
286 char filename1[256];
287 sprintf( filename1, "%s/barrel%i.root", dir.c_str(), count );
288 TFile f1( filename1, "RECREATE" );
289 TTree* ntbarrel = new TTree( "btrk", "barrel data after calibration" );
290
291 int run;
292 int event;
293 int tofid;
294 int strip;
295 double qleft;
296 double qright;
297 double tleft;
298 double tright;
299 double zrhit;
300 double dt;
301 double texp;
302 double path;
303 double phi;
304 double theta;
305 double p;
306 double t0;
307 double q0;
308 int hitcase;
309
310 ntbarrel->Branch( "run", &run, "run/I" );
311 ntbarrel->Branch( "event", &event, "event/I" );
312 ntbarrel->Branch( "tofid", &tofid, "tofid/I" );
313 ntbarrel->Branch( "qleft", &qleft, "qleft/D" );
314 ntbarrel->Branch( "qright", &qright, "qright/D" );
315 ntbarrel->Branch( "tleft", &tleft, "tleft/D" );
316 ntbarrel->Branch( "tright", &tright, "tright/D" );
317 ntbarrel->Branch( "zrhit", &zrhit, "zrhit/D" );
318 ntbarrel->Branch( "texp", &texp, "texp/D" );
319 ntbarrel->Branch( "path", &path, "path/D" );
320 ntbarrel->Branch( "phi", &phi, "phi/D" );
321 ntbarrel->Branch( "theta", &theta, "theta/D" );
322 ntbarrel->Branch( "p", &p, "p/D" );
323 ntbarrel->Branch( "t0", &t0, "t0/D" );
324 ntbarrel->Branch( "q0", &q0, "q0/D" );
325 ntbarrel->Branch( "hitcase", &hitcase, "hitcase/I" );
326
327 int counter = 0;
328 std::cout << "begin to write..." << filename1 << std::endl;
329 for ( unsigned int i = 0; i < NBarrel; i++ )
330 {
331 std::cout << "\r\b Writing record ... " << ( int( ( ++counter ) * 100. / NBarrel ) )
332 << "%";
333 RecordSet* barrelData = m_dataset->getBarrelData( i );
334 std::vector<Record*>::iterator iter = barrelData->begin();
335 for ( ; iter != barrelData->end(); iter++ )
336 {
337 run = ( *iter )->run();
338 event = ( *iter )->event();
339 tofid = ( *iter )->tofid();
340 qleft = ( *iter )->qleft();
341 qright = ( *iter )->qright();
342 tleft = ( *iter )->tleft();
343 tright = ( *iter )->tright();
344 zrhit = ( *iter )->zrhit();
345 texp = ( *iter )->texp();
346 path = ( *iter )->path();
347 phi = ( *iter )->phi();
348 theta = ( *iter )->theta();
349 p = ( *iter )->p();
350 t0 = ( *iter )->t0();
351 q0 = ( *iter )->q0();
352 hitcase = ( *iter )->hitcase();
353 ntbarrel->Fill();
354 }
355 }
356 std::cout << std::endl;
357 ntbarrel->Write();
358 delete ntbarrel;
359 f1.Close();
360
361 char filename2[256];
362 sprintf( filename2, "%s/endcap%i.root", dir.c_str(), count );
363 TFile f2( filename2, "RECREATE" );
364 TTree* ntendcap = new TTree( "etrk", "endcap data after calibration" );
365
366 ntendcap->Branch( "run", &run, "run/I" );
367 ntendcap->Branch( "event", &event, "event/I" );
368 ntendcap->Branch( "tofid", &tofid, "tofid/I" );
369 ntendcap->Branch( "qleft", &qleft, "qleft/D" );
370 ntendcap->Branch( "qright", &qright, "qright/D" );
371 ntendcap->Branch( "tleft", &tleft, "tleft/D" );
372 ntendcap->Branch( "tright", &tright, "tright/D" );
373 ntendcap->Branch( "zrhit", &zrhit, "zrhit/D" );
374 ntendcap->Branch( "texp", &texp, "texp/D" );
375 ntendcap->Branch( "path", &path, "path/D" );
376 ntendcap->Branch( "phi", &phi, "phi/D" );
377 ntendcap->Branch( "theta", &theta, "theta/D" );
378 ntendcap->Branch( "p", &p, "p/D" );
379 ntendcap->Branch( "t0", &t0, "t0/D" );
380 ntendcap->Branch( "q0", &q0, "q0/D" );
381 ntendcap->Branch( "hitcase", &hitcase, "hitcase/I" );
382
383 counter = 0;
384 std::cout << "begin to write..." << filename2 << std::endl;
385 for ( unsigned int i = 0; i < NEndcap; i++ )
386 {
387 std::cout << "\r\b Writing record ... " << ( int( ( ++counter ) * 100. / NEndcap ) )
388 << "%";
389 RecordSet* endcapData = m_dataset->getEndcapData( i );
390 std::vector<Record*>::iterator iter = endcapData->begin();
391 for ( ; iter != endcapData->end(); iter++ )
392 {
393 run = ( *iter )->run();
394 event = ( *iter )->event();
395 tofid = ( *iter )->tofid();
396 qleft = ( *iter )->qleft();
397 qright = ( *iter )->qright();
398 tleft = ( *iter )->tleft();
399 tright = ( *iter )->tright();
400 zrhit = ( *iter )->zrhit();
401 texp = ( *iter )->texp();
402 path = ( *iter )->path();
403 phi = ( *iter )->phi();
404 theta = ( *iter )->theta();
405 p = ( *iter )->p();
406 t0 = ( *iter )->t0();
407 q0 = ( *iter )->q0();
408 hitcase = ( *iter )->hitcase();
409 ntendcap->Fill();
410 }
411 }
412 std::cout << std::endl;
413 ntendcap->Write();
414 delete ntendcap;
415 f2.Close();
416
417 char filename3[256];
418 sprintf( filename3, "%s/etf%i.root", dir.c_str(), count );
419 TFile f3( filename3, "RECREATE" );
420 TTree* ntetf = new TTree( "etf", "en data after calibration" );
421
422 ntetf->Branch( "run", &run, "run/I" );
423 ntetf->Branch( "event", &event, "event/I" );
424 ntetf->Branch( "tofid", &tofid, "tofid/I" );
425 ntetf->Branch( "strip", &strip, "strip/I" );
426 ntetf->Branch( "qleft", &qleft, "qleft/D" );
427 ntetf->Branch( "qright", &qright, "qright/D" );
428 ntetf->Branch( "tleft", &tleft, "tleft/D" );
429 ntetf->Branch( "tright", &tright, "tright/D" );
430 ntetf->Branch( "zrhit", &zrhit, "zrhit/D" );
431 ntetf->Branch( "dt", &dt, "dt/D" );
432 ntetf->Branch( "texp", &texp, "texp/D" );
433 ntetf->Branch( "path", &path, "path/D" );
434 ntetf->Branch( "phi", &phi, "phi/D" );
435 ntetf->Branch( "p", &p, "p/D" );
436 ntetf->Branch( "t0", &t0, "t0/D" );
437 ntetf->Branch( "q0", &q0, "q0/D" );
438 ntetf->Branch( "hitcase", &hitcase, "hitcase/I" );
439
440 counter = 0;
441 std::cout << "begin to write..." << filename3 << std::endl;
442 for ( unsigned int i = 0; i < NEtf * NStrip; i++ )
443 {
444 std::cout << "\r\b Writing record ... "
445 << ( int( ( ++counter ) * 100. / ( NEtf * NStrip ) ) ) << "%";
446 RecordSet* etfData = m_dataset->getEtfData( i );
447 std::vector<Record*>::iterator iter = etfData->begin();
448 for ( ; iter != etfData->end(); iter++ )
449 {
450 run = ( *iter )->run();
451 event = ( *iter )->event();
452 tofid = ( *iter )->tofid();
453 strip = ( *iter )->strip();
454 qleft = ( *iter )->qleft();
455 qright = ( *iter )->qright();
456 tleft = ( *iter )->tleft();
457 tright = ( *iter )->tright();
458 zrhit = ( *iter )->zrhit();
459 dt = ( *iter )->dt();
460 texp = ( *iter )->texp();
461 path = ( *iter )->path();
462 phi = ( *iter )->phi();
463 p = ( *iter )->p();
464 t0 = ( *iter )->t0();
465 q0 = ( *iter )->q0();
466 hitcase = ( *iter )->hitcase();
467 ntetf->Fill();
468 }
469 }
470 std::cout << std::endl;
471 ntetf->Write();
472 delete ntetf;
473 f3.Close();
474
475 if ( !calibration_barrel_item.empty() )
476 {
477 std::vector<TofCalibFit*>::iterator iter = calibration_barrel_item.begin();
478 for ( ; iter != calibration_barrel_item.end(); iter++ )
479 {
480 string fname = dir + string( "/" ) + ( *iter )->name() + string( ".root" );
481 ( *iter )->fillRoot( fname.c_str() );
482 }
483 }
484 if ( !calibration_barrel_item2.empty() )
485 {
486 std::vector<TofCalibFit*>::iterator iter = calibration_barrel_item2.begin();
487 for ( ; iter != calibration_barrel_item2.end(); iter++ )
488 {
489 string fname = dir + string( "/" ) + ( *iter )->name() + string( ".root" );
490 ( *iter )->fillRoot( fname.c_str() );
491 }
492 }
493
494 if ( !calibration_endcap_item.empty() )
495 {
496 std::vector<TofCalibFit*>::iterator iter = calibration_endcap_item.begin();
497 for ( ; iter != calibration_endcap_item.end(); iter++ )
498 {
499 string fname = dir + string( "/" ) + ( *iter )->name() + string( ".root" );
500 ( *iter )->fillRoot( fname.c_str() );
501 }
502 }
503
504 if ( !calibration_etf_item.empty() )
505 {
506 std::vector<TofCalibFit*>::iterator iter = calibration_etf_item.begin();
507 for ( ; iter != calibration_etf_item.end(); iter++ )
508 {
509 string fname = dir + string( "/" ) + ( *iter )->name() + string( ".root" );
510 ( *iter )->fillRoot( fname.c_str() );
511 }
512 }
513
514 return;
515}
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 * f1
DOUBLE_PRECISION count[3]
TGraph2DErrors * dt
Definition McCor.cxx:41

Referenced by tofcalgsec::finalize().

◆ fillTxt()

void TofCalibManager::fillTxt ( string & dir)

Definition at line 210 of file TofCalibManager.cxx.

210 {
211
212 if ( !calib_barrel_item.empty() )
213 {
214 std::vector<TofCalib*>::iterator iter = calib_barrel_item.begin();
215 for ( ; iter != calib_barrel_item.end(); iter++ )
216 {
217 string fname = dir + string( "/" ) + ( *iter )->name() + string( ".txt" );
218 ( *iter )->fillTxt( fname.c_str() );
219 }
220 }
221
222 if ( !calib_endcap_item.empty() )
223 {
224 std::vector<TofCalib*>::iterator iter = calib_endcap_item.begin();
225 for ( ; iter != calib_endcap_item.end(); iter++ )
226 {
227 string fname = dir + string( "/" ) + ( *iter )->name() + string( ".txt" );
228 ( *iter )->fillTxt( fname.c_str() );
229 }
230 }
231
232 if ( !calib_etf_item.empty() )
233 {
234 std::vector<TofCalib*>::iterator iter = calib_etf_item.begin();
235 for ( ; iter != calib_etf_item.end(); iter++ )
236 {
237 string fname = dir + string( "/" ) + ( *iter )->name() + string( ".txt" );
238 ( *iter )->fillTxt( fname.c_str() );
239 }
240 }
241
242 if ( !calibration_barrel_item.empty() )
243 {
244 std::vector<TofCalibFit*>::iterator iter = calibration_barrel_item.begin();
245 for ( ; iter != calibration_barrel_item.end(); iter++ )
246 {
247 string fname = dir + string( "/" ) + ( *iter )->name() + string( ".txt" );
248 ( *iter )->fillTxt( fname.c_str() );
249 }
250 }
251 if ( !calibration_barrel_item2.empty() )
252 {
253 std::vector<TofCalibFit*>::iterator iter = calibration_barrel_item2.begin();
254 for ( ; iter != calibration_barrel_item2.end(); iter++ )
255 {
256 string fname = dir + string( "/" ) + ( *iter )->name() + string( ".txt" );
257 ( *iter )->fillTxt( fname.c_str() );
258 }
259 }
260
261 if ( !calibration_endcap_item.empty() )
262 {
263 std::vector<TofCalibFit*>::iterator iter = calibration_endcap_item.begin();
264 for ( ; iter != calibration_endcap_item.end(); iter++ )
265 {
266 string fname = dir + string( "/" ) + ( *iter )->name() + string( ".txt" );
267 ( *iter )->fillTxt( fname.c_str() );
268 }
269 }
270
271 if ( !calibration_etf_item.empty() )
272 {
273 std::vector<TofCalibFit*>::iterator iter = calibration_etf_item.begin();
274 for ( ; iter != calibration_etf_item.end(); iter++ )
275 {
276 string fname = dir + string( "/" ) + ( *iter )->name() + string( ".txt" );
277 ( *iter )->fillTxt( fname.c_str() );
278 }
279 }
280
281 return;
282}

Referenced by tofcalgsec::finalize().

◆ getManager()

TofCalibManager * TofCalibManager::getManager ( )
static

Definition at line 6 of file TofCalibManager.cxx.

6 {
7 if ( m_manager == 0 ) { m_manager = new TofCalibManager; }
8 return m_manager;
9}

Referenced by tofcalgsec::execute(), and tofcalgsec::finalize().


The documentation for this class was generated from the following files: