From ad75c39af0153cd0da11fabfff0845f10cd00c6d Mon Sep 17 00:00:00 2001 From: lintao <lintao51@gmail.com> Date: Sat, 25 Sep 2021 01:42:11 +0800 Subject: [PATCH] update silicon tracking. --- .../src/SiliconTrackingAlg.cpp | 2 +- .../src/SpacePointBuilderAlg.cpp | 19 +++++++++++++------ .../SiliconTracking/src/TrackSubsetAlg.cpp | 14 +++++++------- .../SiliconTracking/src/TrackSubsetAlg.h | 5 +++-- Utilities/KiTrack/include/ILDImpl/FTDHit01.h | 2 +- Utilities/KiTrack/include/ILDImpl/IFTDHit.h | 4 ++-- Utilities/KiTrack/src/ILDImpl/FTDHit01.cc | 2 +- 7 files changed, 28 insertions(+), 20 deletions(-) diff --git a/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp b/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp index 88d71d3c..a3fde79c 100644 --- a/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp +++ b/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp @@ -660,7 +660,7 @@ int SiliconTrackingAlg::InitialiseVTX() { for (int ielem=0; ielem<nelem; ++ielem) { //for(auto hit : *hitVTXCol){ - edm4hep::TrackerHit hit = hitVTXCol->at(ielem); + auto hit = hitVTXCol->at(ielem); //gear::Vector3D U(1.0,hit->getU()[1],hit->getU()[0],gear::Vector3D::spherical); //gear::Vector3D V(1.0,hit->getV()[1],hit->getV()[0],gear::Vector3D::spherical); gear::Vector3D U(1.0,hit.getCovMatrix()[1],hit.getCovMatrix()[0],gear::Vector3D::spherical); diff --git a/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.cpp b/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.cpp index 956b4251..fdd5118d 100644 --- a/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.cpp +++ b/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.cpp @@ -108,10 +108,17 @@ StatusCode SpacePointBuilderAlg::execute(){ unsigned nHits = hitCol->size(); debug() << "Number of hits: " << nHits << endmsg; + + if (!nHits) { + return sc; + } + + auto tmpHit0 = hitCol->at(0); //store hits in map according to their CellID0 - std::map<long long, std::vector<edm4hep::TrackerHit> > map_cellID0_hits; - std::map<long long, std::vector<edm4hep::TrackerHit> >::iterator it; + + std::map<long long, std::vector<decltype(tmpHit0)> > map_cellID0_hits; + decltype(map_cellID0_hits)::iterator it; for(auto trkHit : *hitCol){ debug() << "Add hit with CellID0 = " << trkHit.getCellID() << " " << getCellID0Info( trkHit.getCellID() ) << endmsg; map_cellID0_hits[ trkHit.getCellID() ].push_back( trkHit ); @@ -121,14 +128,14 @@ StatusCode SpacePointBuilderAlg::execute(){ // now loop over all CellID0s for( it= map_cellID0_hits.begin(); it!= map_cellID0_hits.end(); it++ ){ rawStripHits += it->second.size(); - std::vector<edm4hep::TrackerHit>& hitsFront = it->second; + auto hitsFront = it->second; unsigned long long cellID0 = it->first; //get the CellID0s at the back of this sensor std::vector<int> cellID0sBack = getCellID0sAtBack( cellID0 ); for( unsigned i=0; i< cellID0sBack.size(); i++ ){ int cellID0Back = cellID0sBack[i]; - std::vector<edm4hep::TrackerHit>& hitsBack = map_cellID0_hits[ cellID0Back ]; + auto hitsBack = map_cellID0_hits[ cellID0Back ]; debug() << "strips: CellID0 " << cellID0 << " " << getCellID0Info( cellID0 ) << "(" << hitsFront.size() << " hits) <---> CellID0 " << cellID0Back << getCellID0Info( cellID0Back ) << "(" << hitsBack.size() << " hits)" << endmsg @@ -137,9 +144,9 @@ StatusCode SpacePointBuilderAlg::execute(){ possibleSpacePoints += hitsFront.size() * hitsBack.size(); // Now iterate over all combinations and store those that make sense for( unsigned ifront=0; ifront<hitsFront.size(); ifront++ ){ - edm4hep::TrackerHit& hitFront = hitsFront[ifront]; + auto hitFront = hitsFront[ifront]; for( unsigned j=0; j<hitsBack.size(); j++ ){ - edm4hep::TrackerHit& hitBack = hitsBack[j]; + auto hitBack = hitsBack[j]; std::vector<edm4hep::ConstSimTrackerHit> simHitsFront; std::vector<edm4hep::ConstSimTrackerHit> simHitsBack; diff --git a/Reconstruction/SiliconTracking/src/TrackSubsetAlg.cpp b/Reconstruction/SiliconTracking/src/TrackSubsetAlg.cpp index 2efe0f52..3d049e6a 100644 --- a/Reconstruction/SiliconTracking/src/TrackSubsetAlg.cpp +++ b/Reconstruction/SiliconTracking/src/TrackSubsetAlg.cpp @@ -96,7 +96,7 @@ StatusCode TrackSubsetAlg::finalize(){ } StatusCode TrackSubsetAlg::execute(){ - std::vector<edm4hep::Track> tracks; + std::vector<edm4hep::ConstTrack> tracks; auto trkCol = _outColHdl.createAndPut(); /**********************************************************************************************/ @@ -151,9 +151,9 @@ StatusCode TrackSubsetAlg::execute(){ debug() << "The tracks and their qualities (and their hits ): " << endmsg; - std::vector<edm4hep::Track*> tracks_p; + std::vector<edm4hep::ConstTrack*> tracks_p; for( unsigned i=0; i < tracks.size(); i++ ){ - edm4hep::Track* track = &tracks[i]; + auto* track = &tracks[i]; tracks_p.push_back(track); double qi = trackQI( track ); debug() << "Track " << track->id() << " address " << track << "\t" << qi << "( "; @@ -174,14 +174,14 @@ StatusCode TrackSubsetAlg::execute(){ TrackCompatibility comp; - SubsetHopfieldNN<edm4hep::Track*> subset; + SubsetHopfieldNN<edm4hep::ConstTrack*> subset; //SubsetSimple<edm4hep::Track* > subset; subset.add( tracks_p ); subset.setOmega( _omega ); subset.calculateBestSet( comp, trackQI ); - std::vector<edm4hep::Track*> accepted = subset.getAccepted(); - std::vector<edm4hep::Track*> rejected = subset.getRejected(); + auto accepted = subset.getAccepted(); + auto rejected = subset.getRejected(); debug() << "\tThe accepted tracks:" << endmsg; for( unsigned i=0; i < accepted.size(); i++ ){ @@ -203,7 +203,7 @@ StatusCode TrackSubsetAlg::execute(){ for( unsigned i=0; i < accepted.size(); i++ ){ edm4hep::Track trackImpl; - edm4hep::Track* track = accepted[i]; + auto track = accepted[i]; std::vector<edm4hep::ConstTrackerHit> trackerHitsObj; std::vector<edm4hep::ConstTrackerHit> trackerHits; diff --git a/Reconstruction/SiliconTracking/src/TrackSubsetAlg.h b/Reconstruction/SiliconTracking/src/TrackSubsetAlg.h index c6e59d81..e6f710dd 100644 --- a/Reconstruction/SiliconTracking/src/TrackSubsetAlg.h +++ b/Reconstruction/SiliconTracking/src/TrackSubsetAlg.h @@ -5,6 +5,7 @@ #include "GaudiAlg/GaudiAlgorithm.h" #include "edm4hep/TrackCollection.h" +#include "edm4hep/TrackerHitCollection.h" //#include "edm4hep/Track.h" #include "TrackSystemSvc/IMarlinTrkSystem.h" @@ -83,7 +84,7 @@ class TrackSubsetAlg : public GaudiAlgorithm { /** A functor to return whether two tracks are compatible: The criterion is if the share a TrackerHit or more */ class TrackCompatibility{ public: - inline bool operator()( edm4hep::Track* trackA, edm4hep::Track* trackB ){ + inline bool operator()( edm4hep::ConstTrack* trackA, edm4hep::ConstTrack* trackB ){ unsigned nHitsA = trackA->trackerHits_size(); unsigned nHitsB = trackB->trackerHits_size(); for( unsigned i=0; i < nHitsA; i++){ @@ -103,7 +104,7 @@ class TrackQI{ /** @param trkSystem a pointer to an IMarlinTrkSystem, needed for fitting of tracks */ TrackQI( MarlinTrk::IMarlinTrkSystem* trkSystem ): _trkSystem(trkSystem){} - inline double operator()( edm4hep::Track* track ){ + inline double operator()( edm4hep::ConstTrack* track ){ return ROOT::Math::chisquared_cdf_c( track->getChi2() , track->getNdf() ); } diff --git a/Utilities/KiTrack/include/ILDImpl/FTDHit01.h b/Utilities/KiTrack/include/ILDImpl/FTDHit01.h index 6750231e..66b975e5 100644 --- a/Utilities/KiTrack/include/ILDImpl/FTDHit01.h +++ b/Utilities/KiTrack/include/ILDImpl/FTDHit01.h @@ -14,7 +14,7 @@ namespace KiTrackMarlin{ class FTDHit01 : public IFTDHit{ public: - FTDHit01( edm4hep::TrackerHit trackerHit , const SectorSystemFTD* const sectorSystemFTD ); + FTDHit01( edm4hep::ConstTrackerHit trackerHit , const SectorSystemFTD* const sectorSystemFTD ); }; } #endif diff --git a/Utilities/KiTrack/include/ILDImpl/IFTDHit.h b/Utilities/KiTrack/include/ILDImpl/IFTDHit.h index 33b817bf..cb497dfa 100644 --- a/Utilities/KiTrack/include/ILDImpl/IFTDHit.h +++ b/Utilities/KiTrack/include/ILDImpl/IFTDHit.h @@ -16,7 +16,7 @@ namespace KiTrackMarlin{ class IFTDHit : public IHit{ public: - edm4hep::TrackerHit* getTrackerHit() { return &_trackerHit; }; + edm4hep::ConstTrackerHit* getTrackerHit() { return &_trackerHit; }; int getSide() { return _side; } unsigned getModule() { return _module; } @@ -31,7 +31,7 @@ namespace KiTrackMarlin{ protected: - edm4hep::TrackerHit _trackerHit; + edm4hep::ConstTrackerHit _trackerHit; int _side; unsigned _layer; diff --git a/Utilities/KiTrack/src/ILDImpl/FTDHit01.cc b/Utilities/KiTrack/src/ILDImpl/FTDHit01.cc index a5eaab1c..5d53538c 100644 --- a/Utilities/KiTrack/src/ILDImpl/FTDHit01.cc +++ b/Utilities/KiTrack/src/ILDImpl/FTDHit01.cc @@ -6,7 +6,7 @@ using namespace KiTrackMarlin; -FTDHit01::FTDHit01( edm4hep::TrackerHit trackerHit , const SectorSystemFTD* const sectorSystemFTD ){ +FTDHit01::FTDHit01( edm4hep::ConstTrackerHit trackerHit , const SectorSystemFTD* const sectorSystemFTD ){ _sectorSystemFTD = sectorSystemFTD; -- GitLab