From 814b6d720f81f5799243a6e7a911cee6abaa0579 Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 01:23:15 -0800 Subject: [PATCH 01/13] Add files via upload --- processors/include/TrackingProcessor.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/processors/include/TrackingProcessor.h b/processors/include/TrackingProcessor.h index 9cd43e27..97483a24 100644 --- a/processors/include/TrackingProcessor.h +++ b/processors/include/TrackingProcessor.h @@ -36,7 +36,7 @@ #include "Event.h" #include "RawSvtHit.h" #include "TrackHistos.h" - +#include "MCParticle.h" // Forward declarations class TTree; @@ -117,15 +117,16 @@ class TrackingProcessor : public Processor { int debug_{false}; //!< Debug Level int doResiduals_{0}; //!< do Residuals - std::string trackResDataLcio_{""}; //!< description - TrackHistos* trkResHistos_{nullptr}; //!< description + std::string trackResDataLcio_{""}; //!< description + std::string trackXKinkDataLcio_{""}; + std::string trackZKinkDataLcio_{""}; + + TrackHistos* trkResHistos_{nullptr}; //!< description std::string resCfgFilename_{""}; //!< description std::string resoutname_{""}; //!< description double bfield_{-1.}; //!< magnetic field - int useTrackerHits_{1}; //!< Load hit collections, otherwise get from getSubdetectorHitNumbers - }; // Tracking Processor #endif // __TRACKING_PROCESSOR_H__ From 47165022b4f2b0a38b74c4236f490a8b09951b09 Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 01:23:38 -0800 Subject: [PATCH 02/13] Add files via upload --- processors/src/TrackingProcessor.cxx | 200 ++++++++++++++------------- 1 file changed, 107 insertions(+), 93 deletions(-) diff --git a/processors/src/TrackingProcessor.cxx b/processors/src/TrackingProcessor.cxx index 8543daca..38069697 100644 --- a/processors/src/TrackingProcessor.cxx +++ b/processors/src/TrackingProcessor.cxx @@ -24,14 +24,15 @@ void TrackingProcessor::configure(const ParameterSet& parameters) { rawhitCollRoot_ = parameters.getString("rawhitCollRoot", rawhitCollRoot_); truthTracksCollLcio_ = parameters.getString("truthTrackCollLcio",truthTracksCollLcio_); truthTracksCollRoot_ = parameters.getString("truthTrackCollRoot",truthTracksCollRoot_); - trackStateLocation_ = parameters.getString("trackStateLocation",trackStateLocation_); - useTrackerHits_ = parameters.getInteger("useTrackerHits",useTrackerHits_); bfield_ = parameters.getDouble("bfield",bfield_); + trackStateLocation_ = parameters.getString("trackStateLocation",trackStateLocation_); //Residual plotting is done in this processor for the moment. doResiduals_ = parameters.getInteger("doResiduals",doResiduals_); trackResDataLcio_ = parameters.getString("trackResDataLcio",trackResDataLcio_); - resCfgFilename_ = parameters.getString("resPlots",resCfgFilename_); + trackXKinkDataLcio_ = parameters.getString("trackXKinkDataLcio",trackXKinkDataLcio_); + trackZKinkDataLcio_ = parameters.getString("trackZKinkDataLcio",trackZKinkDataLcio_); + resCfgFilename_ = parameters.getString("resPlots",resCfgFilename_); resoutname_ = parameters.getString("resoutname",resoutname_); } @@ -56,13 +57,13 @@ void TrackingProcessor::initialize(TTree* tree) { //Residual plotting - if (doResiduals_) { + /*if (doResiduals_) { trkResHistos_ = new TrackHistos(trkCollLcio_); trkResHistos_->debugMode(debug_); trkResHistos_->loadHistoConfig(resCfgFilename_); trkResHistos_->doTrackComparisonPlots(false); trkResHistos_->DefineHistos(); - } + }*/ } @@ -137,7 +138,7 @@ bool TrackingProcessor::process(IEvent* ievent) { //TODO: can we do better? (innermost) std::map SharedHitsLy0; std::map SharedHitsLy1; - + for (int itrack = 0; itrack < tracks->getNumberOfElements();++itrack) { SharedHits[itrack] = {}; SharedHitsLy0[itrack] = false; @@ -178,85 +179,66 @@ bool TrackingProcessor::process(IEvent* ievent) { if (bfield_>0) track->setMomentum(bfield_); + // Get the collection of hits associated with a LCIO Track + EVENT::TrackerHitVec lc_tracker_hits = lc_track->getTrackerHits(); - int nHits = 0; - - if(!useTrackerHits_){ - auto hitPattern = lc_track->getSubdetectorHitNumbers(); - for( int h=0; h0 ){ - track->addHitLayer(h+1); - nHits++; - } - } - if(nHits==0){ - std::cout << "[TrackingProcessor::process] WARNING Track with no hits -- likely getSubdetectorHitNumbers isn't filled!" << std::endl; - std::cout << "[TrackingProcessor::process] WARNING If hit collections are saved, you may want to turn on useTrackerHits" << std::endl; - } - track->setTrackerHitCount(nHits); - } - else{ - - // Get the collection of hits associated with a LCIO Track - EVENT::TrackerHitVec lc_tracker_hits = lc_track->getTrackerHits(); + // Iterate through the collection of 3D hits (TrackerHit objects) + // associated with a track, find the corresponding hits in the HPS + // event and add references to the track + bool rotateHits = true; + int hitType = 0; + if (track->isKalmanTrack()) + hitType=1; //SiClusters + + for (auto lc_tracker_hit : lc_tracker_hits) { + + TrackerHit* tracker_hit = utils::buildTrackerHit(static_cast(lc_tracker_hit),rotateHits,hitType); + + std::vector rawSvthitsOn3d; + utils::addRawInfoTo3dHit(tracker_hit,static_cast(lc_tracker_hit), + raw_svt_hit_fits,&rawSvthitsOn3d,hitType); + + for (auto rhit : rawSvthitsOn3d) + rawhits_.push_back(rhit); - // Iterate through the collection of 3D hits (TrackerHit objects) - // associated with a track, find the corresponding hits in the HPS - // event and add references to the track - bool rotateHits = true; - int hitType = 0; - if (track->isKalmanTrack()) - hitType=1; //SiClusters - - for (auto lc_tracker_hit : lc_tracker_hits) { - - TrackerHit* tracker_hit = utils::buildTrackerHit(static_cast(lc_tracker_hit),rotateHits,hitType); - - std::vector rawSvthitsOn3d; - utils::addRawInfoTo3dHit(tracker_hit,static_cast(lc_tracker_hit), - raw_svt_hit_fits,&rawSvthitsOn3d,hitType); - - for (auto rhit : rawSvthitsOn3d) - rawhits_.push_back(rhit); + rawSvthitsOn3d.clear(); - rawSvthitsOn3d.clear(); + if (debug_) + std::cout<getRawHits().GetEntries()<addHit(tracker_hit); + track->addHitLayer(tracker_hit->getLayer()); + hits_.push_back(tracker_hit); + + //Get shared Hits information + for (int jtrack = itrack+1; jtrack < tracks->getNumberOfElements(); ++jtrack) { + + EVENT::Track* j_lc_track = static_cast(tracks->getElementAt(jtrack)); + if (utils::isUsedByTrack(tracker_hit,j_lc_track)) { + //The hit is not already in the shared list + if (std::find(SharedHits[itrack].begin(), SharedHits[itrack].end(),tracker_hit->getID()) == SharedHits[itrack].end()) { + SharedHits[itrack].push_back(tracker_hit->getID()); + if (tracker_hit->getLayer() == 0 ) + SharedHitsLy0[itrack] = true; + if (tracker_hit->getLayer() == 1 ) + SharedHitsLy1[itrack] = true; + } + if (std::find(SharedHits[jtrack].begin(), SharedHits[jtrack].end(),tracker_hit->getID()) == SharedHits[jtrack].end()) { + SharedHits[jtrack].push_back(tracker_hit->getID()); + if (tracker_hit->getLayer() == 0 ) + SharedHitsLy0[jtrack] = true; + if (tracker_hit->getLayer() == 1 ) + SharedHitsLy1[jtrack] = true; + } + } // found shared hit + } // loop on j>i tracks + }//tracker hits + + track->setNShared(SharedHits[itrack].size()); + track->setSharedLy0(SharedHitsLy0[itrack]); + track->setSharedLy1(SharedHitsLy1[itrack]); + - if (debug_) - std::cout<getRawHits().GetEntries()<addHit(tracker_hit); - track->addHitLayer(tracker_hit->getLayer()); - hits_.push_back(tracker_hit); - - //Get shared Hits information - for (int jtrack = itrack+1; jtrack < tracks->getNumberOfElements(); ++jtrack) { - - EVENT::Track* j_lc_track = static_cast(tracks->getElementAt(jtrack)); - if (utils::isUsedByTrack(tracker_hit,j_lc_track)) { - //The hit is not already in the shared list - if (std::find(SharedHits[itrack].begin(), SharedHits[itrack].end(),tracker_hit->getID()) == SharedHits[itrack].end()) { - SharedHits[itrack].push_back(tracker_hit->getID()); - if (tracker_hit->getLayer() == 0 ) - SharedHitsLy0[itrack] = true; - if (tracker_hit->getLayer() == 1 ) - SharedHitsLy1[itrack] = true; - } - if (std::find(SharedHits[jtrack].begin(), SharedHits[jtrack].end(),tracker_hit->getID()) == SharedHits[jtrack].end()) { - SharedHits[jtrack].push_back(tracker_hit->getID()); - if (tracker_hit->getLayer() == 0 ) - SharedHitsLy0[jtrack] = true; - if (tracker_hit->getLayer() == 1 ) - SharedHitsLy1[jtrack] = true; - } - } // found shared hit - } // loop on j>i tracks - }//tracker hits - - track->setNShared(SharedHits[itrack].size()); - track->setSharedLy0(SharedHitsLy0[itrack]); - track->setSharedLy1(SharedHitsLy1[itrack]); - } - //Get the truth tracks relations: // Get the collection of LCRelations between GBL kink data and track data variables @@ -298,27 +280,40 @@ bool TrackingProcessor::process(IEvent* ievent) { } } - tracks_.push_back(track); //Do the residual plots -- should be in another function if (doResiduals_) { EVENT::LCCollection* trackRes_data_rel{nullptr}; + EVENT::LCCollection* trackXKink_data_rel{nullptr}; + EVENT::LCCollection* trackZKink_data_rel{nullptr}; try { if (!trackResDataLcio_.empty()) trackRes_data_rel = static_cast(event->getLCCollection(trackResDataLcio_.c_str())); - } + if (!trackXKinkDataLcio_.empty()) + trackXKink_data_rel = static_cast(event->getLCCollection(trackXKinkDataLcio_.c_str())); + if (!trackZKinkDataLcio_.empty()) + trackZKink_data_rel = static_cast(event->getLCCollection(trackZKinkDataLcio_.c_str())); + + } catch (EVENT::DataNotAvailableException e) { std::cout< trackRes_data_nav = std::make_shared(trackRes_data_rel); + std::shared_ptr trackXKink_data_nav = std::make_shared(trackXKink_data_rel); + std::shared_ptr trackZKink_data_nav = std::make_shared(trackZKink_data_rel); EVENT::LCObjectVec trackRes_data_vec = trackRes_data_nav->getRelatedFromObjects(lc_track); - IMPL::LCGenericObjectImpl* trackRes_data = static_cast(trackRes_data_vec.at(0)); - + EVENT::LCObjectVec trackXKink_data_vec = trackXKink_data_nav->getRelatedFromObjects(lc_track); + EVENT::LCObjectVec trackZKink_data_vec = trackZKink_data_nav->getRelatedFromObjects(lc_track); + std::cout<<"DID I GET HERE"<(trackRes_data_vec.at(0)); + IMPL::LCGenericObjectImpl* trackXKink_data = static_cast(trackXKink_data_vec.at(0)); + IMPL::LCGenericObjectImpl* trackZKink_data = static_cast(trackZKink_data_vec.at(0)); + std::cout<<"DID I GET HERE 2"<getTrackerHitCount() != trackRes_data->getNDouble()) { @@ -326,18 +321,37 @@ bool TrackingProcessor::process(IEvent* ievent) { std::cout<<"Hits::"<getTrackerHitCount()<<" Residuals:"<getNDouble()<getNInt()<getNInt()-1;i_res++) { //std::cout<<"Residual ly " << trackRes_data->getIntVal(i_res)<<" res="<< trackRes_data->getDoubleVal(i_res)<<" sigma="<getFloatVal(i_res)<getIntVal(i_res); double res = trackRes_data->getDoubleVal(i_res); double sigma = trackRes_data->getFloatVal(i_res); - trkResHistos_->FillResidualHistograms(track,ly,res,sigma); - } + track->setTrackResid(ly,res); + } + std::cout<<"DID I GET HERE 3"<getNInt()-1;i_res++) { + int ly = trackXKink_data->getIntVal(i_res); + double Xkink = trackXKink_data->getDoubleVal(i_res); + double sigma = trackXKink_data->getFloatVal(i_res); + track->setLambdaKink(ly,Xkink); + } + std::cout<<"DID I GET HERE 4"<getNInt()<getNInt()-1;i_res++) { + std::cout<getIntVal(i_res); + double Zkink = trackZKink_data->getDoubleVal(i_res); + double sigma = trackZKink_data->getFloatVal(i_res); + track->setPhiKink(ly,Zkink); + } + std::cout<<"DID I GET HERE 5"<FillResidualHistograms(track,ly,res,sigma); }//trackResData exists }//doResiduals - + tracks_.push_back(track); }// tracks @@ -354,12 +368,12 @@ bool TrackingProcessor::process(IEvent* ievent) { void TrackingProcessor::finalize() { - if (doResiduals_) { + /*if (doResiduals_) { TFile* outfile = new TFile(resoutname_.c_str(),"RECREATE"); trkResHistos_->saveHistos(outfile,trkCollLcio_); if (trkResHistos_) delete trkResHistos_; trkResHistos_=nullptr; - } + }*/ } DECLARE_PROCESSOR(TrackingProcessor); From 18f957c6ef08850e45d98256d873654ddd1f5e0b Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 01:24:08 -0800 Subject: [PATCH 03/13] Add files via upload --- event/include/Track.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/event/include/Track.h b/event/include/Track.h index af7ab1e0..16e51695 100644 --- a/event/include/Track.h +++ b/event/include/Track.h @@ -291,7 +291,17 @@ class Track : public TObject { double getP() const {return sqrt(px_*px_ + py_*py_ + pz_*pz_);}; double getPt() const {return sqrt(px_*px_ + py_*py_);} + + /** + * Get the track residual of the given layer. + * + * @param layer The SVT layer of interest. + * @return The track residual value of the given layer. + */ + void setTrackResid(const int layer, const double track_resid) { track_residuals_[layer]=track_resid; } + double getTrackResid(const int layer) const { return track_residuals_[layer]; } + /** * Set the lambda kink of the given layer. * @@ -386,7 +396,7 @@ class Track : public TObject { /** hit layers */ std::vector hit_layers_; - /** truth mcp hits */ + /** truth mcp hits */ std::vector> mcp_hits_; /** The distance of closest approach to the reference point. */ @@ -446,6 +456,9 @@ class Track : public TObject { /** The z position track. */ double z_{-999.}; + /** Array used to store track residuals. */ + double track_residuals_[14]; + /** Array used to store the lambda kinks for each of the sensor layers. */ double lambda_kinks_[14]; From 1aa5412fdca6228750f3c6d0dc497ad5b06ea3b3 Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 01:24:40 -0800 Subject: [PATCH 04/13] Add files via upload --- processors/src/utilities.cxx | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/processors/src/utilities.cxx b/processors/src/utilities.cxx index c69e7597..9630172a 100644 --- a/processors/src/utilities.cxx +++ b/processors/src/utilities.cxx @@ -245,6 +245,19 @@ Track* utils::buildTrack(EVENT::Track* lc_track, track->setPositionAtEcal(position_at_ecal); } + /*if (kf_resid_data) { + std::shared_ptr kf_resid_data_nav = std::make_shared(kf_resid_data); + EVENT::LCObjectVec kf_resid_data_list + = kf_resid_data_nav->getRelatedFromObjects(lc_track); + if (kf_resid_data_list.size() == 1) { + IMPL::LCGenericObjectImpl* kf_resid_datum + = static_cast(kf_resid_data_list.at(0)); + for (int ikink = 0; ikink < kf_resid_datum->getNDouble(); ++ikink) { + track->setLambdaKink(ikink, kf_resid_datum->getFloatVal(ikink)); + } + } + }*/ + if (gbl_kink_data) { // Instantiate an LCRelation navigator which will allow faster access // to GBLKinkData object From d0865566b70692ab74175dc7645544dc0d35ceda Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 12:50:01 -0800 Subject: [PATCH 05/13] Update utilities.cxx --- processors/src/utilities.cxx | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/processors/src/utilities.cxx b/processors/src/utilities.cxx index 9630172a..c69e7597 100644 --- a/processors/src/utilities.cxx +++ b/processors/src/utilities.cxx @@ -245,19 +245,6 @@ Track* utils::buildTrack(EVENT::Track* lc_track, track->setPositionAtEcal(position_at_ecal); } - /*if (kf_resid_data) { - std::shared_ptr kf_resid_data_nav = std::make_shared(kf_resid_data); - EVENT::LCObjectVec kf_resid_data_list - = kf_resid_data_nav->getRelatedFromObjects(lc_track); - if (kf_resid_data_list.size() == 1) { - IMPL::LCGenericObjectImpl* kf_resid_datum - = static_cast(kf_resid_data_list.at(0)); - for (int ikink = 0; ikink < kf_resid_datum->getNDouble(); ++ikink) { - track->setLambdaKink(ikink, kf_resid_datum->getFloatVal(ikink)); - } - } - }*/ - if (gbl_kink_data) { // Instantiate an LCRelation navigator which will allow faster access // to GBLKinkData object From a32697537a74a3fbf9bb0495c94e8768aa02371b Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 14:12:12 -0800 Subject: [PATCH 06/13] Update TrackingProcessor.h --- processors/include/TrackingProcessor.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/processors/include/TrackingProcessor.h b/processors/include/TrackingProcessor.h index 97483a24..7e88a059 100644 --- a/processors/include/TrackingProcessor.h +++ b/processors/include/TrackingProcessor.h @@ -127,6 +127,8 @@ class TrackingProcessor : public Processor { double bfield_{-1.}; //!< magnetic field + int useTrackerHits_{-1}; //!< Load hit collections, otherwise get from getSubdetectorHitNumbers + }; // Tracking Processor #endif // __TRACKING_PROCESSOR_H__ From cda58821ef14a729a9784906bf6cbc8207b88d5a Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 14:15:57 -0800 Subject: [PATCH 07/13] Update TrackingProcessor.h --- processors/include/TrackingProcessor.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/processors/include/TrackingProcessor.h b/processors/include/TrackingProcessor.h index 7e88a059..1369f13d 100644 --- a/processors/include/TrackingProcessor.h +++ b/processors/include/TrackingProcessor.h @@ -127,7 +127,7 @@ class TrackingProcessor : public Processor { double bfield_{-1.}; //!< magnetic field - int useTrackerHits_{-1}; //!< Load hit collections, otherwise get from getSubdetectorHitNumbers + int useTrackerHits_{1}; //!< Load hit collections, otherwise get from getSubdetectorHitNumbers }; // Tracking Processor From a12fe24799735c1ad8a5a2a9c050dc9b3c61e3be Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 14:16:45 -0800 Subject: [PATCH 08/13] Update TrackingProcessor.h --- processors/include/TrackingProcessor.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/processors/include/TrackingProcessor.h b/processors/include/TrackingProcessor.h index 1369f13d..095b3c9c 100644 --- a/processors/include/TrackingProcessor.h +++ b/processors/include/TrackingProcessor.h @@ -127,7 +127,7 @@ class TrackingProcessor : public Processor { double bfield_{-1.}; //!< magnetic field - int useTrackerHits_{1}; //!< Load hit collections, otherwise get from getSubdetectorHitNumbers + int useTrackerHits_{1}; //!< Load hit collections, otherwise get from getSubdetectorHitNumbers }; // Tracking Processor From d45adab930ddb511762229868a71d7716c823791 Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 14:26:08 -0800 Subject: [PATCH 09/13] Update TrackingProcessor.cxx --- processors/src/TrackingProcessor.cxx | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/processors/src/TrackingProcessor.cxx b/processors/src/TrackingProcessor.cxx index 38069697..d649dd7d 100644 --- a/processors/src/TrackingProcessor.cxx +++ b/processors/src/TrackingProcessor.cxx @@ -24,9 +24,9 @@ void TrackingProcessor::configure(const ParameterSet& parameters) { rawhitCollRoot_ = parameters.getString("rawhitCollRoot", rawhitCollRoot_); truthTracksCollLcio_ = parameters.getString("truthTrackCollLcio",truthTracksCollLcio_); truthTracksCollRoot_ = parameters.getString("truthTrackCollRoot",truthTracksCollRoot_); - bfield_ = parameters.getDouble("bfield",bfield_); trackStateLocation_ = parameters.getString("trackStateLocation",trackStateLocation_); - + useTrackerHits_ = parameters.getInteger("useTrackerHits",useTrackerHits_); + bfield_ = parameters.getDouble("bfield",bfield_); //Residual plotting is done in this processor for the moment. doResiduals_ = parameters.getInteger("doResiduals",doResiduals_); trackResDataLcio_ = parameters.getString("trackResDataLcio",trackResDataLcio_); @@ -57,13 +57,13 @@ void TrackingProcessor::initialize(TTree* tree) { //Residual plotting - /*if (doResiduals_) { + if (doResiduals_) { trkResHistos_ = new TrackHistos(trkCollLcio_); trkResHistos_->debugMode(debug_); trkResHistos_->loadHistoConfig(resCfgFilename_); trkResHistos_->doTrackComparisonPlots(false); trkResHistos_->DefineHistos(); - }*/ + } } @@ -137,8 +137,7 @@ bool TrackingProcessor::process(IEvent* ievent) { std::map > SharedHits; //TODO: can we do better? (innermost) std::map SharedHitsLy0; - std::map SharedHitsLy1; - + std::map SharedHitsLy1; for (int itrack = 0; itrack < tracks->getNumberOfElements();++itrack) { SharedHits[itrack] = {}; SharedHitsLy0[itrack] = false; @@ -301,7 +300,6 @@ bool TrackingProcessor::process(IEvent* ievent) { { std::cout< trackRes_data_nav = std::make_shared(trackRes_data_rel); std::shared_ptr trackXKink_data_nav = std::make_shared(trackXKink_data_rel); @@ -309,11 +307,9 @@ bool TrackingProcessor::process(IEvent* ievent) { EVENT::LCObjectVec trackRes_data_vec = trackRes_data_nav->getRelatedFromObjects(lc_track); EVENT::LCObjectVec trackXKink_data_vec = trackXKink_data_nav->getRelatedFromObjects(lc_track); EVENT::LCObjectVec trackZKink_data_vec = trackZKink_data_nav->getRelatedFromObjects(lc_track); - std::cout<<"DID I GET HERE"<(trackRes_data_vec.at(0)); IMPL::LCGenericObjectImpl* trackXKink_data = static_cast(trackXKink_data_vec.at(0)); IMPL::LCGenericObjectImpl* trackZKink_data = static_cast(trackZKink_data_vec.at(0)); - std::cout<<"DID I GET HERE 2"<getTrackerHitCount() != trackRes_data->getNDouble()) { @@ -321,7 +317,6 @@ bool TrackingProcessor::process(IEvent* ievent) { std::cout<<"Hits::"<getTrackerHitCount()<<" Residuals:"<getNDouble()<getNInt()<getNInt()-1;i_res++) { //std::cout<<"Residual ly " << trackRes_data->getIntVal(i_res)<<" res="<< trackRes_data->getDoubleVal(i_res)<<" sigma="<getFloatVal(i_res)<getFloatVal(i_res); track->setTrackResid(ly,res); } - std::cout<<"DID I GET HERE 3"<getNInt()-1;i_res++) { int ly = trackXKink_data->getIntVal(i_res); double Xkink = trackXKink_data->getDoubleVal(i_res); double sigma = trackXKink_data->getFloatVal(i_res); track->setLambdaKink(ly,Xkink); } - std::cout<<"DID I GET HERE 4"<getNInt()<getNInt()-1;i_res++) { - std::cout<getIntVal(i_res); double Zkink = trackZKink_data->getDoubleVal(i_res); double sigma = trackZKink_data->getFloatVal(i_res); track->setPhiKink(ly,Zkink); } - std::cout<<"DID I GET HERE 5"<FillResidualHistograms(track,ly,res,sigma); + trkResHistos_->FillResidualHistograms(track,ly,res,sigma); }//trackResData exists }//doResiduals tracks_.push_back(track); @@ -367,13 +356,12 @@ bool TrackingProcessor::process(IEvent* ievent) { } void TrackingProcessor::finalize() { - - /*if (doResiduals_) { + if (doResiduals_) { TFile* outfile = new TFile(resoutname_.c_str(),"RECREATE"); trkResHistos_->saveHistos(outfile,trkCollLcio_); if (trkResHistos_) delete trkResHistos_; trkResHistos_=nullptr; - }*/ + } } DECLARE_PROCESSOR(TrackingProcessor); From 6359cee872357d5e6b620038c838242f6aab5ed7 Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 16:27:20 -0800 Subject: [PATCH 10/13] Update TrackingProcessor.cxx --- processors/src/TrackingProcessor.cxx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/processors/src/TrackingProcessor.cxx b/processors/src/TrackingProcessor.cxx index d649dd7d..87dd9b08 100644 --- a/processors/src/TrackingProcessor.cxx +++ b/processors/src/TrackingProcessor.cxx @@ -180,7 +180,23 @@ bool TrackingProcessor::process(IEvent* ievent) { // Get the collection of hits associated with a LCIO Track EVENT::TrackerHitVec lc_tracker_hits = lc_track->getTrackerHits(); + int nHits = 0; + if(!useTrackerHits_){ + auto hitPattern = lc_track->getSubdetectorHitNumbers(); + for( int h=0; h0 ){ + track->addHitLayer(h+1); + nHits++; + } + } + if(nHits==0){ + std::cout << "[TrackingProcessor::process] WARNING Track with no hits -- likely getSubdetectorHitNumbers isn't filled!" << std::endl; + std::cout << "[TrackingProcessor::process] WARNING If hit collections are saved, you may want to turn on useTrackerHits" << std::endl; + } + track->setTrackerHitCount(nHits); + } + else{ // Iterate through the collection of 3D hits (TrackerHit objects) // associated with a track, find the corresponding hits in the HPS // event and add references to the track @@ -232,7 +248,7 @@ bool TrackingProcessor::process(IEvent* ievent) { } // found shared hit } // loop on j>i tracks }//tracker hits - + } track->setNShared(SharedHits[itrack].size()); track->setSharedLy0(SharedHitsLy0[itrack]); track->setSharedLy1(SharedHitsLy1[itrack]); From 1ae07bb394f39535933f7ab16bef84da896b5927 Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 16:45:47 -0800 Subject: [PATCH 11/13] Add files via upload --- processors/include/TrackingProcessor.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/processors/include/TrackingProcessor.h b/processors/include/TrackingProcessor.h index 095b3c9c..ab1c2b93 100644 --- a/processors/include/TrackingProcessor.h +++ b/processors/include/TrackingProcessor.h @@ -117,6 +117,7 @@ class TrackingProcessor : public Processor { int debug_{false}; //!< Debug Level int doResiduals_{0}; //!< do Residuals + int doHistograms_{0}; std::string trackResDataLcio_{""}; //!< description std::string trackXKinkDataLcio_{""}; std::string trackZKinkDataLcio_{""}; @@ -127,7 +128,7 @@ class TrackingProcessor : public Processor { double bfield_{-1.}; //!< magnetic field - int useTrackerHits_{1}; //!< Load hit collections, otherwise get from getSubdetectorHitNumbers + int useTrackerHits_{1};//!< Load hit collections, otherwise get from getSubdetectorHitNumbsrs }; // Tracking Processor From b548f7b94c6611ebfe1c48906fc9185b155d5c26 Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 16:46:09 -0800 Subject: [PATCH 12/13] Add files via upload --- processors/src/TrackingProcessor.cxx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/processors/src/TrackingProcessor.cxx b/processors/src/TrackingProcessor.cxx index 87dd9b08..4c641b19 100644 --- a/processors/src/TrackingProcessor.cxx +++ b/processors/src/TrackingProcessor.cxx @@ -29,7 +29,8 @@ void TrackingProcessor::configure(const ParameterSet& parameters) { bfield_ = parameters.getDouble("bfield",bfield_); //Residual plotting is done in this processor for the moment. doResiduals_ = parameters.getInteger("doResiduals",doResiduals_); - trackResDataLcio_ = parameters.getString("trackResDataLcio",trackResDataLcio_); + doHistograms_ = parameters.getInteger("doHistograms",doHistograms_); + trackResDataLcio_ = parameters.getString("trackResDataLcio",trackResDataLcio_); trackXKinkDataLcio_ = parameters.getString("trackXKinkDataLcio",trackXKinkDataLcio_); trackZKinkDataLcio_ = parameters.getString("trackZKinkDataLcio",trackZKinkDataLcio_); resCfgFilename_ = parameters.getString("resPlots",resCfgFilename_); @@ -57,7 +58,7 @@ void TrackingProcessor::initialize(TTree* tree) { //Residual plotting - if (doResiduals_) { + if (doResiduals_ and doHistograms_) { trkResHistos_ = new TrackHistos(trkCollLcio_); trkResHistos_->debugMode(debug_); trkResHistos_->loadHistoConfig(resCfgFilename_); @@ -339,7 +340,8 @@ bool TrackingProcessor::process(IEvent* ievent) { int ly = trackRes_data->getIntVal(i_res); double res = trackRes_data->getDoubleVal(i_res); double sigma = trackRes_data->getFloatVal(i_res); - track->setTrackResid(ly,res); + track->setTrackResid(ly,res); + if(doHistograms_){trkResHistos_->FillResidualHistograms(track,ly,res,sigma);} } for (int i_res = 0; i_res < trackXKink_data->getNInt()-1;i_res++) { int ly = trackXKink_data->getIntVal(i_res); @@ -353,7 +355,6 @@ bool TrackingProcessor::process(IEvent* ievent) { double sigma = trackZKink_data->getFloatVal(i_res); track->setPhiKink(ly,Zkink); } - trkResHistos_->FillResidualHistograms(track,ly,res,sigma); }//trackResData exists }//doResiduals tracks_.push_back(track); @@ -372,7 +373,7 @@ bool TrackingProcessor::process(IEvent* ievent) { } void TrackingProcessor::finalize() { - if (doResiduals_) { + if (doResiduals_ and doHistograms_) { TFile* outfile = new TFile(resoutname_.c_str(),"RECREATE"); trkResHistos_->saveHistos(outfile,trkCollLcio_); if (trkResHistos_) delete trkResHistos_; From 269552ea5fa032920795698c04a69963ac408d16 Mon Sep 17 00:00:00 2001 From: rodwyer100 Date: Wed, 5 Feb 2025 16:50:52 -0800 Subject: [PATCH 13/13] Update TrackingProcessor.cxx --- processors/src/TrackingProcessor.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/processors/src/TrackingProcessor.cxx b/processors/src/TrackingProcessor.cxx index 4c641b19..46ffdb9b 100644 --- a/processors/src/TrackingProcessor.cxx +++ b/processors/src/TrackingProcessor.cxx @@ -180,7 +180,7 @@ bool TrackingProcessor::process(IEvent* ievent) { track->setMomentum(bfield_); // Get the collection of hits associated with a LCIO Track - EVENT::TrackerHitVec lc_tracker_hits = lc_track->getTrackerHits(); + int nHits = 0; if(!useTrackerHits_){ @@ -201,6 +201,7 @@ bool TrackingProcessor::process(IEvent* ievent) { // Iterate through the collection of 3D hits (TrackerHit objects) // associated with a track, find the corresponding hits in the HPS // event and add references to the track + EVENT::TrackerHitVec lc_tracker_hits = lc_track->getTrackerHits(); bool rotateHits = true; int hitType = 0; if (track->isKalmanTrack())