284 {
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;
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;
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)
DOUBLE_PRECISION count[3]