Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

TrkReco Class Reference

A tracking module. More...

#include <TrkReco.h>

List of all members.

Public Member Functions

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

Public Attributes

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

Private Member Functions

TMDCcdcInit (void)
TMDCcdcInit (void)
void FillTuple (void)
void FillTuple (void)
void initPara (void)
 initiate Parameters
void initPara (void)
 initiate Parameters
void InitTuple (void)
 initiate and fill Tuple
void InitTuple (void)
 initiate and fill Tuple
double maxdDistance (TMLink *) const
 cal maxdistance temporary in conformal plane
double maxdDistance (TMLink *) const
 cal maxdistance temporary in conformal plane
bool mcEvent (void) const
 returns true if an event is MC.
bool mcEvent (void) const
 returns true if an event is MC.
void mcInformation (void)
 creates MC info. of reconstructed tracks.
void mcInformation (void)
 creates MC info. of reconstructed tracks.

Private Attributes

TMDC_cdc
TMDC_cdc
TFinderBase_confFinder
TFinderBase_confFinder
TCurlFinder_curlFinder
TCurlFinder_curlFinder
AList< TTrackMC_mcTracks
AList< TTrackMC_mcTracks
MdcCalibFunSvc_mdcCalibFunSvc
MdcCalibFunSvc_mdcCalibFunSvc
MdcGeomSvc_mdcGeomSvc
MdcGeomSvc_mdcGeomSvc
unsigned _nEvents
TFinderBase_perfectFinder
TFinderBase_perfectFinder
RawDataProviderSvc_rawDataProviderSvc
RawDataProviderSvc_rawDataProviderSvc
TTrackManager _trackManager
int havedigi [43][288]
BesTimerm_timer [2]
BesTimerm_timer [2]
IBesTimerSvcm_timersvc
IBesTimerSvcm_timersvc
NTuple::Tuple * m_tuple
NTuple::Tuple * m_tuple
NTuple::Tuple * m_tuple10
NTuple::Tuple * m_tuple10
NTuple::Tuple * m_tuple2
NTuple::Tuple * m_tuple2
NTuple::Tuple * m_tuple3
NTuple::Tuple * m_tuple3
NTuple::Tuple * m_tuple31
NTuple::Tuple * m_tuple31
NTuple::Tuple * m_tuple4
NTuple::Tuple * m_tuple4
NTuple::Tuple * m_tuple5
NTuple::Tuple * m_tuple5
NTuple::Tuple * m_tuple6
NTuple::Tuple * m_tuple6
NTuple::Tuple * m_tuple7
NTuple::Tuple * m_tuple7
NTuple::Tuple * m_tuple9
NTuple::Tuple * m_tuple9
int MC_DIGI_SIZE
double t0_bes
NTuple::Item< float > t0_sta
NTuple::Item< float > t0_sta
double t0Sta
NTuple::Item< float > t10_adc
NTuple::Item< float > t10_adc
NTuple::Item< float > t10_dDrift
NTuple::Item< float > t10_dDrift
NTuple::Item< float > t10_drift
NTuple::Item< float > t10_drift
NTuple::Item< float > t10_localId
NTuple::Item< float > t10_localId
NTuple::Item< float > t10_lyrId
NTuple::Item< float > t10_lyrId
NTuple::Item< float > t10_tdc
NTuple::Item< float > t10_tdc
NTuple::Item< float > t2_chi2
NTuple::Item< float > t2_chi2
NTuple::Item< float > t2_evtNo
NTuple::Item< float > t2_evtNo
NTuple::Item< float > t2_length
NTuple::Item< float > t2_length
NTuple::Item< float > t2_length2
NTuple::Item< float > t2_length2
NTuple::Item< float > t2_mcpt
NTuple::Item< float > t2_mcpt
NTuple::Item< float > t2_mctheta
NTuple::Item< float > t2_mctheta
NTuple::Item< float > t2_ndf
NTuple::Item< float > t2_ndf
NTuple::Item< float > t2_nDigi
NTuple::Item< float > t2_nDigi
NTuple::Item< float > t2_nHits
NTuple::Item< float > t2_nHits
NTuple::Item< float > t2_nSegs
NTuple::Item< float > t2_nSegs
NTuple::Item< float > t2_radius
NTuple::Item< float > t2_radius
NTuple::Item< float > t3_evtNo
NTuple::Item< float > t3_evtNo
NTuple::Item< float > t3_finalLength
NTuple::Item< float > t3_finalLength
NTuple::Item< float > t3_goodLength
NTuple::Item< float > t3_goodLength
NTuple::Item< float > t3_length
NTuple::Item< float > t3_length
NTuple::Item< float > t3_mcphi
NTuple::Item< float > t3_mcphi
NTuple::Item< float > t3_mcpid
NTuple::Item< float > t3_mcpid
NTuple::Item< float > t3_mcpt
NTuple::Item< float > t3_mcpt
NTuple::Item< float > t3_mcptot
NTuple::Item< float > t3_mcptot
NTuple::Item< float > t3_mct0
NTuple::Item< float > t3_mct0
NTuple::Item< float > t3_mctheta
NTuple::Item< float > t3_mctheta
NTuple::Item< float > t3_nDigi
NTuple::Item< float > t3_nDigi
NTuple::Item< float > t3_t0
NTuple::Item< float > t3_t0
NTuple::Item< float > t3_t0Rec
NTuple::Item< float > t3_t0Rec
NTuple::Item< float > t3_t0Sta
NTuple::Item< float > t3_t0Sta
NTuple::Item< float > t4_bz
NTuple::Item< float > t4_bz
NTuple::Item< float > t4_dDrift
NTuple::Item< float > t4_dDrift
NTuple::Item< float > t4_Dist
NTuple::Item< float > t4_Dist
NTuple::Item< float > t4_drift
NTuple::Item< float > t4_drift
NTuple::Item< float > t4_fy
NTuple::Item< float > t4_fy
NTuple::Item< float > t4_fz
NTuple::Item< float > t4_fz
NTuple::Item< float > t4_localId
NTuple::Item< float > t4_localId
NTuple::Item< float > t4_LR
NTuple::Item< float > t4_LR
NTuple::Item< float > t4_lyrId
NTuple::Item< float > t4_lyrId
NTuple::Item< float > t4_mcDrift
NTuple::Item< float > t4_mcDrift
NTuple::Item< float > t4_mcLR
NTuple::Item< float > t4_mcLR
NTuple::Item< float > t4_nHits
NTuple::Item< float > t4_nHits
NTuple::Item< float > t4_phi
NTuple::Item< float > t4_phi
NTuple::Item< float > t4_pull
NTuple::Item< float > t4_pull
NTuple::Item< float > t4_tdc
NTuple::Item< float > t4_tdc
NTuple::Item< float > t4_z
NTuple::Item< float > t4_z
NTuple::Item< float > t5_drNeg
NTuple::Item< float > t5_drNeg
NTuple::Item< float > t5_drPos
NTuple::Item< float > t5_drPos
NTuple::Item< float > t5_dzNeg
NTuple::Item< float > t5_dzNeg
NTuple::Item< float > t5_dzPos
NTuple::Item< float > t5_dzPos
NTuple::Item< float > t5_ptotNeg
NTuple::Item< float > t5_ptotNeg
NTuple::Item< float > t5_ptotPos
NTuple::Item< float > t5_ptotPos
NTuple::Item< float > t9_mctheta
NTuple::Item< float > t9_mctheta
NTuple::Item< float > t9_nLinks
NTuple::Item< float > t9_nLinks
NTuple::Item< float > t9_nSL
NTuple::Item< float > t9_nSL
NTuple::Item< float > t9_nUsed
NTuple::Item< float > t9_nUsed
NTuple::Item< float > t9_times
NTuple::Item< float > t9_times
NTuple::Item< float > t_bestMcNLayers
NTuple::Item< float > t_bestMcNLayers
NTuple::Item< float > t_bestNLayers
NTuple::Item< float > t_bestNLayers
NTuple::Item< float > t_chi2
NTuple::Item< float > t_chi2
NTuple::Item< float > t_dlmd
NTuple::Item< float > t_dlmd
NTuple::Item< float > t_dphi
NTuple::Item< float > t_dphi
NTuple::Item< float > t_dpt
NTuple::Item< float > t_dpt
NTuple::Item< float > t_dptot
NTuple::Item< float > t_dptot
NTuple::Item< float > t_dr
NTuple::Item< float > t_dr
NTuple::Item< float > t_dz
NTuple::Item< float > t_dz
NTuple::Item< float > t_evtNo
NTuple::Item< float > t_evtNo
NTuple::Item< float > t_gdNLayers
NTuple::Item< float > t_gdNLayers
NTuple::Item< float > t_good_theta
NTuple::Item< float > t_good_theta
NTuple::Item< float > t_length
NTuple::Item< float > t_length
NTuple::Item< float > t_length2
NTuple::Item< float > t_length2
NTuple::Item< float > t_mcNLayers
NTuple::Item< float > t_mcNLayers
NTuple::Item< float > t_mcphi
NTuple::Item< float > t_mcphi
NTuple::Item< float > t_mcpt
NTuple::Item< float > t_mcpt
NTuple::Item< float > t_mcptot
NTuple::Item< float > t_mcptot
NTuple::Item< float > t_mcpz
NTuple::Item< float > t_mcpz
NTuple::Item< float > t_mct0
NTuple::Item< float > t_mct0
NTuple::Item< float > t_mctheta
NTuple::Item< float > t_mctheta
NTuple::Item< float > t_nCores
NTuple::Item< float > t_nCores
NTuple::Item< float > t_ndf
NTuple::Item< float > t_ndf
NTuple::Item< float > t_nDigi
NTuple::Item< float > t_nDigi
NTuple::Item< float > t_nHits
NTuple::Item< float > t_nHits
NTuple::Item< float > t_nSegs
NTuple::Item< float > t_nSegs
NTuple::Item< float > t_phi
NTuple::Item< float > t_phi
NTuple::Item< float > t_pt
NTuple::Item< float > t_pt
NTuple::Item< float > t_ptot
NTuple::Item< float > t_ptot
NTuple::Item< float > t_radius
NTuple::Item< float > t_radius
NTuple::Item< float > t_t0
NTuple::Item< float > t_t0
NTuple::Item< float > t_tanlmd
NTuple::Item< float > t_tanlmd
NTuple::Item< float > ti_eventTime
NTuple::Item< float > ti_eventTime
NTuple::Item< float > ti_evtNo
NTuple::Item< float > ti_evtNo
NTuple::Item< float > ti_nDigi
NTuple::Item< float > ti_nDigi
NTuple::Item< float > ti_nHits
NTuple::Item< float > ti_nHits
NTuple::Item< float > ti_recTrkNum
NTuple::Item< float > ti_recTrkNum
NTuple::Item< float > u_evtNo
NTuple::Item< float > u_evtNo
NTuple::Item< float > u_length2
NTuple::Item< float > u_length2
NTuple::Item< float > u_mcpt
NTuple::Item< float > u_mcpt
NTuple::Item< float > u_mcptot
NTuple::Item< float > u_mcptot
NTuple::Item< float > u_mct0
NTuple::Item< float > u_mct0
NTuple::Item< float > u_mctheta
NTuple::Item< float > u_mctheta
NTuple::Item< float > u_nDigi
NTuple::Item< float > u_nDigi
NTuple::Item< float > ut0_sta
NTuple::Item< float > ut0_sta
NTuple::Item< float > ut_t0
NTuple::Item< float > ut_t0


Detailed Description

A tracking module.


Constructor & Destructor Documentation

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

returns TrkReco.

Initiate Parameters for TrkReco

00078                                                                 :
00079   Algorithm(name, pSvcLocator),
00080   _cdc(0),
00081   _perfectFinder(0),
00082   _confFinder(0),
00083   _curlFinder(0),
00084   _nEvents(0) {
00085 
00087     initPara();
00088     
00089     TrkRecoHelixFitterChisqMax = b_helixFitterChisqMax;
00090 }

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

returns TrkReco.


Member Function Documentation

StatusCode TrkReco::beginRun  ) 
 

StatusCode TrkReco::beginRun  ) 
 

Get MdcGeomSvc

00296                             {
00298     IMdcGeomSvc* imdcGeomSvc;
00299     StatusCode sc1 =Gaudi::svcLocator()->service("MdcGeomSvc", imdcGeomSvc);
00300     _mdcGeomSvc =  dynamic_cast<MdcGeomSvc*> (imdcGeomSvc);
00301     if (sc1.isFailure()) {
00302       return( StatusCode::FAILURE);
00303     }
00304      _cdc = cdcInit();
00305 
00306     return StatusCode::SUCCESS;  
00307 }

TMDC* TrkReco::cdcInit void   )  [private]
 

TMDC * TrkReco::cdcInit void   )  [private]
 

