From 47329ae868d2baa727d093f38227bf8b6e111abd Mon Sep 17 00:00:00 2001
From: Edward Moyse <edward.moyse@cern.ch>
Date: Wed, 16 Oct 2019 13:40:42 +0200
Subject: [PATCH] Removed some apparently unused code / tools, and added
 ATLAS_CHECK_THREAD_SAFETY.

I can't see any clients using the hole search, and so I removed it along with the tracking geometry and m_muonTgTool. Also cleaned up some indentation and removed the MuonEDMHelperSvc, which seems not to be used.
---
 .../ATLAS_CHECK_THREAD_SAFETY                 |   0
 .../src/MuonTrackSummaryHelperTool.cxx        | 202 +++++-------------
 .../src/MuonTrackSummaryHelperTool.h          |  15 --
 3 files changed, 49 insertions(+), 168 deletions(-)
 create mode 100644 MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/ATLAS_CHECK_THREAD_SAFETY

diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/ATLAS_CHECK_THREAD_SAFETY b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/ATLAS_CHECK_THREAD_SAFETY
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.cxx
index c1bd74cf3ff..20e374b897d 100755
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.cxx
@@ -69,49 +69,8 @@ StatusCode Muon::MuonTrackSummaryHelperTool::initialize()
     return StatusCode::FAILURE;
   }
 
-  if( m_edmHelperSvc.retrieve().isFailure() ){
-    ATH_MSG_ERROR("Could not get " << m_edmHelperSvc);      
-    return StatusCode::FAILURE;
-  }
-
-  // if you try loading a tool when the DLL isn't there, an annoying warning message is printed.
-  // this code attempts to check if the DLL exists before attempting to load the files
-  //    IObjManager* objMgr;
-  //    sc = service("ApplicationMgr", objMgr);
-  //    if ( sc.isSuccess() ) 
-  //    {
-  //     if( objMgr->existsObjFactory( "MuonTGRecTools" ) ) 
-  //     {    
-
-  // eventually there will be no need for this, as the Geometry should always be there, but whilst we're
-  // debugging it all I want a way to turn off the hole search if it does wrong.
-  if (m_doHoles){
-    StatusCode sc = m_muonTgTool.retrieve();
-    if (sc.isFailure()) {
-      msg (MSG::FATAL) << "Could not get MuonHolesOnTrackTool :"<< endmsg;
-      return StatusCode::FAILURE;
-      //m_doHoles=false;
-    } else {
-      msg (MSG::VERBOSE) << "MuonHolesOnTrackTool "<< endmsg;
-    }   
-  } else {
-    msg (MSG::VERBOSE) << "Hole search turned off, so MuonHolesOnTrackTool not loaded" << endmsg;        
-    m_muonTgTool.disable();
-  }
-
   ATH_CHECK(m_mdtKey.initialize());
-
-  //      }else{ 
-  //        msg << MSG::FATAL << "MuonTGRecTools library doesn't seem to be loaded." << endmsg;
-  //      	return StatusCode::FAILURE;
-  //      }
-  //      objMgr->release();
-  //    }
-  msg (MSG::INFO) << "Initialise successful in  MuonTrackSummaryHelperTool (Hole search turned ";
-  if (m_doHoles) 
-    msg (MSG::INFO)<<"ON)"<<endmsg;
-  else
-    msg (MSG::INFO)<<"OFF)"<<endmsg;
+  
   return StatusCode::SUCCESS;
 }
 
@@ -190,76 +149,11 @@ void Muon::MuonTrackSummaryHelperTool::increment(int& type) const
 }
 
 void Muon::MuonTrackSummaryHelperTool::searchForHoles (
-						       const Trk::Track& track,
-						       std::vector<int>& information, 
+						       const Trk::Track& /**track*/,
+						       std::vector<int>& /**information*/, 
 						       Trk::ParticleHypothesis /**hyp*/) const 
 {
-  ATH_MSG_VERBOSE( "Entering searchForHoles");
-
-  if (!m_doHoles) {
-    msg (MSG::WARNING) << "SearchForHoles turned off!" << endmsg;
-    return;
-  }
-
-  //    DataVector<const Trk::TrackStateOnSurface>* holes = m_muonTgTool->getHolesOnTrack(track, Trk::muon);
-  const Trk::ITrackHoleSearchTool* constTool = &(*m_muonTgTool); 
-  // the * triggers the de-ref of ToolHandle. Not as crazy as it looks! Ed
-  Trk::ITrackHoleSearchTool* nonConstTool = const_cast<Trk::ITrackHoleSearchTool*>(constTool);
-  const DataVector<const Trk::TrackStateOnSurface>* holes = nonConstTool->getHolesOnTrack(track);
-
-  if (holes==0) {
-    msg (MSG::WARNING) <<"Hole tool returns zero pointer! Aborting."<<endmsg;
-    return;
-  }
-  // 
-  if (!m_trackingGeometry) {   
-    StatusCode sc = detStore()->retrieve(m_trackingGeometry, m_trackingGeometryName);
-    if (sc.isFailure()) {
-      msg (MSG::FATAL)<<"Could not find geometry "<< m_trackingGeometryName<<". Exiting."
-		      << endmsg;
-    } else {
-      msg (MSG::INFO) << "  geometry Svc \""<<m_trackingGeometryName<<"\" booked "
-		      << endmsg;
-    }
-  } 
-
-  ATH_MSG_VERBOSE("Got "<<holes->size()<<" holes from tool");
-  DataVector<const Trk::TrackStateOnSurface>::const_iterator it    = holes->begin();
-  DataVector<const Trk::TrackStateOnSurface>::const_iterator itEnd = holes->end();
-  for (;it!=itEnd;++it)
-    {
-      const Trk::TrackParameters* trackPara = (*it)->trackParameters();
-      if (trackPara!=0)
-	{
-	  //       assert( trackPara!=0 );
-	  // const Identifier& id = trackPara->associatedSurface()->associatedDetectorElementIdentifier();
-	  const Trk::Layer* assocLayer = m_trackingGeometry->associatedLayer(trackPara->position());
-	  int idl=0;
-	  if (assocLayer) idl = assocLayer->layerType();
-	  const Identifier id(idl);
-
-	  if(m_idHelperTool->isRpc(id)){
-	    if( m_idHelperTool->rpcIdHelper().measuresPhi(id) ) increment(information[Trk::numberOfRpcPhiHoles]);
-	    else                           increment(information[Trk::numberOfRpcEtaHoles]);
-	  }else if(m_idHelperTool->isCsc(id)){
-	    if( m_idHelperTool->cscIdHelper().measuresPhi(id) ) increment(information[Trk::numberOfCscPhiHoles]);
-	    else                           increment(information[Trk::numberOfCscEtaHoles]);
-	  }else if(m_idHelperTool->isTgc(id)){
-	    if( m_idHelperTool->tgcIdHelper().isStrip(id) )     increment(information[Trk::numberOfTgcPhiHoles]);
-	    else                           increment(information[Trk::numberOfTgcEtaHoles]);
-	  }else if(m_idHelperTool->isMdt(id)){  
-	    increment(information[Trk::numberOfMdtHoles]);
-	  }else{
-	    msg (MSG::ERROR) << "searchForHoles: Unknown muon detector type " << endmsg;
-	    msg (MSG::ERROR) << "Dumping TrackStateOnSurface "<<*it << endmsg;
-	  }
-	}else{
-	msg (MSG::WARNING) <<"No TrackParameter on TP returned from MuonMeasurementMgr::getHolesOnTrack"<<endmsg;
-      }
-    }
-
-  delete holes;    
-  return;
+  ATH_MSG_WARNING( "searchForHoles is not implemented in MuonTrackSummaryHelperTool");
 }
 
 void Muon::MuonTrackSummaryHelperTool::addDetailedTrackSummary( const Trk::Track& track, Trk::TrackSummary& summary ) const {
@@ -404,55 +298,55 @@ void Muon::MuonTrackSummaryHelperTool::addDetailedTrackSummary( const Trk::Track
       // we need a special bound check for MDTs so we cast to SL surface
       const Trk::StraightLineSurface* slSurf = dynamic_cast<const Trk::StraightLineSurface*>(&meas->associatedSurface());
       if( slSurf ) {
-	// perform bound check only for second coordinate
-	inBounds = slSurf->bounds().insideLoc2(locPos,tol2);
+        // perform bound check only for second coordinate
+        inBounds = slSurf->bounds().insideLoc2(locPos,tol2);
       }else{
-	inBounds = meas->associatedSurface().insideBounds(locPos,tol1,tol2);
+        inBounds = meas->associatedSurface().insideBounds(locPos,tol1,tol2);
       }
 
       Identifier layId =  m_idHelperTool->layerId( id );
       layIds.insert(layId);
       const MdtDriftCircleOnTrack* mdtdc = dynamic_cast<const MdtDriftCircleOnTrack*>(rot);
       if(mdtdc){
-	MuonDriftCircleErrorStrategy errStrat=mdtdc->errorStrategy();
-	if(!errStrat.creationParameter(MuonDriftCircleErrorStrategy::FixedError) && !errStrat.creationParameter(MuonDriftCircleErrorStrategy::StationError)){
-	  goodLayIds.insert(layId);
-	}
+        MuonDriftCircleErrorStrategy errStrat=mdtdc->errorStrategy();
+        if(!errStrat.creationParameter(MuonDriftCircleErrorStrategy::FixedError) && !errStrat.creationParameter(MuonDriftCircleErrorStrategy::StationError)){
+          goodLayIds.insert(layId);
+        }
       }
       else if(m_idHelperTool->isCsc(id)){
-	const Muon::CscClusterOnTrack* cscClus = dynamic_cast<const Muon::CscClusterOnTrack*>(rot);
-	if(cscClus->status()==0 || cscClus->status()==10) goodLayIds.insert(layId);
+        const Muon::CscClusterOnTrack* cscClus = dynamic_cast<const Muon::CscClusterOnTrack*>(rot);
+        if(cscClus->status()==0 || cscClus->status()==10) goodLayIds.insert(layId);
       }
       else if(m_idHelperTool->isMM(id)) {
-	// MM quality requirements to be inserted here if needed
-	goodLayIds.insert(layId);
+        // MM quality requirements to be inserted here if needed
+        goodLayIds.insert(layId);
       }
       else if(m_idHelperTool->issTgc(id)) {
-	// sTGC quality requirements to be inserted here if needed
-	goodLayIds.insert(layId);
+        // sTGC quality requirements to be inserted here if needed
+        goodLayIds.insert(layId);
       }
     }else{
       const Muon::CompetingMuonClustersOnTrack* crot = dynamic_cast<const Muon::CompetingMuonClustersOnTrack*>(meas);
       if( crot ){
-	if( crot->containedROTs().empty() ) continue;
-
-	// take id of first ROT 
-	id = crot->containedROTs().front()->identify();
-
-	// count layers in competing rot
-	std::vector<const Muon::MuonClusterOnTrack*>::const_iterator clit = crot->containedROTs().begin();
-	std::vector<const Muon::MuonClusterOnTrack*>::const_iterator clit_end = crot->containedROTs().end();
-	for( ;clit!=clit_end;++clit ){
-	  // get layer Identifier and insert it into set
-	  Identifier layId =  m_idHelperTool->layerId( (*clit)->identify() );
-	  layIds.insert(layId);
-	  if(m_idHelperTool->isCsc(id)){
-	    const Muon::CscClusterOnTrack* cscClus = dynamic_cast<const Muon::CscClusterOnTrack*>(rot);
-	    if(cscClus->status()==0 || cscClus->status()==10) goodLayIds.insert(layId);
-	  }
-	}
+        if( crot->containedROTs().empty() ) continue;
+
+        // take id of first ROT 
+        id = crot->containedROTs().front()->identify();
+
+        // count layers in competing rot
+        std::vector<const Muon::MuonClusterOnTrack*>::const_iterator clit = crot->containedROTs().begin();
+        std::vector<const Muon::MuonClusterOnTrack*>::const_iterator clit_end = crot->containedROTs().end();
+        for( ;clit!=clit_end;++clit ){
+          // get layer Identifier and insert it into set
+          Identifier layId =  m_idHelperTool->layerId( (*clit)->identify() );
+          layIds.insert(layId);
+          if(m_idHelperTool->isCsc(id)){
+            const Muon::CscClusterOnTrack* cscClus = dynamic_cast<const Muon::CscClusterOnTrack*>(rot);
+            if(cscClus->status()==0 || cscClus->status()==10) goodLayIds.insert(layId);
+          }
+        }
       }else{
-	continue;
+        continue;
       }
     }
 
@@ -468,14 +362,13 @@ void Muon::MuonTrackSummaryHelperTool::addDetailedTrackSummary( const Trk::Track
     if( !currentChamberSummary || currentChamberSummary->m_chId != chId ){
 
       if( m_calculateCloseHits && currentChamberSummary && currentChamberPars)  {
-	ATH_MSG_VERBOSE(" Calculating close hits (last hit a measurement)");
-	calculateRoadHits(*currentChamberSummary, *currentChamberPars);
-
+      	ATH_MSG_VERBOSE(" Calculating close hits (last hit a measurement)");
+      	calculateRoadHits(*currentChamberSummary, *currentChamberPars);
       }
 
       // given that we cannot separate eta/phi holes, redo the assignment before moving to the next chamber
       if( currentChamberSummary  && !currentChamberSummary->isMdt() ){
-	updateHoleContent(*currentChamberSummary);
+	      updateHoleContent(*currentChamberSummary);
       }
 
 
@@ -493,13 +386,13 @@ void Muon::MuonTrackSummaryHelperTool::addDetailedTrackSummary( const Trk::Track
 
       // MDTs: count outlier as delta electron if rDrift < rTrack < innerTubeRadius
       if( isMdt && pars ) {
-	double rDrift = fabs(meas->localParameters()[Trk::locR]);
-	double rTrack = fabs(pars->parameters()[Trk::locR]);
-	double innerRadius = m_detMgr->getMdtReadoutElement(id)->innerTubeRadius();
-	if( rTrack > rDrift && rTrack < innerRadius ) {
-	  ++proj.ndeltas;
-	  continue;
-	}
+        double rDrift = fabs(meas->localParameters()[Trk::locR]);
+        double rTrack = fabs(pars->parameters()[Trk::locR]);
+        double innerRadius = m_detMgr->getMdtReadoutElement(id)->innerTubeRadius();
+        if( rTrack > rDrift && rTrack < innerRadius ) {
+          ++proj.ndeltas;
+          continue;
+        }
       }
       ++proj.noutliers;
 
@@ -512,7 +405,7 @@ void Muon::MuonTrackSummaryHelperTool::addDetailedTrackSummary( const Trk::Track
   } //end of for loop over Track State on Surfaces      
 
   /** calculate road hits for last chamber on track
-      (otherwise it would have been skipped) */
+  (otherwise it would have been skipped) */
   if( m_calculateCloseHits && currentChamberSummary && currentChamberPars ) {
     ATH_MSG_VERBOSE(" Calculating close hits (end of hit list)");
     calculateRoadHits(*currentChamberSummary, *currentChamberPars);
@@ -530,6 +423,7 @@ void Muon::MuonTrackSummaryHelperTool::updateHoleContent( Trk::MuonTrackSummary:
 //   ATH_MSG_DEBUG("updateHoleContent " << m_idHelperTool->toString(chamberHitSummary.chamberId())
 // 	       << " nphi " << chamberHitSummary.phiProjection().nhits << " holes " << chamberHitSummary.phiProjection().nholes 
 // 	       << " neta " << chamberHitSummary.etaProjection().nhits << " holes " << chamberHitSummary.etaProjection().nholes );
+  ATH_MSG_INFO("MuonTrackSummaryHelperTool::updateHoleContent");
 
   if( m_idHelperTool->issTgc(chamberHitSummary.chamberId()) ){
     ATH_MSG_DEBUG(" holes eta " << chamberHitSummary.etaProjection().nholes
@@ -584,6 +478,7 @@ void Muon::MuonTrackSummaryHelperTool::updateHoleContent( Trk::MuonTrackSummary:
 
 void Muon::MuonTrackSummaryHelperTool::calculateRoadHits(Trk::MuonTrackSummary::ChamberHitSummary& chamberHitSummary, 
 							 const Trk::TrackParameters& pars ) const {
+  ATH_MSG_INFO("MuonTrackSummaryHelperTool::calculateRoadHits");
   bool isStraightLine = false;
   if ( pars.parameters().rows() < 5 ) { // no momentum parameter given
     isStraightLine = true;
@@ -714,6 +609,7 @@ bool Muon::MuonTrackSummaryHelperTool::isFirstProjection( const Identifier& id )
 }
 
 const Muon::MdtPrepDataCollection* Muon::MuonTrackSummaryHelperTool::findMdtPrdCollection( const Identifier& chId ) const {
+  ATH_MSG_INFO("MuonTrackSummaryHelperTool::findMdtPrdCollection");
 
   SG::ReadHandle<Muon::MdtPrepDataContainer> mdtPrdContainer(m_mdtKey);
 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.h
index 5b58ed00c80..a182474f266 100755
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTrackSummaryHelperTool/src/MuonTrackSummaryHelperTool.h
@@ -112,23 +112,12 @@ private:
     /* used to work out layer ids etc*/
     ToolHandle<MuonIdHelperTool> m_idHelperTool{"Muon::MuonIdHelperTool/MuonIdHelperTool"};
 
-    /* used to work out if track has momentum */
-    ServiceHandle<IMuonEDMHelperSvc> m_edmHelperSvc {this, "edmHelper", 
-      "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", 
-      "Handle to the service providing the IMuonEDMHelperSvc interface" };
-
     /* used to do hits-in-road search for straight tracks */
     ToolHandle<Trk::IExtrapolator> m_slExtrapolator{"Trk::Extrapolator/MuonStraightLineExtrapolator"};
 
-    /** tool used to do hole search */
-    ToolHandle<Trk::ITrackHoleSearchTool> m_muonTgTool{this, "HoleOnTrackTool", "MuonHolesOnTrack"};
-
     /* used to do hits-in-road search */
     ToolHandle<Trk::IExtrapolator> m_extrapolator{this, "Extrapolator", "Trk::Extrapolator/AtlasExtrapolator"};
         
-    /**Allows us to block the hole search whilst the Muon tracking geometry etc is being debugged*/
-    Gaudi::Property<bool> m_doHoles{this, "DoHolesOnTrack", false};
-        
     /** allow us to block the calculation of close hits */
     Gaudi::Property<bool> m_calculateCloseHits{this, "CalculateCloseHits", false};
 
@@ -138,10 +127,6 @@ private:
     /** storegate key of MdtPrepDataContainer */
     SG::ReadHandleKey<Muon::MdtPrepDataContainer> m_mdtKey{this,"MdtPrepDataContainer","MDT_DriftCircles","MDT PRDs"};
 
-    /** name of the tracking geometry */
-    Gaudi::Property<std::string> m_trackingGeometryName{this, "TrackingGeometryName", "MuonStandaloneTrackingGeometry"};
-
-    mutable const Trk::TrackingGeometry* m_trackingGeometry{nullptr};
     const MuonGM::MuonDetectorManager*  m_detMgr{nullptr};
   };
 }
-- 
GitLab