BOSS 7.0.8
BESIII Offline Software System
Loading...
Searching...
No Matches
TrkReco Class Reference

A tracking module. More...

#include <TrkReco.h>

+ Inheritance diagram for TrkReco:

Public Member Functions

 TrkReco (const std::string &name, ISvcLocator *pSvcLocator)
 returns TrkReco.
 
StatusCode initialize ()
 
StatusCode execute ()
 
StatusCode finalize ()
 
StatusCode beginRun ()
 
StatusCode endRun ()
 
void disp_stat (const char *)
 initializes TrkReco.
 
void dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
 returns name.
 
const TFinderBaseconfFinder (void) const
 returns a pointer to the rphi finder.
 
const TFinderBasecurlFinder (void) const
 returns a pointer to the curl finder.
 
const TTrackManagertrackManager (void) const
 returns a pointer to TTrackManager.
 
void clear (void)
 clears all TMDC information.
 
void fastClear (void)
 clears TMDC information.
 
const AList< TTrack > & tracks (void) const
 returns a list of reconstructed tracks.
 

Public Attributes

int b_mcPar
 
int b_mcHit
 
int b_tuple
 
int b_goodTrk
 
int b_timeTest
 
bool m_dropHot
 
bool m_combineTracking
 
bool m_keepBadTdc
 
bool m_keepUnmatch
 
int b_RungeKuttaCorrection
 
float b_cdcVersion
 
std::string _cdcVersion
 
float b_fudgeFactor
 
int useESTime
 
int b_debugLevel
 
int b_useAllHits
 
int b_doT0Reset
 
int b_nT0ResetMax
 
int b_doMCAnalysis
 
float b_helixFitterChisqMax
 
int b_doPerfectFinder
 
int b_perfectFitting
 
int b_conformalFinder
 
int b_doConformalFinder
 
int b_doConformalFastFinder
 
int b_doConformalSlowFinder
 
int b_conformalPerfectSegmentFinding
 
int b_conformalFittingFlag
 
float b_conformalMaxSigma
 
int b_conformalMinNLinksForSegment
 
int b_conformalMinNCores
 
int b_conformalMinNSegments
 
float b_salvageLevel
 
int b_conformalSalvageLoadWidth
 
int b_conformalStereoMode
 
int b_conformalStereoLoadWidth
 
float b_conformalStereoMaxSigma
 
float b_conformalStereoSzSegmentDistance
 
float b_conformalStereoSzLinkDistance
 
int b_doConformalFinderStereo
 
int b_doConformalFinderCosmic
 
float b_conformalFraction
 
float b_conformalStereoZ3
 
float b_conformalStereoZ4
 
float b_conformalStereoChisq3
 
float b_conformalStereoChisq4
 
int b_conformalFittingCorrections
 
int m_CalibFlag
 
double b_momentumCut
 
int b_fittingFlag
 
int b_doSalvage
 
int b_doMerge
 
int b_doT0Determination
 
int b_nTracksForT0
 
int b_sortMode
 
int b_doAssociation
 
float b_associateSigma
 
int b_test
 
int b_doCurlFinder
 
int min_segment
 
int min_salvage
 
double bad_distance_for_salvage
 
double good_distance_for_salvage
 
int min_sequence
 
int min_fullwire
 
double range_for_axial_search
 
double range_for_stereo_search
 
int superlayer_for_stereo_search
 
double range_for_axial_last2d_search
 
double range_for_stereo_last2d_search
 
double trace2d_distance
 
double trace2d_first_distance
 
double trace3d_distance
 
int determine_one_track
 
double selector_max_impact
 
double selector_max_sigma
 
double selector_strange_pz
 
double selector_replace_dz
 
int stereo_2dfind
 
int merge_exe
 
double merge_ratio
 
double merge_z_diff
 
double mask_distance
 
double ratio_used_wire
 
double range_for_stereo1
 
double range_for_stereo2
 
double range_for_stereo3
 
double range_for_stereo4
 
double range_for_stereo5
 
double range_for_stereo6
 
double z_cut
 
double z_diff_for_last_attend
 
int svd_reconstruction
 
double min_svd_electrons
 
int on_correction
 
int output_2dtracks
 
int curl_version
 
double minimum_seedLength
 
double minimum_2DTrackLength
 
double minimum_3DTrackLength
 
double minimum_closeHitsLength
 
double MIN_RADIUS_OF_STRANGE_TRACK
 
double ULTIMATE_MIN_RADIUS_OF_STRANGE_TRACK
 

Detailed Description

A tracking module.

Definition at line 46 of file TrkReco.h.

Constructor & Destructor Documentation

◆ TrkReco()

TrkReco::TrkReco ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

returns TrkReco.

Initiate Parameters for TrkReco

Definition at line 80 of file TrkReco.cxx.

80 :
81 Algorithm(name, pSvcLocator),
82 _cdc(0),
83 _perfectFinder(0),
84 _rkfitter("range fitter",
85 false,
86 0,
87 true),
88 _confFinder(0),
89 _curlFinder(0),
90 _nEvents(0) {
91
92 /// Initiate Parameters for TrkReco
93 initPara();
94
96}
float TrkRecoHelixFitterChisqMax
Definition: TrkReco.cxx:78
float b_helixFitterChisqMax
Definition: TrkReco.h:150

Member Function Documentation

◆ beginRun()

StatusCode TrkReco::beginRun ( )

Get MdcGeomSvc

Definition at line 302 of file TrkReco.cxx.

302 {
303 /// Get MdcGeomSvc
304 IMdcGeomSvc* imdcGeomSvc;
305 StatusCode sc1 =Gaudi::svcLocator()->service("MdcGeomSvc", imdcGeomSvc);
306 _mdcGeomSvc = dynamic_cast<MdcGeomSvc*> (imdcGeomSvc);
307 if (sc1.isFailure()) {
308 return( StatusCode::FAILURE);
309 }
310 _cdc = cdcInit();
311
312 return StatusCode::SUCCESS;
313}

◆ clear()

void TrkReco::clear ( void  )

clears all TMDC information.

Definition at line 956 of file TrkReco.cxx.

956 {
957
958 //...Clear track candidates of the last event...
959 HepAListDeleteAll(_mcTracks);
960
961 //...Clear finders...
962 if (b_doPerfectFinder) _perfectFinder->clear();
963 if (b_doConformalFinder) _confFinder->clear();
964 if (b_doCurlFinder) _curlFinder->clear();
965 _trackManager.clear();
966 _trackManager.clearTables();
967}
void clear(void)
cleans all members of this class
virtual void clear(void)=0
clear internal information.
void clearTables(void) const
clears tables.
void clear(void)
clears all internal information.
int b_doCurlFinder
Definition: TrkReco.h:199
int b_doConformalFinder
Definition: TrkReco.h:158
int b_doPerfectFinder
Definition: TrkReco.h:153

Referenced by execute(), and fastClear().

◆ confFinder()

const TFinderBase * TrkReco::confFinder ( void  ) const
inline

returns a pointer to the rphi finder.

Definition at line 320 of file TrkReco.h.

320 {
321 return (TFinderBase *) _confFinder;
322}
A virtual class for a track finder in tracking.
Definition: TFinderBase.h:31

◆ curlFinder()

const TFinderBase * TrkReco::curlFinder ( void  ) const
inline

returns a pointer to the curl finder.

Definition at line 326 of file TrkReco.h.

326 {
327 return (TFinderBase *) _curlFinder;
328}

◆ disp_stat()

void TrkReco::disp_stat ( const char *  m)

initializes TrkReco.

terminates TrkReco. processes an event. temporarily required

Definition at line 315 of file TrkReco.cxx.

315 {
316 std::string msg = m;
317// dump(msg);
318}

◆ dump()

void TrkReco::dump ( const std::string &  message = std::string(""),
const std::string &  prefix = std::string("") 
) const

returns name.

returns version. dumps debug information.

◆ endRun()

StatusCode TrkReco::endRun ( )
inline

Definition at line 56 of file TrkReco.h.

56{};

◆ execute()

StatusCode TrkReco::execute ( )

Definition at line 321 of file TrkReco.cxx.