00254                      {
00255     _cdcVersion = dtostring(b_cdcVersion);
00256     if (! _cdc) _cdc = TMDC::getTMDC(_cdcVersion);
00257     _cdc->debugLevel(b_debugLevel);
00258 
00259     //...Obtain fudge factor...
00260     float fudgeFactor = b_fudgeFactor;
00261 
00262 /*   if (fudgeFactor == 0.) {
00263         const calcdc_const4 & c = * (calcdc_const4 *) BsGetEnt(CALMDC_CONST4,
00264                                                                1,
00265                                                                BBS_No_Index);
00266         if (!(& c)) fudgeFactor = 1.;
00267         else        fudgeFactor = c.m_fudge;
00268     }*/
00269    
00270     //...Turn off fudge factor before checking performance...
00271     fudgeFactor = 1.0;
00272 
00273     _cdc->fudgeFactor(fudgeFactor);
00274     return _cdc;
00275 }

void TrkReco::clear void   ) 
 

clears all TMDC information.

void TrkReco::clear void   ) 
 

clears all TMDC information.

00697                    {
00698 
00699     //...Clear track candidates of the last event...
00700     HepAListDeleteAll(_mcTracks);
00701 
00702     //...Clear finders...
00703     if (b_doPerfectFinder) _perfectFinder->clear();
00704     if (b_doConformalFinder) _confFinder->clear();
00705     if (b_doCurlFinder) _curlFinder->clear();
00706     _trackManager.clear();
00707     _trackManager.clearTables();
00708 }

const TFinderBase* TrkReco::confFinder void   )  const
 

returns a pointer to the rphi finder.

const TFinderBase * TrkReco::confFinder void   )  const [inline]
 

returns a pointer to the rphi finder.

00317                               {
00318     return (TFinderBase *) _confFinder;
00319 }

const TFinderBase* TrkReco::curlFinder void   )  const
 

returns a pointer to the curl finder.

const TFinderBase * TrkReco::curlFinder void   )  const [inline]
 

returns a pointer to the curl finder.

00323                               {
00324     return (TFinderBase *) _curlFinder;
00325 }

void TrkReco::disp_stat const char *   ) 
 

temporarily required

void TrkReco::disp_stat const char *   ) 
 

temporarily required

00309                                  {
00310     std::string msg = m;
00311 //    dump(msg);
00312 }

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

dumps debug information.

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

dumps debug information.

StatusCode TrkReco::endRun  )  [inline]
 

00056 {}; 

StatusCode TrkReco::endRun  )  [inline]
 

00056 {}; 

StatusCode TrkReco::execute  ) 
 

StatusCode TrkReco::execute  ) 
 

00315                             {
00316   MsgStream log(msgSvc(), name());
00317   log << MSG::INFO << "in execute()" << endreq;
00318   StatusCode sc;   
00319   if (b_timeTest && b_tuple) m_timer[1]->start();
00320 
00321   // Initiate state of all sense wire
00322   if (b_goodTrk && b_tuple)
00323     for (int ii=0;ii<43;ii++){
00324       for (int jj=0;jj<288;jj++){
00325         havedigi[ii][jj]= -99;//no hit/noise
00326       }
00327     }
00328   
00329  //------------------------------------
00330   // Initialize track collection in TDS
00331   //------------------------------------
00332   //yzhang add 2010-04-30 
00333   //Clear TDS tracks and hits
00334   IDataManagerSvc *dataManSvc;
00335   DataObject *aTrackCol;
00336   DataObject *aRecHitCol;
00337   if(!m_combineTracking){
00338     dataManSvc = dynamic_cast<IDataManagerSvc*> (eventSvc());
00339     eventSvc()->findObject("/Event/Recon/RecMdcTrackCol",aTrackCol);
00340     if(aTrackCol != NULL) {
00341       dataManSvc->clearSubTree("/Event/Recon/RecMdcTrackCol");
00342       eventSvc()->unregisterObject("/Event/Recon/RecMdcTrackCol");
00343     }
00344     eventSvc()->findObject("/Event/Recon/RecMdcHitCol",aRecHitCol);
00345     if(aRecHitCol != NULL) {
00346       dataManSvc->clearSubTree("/Event/Recon/RecMdcHitCol");
00347       eventSvc()->unregisterObject("/Event/Recon/RecMdcHitCol");
00348     }
00349   }
00350   DataObject *aReconEvent;
00351   eventSvc()->findObject("/Event/Recon",aReconEvent);
00352   if(!aReconEvent) {
00353     ReconEvent* recevt = new ReconEvent;
00354     StatusCode sc = eventSvc()->registerObject("/Event/Recon",recevt );
00355     if(sc!=StatusCode::SUCCESS) {
00356       log << MSG::FATAL << "Could not register ReconEvent" <<endreq;
00357       return( StatusCode::FAILURE);
00358     }
00359   }
00360   RecMdcTrackCol* trkcol;
00361   eventSvc()->findObject("/Event/Recon/RecMdcTrackCol",aTrackCol);
00362   if (aTrackCol) {
00363     trkcol = dynamic_cast<RecMdcTrackCol*> (aTrackCol);
00364   }else{
00365     trkcol= new RecMdcTrackCol;
00366     sc =  eventSvc()->registerObject(EventModel::Recon::RecMdcTrackCol, trkcol);
00367     if(!sc.isSuccess()) {
00368       log << MSG::FATAL << " Could not register RecMdcTrack collection" <<endreq;
00369       return StatusCode::FAILURE;
00370     }
00371   }
00372   RecMdcHitCol* hitcol;
00373   eventSvc()->findObject("/Event/Recon/RecMdcHitCol",aRecHitCol);
00374   if (aRecHitCol) {
00375     hitcol = dynamic_cast<RecMdcHitCol*> (aRecHitCol);
00376   }else{
00377     hitcol= new RecMdcHitCol;
00378     sc =  eventSvc()->registerObject(EventModel::Recon::RecMdcHitCol, hitcol);
00379     if(!sc.isSuccess()) {
00380      log << MSG::FATAL << " Could not register RecMdcHit collection" <<endreq;
00381       return StatusCode::FAILURE;
00382     }
00383   }  
00384   // Part 1: Get Tev
00385   t0_bes = 0.;
00386   t0Sta  = -1;
00387   if (useESTime) { 
00388     SmartDataPtr<RecEsTimeCol> aevtimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol");
00389 //bugcheck jialk        
00390     if (aevtimeCol  && aevtimeCol->size() ) {
00391       RecEsTimeCol::iterator iter_evt = aevtimeCol->begin();
00392       t0_bes =  (*iter_evt)->getTest();
00393       t0Sta  =  (*iter_evt)->getStat();
00394     }else{
00395       log << MSG::WARNING << "Could not find EsTimeCol" << endreq;
00396       return StatusCode::SUCCESS;
00397     }
00398   }
00399 
00400   // Part 2: Get the event header
00401   SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00402   if (!eventHeader) {
00403     log << MSG::FATAL << "Could not find Event Header" << endreq;
00404     return( StatusCode::FAILURE);
00405   }
00406   _nEvents = eventHeader->eventNumber();
00407   if (b_tuple) std::cout << "TrkReco ... processing ev# " << _nEvents << std::endl;
00408 
00409   // Part 3: Retrieve MDC digi 
00410   int digiId;
00411   uint32_t getDigiFlag = 0;
00412   if(m_dropHot || m_combineTracking)getDigiFlag |= MdcRawDataProvider::b_dropHot;
00413   if(m_keepBadTdc)  getDigiFlag |= MdcRawDataProvider::b_keepBadTdc;
00414   if(m_keepUnmatch) getDigiFlag |= MdcRawDataProvider::b_keepUnmatch;
00415   MdcDigiVec mdcDigiVec = _rawDataProviderSvc->getMdcDigiVec(getDigiFlag);
00416   if (0 == mdcDigiVec.size()){
00417     log << MSG::WARNING << " No hits in MdcDigiVec" << endreq;
00418     return StatusCode::SUCCESS;
00419   }
00420 /*  //jialk in order to reject events with exceeding # of total hits   2009/03/31   
00421 if (mdcDigiVec.size() > 2000){   
00422      log << MSG::WARNING << " Too many hits in MdcDigiVec" << endreq;   
00423      return StatusCode::SUCCESS;   
00424    }*/ 
00425   MdcDigiVec::iterator iter1 = mdcDigiVec.begin();
00426   MC_DIGI_SIZE = mdcDigiVec.size();
00427   
00428   digiId = 0; 
00429   Identifier mdcId;
00430   int layerId;
00431   int wireId;
00432 
00433   //Clear the old MdcRec_wirhit tables and create the hits' info for the new event.
00434   unsigned nt = MdcRecWirhitCol::getMdcRecWirhitCol()->size();
00435   //cout<<"Col size of last Event's WirHit = "<<nt<<endl;
00436   MdcRecWirhitCol::getMdcRecWirhitCol()->clear();
00437 
00438   for (;iter1 != mdcDigiVec.end(); iter1++, digiId++) {
00439     //log << MSG::INFO << "MDC digit No: " << digiId << endreq;
00440     mdcId = (*iter1)->identify();
00441     layerId = MdcID::layer(mdcId);
00442     wireId = MdcID::wire(mdcId);
00443     /*log << MSG::INFO
00444       << " time_channel = " << (*iter1)->getTimeChannel()
00445       <<" time = "<<(*iter1)->getTimeChannel()* 40./10000/1000000
00446       << " charge_channel = " << (*iter1)->getChargeChannel()
00447       << " layerId = " << layerId 
00448       << " wireId = " << wireId
00449       << endreq;*/
00450 
00451         if (b_goodTrk && b_tuple) havedigi[layerId][wireId] = (*iter1)->getTrackIndex();  //-1:noise  0-n:tracks
00452  
00453         MdcRec_wirhit mhit;
00454 
00455         mhit.id = digiId;
00456         mhit.geo = _mdcGeomSvc->Wire(layerId,wireId);
00457         //Apply crude TOF, Belle: tof=1.074*radius/c, here we use 1.28 instead of 1.074. 
00458         double tof;
00459         tof = 1.28 * mhit.geo->Lyr()->Radius()/299.8;  //unit of Radius is mm.  
00460         mhit.tdc = RawDataUtil::MdcTime((*iter1)->getTimeChannel());
00461 
00462         //cout<<" ..  mhit.tdc = "<<mhit.tdc<<"    t0_bes = "<<t0_bes<<endl;
00463         mhit.tdc -= t0_bes;
00464 
00465         //jialk 
00466         _trackManager.sett0bes(t0_bes);
00467     //mhit.adc = RawDataUtil::MdcCharge((*iter1)->getChargeChannel());
00468         //mhit.tdc = (*iter1)->getTimeChannel();
00469         mhit.adc = (*iter1)->getChargeChannel();
00470         //cout<<"raw tdc(ns): "<<mhit.tdc<<"; tof(ns): "<<tof<<endl;
00471 //      double dist2 = _mdcCalibFunSvc->rawTimeNoTOFToDist(mhit.tdc-tof, layerId, wireId, 2, 0.0);
00472  //       mhit.erddl = _mdcCalibFunSvc->getSigma(layerId, 2, dist2, 0.0);
00473         double timewalk=_mdcCalibFunSvc->getTimeWalk(layerId,mhit.adc); 
00474         double T0 = _mdcCalibFunSvc->getT0(layerId,wireId);
00475         double drifttime = mhit.tdc-tof-timewalk-T0;
00476         double dist2 = _mdcCalibFunSvc->driftTimeToDist(drifttime,layerId, wireId, 2, 0);//by liucy 2010/05/12
00477         mhit.erddl = _mdcCalibFunSvc->getSigma(layerId, 2 , dist2, 0.0,0.0,0.0,mhit.adc);
00478 //cout<<"getSigma: "<<mhit.erddl<<endl;
00479         mhit.ddl = dist2/10.;  //mm->cm
00480         mhit.ddr = mhit.ddl;
00481         mhit.erddl = mhit.erddl/10.;  //mm->cm
00482         mhit.erddr = mhit.erddl;
00483 
00484         mhit.lr = 2;
00485         mhit.stat = 0;
00486         mhit.stat = mhit.stat |= 1048576; //bit20  WireHitTimeValid
00487         mhit.stat = mhit.stat |= 2097152; //bit21  WireHitChargeValid
00488         mhit.stat = mhit.stat |= 4194304; //bit22  WireHitFindingValid
00489         mhit.stat = mhit.stat |= 1073741824; //bit30 
00490         //cout<<"layerNo = "<<mhit.geo->Layer()<<"; "<<mdigi.digi[i].layerNo<<endl;
00491         //cout<<"cellNo = "<<mhit.geo->Cell()<<"; "<<mdigi.digi[i].cellNo<<endl;
00492         //cout<<"NCell of this layer = "<<mhit.geo->Lyr()->NCell()<<endl;
00493         //cout<<"NCell of this layer = "<<mhit.geo->Lyr()->NCell()<<endl;
00494         MdcRecWirhitCol::getMdcRecWirhitCol()->push_back(mhit);
00495 
00496         if (b_tuple) {
00497         t10_tdc = mhit.tdc;
00498         t10_adc = mhit.adc;
00499         t10_drift = mhit.ddl;
00500         t10_dDrift = mhit.erddl;
00501         t10_lyrId = layerId;
00502         t10_localId = wireId;
00503         m_tuple10->write();
00504         }
00505    }
00506 
00507     unsigned nT0Reset = 0;
00508 
00509     //...Starting point...
00510 TrkReco_start:
00511 
00512     //...Clear myself...
00513     clear();
00514     
00515     //jialk in order to reject events with exceeding # of total hits   2009/03/31   
00516     if (mdcDigiVec.size() > 2000){   
00517      log << MSG::WARNING << " Too many hits in MdcDigiVec" << endreq;   
00518      return StatusCode::SUCCESS;   
00519     }
00520 
00521     //...Update TMDC...
00522     _cdc->update(b_doMCAnalysis);
00523 
00524     //...Get lists of hits...
00525     unsigned mask = 0;
00526     if (! b_useAllHits) mask = WireHitFindingValid;
00527     const AList<TMDCWireHit> & axialHits = _cdc->axialHits(mask);
00528     const AList<TMDCWireHit> & stereoHits = _cdc->stereoHits(mask);
00529     const AList<TMDCWireHit> & allHits = _cdc->hits(mask);
00530     //cout<<"axial: "<<axialHits.length()<<"  stereo: "<<stereoHits.length()<<endl; 
00531     
00532     //...Storage for tracks...
00533     AList<TTrack> tracks;
00534     AList<TTrack> tracks2D;
00535 
00536     //...Perfect finder...
00537     if (b_doPerfectFinder) {
00538       _perfectFinder->doit(axialHits, stereoHits, tracks, tracks2D);
00539       _trackManager.append(tracks);
00540     }
00541 
00542     else {
00543         //...Conformal finder...
00544         if (b_doConformalFinder) {
00545 
00546             //...T0 reset option...
00547             if (b_doT0Reset) {
00548                 if (b_nT0ResetMax > nT0Reset)
00549                     ((TConformalFinder *) _confFinder)->doT0Reset(true);
00550                 else
00551                     ((TConformalFinder *) _confFinder)->doT0Reset(false);
00552             }               
00553 
00554             _confFinder->doit(axialHits, stereoHits, tracks, tracks2D);
00555 
00556             //...T0 reset...
00557             if (b_doT0Reset) {
00558                 ++nT0Reset;
00559                 if (((TConformalFinder *) _confFinder)->T0ResetDone())
00560                     goto TrkReco_start;
00561             }
00562 
00563             //cout<<"tracks: "<<tracks.length()<<endl;
00564             
00565             //...Stores tracks...
00566             _trackManager.append(tracks);
00567             _trackManager.append2D(tracks2D);
00568             if (b_conformalFinder == 0) {
00569                 if (b_doSalvage == 1) _trackManager.salvage(allHits);
00570                 if (b_doSalvage) _trackManager.mask();
00571             }
00572         }
00573     
00574         //...Curl finder...
00575         if (b_doCurlFinder) {
00576             if ((! b_doSalvage) && (b_conformalFinder == 0))
00577                 _trackManager.maskCurlHits(axialHits,
00578                                            stereoHits,
00579                                            _trackManager.tracks());
00580             AList<TTrack> confTracks = _trackManager.tracks();
00581             tracks.append(confTracks);
00582             _curlFinder->doit(axialHits, stereoHits, tracks, tracks2D);
00583             tracks.remove(confTracks);
00584             //_trackManager.append(tracks);
00585         }
00586 
00587         //...Finishes tracks...
00588 //      if ((b_doSalvage) && (b_conformalFinder == 0)) _trackManager.refit();   
00589 
00590         //...Appends tracks which are reconstructed by CurlFinder...
00591         if (b_doCurlFinder) {
00592           _trackManager.append(tracks);
00593           _trackManager.append2D(tracks2D);
00594         }
00595        
00596         //...Merge & Mask ...
00597         //if ((b_doMerge) && (b_conformalFinder == 0)) _trackManager.merge();
00598         _trackManager.merge();  //Liuqg
00599         //if (b_conformalFinder != 0) _trackManager.setCurlerFlags();
00600 
00601         //...Salvage for dE/dx...
00602         //if (b_doAssociation)
00603         //  _trackManager.salvageAssociateHits(allHits, b_associateSigma);
00604     }
00605 
00606     //...Move a pivot... //move to the innermost hit, remove this step now 2005/10/17 zang shilei
00607     //_trackManager.movePivot();
00608 
00609     //...Save Panther tables...
00610     // _trackManager.checkNumberOfHits();
00611     //if (b_sortMode == 0) _trackManager.sortTracksByQuality();
00612     //else                 _trackManager.sortTracksByPt();
00613     /*if (b_doMCAnalysis) {
00614       if (mcEvent()) {
00615         mcInformation();
00616         _trackManager.saveMCTables();
00617       }
00618     }*/
00619 
00620     if (b_tuple) FillTuple();
00621 
00622     //write Tds 
00623     int t_tkStat = 2;
00624     if (!b_doConformalFinder && b_doCurlFinder) t_tkStat = 3;//FIXME
00625     StatusCode scTds = _trackManager.makeTds(trkcol, hitcol, t_tkStat);
00626     if (scTds !=  StatusCode::SUCCESS) return( StatusCode::FAILURE);
00627 
00628     //...T0 correction...
00629     if (b_doT0Determination) {
00630       _trackManager.determineT0(b_doT0Determination, b_nTracksForT0);
00631       if (b_tuple) t3_t0Rec = _trackManager.paraT0();
00632     }
00633 
00634     //...For debug...
00635     /*if (b_debugLevel) {
00636         std::cout << "TrkReco ... ev# " << _nEvents << " processed,"
00637                   << " #tracks found=" << _trackManager.allTracks().length()
00638                   << ", #good tracks=" << _trackManager.tracks().length()
00639                   << ", #2D tracks=" << _trackManager.tracks2D().length()
00640                   << std::endl;
00641         if (b_debugLevel > 1) _trackManager.dump("eventSummary hits");
00642         else _trackManager.dump("eventSummary");
00643     }*/
00644 
00645     //TUpdater::update();
00646     return StatusCode::SUCCESS;
00647 }

