Skip to content
Snippets Groups Projects
Commit 8f397b3f authored by FU Chengdong's avatar FU Chengdong
Browse files

initialize TrackerHit with null pointer and inavailable

parent ce7d8def
No related branches found
No related tags found
No related merge requests found
...@@ -37,7 +37,7 @@ namespace MarlinTrk { ...@@ -37,7 +37,7 @@ namespace MarlinTrk {
// //
// int nrows = 5; // int nrows = 5;
// //
// TMatrixD cov(nrows,nrows) ; // TMatrixD cov(nrows,nrows) ;
// //
// bool matrix_is_positive_definite = true; // bool matrix_is_positive_definite = true;
// //
...@@ -148,16 +148,14 @@ namespace MarlinTrk { ...@@ -148,16 +148,14 @@ namespace MarlinTrk {
int fit_status = createFit(hit_list, marlinTrk, pre_fit, bfield_z, fit_backwards, maxChi2Increment); int fit_status = createFit(hit_list, marlinTrk, pre_fit, bfield_z, fit_backwards, maxChi2Increment);
//std::cout << "createFit finished. status = " << fit_status << std::endl;
if( fit_status != IMarlinTrack::success ){ if( fit_status != IMarlinTrack::success ){
//std::cout << "MarlinTrk::createFinalisedLCIOTrack fit failed: fit_status = " << fit_status << std::endl;
//std::cout << "MarlinTrk::createFinalisedLCIOTrack fit failed: fit_status = " << fit_status << std::endl;
return fit_status; return fit_status;
} }
int error = finaliseLCIOTrack(marlinTrk, track, hit_list); int error = finaliseLCIOTrack(marlinTrk, track, hit_list);
//std::cout << "finaliseLCIOTrack. status = " << error << std::endl;
return error; return error;
} }
...@@ -189,7 +187,7 @@ namespace MarlinTrk { ...@@ -189,7 +187,7 @@ namespace MarlinTrk {
// //
// if (( fit_backwards == IMarlinTrack::backward && pre_fit->getLocation() != lcio::TrackState::AtLastHit ) // 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 ; // std::stringstream ss ;
// //
// ss << "MarlinTrk::createFinalisedLCIOTrack track state must be set at either first or last hit. Location = "; // ss << "MarlinTrk::createFinalisedLCIOTrack track state must be set at either first or last hit. Location = ";
...@@ -214,7 +212,7 @@ namespace MarlinTrk { ...@@ -214,7 +212,7 @@ namespace MarlinTrk {
for( it = hit_list.begin() ; it != hit_list.end() ; ++it ) { for( it = hit_list.begin() ; it != hit_list.end() ; ++it ) {
edm4hep::ConstTrackerHit trkHit = *it; edm4hep::ConstTrackerHit trkHit = *it;
bool isSuccessful = false; bool isSuccessful = false;
//std::cout << "debug: TrackerHit pointer " << trkHit << std::endl; //std::cout << "debug: TrackerHit pointer " << trkHit << std::endl;
if( UTIL::BitSet32( trkHit.getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ] ){ //it is a composite spacepoint if( UTIL::BitSet32( trkHit.getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ] ){ //it is a composite spacepoint
//Split it up and add both hits to the MarlinTrk //Split it up and add both hits to the MarlinTrk
...@@ -227,7 +225,7 @@ namespace MarlinTrk { ...@@ -227,7 +225,7 @@ namespace MarlinTrk {
if( marlinTrk->addHit( rawHit ) == IMarlinTrack::success ){ if( marlinTrk->addHit( rawHit ) == IMarlinTrack::success ){
isSuccessful = true; //if at least one hit from the spacepoint gets added isSuccessful = true; //if at least one hit from the spacepoint gets added
++ndof_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 { ...@@ -235,7 +233,7 @@ namespace MarlinTrk {
if (marlinTrk->addHit( trkHit ) == IMarlinTrack::success ) { if (marlinTrk->addHit( trkHit ) == IMarlinTrack::success ) {
isSuccessful = true; isSuccessful = true;
ndof_added += 2; 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 { ...@@ -243,13 +241,13 @@ namespace MarlinTrk {
added_hits.push_back(trkHit); added_hits.push_back(trkHit);
} }
else{ 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 ) { 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; return IMarlinTrack::bad_intputs;
} }
...@@ -262,12 +260,12 @@ namespace MarlinTrk { ...@@ -262,12 +260,12 @@ namespace MarlinTrk {
return_error = marlinTrk->initialise( *pre_fit, bfield_z, IMarlinTrack::backward ) ; return_error = marlinTrk->initialise( *pre_fit, bfield_z, IMarlinTrack::backward ) ;
if (return_error != IMarlinTrack::success) { 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; return return_error;
} }
//std::cout << "debug:===================initialise " << return_error << std::endl;
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
// try fit and return error // try fit and return error
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
...@@ -329,10 +327,10 @@ namespace MarlinTrk { ...@@ -329,10 +327,10 @@ namespace MarlinTrk {
if ( fit_backwards == IMarlinTrack::backward ) { if ( fit_backwards == IMarlinTrack::backward ) {
pre_fit->location = MarlinTrk::Location::AtLastHit; 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 { } else {
pre_fit->location = MarlinTrk::Location::AtFirstHit; 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 { ...@@ -435,8 +433,8 @@ namespace MarlinTrk {
bool is_outlier = false; bool is_outlier = false;
// here we loop over outliers as this will be faster than looping over the used hits // here we loop over outliers as this will be faster than looping over the used hits
for ( unsigned ohit = 0; ohit < outliers.size(); ++ohit) { for ( unsigned ohit = 0; ohit < outliers.size(); ++ohit) {
if ( rawHit.id() == outliers[ohit].first.id() ) { if ( rawHit.id() == outliers[ohit].first.id() ) {
is_outlier = true; is_outlier = true;
break; // break out of loop over outliers break; // break out of loop over outliers
} }
} }
...@@ -450,8 +448,8 @@ namespace MarlinTrk { ...@@ -450,8 +448,8 @@ namespace MarlinTrk {
bool is_outlier = false; bool is_outlier = false;
// here we loop over outliers as this will be faster than looping over the used hits // here we loop over outliers as this will be faster than looping over the used hits
for ( unsigned ohit = 0; ohit < outliers.size(); ++ohit) { for ( unsigned ohit = 0; ohit < outliers.size(); ++ohit) {
if ( trkHit == outliers[ohit].first ) { if ( trkHit == outliers[ohit].first ) {
is_outlier = true; is_outlier = true;
break; // break out of loop over outliers break; // break out of loop over outliers
} }
} }
...@@ -484,12 +482,12 @@ namespace MarlinTrk { ...@@ -484,12 +482,12 @@ namespace MarlinTrk {
edm4hep::TrackState* trkStateAtLastHit = new edm4hep::TrackState() ; edm4hep::TrackState* trkStateAtLastHit = new edm4hep::TrackState() ;
edm4hep::ConstTrackerHit lastHit = hits_in_fit.front().first; 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); marlintrk->getTrackerHitAtPositiveNDF(last_constrained_hit);
return_error = marlintrk->smooth(lastHit); 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; //streamlog_out(DEBUG4) << "MarlinTrk::finaliseLCIOTrack: return_code for smoothing to " << lastHit << " = " << return_error << " NDF = " << ndf << std::endl;
delete trkStateAtFirstHit; delete trkStateAtFirstHit;
delete trkStateAtLastHit; delete trkStateAtLastHit;
...@@ -511,7 +509,7 @@ namespace MarlinTrk { ...@@ -511,7 +509,7 @@ namespace MarlinTrk {
return_error = marlintrk->propagate(point, firstHit, *trkStateIP, chi2, ndf ) ; 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; //streamlog_out(DEBUG4) << "MarlinTrk::finaliseLCIOTrack: return_code for propagation = " << return_error << " NDF = " << ndf << std::endl;
delete trkStateIP; delete trkStateIP;
delete trkStateAtFirstHit; delete trkStateAtFirstHit;
...@@ -569,7 +567,7 @@ namespace MarlinTrk { ...@@ -569,7 +567,7 @@ namespace MarlinTrk {
trkStateAtLastHit->location = MarlinTrk::Location::AtLastHit; trkStateAtLastHit->location = MarlinTrk::Location::AtLastHit;
track->addToTrackStates(*trkStateAtLastHit); track->addToTrackStates(*trkStateAtLastHit);
} else { } 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; delete trkStateAtLastHit;
} }
...@@ -630,7 +628,7 @@ namespace MarlinTrk { ...@@ -630,7 +628,7 @@ namespace MarlinTrk {
double chi2 = -DBL_MAX; double chi2 = -DBL_MAX;
int ndf = 0; int ndf = 0;
UTIL::BitField64 encoder( lcio::ILDCellID0::encoder_string ) ; UTIL::BitField64 encoder( lcio::ILDCellID0::encoder_string );
encoder.reset() ; // reset to 0 encoder.reset() ; // reset to 0
encoder[lcio::ILDCellID0::subdet] = lcio::ILDDetID::ECAL ; encoder[lcio::ILDCellID0::subdet] = lcio::ILDDetID::ECAL ;
...@@ -669,7 +667,7 @@ namespace MarlinTrk { ...@@ -669,7 +667,7 @@ namespace MarlinTrk {
if( track == 0 ){ if( track == 0 ){
throw std::runtime_error( std::string("MarlinTrk::addHitsToTrack: TrackImpl == NULL ") ) ; 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::VXD] = 0;
hitNumbers[UTIL::ILDDetID::SIT] = 0; hitNumbers[UTIL::ILDDetID::SIT] = 0;
...@@ -682,7 +680,7 @@ namespace MarlinTrk { ...@@ -682,7 +680,7 @@ namespace MarlinTrk {
cellID_encoder.setValue(hit_list.at(j).getCellID()) ; cellID_encoder.setValue(hit_list.at(j).getCellID()) ;
int detID = cellID_encoder[UTIL::ILDCellID0::subdet]; int detID = cellID_encoder[UTIL::ILDCellID0::subdet];
++hitNumbers[detID]; ++hitNumbers[detID];
//std::cout << "debug: " << "Hit from Detector " << detID << std::endl; //std::cout << "debug: " << "Hit from Detector " << detID << std::endl;
} }
int offset = 2 ; int offset = 2 ;
...@@ -713,7 +711,7 @@ namespace MarlinTrk { ...@@ -713,7 +711,7 @@ namespace MarlinTrk {
throw std::runtime_error( std::string("MarlinTrk::addHitsToTrack: TrackImpl == NULL ") ) ; 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::VXD] = 0;
hitNumbers[lcio::ILDDetID::SIT] = 0; hitNumbers[lcio::ILDDetID::SIT] = 0;
...@@ -726,7 +724,7 @@ namespace MarlinTrk { ...@@ -726,7 +724,7 @@ namespace MarlinTrk {
cellID_encoder.setValue(hit_list.at(j).first.getCellID()) ; cellID_encoder.setValue(hit_list.at(j).first.getCellID()) ;
int detID = cellID_encoder[UTIL::ILDCellID0::subdet]; int detID = cellID_encoder[UTIL::ILDCellID0::subdet];
++hitNumbers[detID]; ++hitNumbers[detID];
//std::cout << "debug: Hit from Detector " << detID << std::endl; //std::cout << "debug: Hit from Detector " << detID << std::endl;
} }
int offset = 2 ; int offset = 2 ;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment