From b5dfcff15eaf43e70455f295b965504dbcff0f7d Mon Sep 17 00:00:00 2001 From: Ian Connelly <ian.connelly@cern.ch> Date: Thu, 6 Dec 2018 16:21:43 +0000 Subject: [PATCH] Making a new interface to provide access to tools to pass up Former-commit-id: a860bd8382acda28d7b08914d100275d6bee5c35 --- .../src/CscClusterOnTrackCreator.cxx | 6 +++ .../src/CscClusterOnTrackCreator.h | 23 +++++---- .../ICscClusterOnTrackCreator.h | 48 +++++++++++++++++++ .../IMuonClusterOnTrackCreator.h | 4 ++ .../src/CscSegmentUtilTool.cxx | 33 +++---------- .../CscSegmentMakers/src/CscSegmentUtilTool.h | 11 ++--- 6 files changed, 79 insertions(+), 46 deletions(-) create mode 100644 MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/ICscClusterOnTrackCreator.h diff --git a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonClusterOnTrackCreator/src/CscClusterOnTrackCreator.cxx b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonClusterOnTrackCreator/src/CscClusterOnTrackCreator.cxx index f340207e6ef..970bc319a22 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonClusterOnTrackCreator/src/CscClusterOnTrackCreator.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonClusterOnTrackCreator/src/CscClusterOnTrackCreator.cxx @@ -439,4 +439,10 @@ namespace Muon { correct(const Trk::PrepRawData& RIO,const Trk::TrackParameters& TP) const { return createRIO_OnTrack(RIO,TP.position(),TP.momentum().unit()); } + + /// These functions are provided from the interface + const ToolHandle<ICscStripFitter>& CscClusterOnTrackCreator::GetICscStripFitter() const {return m_stripFitter;} + const ToolHandle<ICscClusterFitter>& CscClusterOnTrackCreator::GetICscClusterFitter() const {return m_clusterFitter;} + const ToolHandle<ICscClusterUtilTool>& CscClusterOnTrackCreator::GetICscClusterUtilTool() const {return m_clusterUtilTool;} + } diff --git a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonClusterOnTrackCreator/src/CscClusterOnTrackCreator.h b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonClusterOnTrackCreator/src/CscClusterOnTrackCreator.h index 4aa32d38cbc..e35f7180d69 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonClusterOnTrackCreator/src/CscClusterOnTrackCreator.h +++ b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonClusterOnTrackCreator/src/CscClusterOnTrackCreator.h @@ -18,7 +18,7 @@ #include "AthenaBaseComps/AthAlgTool.h" #include "GaudiKernel/ToolHandle.h" -#include "MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h" +#include "MuonRecToolInterfaces/ICscClusterOnTrackCreator.h" #include "MuonRIO_OnTrack/MuonClusterOnTrack.h" #include "MuonReadoutGeometry/MuonDetectorManager.h" @@ -28,9 +28,9 @@ #include "MuonPrepRawData/CscStripPrepDataContainer.h" -class ICscStripFitter; -class ICscClusterFitter; -class ICscClusterUtilTool; +//class ICscStripFitter; +//class ICscClusterFitter; +//class ICscClusterUtilTool; class CscIdHelper; namespace Muon { @@ -59,7 +59,7 @@ namespace Muon { - CscStripFitter: Tool to fit charge + time of a CSC strip - CscStripPrepDataLocation: Storegate key of the CscStripPrepData collection */ - class CscClusterOnTrackCreator : public AthAlgTool, virtual public IMuonClusterOnTrackCreator { + class CscClusterOnTrackCreator : public AthAlgTool, virtual public ICscClusterOnTrackCreator { public: CscClusterOnTrackCreator(const std::string&,const std::string&,const IInterface*); @@ -96,10 +96,9 @@ namespace Muon { */ virtual const MuonClusterOnTrack* correct(const Trk::PrepRawData& RIO,const Trk::TrackParameters& TP) const; - // These tools are used elsewhere with default setups, so we should just pass them out - ToolHandle<ICscStripFitter> GetCalibCscStripFitter() {return m_stripFitter;} - ToolHandle<ICscClusterFitter> GetQratCscClusterFitter() {return m_clusterFitter;} - ToolHandle<ICscClusterUtilTool> GetCscClusterUtilTool() {return m_clusterUtilTool;} + virtual const ToolHandle<ICscStripFitter>& GetICscStripFitter() const; + virtual const ToolHandle<ICscClusterFitter>& GetICscClusterFitter() const; + virtual const ToolHandle<ICscClusterUtilTool>& GetICscClusterUtilTool() const; private: @@ -107,9 +106,9 @@ namespace Muon { const CscIdHelper* m_cscIdHelper; const RpcIdHelper* m_rpcIdHelper; const TgcIdHelper* m_tgcIdHelper; - ToolHandle<ICscStripFitter> m_stripFitter; - ToolHandle<ICscClusterFitter> m_clusterFitter; - ToolHandle<ICscClusterUtilTool> m_clusterUtilTool; + ToolHandle<ICscStripFitter> m_stripFitter; + ToolHandle<ICscClusterFitter> m_clusterFitter; + ToolHandle<ICscClusterUtilTool> m_clusterUtilTool; bool m_have_csc_tools; SG::ReadCondHandleKey<RIO_OnTrackErrorScaling> m_cscErrorScalingKey diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/ICscClusterOnTrackCreator.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/ICscClusterOnTrackCreator.h new file mode 100644 index 00000000000..50bba1d613d --- /dev/null +++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/ICscClusterOnTrackCreator.h @@ -0,0 +1,48 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef MUON_ICSCCLUSTERONTRACKCREATOR_H +#define MUON_ICSCCLUSTERONTRACKCREATOR_H + +#include "MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h" + +static const InterfaceID IID_ICscClusterOnTrackCreator + ("Muon::ICscClusterOnTrackCreator",1,0); + +class ICscStripFitter; +class ICscClusterFitter; +class ICscClusterUtilTool; + + +namespace Muon { + + + /** @brief Interface for tools calibrating CSCCluster, turning them into Muon::ICscClusterOnTrack object. + The interface inherits from IMuonClusterOnTrackCreator. + */ + class ICscClusterOnTrackCreator : virtual public IMuonClusterOnTrackCreator + { + public: + /////////////////////////////////////////////////////////////////// + // Standard tool methods + /////////////////////////////////////////////////////////////////// + + static const InterfaceID& interfaceID(); + + + /** @brief Return some tools used by CscClusterOnTrackCreator + */ + virtual const ToolHandle<ICscStripFitter>& GetICscStripFitter() const = 0; + virtual const ToolHandle<ICscClusterFitter>& GetICscClusterFitter() const = 0; + virtual const ToolHandle<ICscClusterUtilTool>& GetICscClusterUtilTool() const = 0; + }; + + inline const InterfaceID& ICscClusterOnTrackCreator::interfaceID() + { + return IID_ICscClusterOnTrackCreator; + } +} // end of name space + +#endif // MUON_ICSCCLUSTERONTRACKCREATOR_H + diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h index e0d6042cb04..edf9c0d26a1 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h +++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h @@ -12,6 +12,10 @@ static const InterfaceID IID_IMuonClusterOnTrackCreator ("Muon::IMuonClusterOnTrackCreator",1,0); +class ICscStripFitter; +class ICscClusterFitter; +class ICscClusterUtilTool; + namespace Trk { class PrepRawData; } diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerAlgs/CscSegmentMakers/src/CscSegmentUtilTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerAlgs/CscSegmentMakers/src/CscSegmentUtilTool.cxx index 49f9cb691de..5471e54d5be 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerAlgs/CscSegmentMakers/src/CscSegmentUtilTool.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerAlgs/CscSegmentMakers/src/CscSegmentUtilTool.cxx @@ -25,7 +25,7 @@ #include "TrkSurfaces/RotatedTrapezoidBounds.h" #include "CscSegmentMakers/ICscSegmentFinder.h" -#include "MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h" +#include "MuonRecToolInterfaces/ICscClusterOnTrackCreator.h" #include "CscClusterization/ICscClusterFitter.h" #include "CscClusterization/ICscStripFitter.h" #include "MuonIdHelpers/MuonIdHelperTool.h" @@ -124,11 +124,6 @@ CscSegmentUtilTool::CscSegmentUtilTool declareProperty("Remove3Overlap", m_remove3Overlap = true); declareProperty("UnspoiledHits", m_nunspoil = -1); - // Retrieve ToolHandles from CscClusterOnTrackCreator - m_pfitter_prec = m_rotCreator.GetQratCscClusterFitter(); - m_clusterTool = m_rotCreator.GetCscClusterUtilTool(); - m_stripFitter = m_rotCreator.GetCalibCscStripFitter(); - } //****************************************************************************** @@ -150,7 +145,7 @@ StatusCode CscSegmentUtilTool::initialize() ATH_MSG_DEBUG ( " ROT tan(theta) tolerance: " << m_fitsegment_tantheta_tolerance ); ATH_MSG_DEBUG ( " cluster_error_scaler " << m_cluster_error_scaler); - ATH_MSG_DEBUG ( " Precision cluster fitter is " << m_pfitter_prec.typeAndName() ); + //ATH_MSG_DEBUG ( " Precision cluster fitter is " << m_rotCreator->GetICscClusterFitter().typeAndName() ); ATH_MSG_DEBUG ( " ROT creator: " << m_rotCreator.typeAndName() ); @@ -167,32 +162,18 @@ StatusCode CscSegmentUtilTool::initialize() m_phelper = m_gm->cscIdHelper(); - - // Retrieve the precision cluster fitting tool. - if ( m_pfitter_prec.retrieve().isFailure() ) { - ATH_MSG_FATAL ( "Unable to retrieve CSC precision cluster fitting tool " - << m_pfitter_prec->name() ); - return StatusCode::FAILURE; - }else{ - ATH_MSG_DEBUG( "Retrieved " << m_pfitter_prec ); - } - if ( m_rotCreator.retrieve().isFailure() ) { ATH_MSG_ERROR ( "Could not get " << m_rotCreator ); return StatusCode::FAILURE; }else{ ATH_MSG_DEBUG ( "Got " << m_rotCreator ); } + if ( m_idHelper.retrieve().isFailure() ) { ATH_MSG_ERROR ( "Could not get " << m_idHelper ); return StatusCode::FAILURE; } - if(m_clusterTool.retrieve().isFailure() ){ - ATH_MSG_ERROR( "Could not get "<< m_clusterTool ); - return StatusCode::FAILURE; - } - if ( m_cscCoolStrSvc.retrieve().isFailure() ) { ATH_MSG_FATAL ( "Unable to retrieve pointer to the CSC COLL Conditions Service" ); return StatusCode::FAILURE; @@ -383,7 +364,7 @@ fit_detailCalcPart1(const ICscSegmentFinder::TrkClusters& clus, const Amg::Vecto double d = Amg::error(clu->localCovariance(),Trk::locX); if (isunspoiled) { if ( IsSlopeGiven && outlierHitLayer != ( iclu - clus.begin() ) ) - d = m_pfitter_prec->getCorrectedError(prd, s1); + d = m_rotCreator->GetICscClusterFitter()->getCorrectedError(prd, s1); // if ( outlierHitLayer == ( iclu - clus.begin() ) ) // d = getDefaultError(id, measphi, prd); } @@ -453,7 +434,7 @@ fit_detailCalcPart1(const ICscSegmentFinder::TrkClusters& clus, const Amg::Vecto double d = Amg::error(clu->localCovariance(),Trk::locX); if (isunspoiled) { if ( IsSlopeGiven ) - d = m_pfitter_prec->getCorrectedError(prd, s1); + d = m_rotCreator->GetICscClusterFitter()->getCorrectedError(prd, s1); if ( outlierHitLayer == ( iclu - clus.begin() ) ) d = getDefaultError(id, measphi, prd); } @@ -1502,11 +1483,11 @@ void CscSegmentUtilTool::add_2dseg2hits(ICscSegmentFinder::Segments &segs, ICscS const Muon::CscClusterOnTrack* cot = iseg->clus[iclus].cl; if(checkCrossTalk){ const Muon::CscPrepData* prep = cot->prepRawData(); - std::vector<const Muon::CscStripPrepData*> strips = m_clusterTool->getStrips(prep); + std::vector<const Muon::CscStripPrepData*> strips = m_rotCreator->GetICscClusterUtilTool()->getStrips(prep); std::vector<double> stripCharges; for (unsigned int s=0; s<strips.size(); ++s) { ICscClusterFitter::StripFit sfit; - sfit = m_stripFitter->fit(*strips[s]); + sfit = m_rotCreator->GetICscStripFitter()->fit(*strips[s]); stripCharges.push_back(sfit.charge); } double maxCharge=0,centCharge=0; diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerAlgs/CscSegmentMakers/src/CscSegmentUtilTool.h b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerAlgs/CscSegmentMakers/src/CscSegmentUtilTool.h index 2391d200167..4aee3db63ec 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerAlgs/CscSegmentMakers/src/CscSegmentUtilTool.h +++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerAlgs/CscSegmentMakers/src/CscSegmentUtilTool.h @@ -17,7 +17,6 @@ #include "xAODEventInfo/EventInfo.h" #include "StoreGate/ReadHandleKey.h" //#include "CscClusterization/CalibCscStripFitter.h" -//#include "CscClusterization/ICscStripFitter.h" namespace MuonGM { class MuonDetectorManager; @@ -29,12 +28,10 @@ namespace Trk { namespace Muon { class MuonIdHelperTool; class MuonSegment; - class IMuonClusterOnTrackCreator; + class ICscClusterOnTrackCreator; class CscPrepData; } class ICscSegmentFinder; -class ICscClusterFitter; -class ICscStripFitter; class CscSegmentUtilTool : virtual public ICscSegmentUtilTool, public AthAlgTool { @@ -118,11 +115,9 @@ private: // data bool m_remove3Overlap; int m_nunspoil; - ToolHandle<ICscClusterFitter> m_pfitter_prec; - ToolHandle<Muon::IMuonClusterOnTrackCreator> m_rotCreator; + ToolHandle<Muon::ICscClusterOnTrackCreator> m_rotCreator; ToolHandle<Muon::MuonIdHelperTool> m_idHelper; - ToolHandle<ICscClusterUtilTool> m_clusterTool; - ToolHandle<ICscStripFitter> m_stripFitter; + ServiceHandle<MuonCalib::CscICoolStrSvc> m_cscCoolStrSvc; SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this,"EventInfo","EventInfo","event info"}; -- GitLab