void TrkReco::fastClear void   ) 
 

clears TMDC information.

void TrkReco::fastClear void   ) 
 

clears TMDC information.

00711                        {
00712     clear();
00713 }

void TrkReco::FillTuple void   )  [private]
 

void TrkReco::FillTuple void   )  [private]
 

Get Tracks

Run Time Calculation

Retrieve MC

Fill Tuple

00987                        {
00988   MsgStream log(msgSvc(), name());
00989   log << MSG::INFO << "fill Tuple()" << endreq;
00990 
00992   AList<TTrack> tracks;
00993   AList<TTrack> tracks2D;
00994   tracks = _trackManager.tracks();
00995   tracks2D = _trackManager.tracks2D();
00996   //if(t3_t0Rec!=999. && fabs(t3_t0Rec + t0_bes - MC_EVENT_TIME) > 4) 
00997   //cout<<"3Dtrack in manager: "<<tracks.length()<<endl;
00998   if(tracks.length()==0) cout<<"zslength: 3D length=0, and the 2D length is"<<tracks2D.length()<<endl;
00999 
01001   if (b_timeTest && b_tuple) { 
01002     m_timer[1]->stop();
01003     ti_eventTime = m_timer[1]->elapsed();
01004     ti_nDigi = MC_DIGI_SIZE;
01005     ti_recTrkNum = tracks.length();
01006     ti_evtNo = _nEvents;
01007     for (unsigned i = 0; i < ti_recTrkNum; ++i)
01008       ti_nHits += tracks[i]->nLinks();
01009     m_tuple7->write();
01010   }
01011 
01013   CLHEP::Hep3Vector MC_TRACK_VEC;
01014   CLHEP::HepLorentzVector MC_TRACK_LRZVEC;
01015   float  MC_TRACK_NUM;
01016   double MC_EVENT_TIME;
01017               
01018   int digiId;
01019   int num_par = 0;
01020   MC_EVENT_TIME = -1;
01021   if (b_mcPar) {
01022     SmartDataPtr<Event::McParticleCol> mcParticleCol(eventSvc(),"/Event/MC/McParticleCol");
01023     if (mcParticleCol) {
01024     Event::McParticleCol::iterator iter_mc = mcParticleCol->begin();
01025     digiId = 0;
01026     for (;iter_mc != mcParticleCol->end(); iter_mc++, digiId++) {
01027       if((*iter_mc)->statusFlags()==8320||(*iter_mc)->statusFlags()==128) {
01028         MC_EVENT_TIME = (*iter_mc)->initialFourMomentum().t();
01029         break;
01030       }
01031     }
01032     //jialk bugcheck
01033     iter_mc = mcParticleCol->begin();
01034     MC_TRACK_LRZVEC = (*iter_mc)->initialFourMomentum();  //particularly for 1 track events.
01035     MC_TRACK_VEC = (*iter_mc)->initialFourMomentum().vect();
01036     MC_TRACK_NUM = mcParticleCol->size();
01037     
01038 #ifdef TRKRECO_DEBUG
01039     iter_mc = mcParticleCol->begin();
01040     digiId = 0;
01041     for (;iter_mc != mcParticleCol->end(); iter_mc++, digiId++) {
01042       log << MSG::INFO << "MDC digit No: " << digiId << endreq;
01043       log << MSG::INFO
01044         << " particleId = " << (*iter_mc)->particleProperty()
01045         << " theta = " << (*iter_mc)->initialFourMomentum().theta()
01046         <<"  phi= "<< (*iter_mc)->initialFourMomentum().phi()
01047         <<"  px= "<< (*iter_mc)->initialFourMomentum().px()
01048         <<"  py= "<< (*iter_mc)->initialFourMomentum().py()
01049         <<"  pz= "<< (*iter_mc)->initialFourMomentum().pz()
01050         << endreq;
01051     }
01052 #endif
01053     digiId = 0;
01054     iter_mc = mcParticleCol->begin();
01055     for (;iter_mc != mcParticleCol->end(); iter_mc++, digiId++) {
01056       CLHEP::HepLorentzVector LRZVEC = (*iter_mc)->initialFourMomentum();
01057       CLHEP::Hep3Vector  VEC = (*iter_mc)->initialFourMomentum().vect();
01058       //staFlag = (*iter_mc)->statusFlags();
01059 
01060       t3_mctheta = LRZVEC.theta();
01061       t3_mcphi   = VEC.phi();
01062       t3_mcptot  = VEC.mag()/1000.;
01063       t3_mcpt    = VEC.perp()/1000.;
01064       t3_mct0    = (*iter_mc)->initialFourMomentum().t();
01065       t3_mcpid   = (*iter_mc)->particleProperty();
01066       t3_evtNo   = _nEvents;
01067       if((t3_mcpid==211||t3_mcpid==-211||t3_mcpid==321)&&fabs(cos(t3_mctheta))<0.93) ++num_par;
01068       m_tuple3->write();
01069     }
01070     }
01071   }
01072 
01074   if (tracks.length()==0) {
01075     u_length2 = tracks2D.length();
01076     u_mct0    = MC_EVENT_TIME;
01077     u_mcptot  = MC_TRACK_VEC.mag()/1000.;
01078     u_mcpt    = MC_TRACK_VEC.perp()/1000.;
01079     u_mctheta = MC_TRACK_LRZVEC.theta();
01080     u_nDigi   = MC_DIGI_SIZE;
01081     u_evtNo   = _nEvents;
01082     ut0_sta = -1;
01083     ut_t0 = t0_bes;
01084     ut0_sta = t0Sta;
01085     m_tuple6->write();  //unrec...tracks
01086   }
01087   
01088   //---Pos and Neg
01089   float dDot = 2;
01090   int flagi = -1, flagj = -1;
01091   HepVector3D ppp1, ppp2;
01092   float pppdDot = 2;
01093   for (unsigned i = 0; i < tracks.length(); i++){
01094     if(tracks.length()<2) break;
01095     if(tracks[i]->charge()>0) {
01096       ppp1 = tracks[i]->p().unit();
01097       for (unsigned j = 0; j < tracks.length(); j++){
01098         if (tracks[j]->charge()<0) {
01099           ppp2 = tracks[j]->p().unit();
01100           pppdDot = ppp1.dot(ppp2);
01101           if (pppdDot<dDot) {
01102             flagi = i;
01103             flagj = j;
01104             dDot  = pppdDot;
01105           }
01106         }
01107       }
01108     }
01109   }
01110   if (flagi != -1 && flagj != -1 && dDot < 0) {
01111     t5_ptotPos = tracks[flagi]->ptot();
01112     t5_ptotNeg = tracks[flagj]->ptot();
01113     t5_drPos   = tracks[flagi]->helix().dr();
01114     t5_drNeg   = tracks[flagj]->helix().dr();
01115     t5_dzPos   = tracks[flagi]->helix().dz();
01116     t5_dzNeg   = tracks[flagj]->helix().dz();
01117     m_tuple5->write();
01118   }  //Pos and Neg...back on back
01119 
01120   unsigned nGood = 0;   
01121   for (unsigned i = 0; i < tracks.length(); i++){
01122     for(unsigned k = 0; k < tracks[i]->links().length(); k++){ 
01123       t4_Dist  = tracks[i]->links()[k]->distance();     //_onTrack - _onWire
01124       t4_drift = tracks[i]->links()[k]->drift();        //drift updated in THelixFitter.  
01125       t4_dDrift= tracks[i]->links()[k]->dDrift();       //dDrift updated in THelixFitter.
01126       t4_pull  = tracks[i]->links()[k]->pull();
01127       t4_LR    = 2;  //initial
01128       t4_LR    = tracks[i]->links()[k]->leftRight();
01129       if (t4_LR == 0) t4_LR = -1;
01130       t4_lyrId = tracks[i]->links()[k]->wire()->layerId();
01131       t4_localId = tracks[i]->links()[k]->wire()->localId();
01132       t4_tdc = tracks[i]->links()[k]->hit()->reccdc()->tdc;
01133       t4_z = tracks[i]->links()[k]->positionOnTrack().z();
01134       t4_bz = tracks[i]->links()[k]->wire()->backwardPosition().z();
01135       t4_fz = tracks[i]->links()[k]->wire()->forwardPosition().z();
01136       t4_fy = tracks[i]->links()[k]->wire()->forwardPosition().y();
01137       t4_nHits = tracks[i]->links().length();
01138       unsigned lyrID = tracks[i]->links()[k]->wire()->layerId(); 
01139       float phi0 = _cdc->layer(lyrID)->offset();
01140       int nWir = (int) _cdc->layer(lyrID)->nWires();
01141       t4_phi = phi0 + t4_localId*2*pi/nWir;
01142       if(t4_phi<0) t4_phi+=2*pi;
01143     
01144       if (b_mcHit) { 
01145         SmartDataPtr<Event::MdcMcHitCol> mcMdcMcHitCol(eventSvc(),"/Event/MC/MdcMcHitCol");
01146         if (mcMdcMcHitCol) {
01147           Event::MdcMcHitCol::iterator iter_mchit1 = mcMdcMcHitCol->begin();
01148           digiId=0;
01149           for (;iter_mchit1 != mcMdcMcHitCol->end(); iter_mchit1++, digiId++) {
01150             const Identifier ident = (*iter_mchit1)->identify();
01151             if(MdcID::layer(ident) != t4_lyrId) continue;
01152             if(MdcID::wire(ident)==t4_localId) {
01153               t4_mcDrift = (*iter_mchit1)->getDriftDistance();  //drift in MC.
01154               t4_mcLR = (*iter_mchit1)->getPositionFlag();
01155               if (t4_mcLR == 0) t4_mcLR = -1;
01156               break;
01157             }
01158           }
01159         }
01160       }
01161         //cout<<" lyrId, localId: "<<t4_lyrId<<"  "<<t4_localId<<endl;
01162         //cout<<" tdc: "<<t4_tdc<<"  mcDrift: " << t4_mcDrift<<"  Drift: "<<t4_drift<<"  t4_Dist: "<<t4_Dist<<endl;
01163       m_tuple4->write();  //rec Hits
01164     }
01165 
01166     unsigned segSize = tracks[i]->segments().length();
01167     for(unsigned kk = 0; kk < segSize; ++kk) {
01168       unsigned segLength = tracks[i]->segments()[kk]->links().length();
01169       AList<TMLink> ll = tracks[i]->segments()[kk]->links();
01170       int nSmall = 0;
01171       for(unsigned nn = 0; nn < segLength; ++nn) {
01172         double tmpX = ll[nn]->positionD().x();
01173         double tmpY = ll[nn]->positionD().y();
01174         double tmpA = tracks[i]->segments()[kk]->lineTsf().x();
01175         double tmpB = tracks[i]->segments()[kk]->lineTsf().y();
01176         double tmpC = tracks[i]->segments()[kk]->lineTsf().z();
01177         double dis = fabs(tmpA * tmpX + tmpB * tmpY + tmpC) / sqrt(tmpA * tmpA + tmpB * tmpB);
01178         double idealDis = maxdDistance(ll[nn]);
01179         if(fabs(dis-ll[nn]->cDrift())/idealDis<0.001 && nSmall<2) {
01180           ++nSmall;
01181           continue;
01182         }
01183         t9_times += fabs(dis-ll[nn]->cDrift())/idealDis;
01184       }
01185       t9_nSL   = ll[0]->wire()->superLayerId();
01186       t9_nLinks = segLength;
01187       t9_mctheta = MC_TRACK_LRZVEC.theta();
01188       t9_times = t9_times / (t9_nLinks - nSmall);
01189       m_tuple9->write();  //seg info
01190     }
01191     
01192     t_mcphi   = MC_TRACK_VEC.phi();
01193     t_mctheta = MC_TRACK_LRZVEC.theta();
01194     t_mcptot  = MC_TRACK_VEC.mag()/1000.;
01195     t_mcpt    = MC_TRACK_VEC.perp()/1000.;
01196     t_mcpz    = MC_TRACK_LRZVEC.pz()/1000.;
01197     t_mct0    = MC_EVENT_TIME;
01198     t_nDigi   = MC_DIGI_SIZE;
01199     
01200     t_dr      = tracks[i]->helix().dr();
01201     t_dz      = tracks[i]->helix().dz();
01202     t_pt      = tracks[i]->pt();
01203     t_ptot    = tracks[i]->ptot();
01204     t_tanlmd  = tracks[i]->helix().tanl();
01205     t_phi     = tracks[i]->helix().phi0();
01206     t_chi2    = tracks[i]->chi2();
01207     t_nHits   = tracks[i]->nLinks();
01208     t_nCores  = tracks[i]->nCores();
01209     t_nSegs   = tracks[i]->segments().length();
01210     t_ndf     = tracks[i]->ndf();
01211     t_radius  = tracks[i]->radius();
01212     t_evtNo   = _nEvents;
01213     t_length  = tracks.length();
01214     t_length2 = tracks2D.length();
01215 
01216     t_dpt     = tracks[i]->pt() - t_mcpt;
01217     t_dptot   = tracks[i]->ptot() - t_mcptot;
01218     t_dlmd    = atan(tracks[i]->helix().tanl()) - (pi/2 - t_mctheta);
01219     t_dphi    = tracks[i]->helix().phi0() - t_mcphi;
01220     
01221     t_t0 = t0_bes;
01222     t0_sta = t0Sta;
01223 
01224 if (b_mcPar) {
01225   if (b_goodTrk && b_tuple) {
01226     unsigned mcTrackSize = MC_TRACK_NUM;
01227     unsigned recTrackSize = tracks.length();
01228     const unsigned matchSize = 20;
01229     //  if(recTrackSize>40 || mcTrackSize>40) matchSize = 50;
01230 
01231     int mLayers[matchSize];
01232     for (int ii=0; ii<matchSize; ii++)
01233       mLayers[ii] = 0;
01234     for(int jj = 0; jj < 43; ++jj) {
01235       int tmp[matchSize];
01236       for(unsigned kk = 0; kk < matchSize; ++kk) 
01237         tmp[kk] = 0;
01238       for(int kk = 0; kk < 288; ++kk) {
01239         if (havedigi[jj][kk]<0) continue;
01240         tmp[havedigi[jj][kk]] = 1;
01241       }
01242       for(int kk = 0; kk < matchSize; ++kk)
01243         if(tmp[kk] == 1) ++mLayers[kk];
01244     }
01245 
01246     unsigned trackSize = tracks[i]->nLinks();
01247     int trkIndex[43];
01248     int nLayers[matchSize];
01249     for (int j = 0; j < 43; ++j)
01250       trkIndex[j] = -99;
01251     for (int j = 0; j < matchSize; ++j)
01252       nLayers[j] = 0;
01253     
01254     for (int j = 0; j < trackSize; ++j) {
01255       unsigned lId = tracks[i]->links()[j]->wire()->layerId();
01256       unsigned loId = tracks[i]->links()[j]->wire()->localId();
01257       if (havedigi[lId][loId] >= 0) trkIndex[lId] = havedigi[lId][loId];
01258     }
01259     for (int j = 0; j < 43; ++j)
01260       if (trkIndex[j] >= 0) ++nLayers[trkIndex[j]];
01261     
01262     for (int j = 0; j < matchSize; ++j) {
01263       //cout<<"nLayers: "<<nLayers[j]<<"  mLayers:"<<mLayers[j]<<endl;
01264       if (nLayers[j]==0) continue;
01265       if ((float)nLayers[j]/(float)mLayers[j] > 0.51) {
01266         t_gdNLayers = nLayers[j];
01267         t_mcNLayers = mLayers[j];
01268         t_good_theta = MC_TRACK_LRZVEC.theta();
01269         ++nGood;
01270         break;
01271       }
01272     }
01273     if (t_good_theta == 0.) {
01274       int tmpLayers = 0;
01275       int tmpi = -1;
01276       for (int j = 0; j < matchSize; ++j) {
01277         if (nLayers[j]==0) continue;
01278         if (nLayers[j] > tmpLayers) {
01279           tmpLayers = nLayers[j];
01280           tmpi = j;
01281         }
01282       }
01283       if (tmpi != -1) {
01284         t_bestNLayers = nLayers[tmpi];
01285         t_bestMcNLayers = mLayers[tmpi];
01286       }
01287       else {
01288         t_bestNLayers = -1;
01289         t_bestMcNLayers = -1;
01290       }
01291     }
01292     else {
01293       t_bestNLayers = -2;
01294       t_bestMcNLayers = -2;
01295     }
01296   } //if b_goodTrk
01297 }
01298     m_tuple->write();  //rec track
01299   }
01300 
01301   t3_mctheta = MC_TRACK_LRZVEC.theta();
01302   t3_mcptot  = MC_TRACK_VEC.mag()/1000.;
01303   t3_mcpt    = MC_TRACK_VEC.perp()/1000.;
01304 
01305   t3_nDigi   = MC_DIGI_SIZE;
01306   t3_t0 = t0_bes;
01307   t3_t0Sta = t0Sta;
01308   t3_goodLength = nGood;
01309   t3_length = tracks.length();
01310   t3_finalLength = num_par;
01311   m_tuple31->write();    //raw...
01312     
01313   for (unsigned i = 0; i < tracks2D.length(); i++) {
01314     t2_mctheta = MC_TRACK_LRZVEC.theta();
01315     t2_mcpt    = MC_TRACK_VEC.perp()/1000.;
01316     
01317     t2_nDigi   = MC_DIGI_SIZE;
01318     t2_nHits   = tracks2D[i]->nLinks();
01319     t2_nSegs   = tracks2D[i]->segments().length();
01320     t2_chi2    = tracks2D[i]->chi2();
01321     t2_ndf     = tracks2D[i]->ndf();
01322     t2_radius  = tracks2D[i]->radius();
01323     t2_evtNo   = _nEvents;
01324     t2_length  = tracks.length();
01325     t2_length2 = tracks2D.length();
01326     m_tuple2->write();   //unused 2D tracks
01327   }
01328 }

