diff --git a/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool.h b/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool.h index 5d44f38c256e00de31e589a3f5ac63eb58e247ac..1309b85481c25d43f244ad98a8fd1237409a5ab2 100755 --- a/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool.h +++ b/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool/InDetTrackSummaryHelperTool.h @@ -58,6 +58,8 @@ namespace InDet { Input quantities rot, tsos are used to increment the counts for hits and outliers in information and to set the proper bits in hitPattern. */ using IExtendedTrackSummaryHelperTool::analyse; + using IExtendedTrackSummaryHelperTool::addDetailedTrackSummary; + virtual void analyse( const EventContext& ctx, const Trk::Track& track, @@ -74,49 +76,34 @@ namespace InDet { const Trk::CompetingRIOsOnTrack* crot, const Trk::TrackStateOnSurface* tsos, std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override final; + std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override final ; + /** @copydoc Trk::ITrackSummaryHelperTool::addDetailedTrackSummary(const + * Trk::Track&, Trk::TrackSummary&)*/ - virtual void analyse( - const Trk::Track& track, - const Trk::RIO_OnTrack* rot, - const Trk::TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override - { - analyse(track, nullptr, rot, tsos, information, hitPattern); - } - - virtual void analyse( - const Trk::Track& track, - const Trk::CompetingRIOsOnTrack* crot, - const Trk::TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override - { - analyse(track, nullptr, crot, tsos, information, hitPattern); - } + virtual void addDetailedTrackSummary(const EventContext& ctx, + const Trk::Track&, + Trk::TrackSummary&) const override final; /** Input : track, partHyp Output: Changes in information - This method first calls the method getListOfHits to isolate the relevant hits on the track before calling the method - performHoleSearchStepWise which then performs the actual hole search. - Additionally the Layers of the Pixel Detector which contribute measurements to the track are counted - If problems occur, the information counters for Holes and PixelLayers are reset to -1 flagging them as not set. + This method first calls the method getListOfHits to isolate the relevant + hits on the track before calling the method performHoleSearchStepWise + which then performs the actual hole search. Additionally the Layers of + the Pixel Detector which contribute measurements to the track are counted + If problems occur, the information counters for Holes and PixelLayers + are reset to -1 flagging them as not set. */ - virtual void searchForHoles(const Trk::Track& track, - std::vector<int>& information , - const Trk::ParticleHypothesis partHyp = Trk::pion) const override; - - /** this method simply updaes the shared hit content - it is designed/optimised for track collection merging */ - virtual void updateSharedHitCount(const Trk::Track& track, - const Trk::PRDtoTrackMap *prd_to_track_map, - Trk::TrackSummary& summary) const override; - - /** this method simply updaes the shared hit content - it is designed/optimised for track collection merging */ - virtual void updateSharedHitCount(const Trk::Track& track, - Trk::TrackSummary& summary) const override { - updateSharedHitCount(track,nullptr,summary); - } + virtual void searchForHoles( + const Trk::Track& track, + std::vector<int>& information, + const Trk::ParticleHypothesis partHyp = Trk::pion) const override final; + + /** this method simply updaes the shared hit content - it is + * designed/optimised for track collection merging */ + virtual void updateSharedHitCount( + const Trk::Track& track, + const Trk::PRDtoTrackMap* prd_to_track_map, + Trk::TrackSummary& summary) const override final; /** this method simply updaes the electron PID content - it is * designed/optimised for track collection merging */ @@ -124,14 +111,12 @@ namespace InDet { std::vector<float>& eprob, float& dedx, int& nclus, - int& noverflowclus) const override; - /** This method updates the expect... hit info*/ - virtual void updateExpectedHitInfo(const Trk::Track& track, Trk::TrackSummary& summary) const override; - - /** @copydoc Trk::ITrackSummaryHelperTool::addDetailedTrackSummary(const Trk::Track&, Trk::TrackSummary&)*/ - - virtual void addDetailedTrackSummary(const Trk::Track&, Trk::TrackSummary&) const override; + int& noverflowclus) const override final; + /** This method updates the expect... hit info*/ + virtual void updateExpectedHitInfo( + const Trk::Track& track, + Trk::TrackSummary& summary) const override final; private: const Trk::ClusterSplitProbabilityContainer::ProbabilityInfo& diff --git a/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/src/InDetTrackSummaryHelperTool.cxx b/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/src/InDetTrackSummaryHelperTool.cxx index e9482a0348b14f289dc948ee2e4495f662ed735a..5e2967a1bb7b1799565691a3de470b10f543bc36 100755 --- a/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/src/InDetTrackSummaryHelperTool.cxx +++ b/InnerDetector/InDetRecTools/InDetTrackSummaryHelperTool/src/InDetTrackSummaryHelperTool.cxx @@ -395,8 +395,13 @@ void InDet::InDetTrackSummaryHelperTool::updateSharedHitCount(const Trk::Track & if (pixPrd and splitProb.isSplit()) { summary.m_information[Trk::numberOfPixelSplitHits]++; hitIsSplit=true; - if ( m_pixelId->is_barrel(id) and m_pixelId->layer_disk(id)==0) summary.m_information[Trk::numberOfInnermostLayerSplitHits]++; - if ( m_pixelId->is_barrel(id) and m_pixelId->layer_disk(id)==1) summary.m_information[Trk::numberOfNextToInnermostLayerSplitHits]++; + if (m_pixelId->is_barrel(id) and m_pixelId->layer_disk(id) == 0){ + summary.m_information[Trk::numberOfInnermostLayerSplitHits]++; + } + if (m_pixelId->is_barrel(id) and m_pixelId->layer_disk(id) == 1){ + summary.m_information + [Trk::numberOfNextToInnermostLayerSplitHits]++; + } } } } @@ -434,7 +439,11 @@ void InDet::InDetTrackSummaryHelperTool::updateSharedHitCount(const Trk::Track & return; } -void InDet::InDetTrackSummaryHelperTool::updateExpectedHitInfo(const Trk::Track &track, Trk::TrackSummary& summary) const{ +void +InDet::InDetTrackSummaryHelperTool::updateExpectedHitInfo( + const Trk::Track& track, + Trk::TrackSummary& summary) const +{ if (m_usePixel and not m_testBLayerTool.empty() ) { @@ -475,9 +484,14 @@ void InDet::InDetTrackSummaryHelperTool::updateExpectedHitInfo(const Trk::Track return; } - -void InDet::InDetTrackSummaryHelperTool::updateAdditionalInfo(Trk::TrackSummary& summary, std::vector<float>& eprob, - float& dedx, int& nclus, int& noverflowclus) const { +void +InDet::InDetTrackSummaryHelperTool::updateAdditionalInfo( + Trk::TrackSummary& summary, + std::vector<float>& eprob, + float& dedx, + int& nclus, + int& noverflowclus) const +{ summary.m_eProbability = eprob; summary.m_dedx = dedx; summary.m_nhitsdedx = nclus; @@ -486,34 +500,49 @@ void InDet::InDetTrackSummaryHelperTool::updateAdditionalInfo(Trk::TrackSummary& return; } -void InDet::InDetTrackSummaryHelperTool::addDetailedTrackSummary(const Trk::Track& track, Trk::TrackSummary& summary) const { +void +InDet::InDetTrackSummaryHelperTool::addDetailedTrackSummary( + const EventContext& ctx, + const Trk::Track& track, + Trk::TrackSummary& summary) const +{ if (summary.m_indetTrackSummary and not m_overwriteidsummary) { - ATH_MSG_DEBUG("TrackSummary already has detailed indet track summary, not adding a new one"); + ATH_MSG_DEBUG("TrackSummary already has detailed indet track summary, not " + "adding a new one"); return; } if (not m_usePixel) { - ATH_MSG_DEBUG("Pixels are off, so no need for an detailed indet track summary"); + ATH_MSG_DEBUG( + "Pixels are off, so no need for an detailed indet track summary"); return; } ATH_MSG_DEBUG("Adding detailed indet track summary"); delete summary.m_indetTrackSummary; Trk::InDetTrackSummary* indetTrackSummary = new Trk::InDetTrackSummary(); - Trk::InDetTrackSummary& trackSummary = *indetTrackSummary; - if (m_usePixel and not m_pixeldedxtool.empty() and (track.perigeeParameters() or not track.trackParameters()->empty())) { + Trk::InDetTrackSummary& trackSummary = *indetTrackSummary; + if (m_usePixel and not m_pixeldedxtool.empty() and + (track.perigeeParameters() or not track.trackParameters()->empty())) { const Trk::TrackParameters* par = track.perigeeParameters(); - if (par==nullptr) par = *track.trackParameters()->begin(); - double p = (par->parameters()[Trk::qOverP]!=0) ? 1./par->parameters()[Trk::qOverP] : 1.e15; - double dedx = summary.getPixeldEdx(); + + if (par == nullptr){ + par = *track.trackParameters()->begin(); + } + double p = (par->parameters()[Trk::qOverP] != 0) + ? 1. / par->parameters()[Trk::qOverP] + : 1.e15; + double dedx = summary.getPixeldEdx(); int ngoodhits = summary.numberOfUsedHitsdEdx(); - if (ngoodhits>0 and dedx>0 and track.info().trackFitter()!=Trk::TrackInfo::Unknown and p<1.e15) { - trackSummary.m_likelihoodspixeldedx = m_pixeldedxtool->getLikelihoods(dedx, p, ngoodhits); - trackSummary.m_massdedx = m_pixeldedxtool->getMass(dedx, p, ngoodhits); + if (ngoodhits > 0 and dedx > 0 and + track.info().trackFitter() != Trk::TrackInfo::Unknown and p < 1.e15) { + trackSummary.m_likelihoodspixeldedx = + m_pixeldedxtool->getLikelihoods(ctx, dedx, p, ngoodhits); + trackSummary.m_massdedx = + m_pixeldedxtool->getMass(ctx, dedx, p, ngoodhits); } } summary.m_indetTrackSummary = indetTrackSummary; } -// ==================================================================================================================== StatusCode InDet::InDetTrackSummaryHelperTool::finalize() { return StatusCode::SUCCESS; diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.h index 2b072f2b099c76feedcd42283ce1bb8733adbd4d..879a5f3f0feac53b350af49e7dca0d217aadfdc2 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.h +++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.h @@ -45,58 +45,38 @@ namespace Muon { virtual StatusCode initialize() override; - using IExtendedTrackSummaryHelperTool::analyse; - using IExtendedTrackSummaryHelperTool::updateSharedHitCount; + using IExtendedTrackSummaryHelperTool::analyse; + using IExtendedTrackSummaryHelperTool::updateSharedHitCount; + using IExtendedTrackSummaryHelperTool::addDetailedTrackSummary; virtual void analyse( - const Trk::Track& trk, - const Trk::RIO_OnTrack* rot, - const Trk::TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override; - - virtual void analyse( - const Trk::Track& trk, - const Trk::CompetingRIOsOnTrack* crot, - const Trk::TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override; + const Trk::Track& trk, + const Trk::RIO_OnTrack* rot, + const Trk::TrackStateOnSurface* tsos, + std::vector<int>& information, + std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override final; virtual void analyse( - const Trk::Track& trk, - const Trk::PRDtoTrackMap *prd_to_track_map, - const Trk::RIO_OnTrack* rot, - const Trk::TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override { - (void) prd_to_track_map; - analyse(trk,rot,tsos,information,hitPattern); - } - - virtual void analyse( - const Trk::Track& trk, - const Trk::PRDtoTrackMap *prd_to_track_map, - const Trk::CompetingRIOsOnTrack* crot, - const Trk::TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override { - (void) prd_to_track_map; - analyse(trk,crot,tsos,information, hitPattern); - } - - virtual - void searchForHoles( - const Trk::Track& track, - std::vector<int>& information, Trk::ParticleHypothesis hyp) const override; - - virtual - void updateSharedHitCount(const Trk::Track&, - const Trk::PRDtoTrackMap *, - Trk::TrackSummary&) const override {}; - - virtual - void addDetailedTrackSummary( const Trk::Track& track, Trk::TrackSummary& summary ) const override; - -private: + const Trk::Track& trk, + const Trk::CompetingRIOsOnTrack* crot, + const Trk::TrackStateOnSurface* tsos, + std::vector<int>& information, + std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override final; + + virtual void searchForHoles( + const Trk::Track& track, + std::vector<int>& information, + Trk::ParticleHypothesis hyp) const override final; + + virtual void updateSharedHitCount( + const Trk::Track&, + const Trk::PRDtoTrackMap*, + Trk::TrackSummary&) const override final{}; + + virtual void addDetailedTrackSummary( + const Trk::Track& track, + Trk::TrackSummary& summary) const override final; + + private: const MdtPrepDataCollection* findMdtPrdCollection( const Identifier& chId ) const; void calculateRoadHits(Trk::MuonTrackSummary::ChamberHitSummary& chamberHitSummary, const Trk::TrackParameters& pars) const; diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/ISF_FatrasRecoTools/ISF_TrackSummaryHelperTool.h b/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/ISF_FatrasRecoTools/ISF_TrackSummaryHelperTool.h index f1478e30d46c23998fead8b51a9a6778473d54f4..dc4609482708b3ac794c85d128e9d14715de14e0 100644 --- a/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/ISF_FatrasRecoTools/ISF_TrackSummaryHelperTool.h +++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/ISF_FatrasRecoTools/ISF_TrackSummaryHelperTool.h @@ -46,76 +46,55 @@ namespace iFatras { */ using IExtendedTrackSummaryHelperTool::analyse; using IExtendedTrackSummaryHelperTool::updateSharedHitCount; - virtual void analyse(const Trk::Track& track, - const Trk::PRDtoTrackMap *prd_to_track_map, - const Trk::RIO_OnTrack* rot, - const Trk::TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override; - - virtual void analyse(const Trk::Track& track, - const Trk::PRDtoTrackMap *prd_to_track_map, - const Trk::CompetingRIOsOnTrack* crot, - const Trk::TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override; - - /** Input : rot, tsos - Output: Changes in information and hitPattern - Input: quantities rot, tsos are used to increment the counts for hits and outliers in information and to set the proper bits inhitPattern. - */ - virtual void analyse(const Trk::Track& track, - const Trk::RIO_OnTrack* rot, - const Trk::TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override - { - analyse(track,nullptr,rot,tsos,information,hitPattern); - } + using IExtendedTrackSummaryHelperTool::addDetailedTrackSummary; + virtual void analyse( + const EventContext& ctx, + const Trk::Track& track, + const Trk::PRDtoTrackMap* prd_to_track_map, + const Trk::RIO_OnTrack* rot, + const Trk::TrackStateOnSurface* tsos, + std::vector<int>& information, + std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override final; /** Not used --> running with RIO_OnTrack only - */ - virtual void analyse(const Trk::Track& track, - const Trk::CompetingRIOsOnTrack* crot, - const Trk::TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const override - { - analyse(track,nullptr, crot,tsos,information,hitPattern); - } + */ + virtual void analyse( + const Trk::Track& track, + const Trk::CompetingRIOsOnTrack* crot, + const Trk::TrackStateOnSurface* tsos, + std::vector<int>& information, + std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override final; /** Not used --> HoleSearchTool not used - */ - virtual - void searchForHoles(const Trk::Track& track, - std::vector<int>& information , - const Trk::ParticleHypothesis partHyp = Trk::pion) const override; + */ + virtual void searchForHoles( + const Trk::Track& track, + std::vector<int>& information, + const Trk::ParticleHypothesis partHyp = Trk::pion) const override final; - /** this method simply updaes the shared hit content - it is designed/optimised for track collection merging */ - virtual void updateSharedHitCount(const Trk::Track& track, - const Trk::PRDtoTrackMap *prd_to_track_map, - Trk::TrackSummary& summary) const override; - - /** this method simply updaes the shared hit content - it is designed/optimised for track collection merging */ - virtual - void updateSharedHitCount(const Trk::Track& /*track*/, - Trk::TrackSummary& /*summary*/) const override - { - ATH_MSG_DEBUG("updateSharedHitCount not implemented !!"); - } + /** this method simply updaes the shared hit content - it is + * designed/optimised for track collection merging */ + virtual void updateSharedHitCount( + const Trk::Track& track, + const Trk::PRDtoTrackMap* prd_to_track_map, + Trk::TrackSummary& summary) const override final; /** this method simply updaes the electron PID content - it is designed/optimised for track collection merging */ - virtual - void updateAdditionalInfo(Trk::TrackSummary& summary,std::vector<float>& eprob,float& dedx, int& nclus, int& noverflowclus) const override; + virtual void updateAdditionalInfo(Trk::TrackSummary& summary, + std::vector<float>& eprob, + float& dedx, + int& nclus, + int& noverflowclus) const override final; /** This method updates the expect... hit info*/ - virtual - void updateExpectedHitInfo(const Trk::Track& track, Trk::TrackSummary& summary) const override; - + virtual void updateExpectedHitInfo( + const Trk::Track& track, + Trk::TrackSummary& summary) const override final; + /** @copydoc Trk::ITrackSummaryHelperTool::addDetailedTrackSummary(const Trk::Track&, Trk::TrackSummary&)*/ - - virtual void addDetailedTrackSummary(const Trk::Track&, Trk::TrackSummary&) const override; - - + + virtual void addDetailedTrackSummary(const Trk::Track&, + Trk::TrackSummary&) const override final; + private: inline diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/src/ISF_TrackSummaryHelperTool.cxx b/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/src/ISF_TrackSummaryHelperTool.cxx index 4190d8771d8f69f649cc011d9ff7ae3a077ad702..f0ac78edac983b2c5996049fd7456685a23fe1bf 100644 --- a/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/src/ISF_TrackSummaryHelperTool.cxx +++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasRecoTools/src/ISF_TrackSummaryHelperTool.cxx @@ -23,7 +23,7 @@ iFatras::ISF_TrackSummaryHelperTool::ISF_TrackSummaryHelperTool(const std::strin base_class(t,n,p), m_pixelId(0), m_sctId(0), - m_assoTool("iFatras::ISF_PRD_AssociationTool"), + m_assoTool("iFatras::ISF_PRD_AssociationTool"), m_doSharedHits(false) { declareProperty("AssoTool", m_assoTool); @@ -31,7 +31,7 @@ iFatras::ISF_TrackSummaryHelperTool::ISF_TrackSummaryHelperTool(const std::strin declareProperty("usePixel", m_usePixel = true); declareProperty("useSCT", m_useSCT = true); declareProperty("OverwriteIDSummary", m_overwriteidsummary = false); -} +} //========================================================================== @@ -47,14 +47,14 @@ StatusCode iFatras::ISF_TrackSummaryHelperTool::initialize() return StatusCode::FAILURE; } else msg(MSG::VERBOSE) << "PixelID helper retrieved successfully!" << endmsg; } - + if (m_useSCT) { if (detStore()->retrieve(m_sctId, "SCT_ID").isFailure()) { msg(MSG::ERROR) << "Could not get SCT_ID helper !" << endmsg; return StatusCode::FAILURE; } else msg(MSG::VERBOSE) << "PixelID helper retrieved successfully!" << endmsg; } - + ATH_CHECK(m_assoTool.retrieve(DisableTool{!m_doSharedHits || m_assoTool.empty() } ) ); msg(MSG::INFO) << "initialize() successful in " << name() << endmsg; @@ -64,25 +64,28 @@ StatusCode iFatras::ISF_TrackSummaryHelperTool::initialize() //========================================================================== -void iFatras::ISF_TrackSummaryHelperTool::analyse(const Trk::Track& track, - const Trk::PRDtoTrackMap *prd_to_track_map, - const Trk::RIO_OnTrack* rot, - const Trk::TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const +void +iFatras::ISF_TrackSummaryHelperTool::analyse( + const EventContext&, + const Trk::Track& track, + const Trk::PRDtoTrackMap* prd_to_track_map, + const Trk::RIO_OnTrack* rot, + const Trk::TrackStateOnSurface* tsos, + std::vector<int>& information, + std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const { const Identifier& id = rot->identify(); bool isOutlier = (tsos->type(Trk::TrackStateOnSurface::Outlier)); bool ispatterntrack = (track.info().trackFitter()==Trk::TrackInfo::Unknown); - + if (msgLvl(MSG::DEBUG)) msg() << "Starting analyse()" << endmsg; if ( m_usePixel && m_pixelId->is_pixel(id) ) { if (msgLvl(MSG::DEBUG)) msg() << "Pixel hit found" << endmsg; - + if (isOutlier && !ispatterntrack ) { // ME: outliers on pattern tracks may be reintegrated by fitter, so count them as hits - + if (msgLvl(MSG::DEBUG)) msg() << "Pixel outlier info storing" << endmsg; information[Trk::numberOfPixelOutliers]++; @@ -93,16 +96,16 @@ void iFatras::ISF_TrackSummaryHelperTool::analyse(const Trk::Track& track, information[Trk::numberOfNextToInnermostPixelLayerOutliers]++; } } else { - + if (msgLvl(MSG::DEBUG)) msg() << "Pixel info storing" << endmsg; information[Trk::numberOfPixelHits]++; if (m_pixelId->layer_disk(id)==0 && m_pixelId->is_barrel(id)) information[Trk::numberOfInnermostPixelLayerHits]++; - if (m_pixelId->layer_disk(id)==1 && m_pixelId->is_barrel(id)) information[Trk::numberOfNextToInnermostPixelLayerHits]++; - + if (m_pixelId->layer_disk(id)==1 && m_pixelId->is_barrel(id)) information[Trk::numberOfNextToInnermostPixelLayerHits]++; + if ( ( m_pixelId->is_barrel(id) ) ) { if (msgLvl(MSG::DEBUG)) msg() << "Barrel hit" << endmsg; - int offset = m_pixelId->layer_disk(id); + int offset = m_pixelId->layer_disk(id); if (!hitPattern.test(offset)) information[Trk::numberOfContribPixelLayers]++; hitPattern.set(offset); // assumes numbered consecutively } else { @@ -120,20 +123,20 @@ void iFatras::ISF_TrackSummaryHelperTool::analyse(const Trk::Track& track, information[Trk::numberOfPixelSharedHits]++; if ( (m_pixelId->is_barrel(id) && m_pixelId->layer_disk(id)==0) ) { if (msgLvl(MSG::DEBUG)) msg() << "--> shared Pixel hit is in innermost layer" << endmsg; - information[Trk::numberOfInnermostPixelLayerSharedHits]++; - } + information[Trk::numberOfInnermostPixelLayerSharedHits]++; + } if ( (m_pixelId->is_barrel(id) && m_pixelId->layer_disk(id)==1) ) { if (msgLvl(MSG::DEBUG)) msg() << "--> shared Pixel hit is in next to innermost layer" << endmsg; - information[Trk::numberOfNextToInnermostPixelLayerSharedHits]++; + information[Trk::numberOfNextToInnermostPixelLayerSharedHits]++; } } else ATH_MSG_DEBUG("shared Pixel hit NOT found"); } } } else if (m_useSCT && m_sctId->is_sct(id) ) { - + if (msgLvl(MSG::DEBUG)) msg() << "SCT hit found" << endmsg; - - if (isOutlier && !ispatterntrack ) { // ME: outliers on pattern tracks may be reintegrated by fitter, so count them as hits + + if (isOutlier && !ispatterntrack ) { // ME: outliers on pattern tracks may be reintegrated by fitter, so count them as hits if (msgLvl(MSG::DEBUG)) msg() << "SCT outlier info storing" << endmsg; information[Trk::numberOfSCTOutliers]++; } else { @@ -164,18 +167,19 @@ void iFatras::ISF_TrackSummaryHelperTool::analyse(const Trk::Track& track, } } } else ATH_MSG_WARNING("Nor Pixel or SCT used... Check!!"); - + return; } - -void iFatras::ISF_TrackSummaryHelperTool::analyse(const Trk::Track&, - const Trk::PRDtoTrackMap *, - const Trk::CompetingRIOsOnTrack*, - const Trk::TrackStateOnSurface*, - std::vector<int>&, - std::bitset<Trk::numberOfDetectorTypes>&) const +void +iFatras::ISF_TrackSummaryHelperTool::analyse( + const Trk::Track&, + const Trk::CompetingRIOsOnTrack*, + const Trk::TrackStateOnSurface*, + std::vector<int>& , + std::bitset<Trk::numberOfDetectorTypes>&) const { - ATH_MSG_DEBUG("analyse not implemented for Trk::CompetingRIOsOnTrack !!"); + + ATH_MSG_DEBUG("Analyze not implemented for Trk::CompetingRIOsOnTrack!!"); return; } diff --git a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/IExtendedTrackSummaryHelperTool.h b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/IExtendedTrackSummaryHelperTool.h index 2fd7cec77d5d10f0f218c95046da7f958cd5b6a9..2bb75e741c86e2a664f387312e10549cf1cb37ab 100644 --- a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/IExtendedTrackSummaryHelperTool.h +++ b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/IExtendedTrackSummaryHelperTool.h @@ -37,21 +37,13 @@ namespace Trk { { public: static const InterfaceID& interfaceID(); - - /** fill 'information' and 'hitpattern' using information from 'rot'. Should - be overloaded by concrete TrackSummaryHelperTools. It is mandatory that - the RIO_OnTrack* points to exactly the object contained inside the - TrackStateOnSurface. This is to avoid that the RTTI from the - TrackSummaryTool is done twice. - */ - using ITrackSummaryHelperTool::analyse; - using ITrackSummaryHelperTool::updateSharedHitCount; using ITrackSummaryHelperTool::addDetailedTrackSummary; + using ITrackSummaryHelperTool::analyse; - /* - * First the context aware methods. - * If this set is not overloaded , it - * will call the methods without EventContext + /* Expand/Extend the interface , with methods using the EventContext + * and Trk::PRDtoTrackMap. + * For now due to compatibility we provide a default implementation + * in terms of the the older interface */ virtual void analyse( @@ -63,9 +55,10 @@ namespace Trk { std::vector<int>& information, std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const { - (void)(ctx); - analyse(track, prd_to_track_map, rot, tsos, information, hitPattern); - } + (void)ctx; + (void) prd_to_track_map; + analyse(track, rot, tsos, information, hitPattern); + }; virtual void analyse( const EventContext& ctx, @@ -76,27 +69,48 @@ namespace Trk { std::vector<int>& information, std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const { - (void)(ctx); - analyse(track, prd_to_track_map, crot, tsos, information, hitPattern); + (void)ctx; + (void)prd_to_track_map; + analyse(track, crot, tsos, information, hitPattern); } + virtual void addDetailedTrackSummary(const EventContext& ctx, + const Track& track, + Trk::TrackSummary& summary) const + { + (void)ctx; + addDetailedTrackSummary(track,summary); + }; + virtual void updateSharedHitCount( + const Trk::Track&, + const Trk::PRDtoTrackMap*, + Trk::TrackSummary&) const {}; + + virtual void updateExpectedHitInfo(const Trk::Track&, + Trk::TrackSummary&) const {}; + + virtual void updateAdditionalInfo(Trk::TrackSummary&, + std::vector<float>&, + float&, + int&, + int&) const {}; + /* - * The context unaware methods. - * If this set is not overloaded , it - * will call the methods with EventContext + * Implement the ITrackSummaryHelperTool part + * of the interface for the methods with the same + * name as the method above. */ virtual void analyse( const Trk::Track& track, - const Trk::PRDtoTrackMap* prd_to_track_map, const RIO_OnTrack* rot, const TrackStateOnSurface* tsos, std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const + std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override { analyse(Gaudi::Hive::currentContext(), track, - prd_to_track_map, + nullptr, rot, tsos, information, @@ -105,29 +119,28 @@ namespace Trk { virtual void analyse( const Trk::Track& track, - const Trk::PRDtoTrackMap* prd_to_track_map, const CompetingRIOsOnTrack* crot, const TrackStateOnSurface* tsos, std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const + std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const override { analyse(Gaudi::Hive::currentContext(), track, - prd_to_track_map, + nullptr, crot, tsos, information, hitPattern); } - virtual void updateSharedHitCount( - const Trk::Track&, - const Trk::PRDtoTrackMap* prd_to_track_map, - Trk::TrackSummary&) const = 0; - - virtual void addDetailedTrackSummary(const Track& track, - Trk::TrackSummary& summary) const = 0; + virtual void addDetailedTrackSummary( + const Track& track, + Trk::TrackSummary& summary) const override + { + addDetailedTrackSummary(Gaudi::Hive::currentContext(), track, summary); + } }; + inline const InterfaceID& Trk::IExtendedTrackSummaryHelperTool::interfaceID() { return IID_ITrackSummaryHelperTool; diff --git a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackSummaryHelperTool.h b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackSummaryHelperTool.h index b3c29b83abeb64235c19c2b5b01097e9b4fea9d2..068e6e8f3bfd14794c3500c18a5af08d40b965cd 100755 --- a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackSummaryHelperTool.h +++ b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackSummaryHelperTool.h @@ -34,8 +34,6 @@ namespace Trk { @author Edward Moyse, Martin Siebel <http://consult.cern.ch/xwho> */ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Woverloaded-virtual" class ITrackSummaryHelperTool : virtual public IAlgTool { public: static const InterfaceID& interfaceID(); @@ -44,35 +42,31 @@ namespace Trk { TrackSummaryHelperTools. It is mandatory that the RIO_OnTrack* points to exactly the object contained inside the TrackStateOnSurface. This is to avoid that the RTTI from the TrackSummaryTool is done twice. */ - virtual void analyse(const Trk::Track& track, - const RIO_OnTrack* rot, - const TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const = 0; + virtual void analyse( + const Trk::Track& track, + const RIO_OnTrack* rot, + const TrackStateOnSurface* tsos, + std::vector<int>& information, + std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const = 0; - virtual void analyse(const Trk::Track& track, - const CompetingRIOsOnTrack* crot, - const TrackStateOnSurface* tsos, - std::vector<int>& information, - std::bitset<Trk::numberOfDetectorTypes>& hitPattern ) const = 0; - - virtual void searchForHoles(const Trk::Track& track, - std::vector<int>& information , - const Trk::ParticleHypothesis partHyp = Trk::pion) const =0; - - virtual void updateSharedHitCount(const Trk::Track&, Trk::TrackSummary&) const {}; + virtual void analyse( + const Trk::Track& track, + const CompetingRIOsOnTrack* crot, + const TrackStateOnSurface* tsos, + std::vector<int>& information, + std::bitset<Trk::numberOfDetectorTypes>& hitPattern) const = 0; - virtual void updateExpectedHitInfo(const Trk::Track&, Trk::TrackSummary&) const {}; + virtual void searchForHoles( + const Trk::Track& track, + std::vector<int>& information, + const Trk::ParticleHypothesis partHyp = Trk::pion) const = 0; - virtual void updateAdditionalInfo(Trk::TrackSummary&, std::vector<float>&, float&,int&, int&) const {}; - + virtual void addDetailedTrackSummary(const Trk::Track& track, + Trk::TrackSummary& summary) const = 0; - virtual void addDetailedTrackSummary(const Trk::Track& track, Trk::TrackSummary& summary ) const = 0; - - }; -#pragma GCC diagnostic pop + inline const InterfaceID& Trk::ITrackSummaryHelperTool::interfaceID() { return IID_ITrackSummaryHelperTool; diff --git a/Tracking/TrkTools/TrkTrackSummaryTool/src/TrackSummaryTool.cxx b/Tracking/TrkTools/TrkTrackSummaryTool/src/TrackSummaryTool.cxx index 10719a22b0d06fa436c91f993534e5207d6452a1..e86b1766abd7e7dc9c98b97af0c4be7375ec302a 100755 --- a/Tracking/TrkTools/TrkTrackSummaryTool/src/TrackSummaryTool.cxx +++ b/Tracking/TrkTools/TrkTrackSummaryTool/src/TrackSummaryTool.cxx @@ -290,11 +290,11 @@ Trk::TrackSummaryTool::fillSummary(const EventContext& ctx, // add detailed summary for indet if( m_addInDetDetailedSummary && !m_idTool.empty() ){ - m_idTool->addDetailedTrackSummary(track,ts); + m_idTool->addDetailedTrackSummary(ctx,track,ts); } // add detailed summary for muons if( m_addMuonDetailedSummary && !m_muonTool.empty() ){ - m_muonTool->addDetailedTrackSummary(track,ts); + m_muonTool->addDetailedTrackSummary(ctx,track,ts); } } @@ -332,7 +332,9 @@ Trk::TrackSummaryTool::updateAdditionalInfo(const Track& track, } m_idTool->updateAdditionalInfo(summary, eProbability,dedx, nHitsUsed_dEdx,nOverflowHits_dEdx); m_idTool->updateExpectedHitInfo(track, summary); - if (m_addInDetDetailedSummary) m_idTool->addDetailedTrackSummary(track,summary); + if (m_addInDetDetailedSummary) { + m_idTool->addDetailedTrackSummary(track,summary); + } } /*