diff --git a/Reconstruction/Tracking/src/Clupatra/clupatra_new.cpp b/Reconstruction/Tracking/src/Clupatra/clupatra_new.cpp index c4ed1fed79fad18e61d46ae29e7afcb338f79abe..9ecee56418ae4387e73572d73b42b757a92bd2b2 100644 --- a/Reconstruction/Tracking/src/Clupatra/clupatra_new.cpp +++ b/Reconstruction/Tracking/src/Clupatra/clupatra_new.cpp @@ -1238,31 +1238,35 @@ start: bool reverse_order = ( std::abs( hf->first->pos.z() ) > std::abs( hb->first->pos.z()) + 3. ) ; unsigned nHit = 0 ; - + int code = 0; if( reverse_order ){ //std::cout << "It is true order" << std::endl; for( CluTrack::reverse_iterator it=clu->rbegin() ; it != clu->rend() ; ++it){ edm4hep::TrackerHit ph = (*it)->first->edm4hepHit; trk->addHit(ph) ; ++nHit ; - //std::cout << " hit added " << (*it)->first->edm4hepHit << std::endl ; + //std::cout << " hit added " << (*it)->first->edm4hepHit.id() << std::endl ; } - trk->initialise( MarlinTrk::IMarlinTrack::forward ) ; + code = trk->initialise( MarlinTrk::IMarlinTrack::forward ) ; } else { //std::cout << "It is reverse order" << std::endl; for( CluTrack::iterator it=clu->begin() ; it != clu->end() ; ++it){ edm4hep::TrackerHit ph = (*it)->first->edm4hepHit; - trk->addHit(ph) ; + if( trk->addHit(ph) == MarlinTrk::IMarlinTrack::success ){ + //std::cout << " hit added " << (*it)->first->edm4hepHit.id() << std::endl; + } + else{ + //std::cout << " hit not added " << (*it)->first->edm4hepHit.id() << std::endl; + } ++nHit ; - //std::cout << " hit added "<< (*it)->first->edm4hepHit << std::endl ; } - trk->initialise( MarlinTrk::IMarlinTrack::backward ) ; + code = trk->initialise( MarlinTrk::IMarlinTrack::backward ) ; } - int code = trk->fit( maxChi2 ) ; + if( code != MarlinTrk::IMarlinTrack::error ) code = trk->fit( maxChi2 ) ; // for (auto hit : hitsInFit) std::cout << hit.first << std::endl; if( code != MarlinTrk::IMarlinTrack::success ){ @@ -1270,7 +1274,8 @@ start: std::cout << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> IMarlinTrkFitter : problem fitting track " << " error code : " << MarlinTrk::errorCode( code ) << std::endl ; - + delete trk; + return 0; } diff --git a/Reconstruction/Tracking/src/Clupatra/clupatra_new.h b/Reconstruction/Tracking/src/Clupatra/clupatra_new.h index 46247d0b48c36b6975da0ba3411f27f9363e99d8..6ace630a7dcf6bdc552426f519f62c51a992da1a 100644 --- a/Reconstruction/Tracking/src/Clupatra/clupatra_new.h +++ b/Reconstruction/Tracking/src/Clupatra/clupatra_new.h @@ -467,11 +467,12 @@ namespace clupatra_new{ // FIXME Mingrui debug // streamlog_out( DEBUG3 ) << " -- extrapolate TrackState : " << lcshort( ts ) << std::endl ; - - edm4hep::TrackerHit ht = trk.getTrackerHits(0); - //need to add a dummy hit to the track - mTrk->addHit( ht ) ; // is this the right hit ?????????? - + // fucd: getTrackerHits(0) is possible to miss ILDVTrackHit + for(int ih=0;ih<nHit;ih++){ + edm4hep::TrackerHit ht = trk.getTrackerHits(ih); + //need to add a dummy hit to the track + if(mTrk->addHit( ht ) == MarlinTrk::IMarlinTrack::success) break; // is this the right hit ?????????? + } mTrk->initialise( ts , _b , MarlinTrk::IMarlinTrack::backward ) ; double deltaChi ;