StatusCode TrkReco::finalize  ) 
 

StatusCode TrkReco::finalize  ) 
 

00278                              {
00279 
00280     if (b_timeTest && b_tuple) m_timersvc->print();
00281 
00282     //...Clear TrkReco objects...
00283     if (_cdc) _cdc->fastClear();
00284     if (b_doConformalFinder && _confFinder) _confFinder->clear();
00285     if (b_doCurlFinder && _curlFinder) _curlFinder->clear();
00286 
00287     //...Summary...
00288 //    dump("summary");
00289 
00290     //...Delete TrkReco objects...
00291     if (_confFinder) delete _confFinder;
00292     if (_curlFinder) delete _curlFinder;
00293 
00294     return StatusCode::SUCCESS;
00295 }

StatusCode TrkReco::initialize  ) 
 

StatusCode TrkReco::initialize  ) 
 

Get RawDataProviderSvc

Get MdcGeomSvc

Get MdcCalibFunSvc

Initialize NTuple

00093                               {
00094     MsgStream log(msgSvc(), name());
00095     log << MSG::INFO << "in initialize()" << endreq;
00096 
00097     StatusCode sc;
00098 
00100     IRawDataProviderSvc* irawDataProviderSvc;
00101     sc = service ("RawDataProviderSvc", irawDataProviderSvc);
00102     _rawDataProviderSvc = dynamic_cast<RawDataProviderSvc*> (irawDataProviderSvc);
00103     if ( sc.isFailure() ){
00104       log << MSG::FATAL << "Could not load RawDataProviderSvc!" << endreq;
00105       return StatusCode::FAILURE;
00106     }
00107 
00109  //   IMdcGeomSvc* imdcGeomSvc;
00110  //   sc = service("MdcGeomSvc", imdcGeomSvc);
00111  //   _mdcGeomSvc =  dynamic_cast<MdcGeomSvc*> (imdcGeomSvc);
00112  //   if (sc.isFailure()) {
00113  //     return( StatusCode::FAILURE);  
00114  //   }
00115 
00117     IMdcCalibFunSvc* imdcCalibSvc;
00118     sc = service ("MdcCalibFunSvc",imdcCalibSvc);
00119     _mdcCalibFunSvc = dynamic_cast<MdcCalibFunSvc*> (imdcCalibSvc);
00120     if ( sc.isFailure() ){
00121       log << MSG::FATAL << "Could not load MdcCalibFunSvc!" << endreq;
00122     }
00123 
00125     if (b_tuple) InitTuple();
00126 
00127 #ifdef TRKRECO_DEBUG
00128     b_debugLevel = 2;
00129 #endif
00130     
00131     //...Create TMDC...
00132 //    _cdc = cdcInit();
00133 
00134     //...TrkReco...
00135     TrkRecoHelixFitterChisqMax = b_helixFitterChisqMax;
00136 
00137     //...Create rphi finder...
00138 /*    _perfectFinder = new TPerfectFinder(b_perfectFitting,
00139                                         b_conformalMaxSigma,
00140                                         b_conformalStereoMaxSigma,
00141                                         b_conformalFittingCorrections);
00142 */
00143     if ((! _confFinder) && (b_conformalFinder == 0)) {
00144        _confFinder = new TConformalFinder0(b_conformalMaxSigma,
00145                                             b_conformalFraction,
00146                                             b_conformalStereoZ3,
00147                                             b_conformalStereoZ4,
00148                                             b_conformalStereoChisq3,
00149                                             b_conformalStereoChisq4,
00150                                             b_conformalStereoMaxSigma,
00151                                             b_conformalFittingCorrections,
00152                                             b_salvageLevel,
00153                                             b_doConformalFinderCosmic);
00154     }
00155     else if (! _confFinder) {
00156         _confFinder = new TConformalFinder(b_doConformalFastFinder,
00157                                            b_doConformalSlowFinder,
00158                                            b_conformalPerfectSegmentFinding,
00159                                            b_conformalMaxSigma,
00160                                            b_conformalStereoMaxSigma,
00161                                            b_salvageLevel,
00162                                            b_conformalMinNLinksForSegment,
00163                                            b_conformalMinNCores,
00164                                            b_conformalMinNSegments,
00165                                            b_conformalSalvageLoadWidth,
00166                                            b_conformalStereoMode,
00167                                            b_conformalStereoLoadWidth,
00168                                            b_conformalStereoSzSegmentDistance,
00169                                            b_conformalStereoSzLinkDistance,
00170                                            b_conformalFittingFlag);
00171     }
00172     _confFinder->debugLevel(b_debugLevel);
00173     _confFinder->doStereo(b_doConformalFinderStereo);
00174 
00175     //...Salvage flag is ignored in new conf. finder...
00176     if (b_doSalvage == 2) _confFinder->doSalvage(true);
00177 
00178     //...Create curl finder...
00179     if (! _curlFinder)
00180         _curlFinder = new TCurlFinder((unsigned)min_segment,
00181                                       (unsigned)min_salvage,
00182                                       bad_distance_for_salvage,
00183                                       good_distance_for_salvage,
00184                                       (unsigned)min_sequence,
00185                                       (unsigned)min_fullwire,
00186                                       range_for_axial_search,
00187                                       range_for_stereo_search,
00188                                       (unsigned)superlayer_for_stereo_search,
00189                                       range_for_axial_last2d_search,
00190                                       range_for_stereo_last2d_search,
00191                                       trace2d_distance,
00192                                       trace2d_first_distance,
00193                                       trace3d_distance,
00194                                       (unsigned)determine_one_track,
00195                                       selector_max_impact,
00196                                       selector_max_sigma,
00197                                       selector_strange_pz,
00198                                       selector_replace_dz,
00199                                       (unsigned)stereo_2dfind,
00200                                       (unsigned)merge_exe,
00201                                       merge_ratio,
00202                                       merge_z_diff,
00203                                       mask_distance,
00204                                       ratio_used_wire,
00205                                       range_for_stereo1,
00206                                       range_for_stereo2,
00207                                       range_for_stereo3,
00208                                       range_for_stereo4,
00209                                       range_for_stereo5,
00210                       range_for_stereo6,
00211                                       z_cut,
00212                                       z_diff_for_last_attend,
00213                                       (unsigned)svd_reconstruction,
00214                                       min_svd_electrons,
00215                                       (unsigned)on_correction,
00216                                       (unsigned)output_2dtracks,
00217                                       (unsigned)curl_version,
00218                                           //jialk
00219                                           minimum_seedLength, 
00220                                           minimum_2DTrackLength,
00221                                       minimum_3DTrackLength,
00222                                   minimum_closeHitsLength,
00223                                           MIN_RADIUS_OF_STRANGE_TRACK, 
00224                                           ULTIMATE_MIN_RADIUS_OF_STRANGE_TRACK);
00225     _curlFinder->debugLevel(b_debugLevel);
00226 
00227     //...Track manager setup...
00228     _trackManager.maxMomentum(b_momentumCut);
00229     _trackManager.debugLevel(b_debugLevel);
00230     _trackManager.fittingFlag(b_fittingFlag);
00231 
00232     //...Initialize...
00233 //zsl    TUpdater::initialize();
00234 
00235     //...For debug...
00236 //    dump("parameter");
00237 
00238     TrkRecoTest = b_test;
00239 
00240     if (b_timeTest && b_tuple) {
00241       StatusCode sc = service( "BesTimerSvc", m_timersvc);
00242       if( sc.isFailure() ) {
00243         log << MSG::WARNING << " Unable to locate BesTimerSvc" << endreq;
00244         return StatusCode::FAILURE;
00245       } 
00246       m_timer[1] = m_timersvc->addItem("Execution");
00247       m_timer[1]->propName("nExecution");
00248     }
00249     
00250     return StatusCode::SUCCESS;   
00251 }

