From 8f397b3f5a08f80cd81bc9490ed485b813b9f108 Mon Sep 17 00:00:00 2001 From: Chengdong Fu <fucd@ihep.ac.cn> Date: Fri, 8 Oct 2021 15:08:06 +0800 Subject: [PATCH] initialize TrackerHit with null pointer and inavailable --- Service/TrackSystemSvc/src/MarlinTrkUtils.cc | 58 ++++++++++---------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/Service/TrackSystemSvc/src/MarlinTrkUtils.cc b/Service/TrackSystemSvc/src/MarlinTrkUtils.cc index a3654ec7..41723ee6 100644 --- a/Service/TrackSystemSvc/src/MarlinTrkUtils.cc +++ b/Service/TrackSystemSvc/src/MarlinTrkUtils.cc @@ -37,7 +37,7 @@ namespace MarlinTrk { // // int nrows = 5; // -// TMatrixD cov(nrows,nrows) ; +// TMatrixD cov(nrows,nrows) ; // // bool matrix_is_positive_definite = true; // @@ -148,16 +148,14 @@ namespace MarlinTrk { int fit_status = createFit(hit_list, marlinTrk, pre_fit, bfield_z, fit_backwards, maxChi2Increment); - - if( fit_status != IMarlinTrack::success ){ - - //std::cout << "MarlinTrk::createFinalisedLCIOTrack fit failed: fit_status = " << fit_status << std::endl; - + //std::cout << "createFit finished. status = " << fit_status << std::endl; + if( fit_status != IMarlinTrack::success ){ + //std::cout << "MarlinTrk::createFinalisedLCIOTrack fit failed: fit_status = " << fit_status << std::endl; return fit_status; } int error = finaliseLCIOTrack(marlinTrk, track, hit_list); - + //std::cout << "finaliseLCIOTrack. status = " << error << std::endl; return error; } @@ -189,7 +187,7 @@ namespace MarlinTrk { // // if (( fit_backwards == IMarlinTrack::backward && pre_fit->getLocation() != lcio::TrackState::AtLastHit ) // || -// ( fit_backwards == IMarlinTrack::forward && pre_fit->getLocation() != lcio::TrackState::AtFirstHit )) { +// ( fit_backwards == IMarlinTrack::forward && pre_fit->getLocation() != lcio::TrackState::AtFirstHit )) { // std::stringstream ss ; // // ss << "MarlinTrk::createFinalisedLCIOTrack track state must be set at either first or last hit. Location = "; @@ -214,7 +212,7 @@ namespace MarlinTrk { for( it = hit_list.begin() ; it != hit_list.end() ; ++it ) { edm4hep::ConstTrackerHit trkHit = *it; - bool isSuccessful = false; + bool isSuccessful = false; //std::cout << "debug: TrackerHit pointer " << trkHit << std::endl; if( UTIL::BitSet32( trkHit.getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ] ){ //it is a composite spacepoint //Split it up and add both hits to the MarlinTrk @@ -227,7 +225,7 @@ namespace MarlinTrk { if( marlinTrk->addHit( rawHit ) == IMarlinTrack::success ){ isSuccessful = true; //if at least one hit from the spacepoint gets added ++ndof_added; -// streamlog_out(DEBUG4) << "MarlinTrk::createFit ndof_added = " << ndof_added << std::endl; + //std::cout << "DEBUG<<<<<MarlinTrk::createFit ndof_added = " << ndof_added << std::endl; } } } @@ -235,7 +233,7 @@ namespace MarlinTrk { if (marlinTrk->addHit( trkHit ) == IMarlinTrack::success ) { isSuccessful = true; ndof_added += 2; -// streamlog_out(DEBUG4) << "MarlinTrk::createFit ndof_added = " << ndof_added << std::endl; + //std::cout << "DEBUG<<<<<MarlinTrk::createFit ndof_added = " << ndof_added << std::endl; } } @@ -243,13 +241,13 @@ namespace MarlinTrk { added_hits.push_back(trkHit); } else{ - //std::cout << "MarlinTrkUtils::createFit Hit " << it - hit_list.begin() << " Dropped " << std::endl; + //std::cout << "DEBUG<<<<<MarlinTrkUtils::createFit Hit " << it - hit_list.begin() << " Dropped " << std::endl; } } if( ndof_added < MIN_NDF ) { - //streamlog_out(DEBUG2) << "MarlinTrk::createFit : Cannot fit less with less than " << MIN_NDF << " degrees of freedom. Number of hits = " << added_hits.size() << " ndof = " << ndof_added << std::endl; + //std::cout << "ERROR<<<<<MarlinTrk::createFit : Cannot fit less with less than " << MIN_NDF << " degrees of freedom. Number of hits = " << added_hits.size() << " ndof = " << ndof_added << std::endl; return IMarlinTrack::bad_intputs; } @@ -262,12 +260,12 @@ namespace MarlinTrk { return_error = marlinTrk->initialise( *pre_fit, bfield_z, IMarlinTrack::backward ) ; if (return_error != IMarlinTrack::success) { - //streamlog_out(DEBUG5) << "MarlinTrk::createFit Initialisation of track fit failed with error : " << return_error << std::endl; + std::cout << "MarlinTrk::createFit Initialisation of track fit failed with error : " << return_error << std::endl; return return_error; } - + //std::cout << "debug:===================initialise " << return_error << std::endl; /////////////////////////////////////////////////////// // try fit and return error /////////////////////////////////////////////////////// @@ -329,10 +327,10 @@ namespace MarlinTrk { if ( fit_backwards == IMarlinTrack::backward ) { pre_fit->location = MarlinTrk::Location::AtLastHit; - helixTrack.moveRefPoint(hit_list.back().getPosition()[0], hit_list.back().getPosition()[1], hit_list.back().getPosition()[2]); + helixTrack.moveRefPoint(hit_list.back().getPosition()[0], hit_list.back().getPosition()[1], hit_list.back().getPosition()[2]); } else { pre_fit->location = MarlinTrk::Location::AtFirstHit; - helixTrack.moveRefPoint(hit_list.front().getPosition()[0], hit_list.front().getPosition()[1], hit_list.front().getPosition()[2]); + helixTrack.moveRefPoint(hit_list.front().getPosition()[0], hit_list.front().getPosition()[1], hit_list.front().getPosition()[2]); } @@ -435,8 +433,8 @@ namespace MarlinTrk { bool is_outlier = false; // here we loop over outliers as this will be faster than looping over the used hits for ( unsigned ohit = 0; ohit < outliers.size(); ++ohit) { - if ( rawHit.id() == outliers[ohit].first.id() ) { - is_outlier = true; + if ( rawHit.id() == outliers[ohit].first.id() ) { + is_outlier = true; break; // break out of loop over outliers } } @@ -450,8 +448,8 @@ namespace MarlinTrk { bool is_outlier = false; // here we loop over outliers as this will be faster than looping over the used hits for ( unsigned ohit = 0; ohit < outliers.size(); ++ohit) { - if ( trkHit == outliers[ohit].first ) { - is_outlier = true; + if ( trkHit == outliers[ohit].first ) { + is_outlier = true; break; // break out of loop over outliers } } @@ -484,12 +482,12 @@ namespace MarlinTrk { edm4hep::TrackState* trkStateAtLastHit = new edm4hep::TrackState() ; edm4hep::ConstTrackerHit lastHit = hits_in_fit.front().first; - edm4hep::ConstTrackerHit last_constrained_hit = 0 ; + edm4hep::ConstTrackerHit last_constrained_hit(0);// = 0 ; marlintrk->getTrackerHitAtPositiveNDF(last_constrained_hit); return_error = marlintrk->smooth(lastHit); - if ( return_error != IMarlinTrack::success ) { + if ( return_error != IMarlinTrack::success ) { //streamlog_out(DEBUG4) << "MarlinTrk::finaliseLCIOTrack: return_code for smoothing to " << lastHit << " = " << return_error << " NDF = " << ndf << std::endl; delete trkStateAtFirstHit; delete trkStateAtLastHit; @@ -511,7 +509,7 @@ namespace MarlinTrk { return_error = marlintrk->propagate(point, firstHit, *trkStateIP, chi2, ndf ) ; - if ( return_error != IMarlinTrack::success ) { + if ( return_error != IMarlinTrack::success ) { //streamlog_out(DEBUG4) << "MarlinTrk::finaliseLCIOTrack: return_code for propagation = " << return_error << " NDF = " << ndf << std::endl; delete trkStateIP; delete trkStateAtFirstHit; @@ -569,7 +567,7 @@ namespace MarlinTrk { trkStateAtLastHit->location = MarlinTrk::Location::AtLastHit; track->addToTrackStates(*trkStateAtLastHit); } else { - //streamlog_out( DEBUG5 ) << " >>>>>>>>>>> MarlinTrk::finaliseLCIOTrack: could not get TrackState at Last Hit " << last_constrained_hit << std::endl ; + std::cout << "ERROR>>>>>>>>>>> MarlinTrk::finaliseLCIOTrack: could not get TrackState at Last Hit " << last_constrained_hit.id() << std::endl ; delete trkStateAtLastHit; } @@ -630,7 +628,7 @@ namespace MarlinTrk { double chi2 = -DBL_MAX; int ndf = 0; - UTIL::BitField64 encoder( lcio::ILDCellID0::encoder_string ) ; + UTIL::BitField64 encoder( lcio::ILDCellID0::encoder_string ); encoder.reset() ; // reset to 0 encoder[lcio::ILDCellID0::subdet] = lcio::ILDDetID::ECAL ; @@ -669,7 +667,7 @@ namespace MarlinTrk { if( track == 0 ){ throw std::runtime_error( std::string("MarlinTrk::addHitsToTrack: TrackImpl == NULL ") ) ; } - std::map<int, int> hitNumbers; + std::map<int, int> hitNumbers; hitNumbers[UTIL::ILDDetID::VXD] = 0; hitNumbers[UTIL::ILDDetID::SIT] = 0; @@ -682,7 +680,7 @@ namespace MarlinTrk { cellID_encoder.setValue(hit_list.at(j).getCellID()) ; int detID = cellID_encoder[UTIL::ILDCellID0::subdet]; ++hitNumbers[detID]; - //std::cout << "debug: " << "Hit from Detector " << detID << std::endl; + //std::cout << "debug: " << "Hit from Detector " << detID << std::endl; } int offset = 2 ; @@ -713,7 +711,7 @@ namespace MarlinTrk { throw std::runtime_error( std::string("MarlinTrk::addHitsToTrack: TrackImpl == NULL ") ) ; } - std::map<int, int> hitNumbers; + std::map<int, int> hitNumbers; hitNumbers[lcio::ILDDetID::VXD] = 0; hitNumbers[lcio::ILDDetID::SIT] = 0; @@ -726,7 +724,7 @@ namespace MarlinTrk { cellID_encoder.setValue(hit_list.at(j).first.getCellID()) ; int detID = cellID_encoder[UTIL::ILDCellID0::subdet]; ++hitNumbers[detID]; - //std::cout << "debug: Hit from Detector " << detID << std::endl; + //std::cout << "debug: Hit from Detector " << detID << std::endl; } int offset = 2 ; -- GitLab