#include <MdcMergeDups.h>
Public Member Functions | |
MdcMergeDups (const std::string &name, ISvcLocator *pSvcLocator) | |
virtual | ~MdcMergeDups () |
StatusCode | initialize () |
StatusCode | execute () |
StatusCode | finalize () |
StatusCode | beginRun () |
int | mergeDups (void) |
int | mergeCurl (void) |
int | testByOverlapHit (RecMdcTrack *refTk, RecMdcTrack *testTk) |
int | testByParam (RecMdcTrack *refTk, RecMdcTrack *testTk) |
int | doMergeLong (std::vector< RecMdcTrack * > mergeTkList) |
int | doMergeCurl (std::vector< RecMdcTrack * > mergeTkList) |
void | store (TrkRecoTrk *aTrack) |
bool | eraseTdsTrack (RecMdcTrackCol::iterator tk) |
void | dumpRecMdcTrack () |
Private Attributes | |
const MdcDetector * | m_gm |
BField * | m_bfield |
int | m_debug |
double | m_maxDd0InMerge |
double | m_maxDphi0InMerge |
double | m_maxPdradInMerge |
double | m_maxRcsInMerge |
double | m_mergePt |
double | m_mergeLoadAx |
double | m_mergeLoadSt |
double | m_mergeOverlapRatio |
double | m_bunchT0 |
Definition at line 46 of file MdcMergeDups.h.
MdcMergeDups::MdcMergeDups | ( | const std::string & | name, | |
ISvcLocator * | pSvcLocator | |||
) |
Definition at line 59 of file MdcMergeDups.cxx.
References m_debug, m_maxDd0InMerge, m_maxDphi0InMerge, m_maxPdradInMerge, m_maxRcsInMerge, m_mergeLoadAx, m_mergeLoadSt, m_mergeOverlapRatio, and m_mergePt.
00059 : 00060 Algorithm(name, pSvcLocator) 00061 { 00062 declareProperty("debug", m_debug = 0); 00063 //cuts for mergeDups() 00064 declareProperty("maxDd0InMerge", m_maxDd0InMerge = 2.7); 00065 declareProperty("maxDphi0InMerge", m_maxDphi0InMerge = 0.15); 00066 declareProperty("maxDPdradInMerge", m_maxPdradInMerge= 0.22); 00067 declareProperty("maxRcsInMerge", m_maxRcsInMerge = 18.); 00068 //cuts for mergeCurl() 00069 declareProperty("mergePt", m_mergePt = 0.13); 00070 declareProperty("mergeLoadAx", m_mergeLoadAx = 3.); 00071 declareProperty("mergeLoadSt", m_mergeLoadSt = 4.); 00072 declareProperty("mergeOverlapRatio", m_mergeOverlapRatio = 0.7); 00073 }
MdcMergeDups::~MdcMergeDups | ( | ) | [virtual] |
Definition at line 78 of file MdcMergeDups.cxx.
References m_bfield.
00078 { 00079 delete m_bfield; 00080 }
StatusCode MdcMergeDups::beginRun | ( | ) |
Definition at line 82 of file MdcMergeDups.cxx.
References MdcDetector::instance(), and m_gm.
00082 { 00083 //Detector geometry 00084 m_gm = MdcDetector::instance(); 00085 if(NULL == m_gm) return StatusCode::FAILURE; 00086 return StatusCode::SUCCESS; 00087 }
int MdcMergeDups::doMergeCurl | ( | std::vector< RecMdcTrack * > | mergeTkList | ) |
Definition at line 407 of file MdcMergeDups.cxx.
References DstMdcTrack::helix(), MdcID::layer(), m_debug, and DstMdcTrack::setStat().
Referenced by mergeCurl().
00407 { 00408 //------------------------------------------------------------------- 00409 int innerMostTkId = 999; 00410 RecMdcTrack* innerMostTk = NULL; 00411 unsigned innerMostLayerOfTk = 999; 00412 std::vector<RecMdcTrack*>::iterator itTk = mergeTkList.begin(); 00413 for (int iTk=0; itTk != mergeTkList.end(); itTk++,iTk++){ 00414 RecMdcTrack* tk = (*itTk); 00415 unsigned innerMostLayer = 999; 00416 for (unsigned iHit = 0; iHit < tk->getVecHits().size(); iHit++) { 00417 unsigned layer = MdcID::layer(tk->getVecHits()[iHit]->getMdcId()); 00418 if (layer < innerMostLayer) innerMostLayer=layer; 00419 } 00420 00421 if(m_debug>0)std::cout<<__FILE__<<" to be merged track id="<<tk->trackId()<< std::endl; 00422 // test inner most layer id; if same, test dz 00423 if(innerMostLayer < innerMostLayerOfTk){ 00424 innerMostTkId = iTk; 00425 innerMostTk = tk; 00426 }else if (innerMostLayer == innerMostLayerOfTk) { 00427 // test by dz 00428 if (tk->helix(3) < innerMostTk->helix(3)){ 00429 innerMostTkId = iTk; 00430 innerMostTk = tk; 00431 } 00432 } 00433 }//end of for mergeTkList 00434 innerMostTk->setStat(-1); 00435 00436 return innerMostTkId; 00437 }
int MdcMergeDups::doMergeLong | ( | std::vector< RecMdcTrack * > | mergeTkList | ) |
Definition at line 270 of file MdcMergeDups.cxx.
References m_maxRcsInMerge, and DstMdcTrack::setStat().
Referenced by mergeCurl().
00270 { 00271 //------------------------------------------------------------------- 00272 //merge hitlist 00273 double minRcs=999.; 00274 int bestTkId=999; 00275 RecMdcTrack* bestTk=NULL; 00276 std::vector<RecMdcTrack*>::iterator itTk = mergeTkList.begin(); 00277 for (int iTk=0; itTk != mergeTkList.end(); itTk++,iTk++){ 00278 RecMdcTrack* tk = (*itTk); 00279 double chi2 = tk->chi2(); 00280 double ndf = tk->ndof(); 00281 if(chi2/ndf < minRcs) { 00282 bestTkId = tk->trackId(); 00283 bestTk = tk; 00284 } 00285 } 00286 if (minRcs < m_maxRcsInMerge) return bestTkId; 00287 bestTk->setStat(-1); 00288 00289 return 999; 00290 //FIXME 00291 /* 00292 //fit with track parameter respectively 00293 MdcxFittedHel fit1(dcxhlist, *iptr); 00294 MdcxFittedHel fit2(dcxhlist, *trkl[j]); 00295 int uf = 0; 00296 //get a best fit 00297 if ( !fit1.Fail() && (fit1.Rcs()<m_maxRcsInMerge) ) uf = 1; 00298 if ( !fit2.Fail() && (fit2.Rcs()<fit1.Rcs()) ) uf = 2; 00299 00300 if (uf) {//two fit all ok 00301 //delete bad track 00302 MdcxHel fitme = (uf == 1) ? fit1 : fit2; 00303 } 00304 */ 00305 }
void MdcMergeDups::dumpRecMdcTrack | ( | ) |
Definition at line 470 of file MdcMergeDups.cxx.
References MdcID::layer(), m_debug, EventModel::Recon::RecMdcTrackCol, and MdcID::wire().
Referenced by execute().
00470 { 00471 SmartDataPtr<RecMdcTrackCol> trackList(eventSvc(),EventModel::Recon::RecMdcTrackCol); 00472 if (!trackList) return; 00473 if (trackList->size() != 4 ) setFilterPassed(true); 00474 std::cout<<"N track after Merged = "<<trackList->size() << std::endl; 00475 if (m_debug <=1) return; 00476 RecMdcTrackCol::iterator it = trackList->begin(); 00477 for (;it!= trackList->end();it++){ 00478 RecMdcTrack *tk = *it; 00479 std::cout<< "//====RecMdcTrack "<<tk->trackId()<<"====:" << std::endl; 00480 cout <<" d0 "<<tk->helix(0) 00481 <<" phi0 "<<tk->helix(1) 00482 <<" cpa "<<tk->helix(2) 00483 <<" z0 "<<tk->helix(3) 00484 <<" tanl "<<tk->helix(4) 00485 <<endl; 00486 std::cout<<" q "<<tk->charge() 00487 <<" theta "<<tk->theta() 00488 <<" phi "<<tk->phi() 00489 <<" x0 "<<tk->x() 00490 <<" y0 "<<tk->y() 00491 <<" z0 "<<tk->z() 00492 <<" r0 "<<tk->r() 00493 <<endl; 00494 std::cout <<" p "<<tk->p() 00495 <<" pt "<<tk->pxy() 00496 <<" px "<<tk->px() 00497 <<" py "<<tk->py() 00498 <<" pz "<<tk->pz() 00499 <<endl; 00500 std::cout<<" tkStat "<<tk->stat() 00501 <<" chi2 "<<tk->chi2() 00502 <<" ndof "<<tk->ndof() 00503 <<" nhit "<<tk->getNhits() 00504 <<" nst "<<tk->nster() 00505 <<endl; 00506 //std::cout<< "errmat " << std::endl; 00507 //for (int i=0; i<15; i++){ std::cout<< " "<<tk->err(i); } 00508 //std::cout<< " " << std::endl; 00509 00510 int nhits = tk->getVecHits().size(); 00511 std::cout<<nhits <<" Hits: " << std::endl; 00512 for(int ii=0; ii <nhits ; ii++){ 00513 Identifier id(tk->getVecHits()[ii]->getMdcId()); 00514 int layer = MdcID::layer(id); 00515 int wire = MdcID::wire(id); 00516 cout<<"("<< layer <<","<<wire<<","<<tk->getVecHits()[ii]->getStat() 00517 <<",lr:"<<tk->getVecHits()[ii]->getFlagLR()<<") "; 00518 }//end of hit list 00519 std::cout << " "<< std::endl; 00520 }//end of tk list 00521 std::cout << " "<< std::endl; 00522 }
bool MdcMergeDups::eraseTdsTrack | ( | RecMdcTrackCol::iterator | tk | ) |
Definition at line 455 of file MdcMergeDups.cxx.
References EventModel::Recon::RecMdcHitCol, and EventModel::Recon::RecMdcTrackCol.
Referenced by mergeCurl().
00455 { 00456 SmartDataPtr<RecMdcTrackCol> trackList(eventSvc(),EventModel::Recon::RecMdcTrackCol); 00457 if (!trackList) return false; 00458 SmartDataPtr<RecMdcHitCol> hitList(eventSvc(),EventModel::Recon::RecMdcHitCol); 00459 if (!hitList) return false; 00460 HitRefVec hits = (*tk)->getVecHits(); 00461 HitRefVec::iterator iterHit = hits.begin(); 00462 for (; iterHit != hits.end(); iterHit++) { 00463 //hitList->erase(iterHit); 00464 } 00465 trackList->erase(tk); 00466 return true; 00467 }
StatusCode MdcMergeDups::execute | ( | ) |
Definition at line 111 of file MdcMergeDups.cxx.
References dumpRecMdcTrack(), Bes_Common::INFO, m_bunchT0, m_debug, mergeCurl(), msgSvc(), and Bes_Common::WARNING.
00111 { 00112 MsgStream log(msgSvc(), name()); 00113 log << MSG::INFO << "in execute()" << endreq; 00114 setFilterPassed(false); 00115 00116 m_bunchT0 = -999.; 00117 SmartDataPtr<RecEsTimeCol> aevtimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol"); 00118 if (!aevtimeCol || aevtimeCol->size()==0) { 00119 log << MSG::WARNING<< " Could not find RecEsTimeCol"<< endreq; 00120 return StatusCode::SUCCESS; 00121 } 00122 00123 RecEsTimeCol::iterator iter_evt = aevtimeCol->begin(); 00124 for(; iter_evt!=aevtimeCol->end(); iter_evt++){ 00125 m_bunchT0 = (*iter_evt)->getTest(); 00126 } 00127 00128 00129 int nMerged = mergeCurl(); 00130 00131 if(m_debug>0) { 00132 std::cout<<name()<<": Merged "<<nMerged << " track "<< std::endl; 00133 dumpRecMdcTrack(); 00134 } 00135 00136 return StatusCode::SUCCESS; 00137 }
StatusCode MdcMergeDups::finalize | ( | ) |
Definition at line 140 of file MdcMergeDups.cxx.
References Bes_Common::INFO, and msgSvc().
00140 { 00141 MsgStream log(msgSvc(), name()); 00142 log << MSG::INFO << "in finalize()" << endreq; 00143 00144 return StatusCode::SUCCESS; 00145 }
StatusCode MdcMergeDups::initialize | ( | ) |
Definition at line 92 of file MdcMergeDups.cxx.
References calibUtil::ERROR, Bes_Common::INFO, m_bfield, and msgSvc().
00092 { 00093 MsgStream log(msgSvc(), name()); 00094 log << MSG::INFO << "in initialize()" << endreq; 00095 StatusCode sc; 00096 00097 00098 //Initailize magnetic filed 00099 IMagneticFieldSvc* m_pIMF; 00100 sc = service ("MagneticFieldSvc",m_pIMF); 00101 if(sc != StatusCode::SUCCESS) { 00102 log << MSG::ERROR << "Unable to open Magnetic field service"<<endreq; 00103 return StatusCode::FAILURE; 00104 } 00105 m_bfield = new BField(m_pIMF); 00106 00107 return StatusCode::SUCCESS; 00108 }
int MdcMergeDups::mergeCurl | ( | void | ) |
Definition at line 149 of file MdcMergeDups.cxx.
References doMergeCurl(), doMergeLong(), eraseTdsTrack(), m_debug, EventModel::Recon::RecMdcTrackCol, testByOverlapHit(), and testByParam().
Referenced by execute().
00149 { 00150 //------------------------------------------------------------------- 00151 00152 SmartDataPtr<RecMdcTrackCol> trackList(eventSvc(),EventModel::Recon::RecMdcTrackCol); 00153 if (!trackList) return -1; 00154 00155 int needMerge = 0; 00156 00157 //...Merging. Search a track to be merged... 00158 RecMdcTrackCol::iterator iterRefTk = trackList->begin(); 00159 for (; iterRefTk != trackList->end(); iterRefTk++) { 00160 RecMdcTrack* refTk = *iterRefTk; 00161 if (refTk->stat()<0) continue; 00162 std::vector<RecMdcTrack*> mergeTkList; 00163 mergeTkList.push_back(refTk); 00164 00165 00166 bool curl = false; 00167 int sameParm = 0; 00168 RecMdcTrackCol::iterator iterTestTk = trackList->begin(); 00169 for (; iterTestTk != trackList->end(); iterTestTk++) { 00170 RecMdcTrack* testTk = *iterTestTk; 00171 if (iterRefTk == iterTestTk || (testTk->stat()<0)) continue; 00172 00173 //-- overlapRatio cut 0.7 by jialk, original is 0.8 00174 if (testByOverlapHit(refTk,testTk)){ 00175 if(m_debug>0)std::cout<<__FILE__<<" overlape tk:" <<refTk->trackId()<<" with "<<testTk->trackId()<< std::endl; 00176 mergeTkList.push_back(testTk); 00177 curl = true; 00178 } 00179 sameParm = testByParam(refTk,testTk); 00180 if(sameParm >0) { 00181 if(m_debug>0) std::cout<<__FILE__<<" same param tk:" <<refTk->trackId()<<" with "<<testTk->trackId()<< std::endl; 00182 mergeTkList.push_back(testTk); 00183 } 00184 } 00185 if (mergeTkList.size()>1 && curl) needMerge = doMergeCurl(mergeTkList); 00186 if ((needMerge < 999) && mergeTkList.size()>1 ) needMerge = doMergeLong(mergeTkList); 00187 //if ((needMerge <999) && mergeTkList.size()==2 && (sameParm==2) ) needMerge = doMergeOdd(mergeTkList); //FIXME 00188 } 00189 00190 //return 0 if No track need merged 00191 if( needMerge <=0 ) return 0; 00192 00193 // reset track Id 00194 iterRefTk = trackList->begin(); 00195 int iTk=0; 00196 int nDeleted = 0; 00197 for (; iterRefTk != trackList->end(); ) { 00198 if ( (*iterRefTk)->stat() >= 0 ){ 00199 (*iterRefTk)->setTrackId(iTk); 00200 iterRefTk++; 00201 iTk++; 00202 }else { 00203 int id = (*iterRefTk)->trackId(); 00204 bool erased = eraseTdsTrack(iterRefTk); 00205 if ( erased ){ 00206 nDeleted++; 00207 if(m_debug>0)std::cout<<__FILE__<<" erase track No."<<id<< std::endl; 00208 }else { 00209 if(m_debug>0)std::cout<<__FILE__<<" erase failed !"<< std::endl; 00210 } 00211 } 00212 00213 } 00214 if(m_debug>0) std::cout<<__FILE__<<" After merge save "<<iTk<<" tracks"<< std::endl; 00215 00216 return nDeleted; 00217 }
int MdcMergeDups::mergeDups | ( | void | ) |
void MdcMergeDups::store | ( | TrkRecoTrk * | aTrack | ) |
Definition at line 439 of file MdcMergeDups.cxx.
References TrkRecoTrk::fitResult(), TrkFit::helix(), m_debug, EventModel::Recon::RecMdcHitCol, EventModel::Recon::RecMdcTrackCol, and MdcTrack::storeTrack().
00439 { 00440 SmartDataPtr<RecMdcTrackCol> trackList(eventSvc(),EventModel::Recon::RecMdcTrackCol); 00441 if (!trackList) return; 00442 SmartDataPtr<RecMdcHitCol> hitList(eventSvc(),EventModel::Recon::RecMdcHitCol); 00443 if (!hitList) return; 00444 00445 assert (aTrack != NULL); 00446 TrkExchangePar helix = aTrack->fitResult()->helix(0.); 00447 00448 if(m_debug>1)std::cout<<__FILE__<<" STORED"<< std::endl; 00449 MdcTrack mdcTrack(aTrack);//aTrack have been deleted in ~MdcTrack() 00450 //tkStat: 0,Tsf 1,CurlFinder 2,PatRec 3,MdcxReco 4,MergeCurl 00451 int tkStat = 4; 00452 mdcTrack.storeTrack(-1, trackList, hitList, tkStat); 00453 }
int MdcMergeDups::testByOverlapHit | ( | RecMdcTrack * | refTk, | |
RecMdcTrack * | testTk | |||
) |
Definition at line 348 of file MdcMergeDups.cxx.
References BField::bFieldZ(), Constants::c, cos(), RecMdcTrack::getVecHits(), RecMdcTrack::getVX0(), RecMdcTrack::getVY0(), RecMdcTrack::getVZ0(), DstMdcTrack::helix(), MdcID::layer(), MdcDetector::Layer(), m_bfield, m_gm, m_mergeLoadAx, m_mergeLoadSt, m_mergeOverlapRatio, m_mergePt, phi0, DstMdcTrack::pxy(), sin(), and MdcLayer::view().
Referenced by mergeCurl().
00348 { 00349 //------------------------------------------------------------------- 00350 int overlaped = 0; 00351 if ((testTk->pxy() >= m_mergePt) || (refTk->pxy() >= m_mergePt)) return overlaped; 00352 00353 HitRefVec testHits = testTk->getVecHits(); 00354 int nHit = testHits.size(); 00355 int nOverlap = 0; 00356 00357 HitRefVec::iterator iterHit = testHits.begin(); 00358 for (; iterHit != testHits.end(); iterHit++) { 00359 RecMdcHit* hit = *iterHit; 00360 00361 //-- load for Axial and Stereo layer are 3,4 by jialk, original is 2,3 00362 double load = m_mergeLoadAx; 00363 bool isStLayer = (m_gm->Layer(MdcID::layer(hit->getMdcId()))->view() != 0); 00364 if(isStLayer) load = m_mergeLoadSt; 00365 00366 //helix parameters 00367 double vx0 = refTk->getVX0(); 00368 double vy0 = refTk->getVY0(); 00369 double vz0 = refTk->getVZ0(); 00370 double dr = refTk->helix(0); 00371 double phi0 = refTk->helix(1); 00372 double Bz = m_bfield->bFieldZ(); 00373 double r = 10000./ (Constants::c * Bz*refTk->helix(2)); 00374 double dz = refTk->helix(3); 00375 double tanl = refTk->helix(4); 00376 00377 //center of circle 00378 double xc = vx0 + (dr + r) * cos(phi0); 00379 double yc = vy0 + (dr + r) * sin(phi0); 00380 00381 //position of hit 00382 double zHit = hit->getZhit(); 00383 double phi = (vz0 + dz - zHit) / (r * tanl); 00384 double xHit = vx0 + dr*cos(phi0) + r*(cos(phi0) - cos(phi0+phi)); 00385 double yHit = vy0 + dr*sin(phi0) + r*(sin(phi0) - sin(phi0+phi)); 00386 00387 //distance from center of circle to hit 00388 double dx = xc - xHit; 00389 double dy = yc - yHit; 00390 double dHit2Center = sqrt(dx * dx + dy * dy); 00391 double rTk = fabs(r); 00392 00393 //is this hit overlaped ? 00394 if ( (dHit2Center>(rTk - load)) && (dHit2Center<(rTk + load))) nOverlap++; 00395 } 00396 00397 if ( nOverlap<=0 ) return overlaped; 00398 00399 double overlapRatio = double(nOverlap) / double(nHit); 00400 00401 if (overlapRatio > m_mergeOverlapRatio) overlaped = 1; 00402 00403 return overlaped; 00404 }
int MdcMergeDups::testByParam | ( | RecMdcTrack * | refTk, | |
RecMdcTrack * | testTk | |||
) |
Definition at line 222 of file MdcMergeDups.cxx.
References BField::bFieldZ(), Constants::c, DstMdcTrack::helix(), m_bfield, m_debug, m_maxDd0InMerge, m_maxDphi0InMerge, m_maxPdradInMerge, Constants::pi, and Constants::twoPi.
Referenced by mergeCurl().
00222 { 00223 //------------------------------------------------------------------- 00224 int overlaped = 0; 00225 00226 00227 //Convert to Babar track convension 00228 double Bz = m_bfield->bFieldZ(); 00229 double omega1 = (Constants::c * Bz*refTk->helix(2))/10000.; 00230 double omega2 = (Constants::c * Bz*testTk->helix(2))/10000.; 00231 //phi0_babar = phi0_belle + pi/2 [0,2pi) 00232 double phi01 = refTk->helix(1)+Constants::pi/2.; 00233 double phi02 = testTk->helix(1)+Constants::pi/2.; 00234 while(phi01>Constants::twoPi) phi01 -= Constants::twoPi; 00235 while(phi02>Constants::twoPi) phi02 -= Constants::twoPi; 00236 double d01 = -refTk->helix(0); 00237 double d02 = -testTk->helix(0); 00238 double dphi0 = fabs(phi01 - phi02); 00239 double dd0 = fabs(d01 - d02); 00240 double prodo = omega1*omega2; 00241 double r1=100000.; 00242 double r2=100000.; 00243 if (fabs(omega1)>0.00001) r1 = 1.0/fabs(omega1); 00244 if (fabs(omega2)>0.00001) r2 = 1.0/fabs(omega2); //FIXME 00245 double pdrad = fabs((r1-r2)/(r1+r2)) ; 00246 00247 if (2==m_debug){ 00248 std::cout << " fabs(d01 - d02) " << fabs(d01 - d02) << std::endl; 00249 std::cout << " fabs(phi01-phi02) " << fabs(phi01-phi02) << std::endl; 00250 } 00251 // Try to merge pair that looks like duplicates (same charge) 00252 if ( (prodo > 0.) && (dd0 < m_maxDd0InMerge) && (dphi0 < m_maxDphi0InMerge) && 00253 (pdrad < m_maxPdradInMerge)) { 00254 overlaped = 1; 00255 } 00256 00257 // Try to merge pair that looks like albedo (opp charge, large d0) 00258 if ( (prodo < 0.) && (fabs(d01+d02) < 4.0) && (dd0 > 47.0) && 00259 (fabs( dphi0 - Constants::pi) < m_maxDphi0InMerge) 00260 && (pdrad < m_maxPdradInMerge)) { 00261 overlaped = 2; 00262 } 00263 00264 return overlaped; 00265 }
BField* MdcMergeDups::m_bfield [private] |
Definition at line 78 of file MdcMergeDups.h.
Referenced by initialize(), testByOverlapHit(), testByParam(), and ~MdcMergeDups().
double MdcMergeDups::m_bunchT0 [private] |
int MdcMergeDups::m_debug [private] |
Definition at line 80 of file MdcMergeDups.h.
Referenced by doMergeCurl(), dumpRecMdcTrack(), execute(), MdcMergeDups(), mergeCurl(), store(), and testByParam().
const MdcDetector* MdcMergeDups::m_gm [private] |
double MdcMergeDups::m_maxDd0InMerge [private] |
double MdcMergeDups::m_maxDphi0InMerge [private] |
double MdcMergeDups::m_maxPdradInMerge [private] |
double MdcMergeDups::m_maxRcsInMerge [private] |
double MdcMergeDups::m_mergeLoadAx [private] |
double MdcMergeDups::m_mergeLoadSt [private] |
double MdcMergeDups::m_mergeOverlapRatio [private] |
double MdcMergeDups::m_mergePt [private] |