void TrkReco::initPara void   )  [private]
 

initiate Parameters

void TrkReco::initPara void   )  [private]
 

initiate Parameters

00733                      {
00734   declareProperty("mcPar", b_mcPar = 0);
00735   declareProperty("mcHit", b_mcHit = 0);
00736   declareProperty("tuple", b_tuple = 0);
00737   declareProperty("goodTrk", b_goodTrk = 0);
00738   declareProperty("timeTest", b_timeTest = 0);
00739 
00740   declareProperty("cdcVersion", b_cdcVersion = 1.0);
00741   declareProperty("fudgeFactor", b_fudgeFactor = 1.0);
00742 
00743   declareProperty("useESTime", useESTime = 1.0);
00744 
00745   declareProperty("debugLevel", b_debugLevel = 0);
00746   declareProperty("useAllHits", b_useAllHits = 0);
00747   declareProperty("doT0Reset", b_doT0Reset = 0);
00748   declareProperty("nT0ResetMax", b_nT0ResetMax = 1);
00749   declareProperty("doMCAnalysis", b_doMCAnalysis = 1);
00750   declareProperty("helixFitterChisqMax", b_helixFitterChisqMax = 0.);
00751 
00752   declareProperty("doPerfectFinder", b_doPerfectFinder = 0);
00753   declareProperty("perfectFitting", b_perfectFitting = 0);
00754 
00755   declareProperty("conformalFinder", b_conformalFinder = 1);
00756   declareProperty("doConformalFinder", b_doConformalFinder = 0);
00757   declareProperty("doConformalFastFinder", b_doConformalFastFinder = 1);
00758   declareProperty("doConformalSlowFinder", b_doConformalSlowFinder = 1);
00759   declareProperty("conformalPerfectSegmentFinding", b_conformalPerfectSegmentFinding = 0);
00760   declareProperty("conformalFittingFlag", b_conformalFittingFlag = 4);  //1: sag  2: propagation  4: tof  8: freeT0
00761   declareProperty("conformalMaxSigma", b_conformalMaxSigma = 30.);
00762   declareProperty("conformalMinNLinksForSegment", b_conformalMinNLinksForSegment = 2);
00763   declareProperty("conformalMinNCores", b_conformalMinNCores = 2);    //min core for a seg
00764   declareProperty("conformalMinNSegments", b_conformalMinNSegments = 2); //min seg for trk, default: 3
00765   declareProperty("salvageLevel", b_salvageLevel = 30.);
00766   declareProperty("conformalSalvageLoadWidth", b_conformalSalvageLoadWidth = 1);
00767   declareProperty("conformalStereoMode", b_conformalStereoMode = 1);
00768   declareProperty("conformalStereoLoadWidth", b_conformalStereoLoadWidth = 5);
00769   declareProperty("conformalStereoMaxSigma", b_conformalStereoMaxSigma = 30.);
00770   declareProperty("conformalStereoSzSegmentDistance", b_conformalStereoSzSegmentDistance = 10.);
00771   declareProperty("conformalStereoSzLinkDistance", b_conformalStereoSzLinkDistance = 15.);
00772 
00773   declareProperty("doConformalFinderStereo", b_doConformalFinderStereo = 1);  //cosmic, use stereo
00774   declareProperty("doConformalFinderCosmic", b_doConformalFinderCosmic = 0);
00775   declareProperty("conformalFraction", b_conformalFraction = 0.7);      //cores fraction in trk
00776   declareProperty("conformalStereoZ3", b_conformalStereoZ3 = 20.);
00777   declareProperty("conformalStereoZ4", b_conformalStereoZ4 = 20.);
00778   declareProperty("conformalStereoChisq3", b_conformalStereoChisq3 = 30.);
00779   declareProperty("conformalStereoChisq4", b_conformalStereoChisq4 = 30.);
00780   declareProperty("conformalFittingCorrections", b_conformalFittingCorrections = 0);
00781 
00782   declareProperty("doCurlFinder", b_doCurlFinder = 1);  //CurlFinder on: 1  off: 0
00783   declareProperty("doSalvage", b_doSalvage = 2);
00784   declareProperty("doMerge", b_doMerge = 0);
00785   declareProperty("momentumCut", b_momentumCut = 0.0);
00786   declareProperty("doT0Determination", b_doT0Determination = 7);
00787   declareProperty("nTracksForT0", b_nTracksForT0 = 2);
00788   declareProperty("sortMode", b_sortMode = 0);
00789   declareProperty("test", b_test = 0);
00790   declareProperty("fittingFlag", b_fittingFlag = 0);
00791   declareProperty("doAssociation", b_doAssociation = 1);
00792   declareProperty("associateSigma", b_associateSigma = 60);
00793 
00794   declareProperty("dropHot",      m_dropHot= 0);//jialk 20090624
00795   declareProperty("combineTracking",m_combineTracking=0);
00796   declareProperty("keepBadTdc",m_keepBadTdc=0);
00797   declareProperty("keepUnmatch",m_keepUnmatch=0);
00798 
00799   //   For Curl Finder -->
00800   declareProperty("min_segment", min_segment = 5);   //min links for a segment
00801   declareProperty("min_salvage", min_salvage = 10);  //salvage while trk.links < min
00802   declareProperty("bad_distance_for_salvage", bad_distance_for_salvage = 1.0);
00803   declareProperty("good_distance_for_salvage", good_distance_for_salvage = 0.2);
00804   declareProperty("min_sequence", min_sequence = 6);
00805   declareProperty("min_fullwire", min_fullwire = 5);  //Belle: 7
00806   declareProperty("range_for_axial_search", range_for_axial_search = 1.5);
00807   declareProperty("range_for_stereo_search", range_for_stereo_search = 2.5);
00808   declareProperty("superlayer_for_stereo_search", superlayer_for_stereo_search = 3);
00809   declareProperty("range_for_axial_last2d_search", range_for_axial_last2d_search = 1.5);
00810   declareProperty("range_for_stereo_last2d_search", range_for_stereo_last2d_search = 2.0);
00811   declareProperty("trace2d_distance", trace2d_distance = 35.0);
00812   declareProperty("trace2d_first_distance", trace2d_first_distance = 0.5);
00813   declareProperty("trace3d_distance", trace3d_distance = 30.0);
00814   declareProperty("determine_one_track", determine_one_track = 0);
00815   declareProperty("selector_max_impact", selector_max_impact = 4.0);
00816   declareProperty("selector_max_sigma", selector_max_sigma = 36.0);
00817   declareProperty("selector_strange_pz", selector_strange_pz = 10.0);
00818   declareProperty("selector_replace_dz", selector_replace_dz = 15.0);
00819   declareProperty("stereo_2dfind", stereo_2dfind = 0);
00820   declareProperty("merge_exe", merge_exe = 1);
00821   declareProperty("merge_ratio", merge_ratio = 0.1);
00822   declareProperty("merge_z_diff", merge_z_diff = 10.0);
00823   declareProperty("mask_distance", mask_distance = 0.5);
00824   declareProperty("ratio_used_wire", ratio_used_wire = 0.3);
00825   declareProperty("range_for_stereo1", range_for_stereo1 = 2.4);
00826   declareProperty("range_for_stereo2", range_for_stereo2 = 2.7);
00827   declareProperty("range_for_stereo3", range_for_stereo3 = 2.9);
00828   declareProperty("range_for_stereo4", range_for_stereo4 = 3.4);
00829   declareProperty("range_for_stereo5", range_for_stereo5 = 4.1);
00830   declareProperty("range_for_stereo6", range_for_stereo6 = 5.0);  //Liuqg
00831   declareProperty("z_cut", z_cut = 50.0);
00832   declareProperty("z_diff_for_last_attend", z_diff_for_last_attend = 1.5);
00833   declareProperty("on_correction", on_correction = 4);   //1 sag, 2 propagation, 4 tof. definition changed in BES
00834   declareProperty("output_2dtracks", output_2dtracks = 1); //fill 2D track
00835   declareProperty("curl_version", curl_version = 0);
00836   //jialk
00837   declareProperty("minimum_seedLength", minimum_seedLength = 5);
00838   declareProperty("minimum_2DTrackLength", minimum_2DTrackLength = 7);
00839   declareProperty("minimum_3DTrackLength", minimum_3DTrackLength = 10);
00840   declareProperty("minimum_closeHitsLength", minimum_closeHitsLength = 5);
00841   declareProperty("MIN_RADIUS_OF_STRANGE_TRACK",MIN_RADIUS_OF_STRANGE_TRACK = 50);
00842   declareProperty("ULTIMATE_MIN_RADIUS_OF_STRANGE_TRACK",ULTIMATE_MIN_RADIUS_OF_STRANGE_TRACK = 5);
00843   //   <-- For Curl Finder 
00844 }