321 {
322 MsgStream log(msgSvc(), name());
323 log << MSG::INFO << "in execute()" << endreq;
324 StatusCode sc;
325 if (b_timeTest && b_tuple) m_timer[1]->start();
326
327 // Initiate state of all sense wire
328 if (b_goodTrk && b_tuple)
329 for (int ii=0;ii<43;ii++){
330 for (int jj=0;jj<288;jj++){
331 havedigi[ii][jj]= -99;//no hit/noise
332 }
333 }
334
335 //------------------------------------
336 // Initialize track collection in TDS
337 //------------------------------------
338 //yzhang add 2010-04-30
339 //Clear TDS tracks and hits
341 IDataManagerSvc *dataManSvc;
342 DataObject *aTrackCol;
343 DataObject *aRecHitCol;
345 dataManSvc = dynamic_cast<IDataManagerSvc*> (eventSvc().get());
346 eventSvc()->findObject("/Event/Recon/RecMdcTrackCol",aTrackCol);
347 if(aTrackCol != NULL) {
348 dataManSvc->clearSubTree("/Event/Recon/RecMdcTrackCol");
349 eventSvc()->unregisterObject("/Event/Recon/RecMdcTrackCol");
350 }
351 eventSvc()->findObject("/Event/Recon/RecMdcHitCol",aRecHitCol);
352 if(aRecHitCol != NULL) {
353 dataManSvc->clearSubTree("/Event/Recon/RecMdcHitCol");
354 eventSvc()->unregisterObject("/Event/Recon/RecMdcHitCol");
355 }
356 }
357 DataObject *aReconEvent;
358 eventSvc()->findObject("/Event/Recon",aReconEvent);
359 if(!aReconEvent) {
360 ReconEvent* recevt = new ReconEvent;
361 StatusCode sc = eventSvc()->registerObject("/Event/Recon",recevt );
362 if(sc!=StatusCode::SUCCESS) {
363 log << MSG::FATAL << "Could not register ReconEvent" <<endreq;
364 return( StatusCode::FAILURE);
365 }
366 }
367 RecMdcTrackCol* trkcol;
368 eventSvc()->findObject("/Event/Recon/RecMdcTrackCol",aTrackCol);
369 if (aTrackCol) {
370 trkcol = dynamic_cast<RecMdcTrackCol*> (aTrackCol);
371 }else{
372 trkcol= new RecMdcTrackCol;
373 sc = eventSvc()->registerObject(EventModel::Recon::RecMdcTrackCol, trkcol);
374 if(!sc.isSuccess()) {
375 log << MSG::FATAL << " Could not register RecMdcTrack collection" <<endreq;
376 return StatusCode::FAILURE;
377 }
378 }
379 RecMdcHitCol* hitcol;
380 eventSvc()->findObject("/Event/Recon/RecMdcHitCol",aRecHitCol);
381 if (aRecHitCol) {
382 hitcol = dynamic_cast<RecMdcHitCol*> (aRecHitCol);
383 }else{
384 hitcol= new RecMdcHitCol;
385 sc = eventSvc()->registerObject(EventModel::Recon::RecMdcHitCol, hitcol);
386 if(!sc.isSuccess()) {
387 log << MSG::FATAL << " Could not register RecMdcHit collection" <<endreq;
388 return StatusCode::FAILURE;
389 }
390 }
391 // Part 1: Get Tev
392 t0_bes = 0.;
393 t0Sta = -1;
394 if (useESTime) {
395 SmartDataPtr<RecEsTimeCol> aevtimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol");
396//bugcheck jialk
397 if (aevtimeCol && aevtimeCol->size() ) {
398 RecEsTimeCol::iterator iter_evt = aevtimeCol->begin();
399 t0_bes = (*iter_evt)->getTest();
400 t0Sta = (*iter_evt)->getStat();
401 }else{
402 log << MSG::WARNING << "Could not find EsTimeCol" << endreq;
403 return StatusCode::SUCCESS;
404 }
405 }
406
407 // Part 2: Get the event header
408 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
409 if (!eventHeader) {
410 log << MSG::FATAL << "Could not find Event Header" << endreq;
411 return( StatusCode::FAILURE);
412 }
413 _nEvents = eventHeader->eventNumber();
414 if (b_tuple) std::cout << "TrkReco ... processing ev# " << _nEvents << std::endl;
415
416 // Part 3: Retrieve MDC digi
417 int digiId;
418 uint32_t getDigiFlag = 0;
422 MdcDigiVec mdcDigiVec = _rawDataProviderSvc->getMdcDigiVec(getDigiFlag);
423 if (0 == mdcDigiVec.size()){
424 log << MSG::WARNING << " No hits in MdcDigiVec" << endreq;
425 return StatusCode::SUCCESS;
426 }
427/* //jialk in order to reject events with exceeding # of total hits 2009/03/31
428if (mdcDigiVec.size() > 2000){
429 log << MSG::WARNING << " Too many hits in MdcDigiVec" << endreq;
430 return StatusCode::SUCCESS;
431 }*/
432 MdcDigiVec::iterator iter1 = mdcDigiVec.begin();
433 MC_DIGI_SIZE = mdcDigiVec.size();
434
435 digiId = 0;
436 Identifier mdcId;
437 int layerId;
438 int wireId;
439
440 //Clear the old MdcRec_wirhit tables and create the hits' info for the new event.
441 unsigned nt = MdcRecWirhitCol::getMdcRecWirhitCol()->size();
442 //cout<<"Col size of last Event's WirHit = "<<nt<<endl;
444
445 for (;iter1 != mdcDigiVec.end(); iter1++, digiId++) {
446 //log << MSG::INFO << "MDC digit No: " << digiId << endreq;
447 mdcId = (*iter1)->identify();
448 layerId = MdcID::layer(mdcId);
449 wireId = MdcID::wire(mdcId);
450 /*log << MSG::INFO
451 << " time_channel = " << (*iter1)->getTimeChannel()
452 <<" time = "<<(*iter1)->getTimeChannel()* 40./10000/1000000
453 << " charge_channel = " << (*iter1)->getChargeChannel()
454 << " layerId = " << layerId
455 << " wireId = " << wireId
456 << endreq;*/
457
458 if (b_goodTrk && b_tuple) havedigi[layerId][wireId] = (*iter1)->getTrackIndex(); //-1:noise 0-n:tracks
459
460 MdcRec_wirhit mhit;
461
462 mhit.id = digiId;
463 mhit.geo = _mdcGeomSvc->Wire(layerId,wireId);
464 //Apply crude TOF, Belle: tof=1.074*radius/c, here we use 1.28 instead of 1.074.
465 double tof;
466 tof = 1.28 * mhit.geo->Lyr()->Radius()/299.8; //unit of Radius is mm.
467 mhit.tdc = RawDataUtil::MdcTime((*iter1)->getTimeChannel());
468
469 //cout<<" .. mhit.tdc = "<<mhit.tdc<<" t0_bes = "<<t0_bes<<endl;
470 mhit.tdc -= t0_bes;
471
472 //jialk
473 _trackManager.sett0bes(t0_bes);
474 //mhit.adc = RawDataUtil::MdcCharge((*iter1)->getChargeChannel());
475 //mhit.tdc = (*iter1)->getTimeChannel();
476 mhit.adc = (*iter1)->getChargeChannel();
477 //cout<<"raw tdc(ns): "<<mhit.tdc<<"; tof(ns): "<<tof<<endl;
478// double dist2 = _mdcCalibFunSvc->rawTimeNoTOFToDist(mhit.tdc-tof, layerId, wireId, 2, 0.0);
479 // mhit.erddl = _mdcCalibFunSvc->getSigma(layerId, 2, dist2, 0.0);
480 double timewalk=_mdcCalibFunSvc->getTimeWalk(layerId,mhit.adc);
481 double T0 = _mdcCalibFunSvc->getT0(layerId,wireId);
482 double drifttime = mhit.tdc-tof-timewalk-T0;
483 double dist2 = _mdcCalibFunSvc->driftTimeToDist(drifttime,layerId, wireId, 2, 0);//by liucy 2010/05/12
484 mhit.erddl = _mdcCalibFunSvc->getSigma(layerId, 2 , dist2, 0.0,0.0,0.0,mhit.adc);
485//cout<<"getSigma: "<<mhit.erddl<<endl;
486 mhit.ddl = dist2/10.; //mm->cm
487 mhit.ddr = mhit.ddl;
488 mhit.erddl = mhit.erddl/10.; //mm->cm
489 mhit.erddr = mhit.erddl;
490
491 mhit.lr = 2;
492 mhit.stat = 0;
493 mhit.stat = mhit.stat |= 1048576; //bit20 WireHitTimeValid
494 mhit.stat = mhit.stat |= 2097152; //bit21 WireHitChargeValid
495 mhit.stat = mhit.stat |= 4194304; //bit22 WireHitFindingValid
496 mhit.stat = mhit.stat |= 1073741824; //bit30
497 //cout<<"layerNo = "<<mhit.geo->Layer()<<"; "<<mdigi.digi[i].layerNo<<endl;
498 //cout<<"cellNo = "<<mhit.geo->Cell()<<"; "<<mdigi.digi[i].cellNo<<endl;
499 //cout<<"NCell of this layer = "<<mhit.geo->Lyr()->NCell()<<endl;
500 //cout<<"NCell of this layer = "<<mhit.geo->Lyr()->NCell()<<endl;
501 MdcRecWirhitCol::getMdcRecWirhitCol()->push_back(mhit);
502
503 if (b_tuple) {
504 t10_tdc = mhit.tdc;
505 t10_adc = mhit.adc;
506 t10_drift = mhit.ddl;
507 t10_dDrift = mhit.erddl;
508 t10_lyrId = layerId;
509 t10_localId = wireId;
510 m_tuple10->write();
511 }
512 }
513
514 unsigned nT0Reset = 0;
515
516 //...Starting point...
517TrkReco_start:
518
519 //...Clear myself...
520 clear();
521
522 //jialk in order to reject events with exceeding # of total hits 2009/03/31
523 if (mdcDigiVec.size() > 2000){
524 log << MSG::WARNING << " Too many hits in MdcDigiVec" << endreq;
525 return StatusCode::SUCCESS;
526 }
527
528 //...Update TMDC...
529 _cdc->update(b_doMCAnalysis);
530
531 //...Get lists of hits...
532 unsigned mask = 0;
533 if (! b_useAllHits) mask = WireHitFindingValid;
534 const AList<TMDCWireHit> & axialHits = _cdc->axialHits(mask);
535 const AList<TMDCWireHit> & stereoHits = _cdc->stereoHits(mask);
536 const AList<TMDCWireHit> & allHits = _cdc->hits(mask);
537 //cout<<"axial: "<<axialHits.length()<<" stereo: "<<stereoHits.length()<<endl;
538
539 //...Storage for tracks...
541 AList<TTrack> tracks2D;
542
543 //...Perfect finder...
544 if (b_doPerfectFinder) {
545 _perfectFinder->doit(axialHits, stereoHits, tracks, tracks2D);
546 _trackManager.append(tracks);
547 }
548
549 else {
550 //...Conformal finder...
552
553 //...T0 reset option...
554 if (b_doT0Reset) {
555 if (b_nT0ResetMax > nT0Reset)
556 ((TConformalFinder *) _confFinder)->doT0Reset(true);
557 else
558 ((TConformalFinder *) _confFinder)->doT0Reset(false);
559 }
560
561 _confFinder->doit(axialHits, stereoHits, tracks, tracks2D);
562
563 //...T0 reset...
564 if (b_doT0Reset) {
565 ++nT0Reset;
566 if (((TConformalFinder *) _confFinder)->T0ResetDone())
567 goto TrkReco_start;
568 }
569
570 //cout<<"tracks: "<<tracks.length()<<endl;
571
572 //...Stores tracks...
573 _trackManager.append(tracks);
574 _trackManager.append2D(tracks2D);
575 if (b_conformalFinder == 0) {
576 if (b_doSalvage == 1) _trackManager.salvage(allHits);
577 if (b_doSalvage) _trackManager.mask();
578 }
579 }
580
581 //...Curl finder...
582 if (b_doCurlFinder) {
583 if ((! b_doSalvage) && (b_conformalFinder == 0))
584 _trackManager.maskCurlHits(axialHits,
585 stereoHits,
586 _trackManager.tracks());
587 AList<TTrack> confTracks = _trackManager.tracks();
588 tracks.append(confTracks);
589 _curlFinder->doit(axialHits, stereoHits, tracks, tracks2D);
590 tracks.remove(confTracks);
591 //_trackManager.append(tracks);
592 }
593
594 //...Finishes tracks...
595// if ((b_doSalvage) && (b_conformalFinder == 0)) _trackManager.refit();
596
597 //...Appends tracks which are reconstructed by CurlFinder...
598 if (b_doCurlFinder) {
599 _trackManager.append(tracks);
600 _trackManager.append2D(tracks2D);
601 }
602
603 //...Merge & Mask ...
604 //if ((b_doMerge) && (b_conformalFinder == 0)) _trackManager.merge();
605 _trackManager.merge(); //Liuqg
606 //if (b_conformalFinder != 0) _trackManager.setCurlerFlags();
607
608 //...Salvage for dE/dx...
609 //if (b_doAssociation)
610 // _trackManager.salvageAssociateHits(allHits, b_associateSigma);
611 }
612
613 //...Move a pivot... //move to the innermost hit, remove this step now 2005/10/17 zang shilei
614 //_trackManager.movePivot();
615
616 //...Save Panther tables...
617 // _trackManager.checkNumberOfHits();
618 //if (b_sortMode == 0) _trackManager.sortTracksByQuality();
619 //else _trackManager.sortTracksByPt();
620 /*if (b_doMCAnalysis) {
621 if (mcEvent()) {
622 mcInformation();
623 _trackManager.saveMCTables();
624 }
625 }*/
626
627 if (b_tuple) FillTuple();
628
629 //write Tds
630 int t_tkStat = 2;
631 if (!b_doConformalFinder && b_doCurlFinder) t_tkStat = 3;//FIXME
632 StatusCode scTds = _trackManager.makeTds(trkcol, hitcol, t_tkStat,b_RungeKuttaCorrection,m_CalibFlag);
633 if (scTds != StatusCode::SUCCESS) return( StatusCode::FAILURE);
634
635 //...T0 correction...
638 if (b_tuple) t3_t0Rec = _trackManager.paraT0();
639 }
640 }
641 else if(b_RungeKuttaCorrection==1){
642 if (useESTime) {
643 SmartDataPtr<RecEsTimeCol> aevtimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol");
644 if (aevtimeCol && aevtimeCol->size() ) {
645 RecEsTimeCol::iterator iter_evt = aevtimeCol->begin();
646 t0_bes = (*iter_evt)->getTest();
647 t0Sta = (*iter_evt)->getStat();
648 }else{
649 log << MSG::WARNING << "Could not find EsTimeCol" << endreq;
650 return StatusCode::SUCCESS;
651 }
652 }
653
654 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
655 if (!eventHeader) {
656 log << MSG::FATAL << "Could not find Event Header" << endreq;
657 return( StatusCode::FAILURE);
658 }
659 _nEvents = eventHeader->eventNumber();
660 if (b_tuple) std::cout << "TrkReco ... processing ev# " << _nEvents << std::endl;
661 AList<TTrack> rktracks;
662 int digiId;
663 uint32_t getDigiFlag = 0;
667 MdcDigiVec mdcDigiVec = _rawDataProviderSvc->getMdcDigiVec(getDigiFlag);
668 if (0 == mdcDigiVec.size()){
669 log << MSG::WARNING << " No hits in MdcDigiVec" << endreq;
670 return StatusCode::SUCCESS;
671 }
672 MdcDigiVec::iterator iter1 = mdcDigiVec.begin();
673 MC_DIGI_SIZE = mdcDigiVec.size();
674
675 digiId = 0;
676 Identifier mdcId;
677 int layerId;
678 int wireId;
679
680 unsigned nt = MdcRecWirhitCol::getMdcRecWirhitCol()->size();
682
683 for (;iter1 != mdcDigiVec.end(); iter1++, digiId++) {
684 mdcId = (*iter1)->identify();
685 layerId = MdcID::layer(mdcId);
686 wireId = MdcID::wire(mdcId);
687 if (b_goodTrk && b_tuple) havedigi[layerId][wireId] = (*iter1)->getTrackIndex();
688
689 MdcRec_wirhit mhit;
690
691 mhit.id = digiId;
692 mhit.geo = _mdcGeomSvc->Wire(layerId,wireId);
693 double tof;
694 tof = 1.28 * mhit.geo->Lyr()->Radius()/299.8;
695 mhit.tdc = RawDataUtil::MdcTime((*iter1)->getTimeChannel());
696 mhit.timechannel=(*iter1)->getTimeChannel();
697 mhit.tdc -= t0_bes;
698
699 _trackManager.sett0bes(t0_bes);
700 mhit.adc = (*iter1)->getChargeChannel();
701 double timewalk=_mdcCalibFunSvc->getTimeWalk(layerId,mhit.adc);
702 double T0 = _mdcCalibFunSvc->getT0(layerId,wireId);
703 double drifttime = mhit.tdc-tof-timewalk-T0;
704 double dist2 = _mdcCalibFunSvc->driftTimeToDist(drifttime,layerId, wireId, 2, 0);
705 mhit.erddl = _mdcCalibFunSvc->getSigma(layerId, 2 , dist2, 0.0,0.0,0.0,mhit.adc);
706 mhit.ddl = dist2/10.;
707 mhit.ddr = mhit.ddl;
708 mhit.erddl = mhit.erddl/10.;
709 mhit.erddr = mhit.erddl;
710
711 mhit.lr = 2;
712 mhit.stat = 0;
713 mhit.stat = mhit.stat |= 1048576;
714 mhit.stat = mhit.stat |= 2097152;
715 mhit.stat = mhit.stat |= 4194304;
716 mhit.stat = mhit.stat |= 1073741824;
717 MdcRecWirhitCol::getMdcRecWirhitCol()->push_back(mhit);
718
719 if (b_tuple) {
720 t10_tdc = mhit.tdc;
721 t10_adc = mhit.adc;
722 t10_drift = mhit.ddl;
723 t10_dDrift = mhit.erddl;
724 t10_lyrId = layerId;
725 t10_localId = wireId;
726 m_tuple10->write();
727 }
728 }
729
730 unsigned nT0Reset = 0;
731
732 clear();
733 if (mdcDigiVec.size() > 2000){
734 log << MSG::WARNING << " Too many hits in MdcDigiVec" << endreq;
735 return StatusCode::SUCCESS;
736 }
737 int counter=0;
738 _cdc->update(b_doMCAnalysis);
739
740 unsigned mask = 0;
741 if (! b_useAllHits) mask = WireHitFindingValid;
742 const AList<TMDCWireHit> & axialHits = _cdc->axialHits(mask);
743 const AList<TMDCWireHit> & stereoHits = _cdc->stereoHits(mask);
744 const AList<TMDCWireHit> & allHits = _cdc->hits(mask);
745 AList<TMLink> _allHits[3];
748 _allHits[2].append(_allHits[0]);
749 _allHits[2].append(_allHits[1]);
750
751
752 SmartDataPtr<RecMdcTrackCol> mdcTracks(eventSvc(),EventModel::Recon::RecMdcTrackCol);
753 if( ! mdcTracks )
754 {
755 log << MSG::ERROR << "Unable to retrieve RecMdcTrackCol" << endreq;
756 return StatusCode::FAILURE;
757 } else {
758 log << MSG::DEBUG << "RecMdcTrackCol retrieved of size "<< mdcTracks->size() << endreq;
759 int ntrk=0;
760 for(RecMdcTrackCol::iterator it=mdcTracks->begin(); it!=mdcTracks->end(); it++)
761 {ntrk++;
762 TRunge *r = new TRunge(**it);
763 TTrack *t1 = new TTrack(*r);
764 HitRefVec gothits = (*it)->getVecHits();
765 HitRefVec::iterator it_gothit = gothits.begin();
766 unsigned stat=(*it)->stat();
767 int nhit=0;
768 for( ; it_gothit != gothits.end(); it_gothit++){
769 for(int i=0;i<_allHits[2].length();i++){
770 int lyrraw=_allHits[2][i]->wire()->layerId();
771 int wireraw=_allHits[2][i]->wire()->localId();
772 int g_layer = MdcID::layer((*it_gothit)->getMdcId());
773 int g_wire = MdcID::wire((*it_gothit)->getMdcId());
774 if(lyrraw==g_layer&&g_wire==wireraw){
775 nhit++;
776 t1->append(*_allHits[2][i]);
777 }
778 }
779 }
780 TRunge *rr = new TRunge(*t1);
781 TRunge *tt = new TRunge(*t1);
782 int err=_rkfitter.fit(*rr);
783 int nhits=rr->links().length();
784 int ndrop=0;
785 int nmax=0;
786 if(nhits<=10)nmax=0;
787 if(nhits>10)nmax=(int)nhit*0.3;
788 for(int ii=0;ii<nmax;ii++){
789
790 ndrop=rr->DropWorst();
791 if(ndrop)err=_rkfitter.fit(*rr);
792 if(err)break;
793 }
794 if(err==-2) counter++;
795 if(m_CalibFlag==1) {//This is for Calibration
796 tt->removeLinks();
797 tt->append(rr->links());
798 for(int i=0;i<43;i++){
799 err= _rkfitter.fit(*tt,0,i);
800 }
801 rr->removeLinks();
802 rr->append(tt->links());
803 TTrack *t =new TTrack(*rr);
804 if(err==0){
805 rktracks.append(*t);
806 t->setFinderType(100+stat);
807 }
808 }
809 if(m_CalibFlag==0){
810 TTrack *t =new TTrack(*rr);
811 if(err==0){
812
813 t->setFinderType(100+stat);
814 rktracks.append(*t);
815 }
816 }
817 delete r ;
818 delete t1;
819 delete rr;
820 delete tt;
821 }
822 }
823
824 _trackManager.append(rktracks);
825 IDataManagerSvc *dataManSvc;
826 DataObject *aTrackCol;
827 DataObject *aRecHitCol;
829 dataManSvc = dynamic_cast<IDataManagerSvc*> (eventSvc().get());
830 eventSvc()->findObject("/Event/Recon/RecMdcTrackCol",aTrackCol);
831 if(aTrackCol != NULL) {
832 dataManSvc->clearSubTree("/Event/Recon/RecMdcTrackCol");
833 eventSvc()->unregisterObject("/Event/Recon/RecMdcTrackCol");
834 }
835 eventSvc()->findObject("/Event/Recon/RecMdcHitCol",aRecHitCol);
836 if(aRecHitCol != NULL) {
837 dataManSvc->clearSubTree("/Event/Recon/RecMdcHitCol");
838 eventSvc()->unregisterObject("/Event/Recon/RecMdcHitCol");
839 }
840 }
841 DataObject *aReconEvent;
842 eventSvc()->findObject("/Event/Recon",aReconEvent);
843 if(!aReconEvent) {
844 ReconEvent* recevt = new ReconEvent;
845 StatusCode sc = eventSvc()->registerObject("/Event/Recon",recevt );
846 if(sc!=StatusCode::SUCCESS) {
847 log << MSG::FATAL << "Could not register ReconEvent" <<endreq;
848 return( StatusCode::FAILURE);
849 }
850 }
851 RecMdcTrackCol* trkcol;
852 eventSvc()->findObject("/Event/Recon/RecMdcTrackCol",aTrackCol);
853 if (aTrackCol) {
854 trkcol = dynamic_cast<RecMdcTrackCol*> (aTrackCol);
855 }else{
856 trkcol= new RecMdcTrackCol;
857 sc = eventSvc()->registerObject(EventModel::Recon::RecMdcTrackCol, trkcol);
858 if(!sc.isSuccess()) {
859 log << MSG::FATAL << " Could not register RecMdcTrack collection" <<endreq;
860 return StatusCode::FAILURE;
861 }
862 }
863 RecMdcHitCol* hitcol;
864 eventSvc()->findObject("/Event/Recon/RecMdcHitCol",aRecHitCol);
865 if (aRecHitCol) {
866 hitcol = dynamic_cast<RecMdcHitCol*> (aRecHitCol);
867 }else{
868 hitcol= new RecMdcHitCol;
869 sc = eventSvc()->registerObject(EventModel::Recon::RecMdcHitCol, hitcol);
870 if(!sc.isSuccess()) {
871 log << MSG::FATAL << " Could not register RecMdcHit collection" <<endreq;
872 return StatusCode::FAILURE;
873 }
874 }
875 if (b_tuple) FillTuple();
876
877 int t_tkStat = 2;
878 if (!b_doConformalFinder && b_doCurlFinder) t_tkStat = 3;//FIXME
879 StatusCode scTds = _trackManager.makeTds(trkcol, hitcol, t_tkStat,b_RungeKuttaCorrection,m_CalibFlag);
882 if (b_tuple) t3_t0Rec = _trackManager.paraT0();
883 }
884 for (unsigned i = 0; i < 3; i++) {
885 if (i == 2)
886 HepAListDeleteAll(_allHits[i]);
887 else
888 _allHits[i].removeAll();
889 }
890
891 rktracks.removeAll();
892 }
893 //...For debug...
894 /*if (b_debugLevel) {
895 std::cout << "TrkReco ... ev# " << _nEvents << " processed,"
896 << " #tracks found=" << _trackManager.allTracks().length()
897 << ", #good tracks=" << _trackManager.tracks().length()
898 << ", #2D tracks=" << _trackManager.tracks2D().length()
899 << std::endl;
900 if (b_debugLevel > 1) _trackManager.dump("eventSummary hits");
901 else _trackManager.dump("eventSummary");
902 }*/
903
904 //TUpdater::update();
905 return StatusCode::SUCCESS;
906}
std::vector< MdcDigi * > MdcDigiVec
ObjectVector< RecMdcHit > RecMdcHitCol
Definition: RecMdcHit.h:99
ObjectVector< RecMdcTrack > RecMdcTrackCol
Definition: RecMdcTrack.h:79
SmartRefVector< RecMdcHit > HitRefVec
Definition: RecMdcTrack.h:22
IMessageSvc * msgSvc()
const HepPoint3D ORIGIN
Constants.
Definition: TMDCUtil.cxx:47
#define WireHitFindingValid
Definition: TMDCWireHit.h:28
#define NULL
TTree * t
Definition: binning.cxx:23
void start(void)
Definition: BesTimer.cxx:27
double getSigma(int layid, int lr, double dist, double entrance=0.0, double tanlam=0.0, double z=0.0, double Q=1000.0) const
double getT0(int layid, int cellid) const
double driftTimeToDist(double drifttime, int layid, int cellid, int lr, double entrance=0.0) const
double getTimeWalk(int layid, double Q) const
double Radius(void) const
Definition: MdcGeoLayer.h:160
MdcGeoLayer * Lyr(void) const
Definition: MdcGeoWire.h:140
const MdcGeoWire *const Wire(unsigned id)
Definition: MdcGeomSvc.cxx:768
static int layer(const Identifier &id)
Values of different levels (failure returns 0)
Definition: MdcID.cxx:49
static int wire(const Identifier &id)
Definition: MdcID.cxx:54
static vector< MdcRec_wirhit > * getMdcRecWirhitCol(void)
Definition: MdcTables.cxx:169
unsigned timechannel
Definition: MdcTables.h:341
const MdcGeoWire * geo
Definition: MdcTables.h:335
MdcDigiVec & getMdcDigiVec(uint32_t control=0)
static double MdcTime(int timeChannel)
Definition: RawDataUtil.h:8
static void conformalTransformationDriftCircle(const HepPoint3D &center, const AList< TMDCWireHit > &hits, AList< TMLink > &links)
transforms drift circle of hits into a conformal plane. transformed positions( x0,...
A class to find tracks with the conformal method.
int doit(const AList< TMDCWireHit > &axialHits, const AList< TMDCWireHit > &stereoHits, AList< TTrack > &tracks, AList< TTrack > &tracks2D)
main function
virtual int doit(const AList< TMDCWireHit > &axialHits, const AList< TMDCWireHit > &stereoHits, AList< TTrack > &tracks3D, AList< TTrack > &tracks2D)=0
finds tracks. 'hits' are used to reconstruct. 'tracks' can be used for both inputs and outputs....
void update(bool mcAnalysis=true)
updates TMDC information. clear() is called in this function.
Definition: TMDC.cxx:317
const AList< TMDCWireHit > & hits(unsigned mask=0) const
returns a list of TMDCWireHit. 'update()' must be called before calling this function.
Definition: TMDC.cxx:534
const AList< TMDCWireHit > & axialHits(unsigned mask=0) const
returns a list of axial hits. 'update()' must be called before calling this function.
Definition: TMDC.cxx:518
const AList< TMDCWireHit > & stereoHits(unsigned mask=0) const
returns a list of stereo hits. 'update()' must be called before calling this function.
Definition: TMDC.cxx:526
virtual int fit(TTrackBase &) const
A class to represent a track in tracking.
Definition: TRunge.h:65
virtual void removeLinks(void)
Definition: TTrackBase.cxx:189
virtual int DropWorst()
Definition: TTrackBase.cxx:212
void append(TMLink &)
appends a TMLink.
Definition: TTrackBase.cxx:362
const AList< TMLink > & links(unsigned mask=0) const
returns a list of masked TMLinks assigned to this track. 'mask' will be applied if mask is not 0.
Definition: TTrackBase.cxx:297
void append2D(AList< TTrack > &list)
void merge(void)
void append(AList< TTrack > &list)
appends (2D) tracks. 'list' will be cleaned up.
float paraT0(void) const
StatusCode makeTds(RecMdcTrackCol *trackList, RecMdcHitCol *hitList, int tkStat=1, int runge=0, int cal=0)
stores track info. into TDS. by Zang Shilei
const AList< TTrack > & tracks(void) const
returns a list of reconstructed tracks.
void mask(void) const
masks hits out which are in tail of curly tracks.
void sett0bes(double t0)
void maskCurlHits(const AList< TMDCWireHit > &axial, const AList< TMDCWireHit > &stereo, const AList< TTrack > &tracks) const
masks hits on found curl tracks.
StatusCode determineT0(unsigned level, unsigned nMaxTracks)
determines T0 and refit all tracks.
void salvage(const AList< TMDCWireHit > &) const
salvages remaining hits.
A class to represent a track in tracking.
Definition: TTrack.h:129
int b_doSalvage
Definition: TrkReco.h:189
int b_useAllHits
Definition: TrkReco.h:146
int b_doT0Reset
Definition: TrkReco.h:147
int b_doT0Determination
Definition: TrkReco.h:191
bool m_keepUnmatch
Definition: TrkReco.h:134
bool m_combineTracking
Definition: TrkReco.h:132
int useESTime
Definition: TrkReco.h:142
int m_CalibFlag
Definition: TrkReco.h:184
int b_conformalFinder
Definition: TrkReco.h:157
int b_tuple
Definition: TrkReco.h:128
bool m_dropHot
Definition: TrkReco.h:131
const AList< TTrack > & tracks(void) const
returns a list of reconstructed tracks.
Definition: TrkReco.h:332
void clear(void)
clears all TMDC information.
Definition: TrkReco.cxx:956
int b_doMCAnalysis
Definition: TrkReco.h:149
int b_goodTrk
Definition: TrkReco.h:129
int b_nTracksForT0
Definition: TrkReco.h:192
bool m_keepBadTdc
Definition: TrkReco.h:133
int b_nT0ResetMax
Definition: TrkReco.h:148
int b_RungeKuttaCorrection
Definition: TrkReco.h:135
int b_timeTest
Definition: TrkReco.h:130
_EXTERN_ std::string RecMdcTrackCol
Definition: EventModel.h:86
_EXTERN_ std::string RecMdcHitCol
Definition: EventModel.h:85
int nhits

◆ fastClear()

void TrkReco::fastClear ( void  )

clears TMDC information.

Definition at line 970 of file TrkReco.cxx.

970 {
971 clear();
972}

◆ finalize()

StatusCode TrkReco::finalize ( )

Definition at line 284 of file TrkReco.cxx.

284 {
285
286 if (b_timeTest && b_tuple) m_timersvc->print();
287
288 //...Clear TrkReco objects...
289 if (_cdc) _cdc->fastClear();
290 if (b_doConformalFinder && _confFinder) _confFinder->clear();
291 if (b_doCurlFinder && _curlFinder) _curlFinder->clear();
292
293 //...Summary...
294// dump("summary");
295
296 //...Delete TrkReco objects...
297 if (_confFinder) delete _confFinder;
298 if (_curlFinder) delete _curlFinder;
299
300 return StatusCode::SUCCESS;
301}
virtual void print(void)=0
void fastClear(void)
clears TMDC information.
Definition: TMDC.cxx:298

◆ initialize()

StatusCode TrkReco::initialize ( )

Get RawDataProviderSvc

Get MdcGeomSvc

Get MdcCalibFunSvc

Initialize NTuple

Definition at line 99 of file TrkReco.cxx.

99 {
100 MsgStream log(msgSvc(), name());
101 log << MSG::INFO << "in initialize()" << endreq;
102
103 StatusCode sc;
104
105 /// Get RawDataProviderSvc
106 IRawDataProviderSvc* irawDataProviderSvc;
107 sc = service ("RawDataProviderSvc", irawDataProviderSvc);
108 _rawDataProviderSvc = dynamic_cast<RawDataProviderSvc*> (irawDataProviderSvc);
109 if ( sc.isFailure() ){
110 log << MSG::FATAL << "Could not load RawDataProviderSvc!" << endreq;
111 return StatusCode::FAILURE;
112 }
113
114 /// Get MdcGeomSvc
115 // IMdcGeomSvc* imdcGeomSvc;
116 // sc = service("MdcGeomSvc", imdcGeomSvc);
117 // _mdcGeomSvc = dynamic_cast<MdcGeomSvc*> (imdcGeomSvc);
118 // if (sc.isFailure()) {
119 // return( StatusCode::FAILURE);
120 // }
121
122 /// Get MdcCalibFunSvc
123 IMdcCalibFunSvc* imdcCalibSvc;
124 sc = service ("MdcCalibFunSvc",imdcCalibSvc);
125 _mdcCalibFunSvc = dynamic_cast<MdcCalibFunSvc*> (imdcCalibSvc);
126 if ( sc.isFailure() ){
127 log << MSG::FATAL << "Could not load MdcCalibFunSvc!" << endreq;
128 }
129
130 /// Initialize NTuple
131 if (b_tuple) InitTuple();
132
133#ifdef TRKRECO_DEBUG
134 b_debugLevel = 2;
135#endif
136
137 //...Create TMDC...
138// _cdc = cdcInit();
139
140 //...TrkReco...
142
143 //...Create rphi finder...
144/* _perfectFinder = new TPerfectFinder(b_perfectFitting,
145 b_conformalMaxSigma,
146 b_conformalStereoMaxSigma,
147 b_conformalFittingCorrections);
148*/
149 if ((! _confFinder) && (b_conformalFinder == 0)) {
150 _confFinder = new TConformalFinder0(b_conformalMaxSigma,
160 }
161 else if (! _confFinder) {
177 }
178 _confFinder->debugLevel(b_debugLevel);
180
181 //...Salvage flag is ignored in new conf. finder...
182 if (b_doSalvage == 2) _confFinder->doSalvage(true);
183
184 //...Create curl finder...
185 if (! _curlFinder)
186 _curlFinder = new TCurlFinder((unsigned)min_segment,
187 (unsigned)min_salvage,
190 (unsigned)min_sequence,
191 (unsigned)min_fullwire,
200 (unsigned)determine_one_track,
205 (unsigned)stereo_2dfind,
206 (unsigned)merge_exe,
217 z_cut,
219 (unsigned)svd_reconstruction,
221 (unsigned)on_correction,
222 (unsigned)output_2dtracks,
223 (unsigned)curl_version,
224 //jialk
231 _curlFinder->debugLevel(b_debugLevel);
232
233 //...Track manager setup...
234 _trackManager.maxMomentum(b_momentumCut);
235 _trackManager.debugLevel(b_debugLevel);
236 _trackManager.fittingFlag(b_fittingFlag);
237
238 //...Initialize...
239//zsl TUpdater::initialize();
240
241 //...For debug...
242// dump("parameter");
243
245
246 if (b_timeTest && b_tuple) {
247 StatusCode sc = service( "BesTimerSvc", m_timersvc);
248 if( sc.isFailure() ) {
249 log << MSG::WARNING << " Unable to locate BesTimerSvc" << endreq;
250 return StatusCode::FAILURE;
251 }
252 m_timer[1] = m_timersvc->addItem("Execution");
253 m_timer[1]->propName("nExecution");
254 }
255
256 return StatusCode::SUCCESS;
257}
int TrkRecoTest
Definition: TrkReco.cxx:77
void propName(std::string name)
Definition: BesTimer.h:34
virtual BesTimer * addItem(const std::string &name)=0
A class to find tracks with the conformal method.
virtual int debugLevel(void) const
returns debug level.
Definition: TFinderBase.h:90
virtual bool doStereo(bool)
sets flag to reconstruct 3D.
Definition: TFinderBase.h:102
virtual bool doSalvage(bool)
sets flag to salvage hits.
Definition: TFinderBase.h:108
int debugLevel(void) const
returns/sets debug level.
double maxMomentum(double)
sets the max. momentum.
void fittingFlag(unsigned)
sets fitting flag.
int b_conformalSalvageLoadWidth
Definition: TrkReco.h:168
float b_conformalStereoZ3
Definition: TrkReco.h:179
double selector_replace_dz
Definition: TrkReco.h:218
double range_for_stereo3
Definition: TrkReco.h:227
double good_distance_for_salvage
Definition: TrkReco.h:203
int b_doConformalFastFinder
Definition: TrkReco.h:159
double range_for_stereo_last2d_search
Definition: TrkReco.h:210
int on_correction
Definition: TrkReco.h:235
int b_conformalMinNCores
Definition: TrkReco.h:165
int b_conformalFittingFlag
Definition: TrkReco.h:162
double range_for_stereo4
Definition: TrkReco.h:228
int b_doConformalFinderStereo
Definition: TrkReco.h:176
double MIN_RADIUS_OF_STRANGE_TRACK
Definition: TrkReco.h:244
int superlayer_for_stereo_search
Definition: TrkReco.h:208
int output_2dtracks
Definition: TrkReco.h:236
double z_diff_for_last_attend
Definition: TrkReco.h:232
int min_salvage
Definition: TrkReco.h:201
double range_for_stereo1
Definition: TrkReco.h:225
int stereo_2dfind
Definition: TrkReco.h:219
float b_conformalStereoSzLinkDistance
Definition: TrkReco.h:173
int b_conformalFittingCorrections
Definition: TrkReco.h:183
double range_for_stereo6
Definition: TrkReco.h:230
int curl_version
Definition: TrkReco.h:237
double bad_distance_for_salvage
Definition: TrkReco.h:202
int b_conformalMinNLinksForSegment
Definition: TrkReco.h:164
double range_for_stereo_search
Definition: TrkReco.h:207
float b_conformalStereoZ4
Definition: TrkReco.h:180
double trace3d_distance
Definition: TrkReco.h:213
double merge_ratio
Definition: TrkReco.h:221
float b_salvageLevel
Definition: TrkReco.h:167
double range_for_stereo2
Definition: TrkReco.h:226
double selector_max_sigma
Definition: TrkReco.h:216
double minimum_2DTrackLength
Definition: TrkReco.h:241
double merge_z_diff
Definition: TrkReco.h:222
float b_conformalMaxSigma
Definition: TrkReco.h:163
double minimum_closeHitsLength
Definition: TrkReco.h:243
float b_conformalStereoChisq3
Definition: TrkReco.h:181
double ULTIMATE_MIN_RADIUS_OF_STRANGE_TRACK
Definition: TrkReco.h:245
double minimum_seedLength
Definition: TrkReco.h:240
double ratio_used_wire
Definition: TrkReco.h:224
int min_sequence
Definition: TrkReco.h:204
int b_conformalStereoMode
Definition: TrkReco.h:169
double selector_strange_pz
Definition: TrkReco.h:217
int b_conformalMinNSegments
Definition: TrkReco.h:166
int min_fullwire
Definition: TrkReco.h:205
double trace2d_first_distance
Definition: TrkReco.h:212
double range_for_stereo5
Definition: TrkReco.h:229
int b_test
Definition: TrkReco.h:196
double mask_distance
Definition: TrkReco.h:223
int b_debugLevel
Definition: TrkReco.h:145
double min_svd_electrons
Definition: TrkReco.h:234
int b_conformalStereoLoadWidth
Definition: TrkReco.h:170
float b_conformalStereoSzSegmentDistance
Definition: TrkReco.h:172
int min_segment
Definition: TrkReco.h:200
double minimum_3DTrackLength
Definition: TrkReco.h:242
int b_doConformalSlowFinder
Definition: TrkReco.h:160
double trace2d_distance
Definition: TrkReco.h:211
float b_conformalFraction
Definition: TrkReco.h:178
double b_momentumCut
Definition: TrkReco.h:187
int svd_reconstruction
Definition: TrkReco.h:233
double range_for_axial_last2d_search
Definition: TrkReco.h:209
float b_conformalStereoMaxSigma
Definition: TrkReco.h:171
int b_conformalPerfectSegmentFinding
Definition: TrkReco.h:161
double range_for_axial_search
Definition: TrkReco.h:206
float b_conformalStereoChisq4
Definition: TrkReco.h:182
int b_fittingFlag
Definition: TrkReco.h:188
double selector_max_impact
Definition: TrkReco.h:215
int determine_one_track
Definition: TrkReco.h:214
double z_cut
Definition: TrkReco.h:231
int merge_exe
Definition: TrkReco.h:220
int b_doConformalFinderCosmic
Definition: TrkReco.h:177

◆ trackManager()

const TTrackManager & TrkReco::trackManager ( void  ) const
inline

returns a pointer to TTrackManager.

Definition at line 346 of file TrkReco.h.

346 {
347 return _trackManager;
348}

◆ tracks()

const AList< TTrack > & TrkReco::tracks ( void  ) const
inline

returns a list of reconstructed tracks.

Definition at line 332 of file TrkReco.h.

332 {
333 return _trackManager.tracksFinal();
334}
const AList< TTrack > & tracksFinal(void) const
returns a list of tracks writen to MdcRec_trk.

Referenced by execute().

Member Data Documentation

◆ _cdcVersion

std::string TrkReco::_cdcVersion

Definition at line 138 of file TrkReco.h.

◆ b_associateSigma

float TrkReco::b_associateSigma

Definition at line 195 of file TrkReco.h.

◆ b_cdcVersion

float TrkReco::b_cdcVersion

Definition at line 137 of file TrkReco.h.

◆ b_conformalFinder

int TrkReco::b_conformalFinder

Definition at line 157 of file TrkReco.h.

Referenced by execute(), and initialize().

◆ b_conformalFittingCorrections

int TrkReco::b_conformalFittingCorrections

Definition at line 183 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalFittingFlag

int TrkReco::b_conformalFittingFlag

Definition at line 162 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalFraction

float TrkReco::b_conformalFraction

Definition at line 178 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalMaxSigma

float TrkReco::b_conformalMaxSigma

Definition at line 163 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalMinNCores

int TrkReco::b_conformalMinNCores

Definition at line 165 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalMinNLinksForSegment

int TrkReco::b_conformalMinNLinksForSegment

Definition at line 164 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalMinNSegments

int TrkReco::b_conformalMinNSegments

Definition at line 166 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalPerfectSegmentFinding

int TrkReco::b_conformalPerfectSegmentFinding

Definition at line 161 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalSalvageLoadWidth

int TrkReco::b_conformalSalvageLoadWidth

Definition at line 168 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalStereoChisq3

float TrkReco::b_conformalStereoChisq3

Definition at line 181 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalStereoChisq4

float TrkReco::b_conformalStereoChisq4

Definition at line 182 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalStereoLoadWidth

int TrkReco::b_conformalStereoLoadWidth

Definition at line 170 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalStereoMaxSigma

float TrkReco::b_conformalStereoMaxSigma

Definition at line 171 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalStereoMode

int TrkReco::b_conformalStereoMode

Definition at line 169 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalStereoSzLinkDistance

float TrkReco::b_conformalStereoSzLinkDistance

Definition at line 173 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalStereoSzSegmentDistance

float TrkReco::b_conformalStereoSzSegmentDistance

Definition at line 172 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalStereoZ3

float TrkReco::b_conformalStereoZ3

Definition at line 179 of file TrkReco.h.

Referenced by initialize().

◆ b_conformalStereoZ4

float TrkReco::b_conformalStereoZ4

Definition at line 180 of file TrkReco.h.

Referenced by initialize().

◆ b_debugLevel

int TrkReco::b_debugLevel

Definition at line 145 of file TrkReco.h.

Referenced by initialize().

◆ b_doAssociation

int TrkReco::b_doAssociation

Definition at line 194 of file TrkReco.h.

◆ b_doConformalFastFinder

int TrkReco::b_doConformalFastFinder

Definition at line 159 of file TrkReco.h.

Referenced by initialize().

◆ b_doConformalFinder

int TrkReco::b_doConformalFinder

Definition at line 158 of file TrkReco.h.

Referenced by clear(), execute(), and finalize().

◆ b_doConformalFinderCosmic

int TrkReco::b_doConformalFinderCosmic

Definition at line 177 of file TrkReco.h.

Referenced by initialize().

◆ b_doConformalFinderStereo

int TrkReco::b_doConformalFinderStereo

Definition at line 176 of file TrkReco.h.

Referenced by initialize().

◆ b_doConformalSlowFinder

int TrkReco::b_doConformalSlowFinder

Definition at line 160 of file TrkReco.h.

Referenced by initialize().

◆ b_doCurlFinder

int TrkReco::b_doCurlFinder

Definition at line 199 of file TrkReco.h.

Referenced by clear(), execute(), and finalize().

◆ b_doMCAnalysis

int TrkReco::b_doMCAnalysis

Definition at line 149 of file TrkReco.h.

Referenced by execute().

◆ b_doMerge

int TrkReco::b_doMerge

Definition at line 190 of file TrkReco.h.

◆ b_doPerfectFinder

int TrkReco::b_doPerfectFinder

Definition at line 153 of file TrkReco.h.

Referenced by clear(), and execute().

◆ b_doSalvage

int TrkReco::b_doSalvage

Definition at line 189 of file TrkReco.h.

Referenced by execute(), and initialize().

◆ b_doT0Determination

int TrkReco::b_doT0Determination

Definition at line 191 of file TrkReco.h.

Referenced by execute().

◆ b_doT0Reset

int TrkReco::b_doT0Reset

Definition at line 147 of file TrkReco.h.

Referenced by execute().

◆ b_fittingFlag

int TrkReco::b_fittingFlag

Definition at line 188 of file TrkReco.h.

Referenced by initialize().

◆ b_fudgeFactor

float TrkReco::b_fudgeFactor

Definition at line 139 of file TrkReco.h.

◆ b_goodTrk

int TrkReco::b_goodTrk

Definition at line 129 of file TrkReco.h.

Referenced by execute().

◆ b_helixFitterChisqMax

float TrkReco::b_helixFitterChisqMax

Definition at line 150 of file TrkReco.h.

Referenced by initialize(), and TrkReco().

◆ b_mcHit

int TrkReco::b_mcHit

Definition at line 127 of file TrkReco.h.

◆ b_mcPar

int TrkReco::b_mcPar

Definition at line 126 of file TrkReco.h.

◆ b_momentumCut

double TrkReco::b_momentumCut

Definition at line 187 of file TrkReco.h.

Referenced by initialize().

◆ b_nT0ResetMax

int TrkReco::b_nT0ResetMax

Definition at line 148 of file TrkReco.h.

Referenced by execute().

◆ b_nTracksForT0

int TrkReco::b_nTracksForT0

Definition at line 192 of file TrkReco.h.

Referenced by execute().

◆ b_perfectFitting

int TrkReco::b_perfectFitting

Definition at line 154 of file TrkReco.h.

◆ b_RungeKuttaCorrection

int TrkReco::b_RungeKuttaCorrection

Definition at line 135 of file TrkReco.h.

Referenced by execute().

◆ b_salvageLevel

float TrkReco::b_salvageLevel

Definition at line 167 of file TrkReco.h.

Referenced by initialize().

◆ b_sortMode

int TrkReco::b_sortMode

Definition at line 193 of file TrkReco.h.

◆ b_test

int TrkReco::b_test

Definition at line 196 of file TrkReco.h.

Referenced by initialize().

◆ b_timeTest

int TrkReco::b_timeTest

Definition at line 130 of file TrkReco.h.

Referenced by execute(), finalize(), and initialize().

◆ b_tuple

int TrkReco::b_tuple

Definition at line 128 of file TrkReco.h.

Referenced by execute(), finalize(), and initialize().

◆ b_useAllHits

int TrkReco::b_useAllHits

Definition at line 146 of file TrkReco.h.

Referenced by execute().

◆ bad_distance_for_salvage

double TrkReco::bad_distance_for_salvage

Definition at line 202 of file TrkReco.h.

Referenced by initialize().

◆ curl_version

int TrkReco::curl_version

Definition at line 237 of file TrkReco.h.

Referenced by initialize().

◆ determine_one_track

int TrkReco::determine_one_track

Definition at line 214 of file TrkReco.h.

Referenced by initialize().

◆ good_distance_for_salvage

double TrkReco::good_distance_for_salvage

Definition at line 203 of file TrkReco.h.

Referenced by initialize().

◆ m_CalibFlag

int TrkReco::m_CalibFlag

Definition at line 184 of file TrkReco.h.

Referenced by execute().

◆ m_combineTracking

bool TrkReco::m_combineTracking

Definition at line 132 of file TrkReco.h.

Referenced by execute().

◆ m_dropHot

bool TrkReco::m_dropHot

Definition at line 131 of file TrkReco.h.

Referenced by execute().

◆ m_keepBadTdc

bool TrkReco::m_keepBadTdc

Definition at line 133 of file TrkReco.h.

Referenced by execute().

◆ m_keepUnmatch

bool TrkReco::m_keepUnmatch

Definition at line 134 of file TrkReco.h.

Referenced by execute().

◆ mask_distance

double TrkReco::mask_distance

Definition at line 223 of file TrkReco.h.

Referenced by initialize().

◆ merge_exe

int TrkReco::merge_exe

Definition at line 220 of file TrkReco.h.

Referenced by initialize().

◆ merge_ratio

double TrkReco::merge_ratio

Definition at line 221 of file TrkReco.h.

Referenced by initialize().

◆ merge_z_diff

double TrkReco::merge_z_diff

Definition at line 222 of file TrkReco.h.

Referenced by initialize().

◆ min_fullwire

int TrkReco::min_fullwire

Definition at line 205 of file TrkReco.h.

Referenced by initialize().

◆ MIN_RADIUS_OF_STRANGE_TRACK

double TrkReco::MIN_RADIUS_OF_STRANGE_TRACK

Definition at line 244 of file TrkReco.h.

Referenced by initialize().

◆ min_salvage

int TrkReco::min_salvage

Definition at line 201 of file TrkReco.h.

Referenced by initialize().

◆ min_segment

int TrkReco::min_segment

Definition at line 200 of file TrkReco.h.

Referenced by initialize().

◆ min_sequence

int TrkReco::min_sequence

Definition at line 204 of file TrkReco.h.

Referenced by initialize().

◆ min_svd_electrons

double TrkReco::min_svd_electrons

Definition at line 234 of file TrkReco.h.

Referenced by initialize().

◆ minimum_2DTrackLength

double TrkReco::minimum_2DTrackLength

Definition at line 241 of file TrkReco.h.

Referenced by initialize().

◆ minimum_3DTrackLength

double TrkReco::minimum_3DTrackLength

Definition at line 242 of file TrkReco.h.

Referenced by initialize().

◆ minimum_closeHitsLength

double TrkReco::minimum_closeHitsLength

Definition at line 243 of file TrkReco.h.

Referenced by initialize().

◆ minimum_seedLength

double TrkReco::minimum_seedLength

Definition at line 240 of file TrkReco.h.

Referenced by initialize().

◆ on_correction

int TrkReco::on_correction

Definition at line 235 of file TrkReco.h.

Referenced by initialize().

◆ output_2dtracks

int TrkReco::output_2dtracks

Definition at line 236 of file TrkReco.h.

Referenced by initialize().

◆ range_for_axial_last2d_search

double TrkReco::range_for_axial_last2d_search

Definition at line 209 of file TrkReco.h.

Referenced by initialize().

◆ range_for_axial_search

double TrkReco::range_for_axial_search

Definition at line 206 of file TrkReco.h.

Referenced by initialize().

◆ range_for_stereo1

double TrkReco::range_for_stereo1

Definition at line 225 of file TrkReco.h.

Referenced by initialize().

◆ range_for_stereo2

double TrkReco::range_for_stereo2

Definition at line 226 of file TrkReco.h.

Referenced by initialize().

◆ range_for_stereo3

double TrkReco::range_for_stereo3

Definition at line 227 of file TrkReco.h.

Referenced by initialize().

◆ range_for_stereo4

double TrkReco::range_for_stereo4

Definition at line 228 of file TrkReco.h.

Referenced by initialize().

◆ range_for_stereo5

double TrkReco::range_for_stereo5

Definition at line 229 of file TrkReco.h.

Referenced by initialize().

◆ range_for_stereo6

double TrkReco::range_for_stereo6

Definition at line 230 of file TrkReco.h.

Referenced by initialize().

◆ range_for_stereo_last2d_search

double TrkReco::range_for_stereo_last2d_search

Definition at line 210 of file TrkReco.h.

Referenced by initialize().

◆ range_for_stereo_search

double TrkReco::range_for_stereo_search

Definition at line 207 of file TrkReco.h.

Referenced by initialize().

◆ ratio_used_wire

double TrkReco::ratio_used_wire

Definition at line 224 of file TrkReco.h.

Referenced by initialize().

◆ selector_max_impact

double TrkReco::selector_max_impact

Definition at line 215 of file TrkReco.h.

Referenced by initialize().

◆ selector_max_sigma

double TrkReco::selector_max_sigma

Definition at line 216 of file TrkReco.h.

Referenced by initialize().

◆ selector_replace_dz

double TrkReco::selector_replace_dz

Definition at line 218 of file TrkReco.h.

Referenced by initialize().

◆ selector_strange_pz

double TrkReco::selector_strange_pz

Definition at line 217 of file TrkReco.h.

Referenced by initialize().

◆ stereo_2dfind

int TrkReco::stereo_2dfind

Definition at line 219 of file TrkReco.h.

Referenced by initialize().

◆ superlayer_for_stereo_search

int TrkReco::superlayer_for_stereo_search

Definition at line 208 of file TrkReco.h.

Referenced by initialize().

◆ svd_reconstruction

int TrkReco::svd_reconstruction

Definition at line 233 of file TrkReco.h.

Referenced by initialize().

◆ trace2d_distance

double TrkReco::trace2d_distance

Definition at line 211 of file TrkReco.h.

Referenced by initialize().

◆ trace2d_first_distance

double TrkReco::trace2d_first_distance

Definition at line 212 of file TrkReco.h.

Referenced by initialize().

◆ trace3d_distance

double TrkReco::trace3d_distance

Definition at line 213 of file TrkReco.h.

Referenced by initialize().

◆ ULTIMATE_MIN_RADIUS_OF_STRANGE_TRACK

double TrkReco::ULTIMATE_MIN_RADIUS_OF_STRANGE_TRACK

Definition at line 245 of file TrkReco.h.

Referenced by initialize().

◆ useESTime

int TrkReco::useESTime

Definition at line 142 of file TrkReco.h.

Referenced by execute().

◆ z_cut

double TrkReco::z_cut

Definition at line 231 of file TrkReco.h.

Referenced by initialize().

◆ z_diff_for_last_attend

double TrkReco::z_diff_for_last_attend

Definition at line 232 of file TrkReco.h.

Referenced by initialize().


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