diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonTrackCleaner.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonTrackCleaner.cxx index d3f738e875d7f0b8809e060c91dad0390c1a6525..bb5f28987011912584bbd4305c868101bec20695 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonTrackCleaner.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonTrackCleaner.cxx @@ -997,7 +997,7 @@ namespace Muon { } - Trk::Track* MuonTrackCleaner::outlierRecovery( Trk::Track& track, MuonStationIndex::ChIndex* currentIndex ) const { + Trk::Track* MuonTrackCleaner::outlierRecovery( Trk::Track& track, MuonStationIndex::ChIndex* currentIndex ) const { const Trk::Perigee* perigee = track.perigeeParameters(); @@ -1060,6 +1060,7 @@ namespace Muon { if( !hit->useInFit ){ if( hit->inBounds ){ if( recoverableLayers.count(hit->chIndex) ) { + // check whether we can savely add hits in this chamber to the track bool recover = !isOutsideOnTrackCut( hit->id, hit->residual,hit->pull,m_associationScaleFactor ) ? true : false; if( recover && m_onlyUseHitErrorInRecovery && hit->pars ){ @@ -1095,12 +1096,8 @@ namespace Muon { tsos->push_back( hit->originalState->clone() ); } } - //layer not recoverable, drop the outliers: but if RPC, TGC, or CSC, expect track to go through all layers, so add a hole instead - if(m_idHelper->isRpc(hit->id) || m_idHelper->isTgc(hit->id) || m_idHelper->isCsc(hit->id)) tsos->push_back(MuonTSOSHelper::createHoleTSOS(hit->pars->clone())); }else{ ++removedOutOfBoundsHits; - //if RPC, TGC, or CSC, expect track to go through all layers: add a hole to replace lost outlier - if(m_idHelper->isRpc(hit->id) || m_idHelper->isTgc(hit->id) || m_idHelper->isCsc(hit->id)) tsos->push_back(MuonTSOSHelper::createHoleTSOS(hit->pars->clone())); if( msgLvl(MSG::DEBUG) ) { msg() << MSG::DEBUG << " removing out of bounds outlier " << m_idHelper->toString(hit->id) << " pull " << std::setw(7) << hit->pull << endmsg; @@ -1123,6 +1120,7 @@ namespace Muon { return 0; } + // create new track Trk::Track* cleanedTrack = new Trk::Track( track.info(), tsos, track.fitQuality() ? track.fitQuality()->clone():0 );