void TrkReco::InitTuple void   )  [private]
 

initiate and fill Tuple

void TrkReco::InitTuple void   )  [private]
 

initiate and fill Tuple

00847                       {
00848     m_tuple=ntupleSvc()->book("FILE101/rec3D",CLID_ColumnWiseTuple,"MdcRecEvent");
00849     m_tuple->addItem ("mc_phi",   t_mcphi);
00850     m_tuple->addItem ("mc_theta", t_mctheta);
00851     m_tuple->addItem ("mc_ptot",  t_mcptot);
00852     m_tuple->addItem ("mc_pt",    t_mcpt);
00853     m_tuple->addItem ("mc_pz",    t_mcpz);
00854     m_tuple->addItem ("mc_t0",    t_mct0);
00855     m_tuple->addItem ("nDigi",    t_nDigi);
00856 
00857     m_tuple->addItem ("dr",    t_dr);    
00858     m_tuple->addItem ("dz",    t_dz);   
00859     m_tuple->addItem ("pt",    t_pt);    
00860     m_tuple->addItem ("ptot",  t_ptot);        
00861     m_tuple->addItem ("tanlmd",t_tanlmd);
00862     m_tuple->addItem ("phi",   t_phi);
00863     m_tuple->addItem ("radius",t_radius);
00864     m_tuple->addItem ("chi2",  t_chi2);
00865     m_tuple->addItem ("nHits", t_nHits);
00866     m_tuple->addItem ("nCores",t_nCores);
00867     m_tuple->addItem ("nSegs", t_nSegs);
00868     m_tuple->addItem ("ndf",   t_ndf);
00869 
00870     m_tuple->addItem ("dpt",   t_dpt);
00871     m_tuple->addItem ("dptot", t_dptot);
00872     m_tuple->addItem ("dlmd",  t_dlmd);
00873     m_tuple->addItem ("dphi",  t_dphi);
00874 
00875     m_tuple->addItem ("t0",    t_t0);
00876     m_tuple->addItem ("t0_sta",t0_sta);  //mdc, tof
00877 
00878     m_tuple->addItem ("evtNo", t_evtNo);
00879     m_tuple->addItem ("length", t_length);
00880     m_tuple->addItem ("length2", t_length2);
00881 
00882     m_tuple->addItem ("gd_theta", t_good_theta);
00883     m_tuple->addItem ("gd_nLayers", t_gdNLayers);
00884     m_tuple->addItem ("mc_nLayers", t_mcNLayers);
00885     m_tuple->addItem ("best_nLayers",t_bestNLayers);
00886     m_tuple->addItem ("best_mc_nLayers",t_bestMcNLayers);
00887 
00888     m_tuple3=ntupleSvc()->book("FILE101/raw",CLID_ColumnWiseTuple,"Raw Data");
00889     m_tuple3->addItem ("mc_t0",    t3_mct0);
00890     m_tuple3->addItem ("mc_theta", t3_mctheta);
00891     m_tuple3->addItem ("mc_phi",   t3_mcphi);
00892     m_tuple3->addItem ("mc_ptot",  t3_mcptot);
00893     m_tuple3->addItem ("mc_pt",    t3_mcpt);
00894     m_tuple3->addItem ("mc_pid",   t3_mcpid);
00895     m_tuple3->addItem ("evtNo",    t3_evtNo);
00896 
00897     m_tuple31=ntupleSvc()->book("FILE101/rawEvt",CLID_ColumnWiseTuple,"Raw Data");
00898     m_tuple31->addItem ("nDigi",  t3_nDigi);
00899     m_tuple31->addItem ("goodLength", t3_goodLength);
00900     m_tuple31->addItem ("length", t3_length);
00901     m_tuple31->addItem ("t0_rec", t3_t0Rec);
00902     m_tuple31->addItem ("t0", t3_t0);
00903     m_tuple31->addItem ("t0_sta", t3_t0Sta);
00904     m_tuple31->addItem ("finalLength", t3_finalLength);
00905     
00906     m_tuple31->addItem ("mc_theta", t3_mctheta);
00907     m_tuple31->addItem ("mc_ptot",  t3_mcptot);
00908     m_tuple31->addItem ("mc_pt",    t3_mcpt);
00909     m_tuple31->addItem ("evtNo",    t3_evtNo);
00910 
00911     m_tuple2=ntupleSvc()->book("FILE101/rec2D",CLID_ColumnWiseTuple,"MdcRecEvent 2D");
00912     m_tuple2->addItem ("mc_theta", t2_mctheta);
00913     m_tuple2->addItem ("mc_pt",    t2_mcpt);
00914     m_tuple2->addItem ("nDigi",   t2_nDigi);
00915     m_tuple2->addItem ("nHits",   t2_nHits);
00916     m_tuple2->addItem ("nSegs",   t2_nSegs);
00917     m_tuple2->addItem ("chi2",    t2_chi2);
00918     m_tuple2->addItem ("evtNo",   t2_evtNo);
00919     m_tuple2->addItem ("ndf",     t2_ndf);
00920     m_tuple2->addItem ("length",  t2_length);
00921     m_tuple2->addItem ("length2", t2_length2);
00922     m_tuple2->addItem ("radius",  t2_radius);
00923 
00924     m_tuple4=ntupleSvc()->book("FILE101/hit",CLID_ColumnWiseTuple,"MdcRecEvent Hits");
00925     m_tuple4->addItem ("d_cal", t4_Dist);
00926     m_tuple4->addItem ("d_meas", t4_drift);   //d_cal-d_meas
00927     m_tuple4->addItem ("e_meas", t4_dDrift);  //error measure
00928     m_tuple4->addItem ("mc_drift", t4_mcDrift);
00929     m_tuple4->addItem ("mcLR", t4_mcLR);
00930     m_tuple4->addItem ("pull", t4_pull);
00931     m_tuple4->addItem ("lyrId", t4_lyrId);
00932     m_tuple4->addItem ("localId", t4_localId);
00933     m_tuple4->addItem ("LR", t4_LR);
00934     m_tuple4->addItem ("tdc", t4_tdc);
00935     m_tuple4->addItem ("z", t4_z);
00936     m_tuple4->addItem ("bz", t4_bz);  //backward
00937     m_tuple4->addItem ("fz", t4_fz);  //forward
00938     m_tuple4->addItem ("fy", t4_fy);  //forward
00939     m_tuple4->addItem ("phi", t4_phi);
00940     m_tuple4->addItem ("nHits", t4_nHits);
00941 
00942     m_tuple5=ntupleSvc()->book("FILE101/char",CLID_ColumnWiseTuple,"MdcRecEvent Charge");
00943     m_tuple5->addItem ("ptotPos", t5_ptotPos);
00944     m_tuple5->addItem ("ptotNeg", t5_ptotNeg);
00945     m_tuple5->addItem ("drPos", t5_drPos);
00946     m_tuple5->addItem ("drNeg", t5_drNeg);
00947     m_tuple5->addItem ("dzPos", t5_dzPos);
00948     m_tuple5->addItem ("dzNeg", t5_dzNeg);
00949 
00950     m_tuple6=ntupleSvc()->book("FILE101/urec",CLID_ColumnWiseTuple,"MdcRecEvent urec");
00951     m_tuple6->addItem ("length2",  u_length2);
00952     m_tuple6->addItem ("mc_ptot",   u_mcptot);
00953     m_tuple6->addItem ("mc_pt",     u_mcpt);
00954     m_tuple6->addItem ("mc_theta",  u_mctheta);
00955     m_tuple6->addItem ("nDigi",    u_nDigi);
00956     m_tuple6->addItem ("evtNo",    u_evtNo);
00957     m_tuple6->addItem ("mc_t0",     u_mct0);
00958     m_tuple6->addItem ("t0",       ut_t0);
00959     m_tuple6->addItem ("t0_sta",   ut0_sta);
00960 
00961   if (b_timeTest && b_tuple) {
00962     m_tuple7=ntupleSvc()->book("FILE101/time",CLID_ColumnWiseTuple,"MdcRecEvent time");
00963     m_tuple7->addItem ("time", ti_eventTime);   //total time in a event.
00964     m_tuple7->addItem ("recNum", ti_recTrkNum); //total raw-tracks, include decayed tracks!
00965     m_tuple7->addItem ("evtNo", ti_evtNo);
00966     m_tuple7->addItem ("nHits", ti_nHits);  //total hits of rec-tracks
00967     m_tuple7->addItem ("nDigi", ti_nDigi);  //total hits in rawdata
00968   }
00969 
00970     m_tuple9=ntupleSvc()->book("FILE101/seg",CLID_ColumnWiseTuple,"MdcRecEvent segments");
00971     m_tuple9->addItem ("times", t9_times);
00972     m_tuple9->addItem ("nLinks", t9_nLinks);
00973     m_tuple9->addItem ("nUsed", t9_nUsed);
00974     m_tuple9->addItem ("nSL", t9_nSL);
00975     m_tuple9->addItem ("mctheta", t9_mctheta);
00976 
00977     m_tuple10=ntupleSvc()->book("FILE101/rawHit",CLID_ColumnWiseTuple,"MdcRecEvent mchitCOL");
00978     m_tuple10->addItem ("tdc", t10_tdc);
00979     m_tuple10->addItem ("adc", t10_adc);
00980     m_tuple10->addItem ("Drift", t10_drift);
00981     m_tuple10->addItem ("dDrift", t10_dDrift);
00982     m_tuple10->addItem ("lyrId", t10_lyrId);
00983     m_tuple10->addItem ("localId", t10_localId);
00984 }

double TrkReco::maxdDistance TMLink  )  const [private]
 

cal maxdistance temporary in conformal plane

double TrkReco::maxdDistance TMLink  )  const [private]
 

cal maxdistance temporary in conformal plane

01331                                     {
01332     unsigned sl = l->wire()->superLayerId();
01333     unsigned lId = l->wire()->layerId();
01334     double _averR[11] = {9.7, 14.5, 22.14, 28.62, 35.1, 42.39, 48.87, 55.35, 61.83, 69.12, 74.79};
01335     double _averR2[43] = { 7.885, 9.07, 10.29, 11.525,
01336                         12.72, 13.875, 15.01, 16.16,
01337                         19.7, 21.3, 22.955, 24.555,
01338                         26.215, 27.82, 29.465, 31.06,
01339                         32.69, 34.265, 35.875, 37.455,
01340                         39.975, 41.52, 43.12, 44.76,
01341                         46.415, 48.02, 49.685, 51.37,
01342                         53.035, 54.595, 56.215, 57.855,
01343                         59.475, 60.995, 62.565, 64.165,
01344                         66.68, 68.285, 69.915, 71.57,
01345                         73.21, 74.76, 76.345};
01346     double radius = _averR2[lId];
01347     const double singleSigma = l->dDrift();
01348     return 2 * singleSigma / (radius * radius);
01349 }

bool TrkReco::mcEvent void   )  const [private]
 

returns true if an event is MC.

bool TrkReco::mcEvent void   )  const [private]
 

returns true if an event is MC.

00716                            {
00717 //    struct belle_event * ev = 
00718 //      (struct belle_event *) BsGetEnt(BELLE_EVENT, 1, BBS_No_Index);
00719 
00720     //...No BELLE_EVENT ???...
00721 //    if (! ev) return false;
00722 //    if (ev->m_ExpMC == 2) return true;
00723 //    return false;
00724 return true;
00725 }

void TrkReco::mcInformation void   )  [private]
 

creates MC info. of reconstructed tracks.

void TrkReco::mcInformation void   )  [private]
 

creates MC info. of reconstructed tracks.

00650                            {
00651 
00652     //...Preparation...
00653 //  const AList<TTrack> & allTracks = _trackManager.allTracks();
00654     const AList<TTrack> & allTracks = _trackManager.tracksFinal();
00655 
00656     unsigned nHep = TTrackHEP::list().length();
00657     unsigned nTrk = allTracks.length();
00658     unsigned * N = (unsigned *) malloc(nHep * sizeof(unsigned));
00659     for (unsigned i = 0; i < nHep; i++) N[i] = 0;
00660 
00661     //...Loop over all tracks...
00662     for (unsigned i = 0; i < nTrk; i++) {
00663         TTrackMC * mc = allTracks[i]->_mc;
00664         if (! mc) {
00665             mc = new TTrackMC(* allTracks[i]);
00666             _mcTracks.append(mc);
00667             allTracks[i]->_mc = mc;
00668         }
00669 
00670         mc->update();
00671         if (mc->hepId() != -1)
00672             if (mc->charge())
00673                 ++N[mc->hepId()];
00674     }
00675 
00676     //...Check uniqueness...
00677     for (unsigned i = 0; i < nHep; i++) {
00678         if (N[i] < 2) {
00679             for (unsigned j = 0; j < nTrk; j++)
00680                 if (allTracks[j]->_mc->hepId() == i)
00681                     allTracks[j]->_mc->_quality += TTrackUnique;
00682         }
00683     }
00684 
00685     //...Good tracks...
00686     for (unsigned i = 0; i < nTrk; i++) {
00687         unsigned & quality = allTracks[i]->_mc->_quality;
00688         if ((quality & TTrackGhost) && (quality & TTrackUnique))
00689             quality += TTrackGood;
00690     }
00691 
00692     //...Termination...
00693     free(N);
00694 }

const TTrackManager& TrkReco::trackManager void   )  const
 

returns a pointer to TTrackManager.

const TTrackManager & TrkReco::trackManager void   )  const [inline]
 

returns a pointer to TTrackManager.

00343                                 {
00344     return _trackManager;
00345 }

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

returns a list of reconstructed tracks.

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

returns a list of reconstructed tracks.

00329                           {
00330     return _trackManager.tracksFinal();
00331 }


Member Data Documentation

TMDC* TrkReco::_cdc [private]
 

TMDC* TrkReco::_cdc [private]
 

std::string TrkReco::_cdcVersion
 

TFinderBase* TrkReco::_confFinder [private]
 

TFinderBase* TrkReco::_confFinder [private]
 

TCurlFinder* TrkReco::_curlFinder [private]
 

TCurlFinder* TrkReco::_curlFinder [private]
 

AList<TTrackMC> TrkReco::_mcTracks [private]
 

AList<TTrackMC> TrkReco::_mcTracks [private]
 

MdcCalibFunSvc* TrkReco::_mdcCalibFunSvc [private]
 

MdcCalibFunSvc* TrkReco::_mdcCalibFunSvc [private]
 

MdcGeomSvc* TrkReco::_mdcGeomSvc [private]
 

MdcGeomSvc* TrkReco::_mdcGeomSvc [private]
 

unsigned TrkReco::_nEvents [private]
 

TFinderBase* TrkReco::_perfectFinder [private]
 

TFinderBase* TrkReco::_perfectFinder [private]
 

RawDataProviderSvc* TrkReco::_rawDataProviderSvc [private]
 

RawDataProviderSvc* TrkReco::_rawDataProviderSvc [private]
 

TTrackManager TrkReco::_trackManager [private]
 

float TrkReco::b_associateSigma
 

float TrkReco::b_cdcVersion
 

int TrkReco::b_conformalFinder
 

int TrkReco::b_conformalFittingCorrections
 

int TrkReco::b_conformalFittingFlag
 

float TrkReco::b_conformalFraction
 

float TrkReco::b_conformalMaxSigma
 

int TrkReco::b_conformalMinNCores
 

int TrkReco::b_conformalMinNLinksForSegment
 

int TrkReco::b_conformalMinNSegments
 

int TrkReco::b_conformalPerfectSegmentFinding
 

int TrkReco::b_conformalSalvageLoadWidth
 

float TrkReco::b_conformalStereoChisq3
 

float TrkReco::b_conformalStereoChisq4
 

int TrkReco::b_conformalStereoLoadWidth
 

float TrkReco::b_conformalStereoMaxSigma
 

int TrkReco::b_conformalStereoMode
 

float TrkReco::b_conformalStereoSzLinkDistance
 

float TrkReco::b_conformalStereoSzSegmentDistance
 

float TrkReco::b_conformalStereoZ3
 

float TrkReco::b_conformalStereoZ4
 

int TrkReco::b_debugLevel
 

int TrkReco::b_doAssociation
 

int TrkReco::b_doConformalFastFinder
 

int TrkReco::b_doConformalFinder
 

int TrkReco::b_doConformalFinderCosmic
 

int TrkReco::b_doConformalFinderStereo
 

int TrkReco::b_doConformalSlowFinder
 

int TrkReco::b_doCurlFinder
 

int TrkReco::b_doMCAnalysis
 

int TrkReco::b_doMerge
 

int TrkReco::b_doPerfectFinder
 

int TrkReco::b_doSalvage
 

int TrkReco::b_doT0Determination
 

int TrkReco::b_doT0Reset
 

int TrkReco::b_fittingFlag
 

float TrkReco::b_fudgeFactor
 

int TrkReco::b_goodTrk
 

float TrkReco::b_helixFitterChisqMax
 

int TrkReco::b_mcHit
 

int TrkReco::b_mcPar
 

double TrkReco::b_momentumCut
 

int TrkReco::b_nT0ResetMax
 

int TrkReco::b_nTracksForT0
 

int TrkReco::b_perfectFitting
 

float TrkReco::b_salvageLevel
 

int TrkReco::b_sortMode
 

int TrkReco::b_test
 

int TrkReco::b_timeTest
 

int TrkReco::b_tuple
 

int TrkReco::b_useAllHits
 

double TrkReco::bad_distance_for_salvage
 

int TrkReco::curl_version
 

int TrkReco::determine_one_track
 

double TrkReco::good_distance_for_salvage
 

int TrkReco::havedigi [private]
 

bool TrkReco::m_combineTracking
 

bool TrkReco::m_dropHot
 

bool TrkReco::m_keepBadTdc
 

bool TrkReco::m_keepUnmatch
 

BesTimer* TrkReco::m_timer[2] [private]
 

BesTimer* TrkReco::m_timer[2] [private]
 

IBesTimerSvc* TrkReco::m_timersvc [private]
 

IBesTimerSvc* TrkReco::m_timersvc [private]
 

NTuple::Tuple* TrkReco::m_tuple [private]
 

NTuple::Tuple* TrkReco::m_tuple [private]
 

NTuple::Tuple* TrkReco::m_tuple10 [private]
 

NTuple::Tuple* TrkReco::m_tuple10 [private]
 

NTuple::Tuple* TrkReco::m_tuple2 [private]
 

NTuple::Tuple* TrkReco::m_tuple2 [private]
 

NTuple::Tuple* TrkReco::m_tuple3 [private]
 

NTuple::Tuple* TrkReco::m_tuple3 [private]
 

NTuple::Tuple* TrkReco::m_tuple31 [private]
 

NTuple::Tuple* TrkReco::m_tuple31 [private]
 

NTuple::Tuple* TrkReco::m_tuple4 [private]
 

NTuple::Tuple* TrkReco::m_tuple4 [private]
 

NTuple::Tuple* TrkReco::m_tuple5 [private]
 

NTuple::Tuple* TrkReco::m_tuple5 [private]
 

NTuple::Tuple* TrkReco::m_tuple6 [private]
 

NTuple::Tuple* TrkReco::m_tuple6 [private]
 

NTuple::Tuple* TrkReco::m_tuple7 [private]
 

NTuple::Tuple* TrkReco::m_tuple7 [private]
 

NTuple::Tuple* TrkReco::m_tuple9 [private]
 

NTuple::Tuple* TrkReco::m_tuple9 [private]
 

double TrkReco::mask_distance
 

int TrkReco::MC_DIGI_SIZE [private]
 

int TrkReco::merge_exe
 

double TrkReco::merge_ratio
 

double TrkReco::merge_z_diff
 

int TrkReco::min_fullwire
 

double TrkReco::MIN_RADIUS_OF_STRANGE_TRACK
 

int TrkReco::min_salvage
 

int TrkReco::min_segment
 

int TrkReco::min_sequence
 

double TrkReco::min_svd_electrons
 

double TrkReco::minimum_2DTrackLength
 

double TrkReco::minimum_3DTrackLength
 

double TrkReco::minimum_closeHitsLength
 

double TrkReco::minimum_seedLength
 

int TrkReco::on_correction
 

int TrkReco::output_2dtracks
 

double TrkReco::range_for_axial_last2d_search
 

double TrkReco::range_for_axial_search
 

double TrkReco::range_for_stereo1
 

double TrkReco::range_for_stereo2
 

double TrkReco::range_for_stereo3
 

double TrkReco::range_for_stereo4
 

double TrkReco::range_for_stereo5
 

double TrkReco::range_for_stereo6
 

double TrkReco::range_for_stereo_last2d_search
 

double TrkReco::range_for_stereo_search
 

double TrkReco::ratio_used_wire
 

double TrkReco::selector_max_impact
 

double TrkReco::selector_max_sigma
 

double TrkReco::selector_replace_dz
 

double TrkReco::selector_strange_pz
 

int TrkReco::stereo_2dfind
 

int TrkReco::superlayer_for_stereo_search
 

int TrkReco::svd_reconstruction
 

double TrkReco::t0_bes [private]
 

NTuple::Item<float> TrkReco::t0_sta [private]
 

NTuple::Item<float> TrkReco::t0_sta [private]
 

double TrkReco::t0Sta [private]
 

NTuple::Item<float> TrkReco::t10_adc [private]
 

NTuple::Item<float> TrkReco::t10_adc [private]
 

NTuple::Item<float> TrkReco::t10_dDrift [private]
 

NTuple::Item<float> TrkReco::t10_dDrift [private]
 

NTuple::Item<float> TrkReco::t10_drift [private]
 

NTuple::Item<float> TrkReco::t10_drift [private]
 

NTuple::Item<float> TrkReco::t10_localId [private]
 

NTuple::Item<float> TrkReco::t10_localId [private]
 

NTuple::Item<float> TrkReco::t10_lyrId [private]
 

NTuple::Item<float> TrkReco::t10_lyrId [private]
 

NTuple::Item<float> TrkReco::t10_tdc [private]
 

NTuple::Item<float> TrkReco::t10_tdc [private]
 

NTuple::Item<float> TrkReco::t2_chi2 [private]
 

NTuple::Item<float> TrkReco::t2_chi2 [private]
 

NTuple::Item<float> TrkReco::t2_evtNo [private]
 

NTuple::Item<float> TrkReco::t2_evtNo [private]
 

NTuple::Item<float> TrkReco::t2_length [private]
 

NTuple::Item<float> TrkReco::t2_length [private]
 

NTuple::Item<float> TrkReco::t2_length2 [private]
 

NTuple::Item<float> TrkReco::t2_length2 [private]
 

NTuple::Item<float> TrkReco::t2_mcpt [private]
 

NTuple::Item<float> TrkReco::t2_mcpt [private]
 

NTuple::Item<float> TrkReco::t2_mctheta [private]
 

NTuple::Item<float> TrkReco::t2_mctheta [private]
 

NTuple::Item<float> TrkReco::t2_ndf [private]
 

NTuple::Item<float> TrkReco::t2_ndf [private]
 

NTuple::Item<float> TrkReco::t2_nDigi [private]
 

NTuple::Item<float> TrkReco::t2_nDigi [private]
 

NTuple::Item<float> TrkReco::t2_nHits [private]
 

NTuple::Item<float> TrkReco::t2_nHits [private]
 

NTuple::Item<float> TrkReco::t2_nSegs [private]
 

NTuple::Item<float> TrkReco::t2_nSegs [private]
 

NTuple::Item<float> TrkReco::t2_radius [private]
 

NTuple::Item<float> TrkReco::t2_radius [private]
 

NTuple::Item<float> TrkReco::t3_evtNo [private]
 

NTuple::Item<float> TrkReco::t3_evtNo [private]
 

NTuple::Item<float> TrkReco::t3_finalLength [private]
 

NTuple::Item<float> TrkReco::t3_finalLength [private]
 

NTuple::Item<float> TrkReco::t3_goodLength [private]
 

NTuple::Item<float> TrkReco::t3_goodLength [private]
 

NTuple::Item<float> TrkReco::t3_length [private]
 

NTuple::Item<float> TrkReco::t3_length [private]
 

NTuple::Item<float> TrkReco::t3_mcphi [private]
 

NTuple::Item<float> TrkReco::t3_mcphi [private]
 

NTuple::Item<float> TrkReco::t3_mcpid [private]
 

NTuple::Item<float> TrkReco::t3_mcpid [private]
 

NTuple::Item<float> TrkReco::t3_mcpt [private]
 

NTuple::Item<float> TrkReco::t3_mcpt [private]
 

NTuple::Item<float> TrkReco::t3_mcptot [private]
 

NTuple::Item<float> TrkReco::t3_mcptot [private]
 

NTuple::Item<float> TrkReco::t3_mct0 [private]
 

NTuple::Item<float> TrkReco::t3_mct0 [private]
 

NTuple::Item<float> TrkReco::t3_mctheta [private]
 

NTuple::Item<float> TrkReco::t3_mctheta [private]
 

NTuple::Item<float> TrkReco::t3_nDigi [private]
 

NTuple::Item<float> TrkReco::t3_nDigi [private]
 

NTuple::Item<float> TrkReco::t3_t0 [private]
 

NTuple::Item<float> TrkReco::t3_t0 [private]
 

NTuple::Item<float> TrkReco::t3_t0Rec [private]
 

NTuple::Item<float> TrkReco::t3_t0Rec [private]
 

NTuple::Item<float> TrkReco::t3_t0Sta [private]
 

NTuple::Item<float> TrkReco::t3_t0Sta [private]
 

NTuple::Item<float> TrkReco::t4_bz [private]
 

NTuple::Item<float> TrkReco::t4_bz [private]
 

NTuple::Item<float> TrkReco::t4_dDrift [private]
 

NTuple::Item<float> TrkReco::t4_dDrift [private]
 

NTuple::Item<float> TrkReco::t4_Dist [private]
 

NTuple::Item<float> TrkReco::t4_Dist [private]
 

NTuple::Item<float> TrkReco::t4_drift [private]
 

NTuple::Item<float> TrkReco::t4_drift [private]
 

NTuple::Item<float> TrkReco::t4_fy [private]
 

NTuple::Item<float> TrkReco::t4_fy [private]
 

NTuple::Item<float> TrkReco::t4_fz [private]
 

NTuple::Item<float> TrkReco::t4_fz [private]
 

NTuple::Item<float> TrkReco::t4_localId [private]
 

NTuple::Item<float> TrkReco::t4_localId [private]
 

NTuple::Item<float> TrkReco::t4_LR [private]
 

NTuple::Item<float> TrkReco::t4_LR [private]
 

NTuple::Item<float> TrkReco::t4_lyrId [private]
 

NTuple::Item<float> TrkReco::t4_lyrId [private]
 

NTuple::Item<float> TrkReco::t4_mcDrift [private]
 

NTuple::Item<float> TrkReco::t4_mcDrift [private]
 

NTuple::Item<float> TrkReco::t4_mcLR [private]
 

NTuple::Item<float> TrkReco::t4_mcLR [private]
 

NTuple::Item<float> TrkReco::t4_nHits [private]
 

NTuple::Item<float> TrkReco::t4_nHits [private]
 

NTuple::Item<float> TrkReco::t4_phi [private]
 

NTuple::Item<float> TrkReco::t4_phi [private]
 

NTuple::Item<float> TrkReco::t4_pull [private]
 

NTuple::Item<float> TrkReco::t4_pull [private]
 

NTuple::Item<float> TrkReco::t4_tdc [private]
 

NTuple::Item<float> TrkReco::t4_tdc [private]
 

NTuple::Item<float> TrkReco::t4_z [private]
 

NTuple::Item<float> TrkReco::t4_z [private]
 

NTuple::Item<float> TrkReco::t5_drNeg [private]
 

NTuple::Item<float> TrkReco::t5_drNeg [private]
 

NTuple::Item<float> TrkReco::t5_drPos [private]
 

NTuple::Item<float> TrkReco::t5_drPos [private]
 

NTuple::Item<float> TrkReco::t5_dzNeg [private]
 

NTuple::Item<float> TrkReco::t5_dzNeg [private]
 

NTuple::Item<float> TrkReco::t5_dzPos [private]
 

NTuple::Item<float> TrkReco::t5_dzPos [private]
 

NTuple::Item<float> TrkReco::t5_ptotNeg [private]
 

NTuple::Item<float> TrkReco::t5_ptotNeg [private]
 

NTuple::Item<float> TrkReco::t5_ptotPos [private]
 

NTuple::Item<float> TrkReco::t5_ptotPos [private]
 

NTuple::Item<float> TrkReco::t9_mctheta [private]
 

NTuple::Item<float> TrkReco::t9_mctheta [private]
 

NTuple::Item<float> TrkReco::t9_nLinks [private]
 

NTuple::Item<float> TrkReco::t9_nLinks [private]
 

NTuple::Item<float> TrkReco::t9_nSL [private]
 

NTuple::Item<float> TrkReco::t9_nSL [private]
 

NTuple::Item<float> TrkReco::t9_nUsed [private]
 

NTuple::Item<float> TrkReco::t9_nUsed [private]
 

NTuple::Item<float> TrkReco::t9_times [private]
 

NTuple::Item<float> TrkReco::t9_times [private]
 

NTuple::Item<float> TrkReco::t_bestMcNLayers [private]
 

NTuple::Item<float> TrkReco::t_bestMcNLayers [private]
 

NTuple::Item<float> TrkReco::t_bestNLayers [private]
 

NTuple::Item<float> TrkReco::t_bestNLayers [private]
 

NTuple::Item<float> TrkReco::t_chi2 [private]
 

NTuple::Item<float> TrkReco::t_chi2 [private]
 

NTuple::Item<float> TrkReco::t_dlmd [private]
 

NTuple::Item<float> TrkReco::t_dlmd [private]
 

NTuple::Item<float> TrkReco::t_dphi [private]
 

NTuple::Item<float> TrkReco::t_dphi [private]
 

NTuple::Item<float> TrkReco::t_dpt [private]
 

NTuple::Item<float> TrkReco::t_dpt [private]
 

NTuple::Item<float> TrkReco::t_dptot [private]
 

NTuple::Item<float> TrkReco::t_dptot [private]
 

NTuple::Item<float> TrkReco::t_dr [private]
 

NTuple::Item<float> TrkReco::t_dr [private]
 

NTuple::Item<float> TrkReco::t_dz [private]
 

NTuple::Item<float> TrkReco::t_dz [private]
 

NTuple::Item<float> TrkReco::t_evtNo [private]
 

NTuple::Item<float> TrkReco::t_evtNo [private]
 

NTuple::Item<float> TrkReco::t_gdNLayers [private]
 

NTuple::Item<float> TrkReco::t_gdNLayers [private]
 

NTuple::Item<float> TrkReco::t_good_theta [private]
 

NTuple::Item<float> TrkReco::t_good_theta [private]
 

NTuple::Item<float> TrkReco::t_length [private]
 

NTuple::Item<float> TrkReco::t_length [private]
 

NTuple::Item<float> TrkReco::t_length2 [private]
 

NTuple::Item<float> TrkReco::t_length2 [private]
 

NTuple::Item<float> TrkReco::t_mcNLayers [private]
 

NTuple::Item<float> TrkReco::t_mcNLayers [private]
 

NTuple::Item<float> TrkReco::t_mcphi [private]
 

NTuple::Item<float> TrkReco::t_mcphi [private]
 

NTuple::Item<float> TrkReco::t_mcpt [private]
 

NTuple::Item<float> TrkReco::t_mcpt [private]
 

NTuple::Item<float> TrkReco::t_mcptot [private]
 

NTuple::Item<float> TrkReco::t_mcptot [private]
 

NTuple::Item<float> TrkReco::t_mcpz [private]
 

NTuple::Item<float> TrkReco::t_mcpz [private]
 

NTuple::Item<float> TrkReco::t_mct0 [private]
 

NTuple::Item<float> TrkReco::t_mct0 [private]
 

NTuple::Item<float> TrkReco::t_mctheta [private]
 

NTuple::Item<float> TrkReco::t_mctheta [private]
 

NTuple::Item<float> TrkReco::t_nCores [private]
 

NTuple::Item<float> TrkReco::t_nCores [private]
 

NTuple::Item<float> TrkReco::t_ndf [private]
 

NTuple::Item<float> TrkReco::t_ndf [private]
 

NTuple::Item<float> TrkReco::t_nDigi [private]
 

NTuple::Item<float> TrkReco::t_nDigi [private]
 

NTuple::Item<float> TrkReco::t_nHits [private]
 

NTuple::Item<float> TrkReco::t_nHits [private]
 

NTuple::Item<float> TrkReco::t_nSegs [private]
 

NTuple::Item<float> TrkReco::t_nSegs [private]
 

NTuple::Item<float> TrkReco::t_phi [private]
 

NTuple::Item<float> TrkReco::t_phi [private]
 

NTuple::Item<float> TrkReco::t_pt [private]
 

NTuple::Item<float> TrkReco::t_pt [private]
 

NTuple::Item<float> TrkReco::t_ptot [private]
 

NTuple::Item<float> TrkReco::t_ptot [private]
 

NTuple::Item<float> TrkReco::t_radius [private]
 

NTuple::Item<float> TrkReco::t_radius [private]
 

NTuple::Item<float> TrkReco::t_t0 [private]
 

NTuple::Item<float> TrkReco::t_t0 [private]
 

NTuple::Item<float> TrkReco::t_tanlmd [private]
 

NTuple::Item<float> TrkReco::t_tanlmd [private]
 

NTuple::Item<float> TrkReco::ti_eventTime [private]
 

NTuple::Item<float> TrkReco::ti_eventTime [private]
 

NTuple::Item<float> TrkReco::ti_evtNo [private]
 

NTuple::Item<float> TrkReco::ti_evtNo [private]
 

NTuple::Item<float> TrkReco::ti_nDigi [private]
 

NTuple::Item<float> TrkReco::ti_nDigi [private]
 

NTuple::Item<float> TrkReco::ti_nHits [private]
 

NTuple::Item<float> TrkReco::ti_nHits [private]
 

NTuple::Item<float> TrkReco::ti_recTrkNum [private]
 

NTuple::Item<float> TrkReco::ti_recTrkNum [private]
 

double TrkReco::trace2d_distance
 

double TrkReco::trace2d_first_distance
 

double TrkReco::trace3d_distance
 

NTuple::Item<float> TrkReco::u_evtNo [private]
 

NTuple::Item<float> TrkReco::u_evtNo [private]
 

NTuple::Item<float> TrkReco::u_length2 [private]
 

NTuple::Item<float> TrkReco::u_length2 [private]
 

NTuple::Item<float> TrkReco::u_mcpt [private]
 

NTuple::Item<float> TrkReco::u_mcpt [private]
 

NTuple::Item<float> TrkReco::u_mcptot [private]
 

NTuple::Item<float> TrkReco::u_mcptot [private]
 

NTuple::Item<float> TrkReco::u_mct0 [private]
 

NTuple::Item<float> TrkReco::u_mct0 [private]
 

NTuple::Item<float> TrkReco::u_mctheta [private]
 

NTuple::Item<float> TrkReco::u_mctheta [private]
 

NTuple::Item<float> TrkReco::u_nDigi [private]
 

NTuple::Item<float> TrkReco::u_nDigi [private]
 

double TrkReco::ULTIMATE_MIN_RADIUS_OF_STRANGE_TRACK
 

int TrkReco::useESTime
 

NTuple::Item<float> TrkReco::ut0_sta [private]
 

NTuple::Item<float> TrkReco::ut0_sta [private]
 

NTuple::Item<float> TrkReco::ut_t0 [private]
 

NTuple::Item<float> TrkReco::ut_t0 [private]
 

double TrkReco::z_cut
 

double TrkReco::z_diff_for_last_attend
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 19:09:43 2011 for BOSS6.5.5 by  doxygen 1.3.9.1