diff --git a/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool.h b/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool.h index d2fd1b6f93edcc0dd110de1037226e0c629389eb..91a1240a9b7532bb3d8ea80483ee804d5a02ae7f 100755 --- a/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool.h +++ b/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool.h @@ -15,7 +15,6 @@ #include "TrkTrack/TrackStateOnSurface.h" #include "TrkToolInterfaces/IAmbiTrackSelectionTool.h" #include "TrkToolInterfaces/IPRD_AssociationTool.h" -#include <map> #include <vector> class SiliconID; diff --git a/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool/InDetDenseEnvAmbiTrackSelectionTool.h b/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool/InDetDenseEnvAmbiTrackSelectionTool.h index ccef61613b9cff38dcffc38cb76f0eeb007db625..8d19dfdab3b3b58f602acc527a95367d3aa41475 100755 --- a/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool/InDetDenseEnvAmbiTrackSelectionTool.h +++ b/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool/InDetDenseEnvAmbiTrackSelectionTool.h @@ -14,20 +14,23 @@ #include "GaudiKernel/IIncidentSvc.h" #include "StoreGate/ReadHandleKey.h" #include "TrkCaloClusterROI/CaloClusterROI_Collection.h" -#include "TrkTrack/TrackStateOnSurface.h" #include "TrkToolInterfaces/IAmbiTrackSelectionTool.h" #include "TrkToolInterfaces/IPRD_AssociationTool.h" #include <map> #include <vector> -#include "TrkRIO_OnTrack/RIO_OnTrack.h" -#include "TrkValInterfaces/ITrkObserverTool.h" +#include "TrkTrack/Track.h" //for use in the struct lessTrkTrack implementation in this header #include "TrkParameters/TrackParameters.h" +#include <cmath> //for std::fabs in implementation of structs in this header +#include <iostream> //for cout in dumpInfo class SiliconID; class Identifier; class IBLParameterSvc; namespace Trk { - class Track; + class ITrkObserverTool; + class TrackStateOnSurface; + class RIO_OnTrack; + class PrepRawData; } namespace InDet @@ -201,7 +204,7 @@ namespace InDet return true; if(ATH_UNLIKELY(!y->trackParameters() && y->trackParameters()->size() <= 0) ) return false; - return fabs( (*x->trackParameters())[0]->parameters()[Trk::qOverP]) < fabs( (*y->trackParameters())[0]->parameters()[Trk::qOverP]) ; + return std::fabs( (*x->trackParameters())[0]->parameters()[Trk::qOverP]) < std::fabs( (*y->trackParameters())[0]->parameters()[Trk::qOverP]) ; } }; diff --git a/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/src/InDetAmbiTrackSelectionTool.cxx b/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/src/InDetAmbiTrackSelectionTool.cxx index c5a0c0ac91e5793ed5e25e03ff17d8050cbddc25..a7c925f51f25c270a68dd5528eecf2f2abac7cbb 100755 --- a/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/src/InDetAmbiTrackSelectionTool.cxx +++ b/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/src/InDetAmbiTrackSelectionTool.cxx @@ -24,7 +24,6 @@ #include "InDetRecToolInterfaces/ITrtDriftCircleCutTool.h" #include "PixelGeoModel/IBLParameterSvc.h" -#include <ext/functional> //================ Constructor ================================================= InDet::InDetAmbiTrackSelectionTool::InDetAmbiTrackSelectionTool(const std::string& t, @@ -73,49 +72,22 @@ InDet::InDetAmbiTrackSelectionTool::~InDetAmbiTrackSelectionTool() StatusCode InDet::InDetAmbiTrackSelectionTool::initialize() { - - StatusCode sc = AlgTool::initialize(); - if (sc.isFailure()) return sc; if (m_IBLParameterSvc.retrieve().isFailure()) { - ATH_MSG_WARNING( "Could not retrieve IBLParameterSvc"); - } - else { - m_IBLParameterSvc->setBoolParameters(m_doPixelClusterSplitting,"doPixelClusterSplitting"); + ATH_MSG_WARNING( "Could not retrieve IBLParameterSvc"); + } else { + m_IBLParameterSvc->setBoolParameters(m_doPixelClusterSplitting,"doPixelClusterSplitting"); } - - sc = m_assoTool.retrieve(); - if (sc.isFailure()) - { - msg(MSG::FATAL) << "Failed to retrieve tool " << m_assoTool << endmsg; - return StatusCode::FAILURE; - } - else - msg(MSG::INFO) << "Retrieved tool " << m_assoTool << endmsg; - + ATH_CHECK( m_assoTool.retrieve()); + // Get segment selector tool // if(m_parameterization){ - if(m_selectortool.retrieve().isFailure()) { - msg(MSG::FATAL)<<"Failed to retrieve tool "<< m_selectortool <<endmsg; - return StatusCode::FAILURE; - } else { - msg(MSG::INFO) << "Retrieved tool " << m_selectortool << endmsg; - } - } - else { + ATH_CHECK(m_selectortool.retrieve()); + } else { m_selectortool.disable(); } - - sc = detStore()->retrieve(m_detID, "SiliconID" ); - if (sc.isFailure()) - { - msg(MSG::FATAL) << "Could not get SiliconID "<<endmsg; - return sc; - } - else - msg(MSG::DEBUG) << "Found SiliconID"<<endmsg; - - msg(MSG::INFO) << "initialize() successful in " << name() << endmsg; + ATH_CHECK(detStore()->retrieve(m_detID, "SiliconID" )); + ATH_MSG_DEBUG( "initialize() successful" ); return StatusCode::SUCCESS; } @@ -123,8 +95,7 @@ StatusCode InDet::InDetAmbiTrackSelectionTool::initialize() StatusCode InDet::InDetAmbiTrackSelectionTool::finalize() { - StatusCode sc = AlgTool::finalize(); - return sc; + return StatusCode::SUCCESS; } //============================================================================================ diff --git a/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/src/InDetDenseEnvAmbiTrackSelectionTool.cxx b/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/src/InDetDenseEnvAmbiTrackSelectionTool.cxx index b4174cf259ecad39f723f80c765fa4ff510fc05a..ecf35181ca0a38fc9bcfb37a006f6663a40f0184 100755 --- a/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/src/InDetDenseEnvAmbiTrackSelectionTool.cxx +++ b/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/src/InDetDenseEnvAmbiTrackSelectionTool.cxx @@ -11,7 +11,7 @@ #include "InDetIdentifier/SiliconID.h" #include "StoreGate/StoreGateSvc.h" #include "AthContainers/DataVector.h" -#include "TrkTrack/Track.h" +#include "TrkTrack/TrackStateOnSurface.h" #include "TrkMeasurementBase/MeasurementBase.h" #include "TrkRIO_OnTrack/RIO_OnTrack.h" #include "TrkPseudoMeasurementOnTrack/PseudoMeasurementOnTrack.h" @@ -26,12 +26,11 @@ #include "PixelGeoModel/IBLParameterSvc.h" #include "TrkCaloClusterROI/CaloClusterROI.h" #include "TrkCaloClusterROI/CaloClusterROI_Collection.h" +#include "TrkValInterfaces/ITrkObserverTool.h" -#include "TMath.h" #include "TString.h" -#include <ext/functional> //================ Constructor ================================================= InDet::InDetDenseEnvAmbiTrackSelectionTool::InDetDenseEnvAmbiTrackSelectionTool(const std::string& t, @@ -726,86 +725,56 @@ void InDet::InDetDenseEnvAmbiTrackSelectionTool::fillTrackDetails(const Trk::Tra if ( !clus->tooBigToBeSplit() ) { tsosDetails.splitProb1[index] = clus->splitProbability1(); tsosDetails.splitProb2[index] = clus->splitProbability2(); - //if(clus->isSplit()) numissplit++; } else { tsosDetails.splitProb1[index] = 0.51; tsosDetails.splitProb2[index] = 0.51; - //numissplit++; } } } if (isSCT) { - if(m_doSCTSplitting){ - ATH_MSG_DEBUG ("Entered doSCTSplitting. Getting cluster parameters."); - - const InDet::SCT_Cluster* clussct = dynamic_cast <const InDet::SCT_Cluster*> (rot->prepRawData()); - if( abs((*iTsos)->surface().normal()(2)) < 0.1 ){ - - //layer info; not used now but may be used later - //float sx = (*iTsos)->surface().center()(0); - //float sy = (*iTsos)->surface().center()(1); - //float sz = (*iTsos)->surface().position()(2); - //float sR = sqrt( sx*sx + sy*sy ); - - //int layer; - //if(sR < 290) layer = -1; - //if(sR > 290 && sR < 310) layer = 0; - //if(sR > 360 && sR < 380) layer = 1; - //if(sR > 435 && sR < 455) layer = 2; - //if(sR > 500 && sR < 525) layer = 3; - //if(sR > 525) layer = 4; - - float px = (*iTsos)->trackParameters()->momentum()(0); - float py = (*iTsos)->trackParameters()->momentum()(1); - float nx = (*iTsos)->surface().normal()(0); - float ny = (*iTsos)->surface().normal()(1); - - //lphi will be the momentum's angle in the x-y plane minus the surface's normal angle - double lphi = atan2( py, px ) - atan2( ny, nx ); - - double diff = ((285*abs( tan(lphi)-tan(-0.07)) ) - 80*clussct->width().colRow()(0)); - ATH_MSG_DEBUG ("Calculated width - observed width? "<< diff ); - - //track pT would be sqrt( ( px * px ) + ( py * py ) ) - //isStereo?: (*iTsos)->surface().isStereo() - //Number of split pixel clusters: numissplit <- would have to uncomment stuff out from above - - if(abs(diff) > 80){ - tsosDetails.splitProb1[index] = .99; - tsosDetails.splitProb2[index] = .99; - } - else{ - tsosDetails.splitProb1[index] = 0; - tsosDetails.splitProb2[index] = 0; - } - }//This ends the "isBarrel" if statement; no endcap clusters are split - else{ - tsosDetails.splitProb1[index] = 0; - tsosDetails.splitProb2[index] = 0; - } - //const InDet::SCT_Cluster* sctClus = dynamic_cast <const InDet::SCT_Cluster*> (rot->prepRawData()); - - //if ( !sctClus ) { - // ATH_MSG_WARNING ("---> Cast to SCT cluster failed, should not happen !"); - // tsosDetails.type[index] = RejectedHit; - // continue; - //} - - // If SCT cluster is not too big to be split - //if ( sctClus->isShareable() ) { - // // We allow the cluster to be shared with one other track - // tsosDetails.splitProb1[index] = sctClus->isShareable() * 0.51; - // tsosDetails.splitProb2[index] = sctClus->isShareable() * 0.; - //} - + ATH_MSG_DEBUG ("Entered doSCTSplitting. Getting cluster parameters."); + const InDet::SCT_Cluster* clussct = dynamic_cast <const InDet::SCT_Cluster*> (rot->prepRawData()); + if (!clussct){ + ATH_MSG_WARNING ("---> Cast to SCT cluster failed, should not happen !"); + tsosDetails.type[index] = RejectedHit; + continue; + } + if( std::abs((*iTsos)->surface().normal()(2)) < 0.1 ){ + float px = (*iTsos)->trackParameters()->momentum()(0); + float py = (*iTsos)->trackParameters()->momentum()(1); + float nx = (*iTsos)->surface().normal()(0); + float ny = (*iTsos)->surface().normal()(1); + + //lphi will be the momentum's angle in the x-y plane minus the surface's normal angle + double lphi = std::atan2( py, px ) - std::atan2( ny, nx ); + + double diff = ((285*std::abs( std::tan(lphi)-std::tan(-0.07)) ) - 80*clussct->width().colRow()(0)); + ATH_MSG_DEBUG ("Calculated width - observed width? "<< diff ); + + //track pT would be sqrt( ( px * px ) + ( py * py ) ) + //isStereo?: (*iTsos)->surface().isStereo() + //Number of split pixel clusters: numissplit <- would have to uncomment stuff out from above + + if(std::abs(diff) > 80){ + tsosDetails.splitProb1[index] = .99; + tsosDetails.splitProb2[index] = .99; + }else{ + tsosDetails.splitProb1[index] = 0; + tsosDetails.splitProb2[index] = 0; + } + }//This ends the "isBarrel" if statement; no endcap clusters are split + else { + tsosDetails.splitProb1[index] = 0; + tsosDetails.splitProb2[index] = 0; + } } //Always set to 0 if splitting not allowed - else{ - tsosDetails.splitProb1[index] = 0; - tsosDetails.splitProb2[index] = 0; + else{ + tsosDetails.splitProb1[index] = 0; + tsosDetails.splitProb2[index] = 0; } } @@ -1460,7 +1429,8 @@ void InDet::InDetDenseEnvAmbiTrackSelectionTool::updatePixelClusterInformation(T //========================================================================================== bool InDet::InDetDenseEnvAmbiTrackSelectionTool::isHadCaloCompatible(const Trk::TrackParameters& Tp) const { - const double pi = M_PI, pi2 = 2.*M_PI; + constexpr double pi = M_PI; + constexpr double pi2 = 2.*M_PI; if(m_hadF.empty()) return false; auto f = m_hadF.begin(), fe = m_hadF.end(); @@ -1472,14 +1442,14 @@ bool InDet::InDetDenseEnvAmbiTrackSelectionTool::isHadCaloCompatible(const Trk:: double E = Tp.eta(); for(; f!=fe; ++f) { - double df = fabs(F-(*f)); - if(df > pi ) df = fabs(pi2-df); + double df = std::fabs(F-(*f)); + if(df > pi ) df = std::fabs(pi2-df); if(df < m_phiWidth) { //Correct eta of cluster to take into account the z postion of the track double newZ = *z - Tp.position().z(); - double newEta = atanh( newZ / sqrt( (*r) * (*r) + newZ*newZ ) ); + double newEta = std::atanh( newZ / std::sqrt( (*r) * (*r) + newZ*newZ ) ); - double de = fabs(E-newEta); + double de = std::fabs(E-newEta); if(de < m_etaWidth) return true; } @@ -1495,7 +1465,8 @@ bool InDet::InDetDenseEnvAmbiTrackSelectionTool::isHadCaloCompatible(const Trk:: bool InDet::InDetDenseEnvAmbiTrackSelectionTool::isEmCaloCompatible(const Trk::TrackParameters& Tp) const { - const double pi = M_PI, pi2 = 2.*M_PI; + constexpr double pi = M_PI; + constexpr double pi2 = 2.*M_PI; if(m_emF.empty()) return false; auto f = m_emF.begin(), fe = m_emF.end(); @@ -1509,14 +1480,14 @@ bool InDet::InDetDenseEnvAmbiTrackSelectionTool::isEmCaloCompatible(const Trk::T double Z = Tp.position().z(); for(; f!=fe; ++f) { - double df = fabs(F-(*f)); - if(df > pi ) df = fabs(pi2-df); + double df = std::fabs(F-(*f)); + if(df > pi ) df = std::fabs(pi2-df); if(df < m_phiWidthEm) { //Correct eta of cluster to take into account the z postion of the track double newZ = *z - Z; double newR = *r - R; - double newEta = atanh( newZ / sqrt( newR*newR + newZ*newZ ) ); - double de = fabs(E-newEta); + double newEta = std::atanh( newZ / std::sqrt( newR*newR + newZ*newZ ) ); + double de = std::fabs(E-newEta); if(de < m_etaWidthEm) return true; } @@ -1625,15 +1596,15 @@ bool InDet::InDetDenseEnvAmbiTrackSelectionTool::isNearbyTrackCandidate(const T double dPhi = paraA->parameters()[Trk::phi] - paraB->parameters()[Trk::phi]; - if(dPhi > TMath::Pi()) - dPhi -= 2* TMath::Pi(); + if(dPhi > M_PI) + dPhi -= 2* M_PI; - if(dPhi < -TMath::Pi()) - dPhi += 2* TMath::Pi(); + if(dPhi < -M_PI) + dPhi += 2* M_PI; - double dEta = fabs(1./tan(paraA->parameters()[Trk::theta]) - 1./tan(paraB->parameters()[Trk::theta])); + double dEta = std::fabs(1./std::tan(paraA->parameters()[Trk::theta]) - 1./std::tan(paraB->parameters()[Trk::theta])); - if(fabs(dlocalX) > m_pairDeltaX || fabs(dlocalY) > m_pairDeltaY || fabs(dPhi) > m_pairDeltaPhi || fabs(dEta) > m_pairDeltaEta) + if(std::fabs(dlocalX) > m_pairDeltaX || std::fabs(dlocalY) > m_pairDeltaY || std::fabs(dPhi) > m_pairDeltaPhi || std::fabs(dEta) > m_pairDeltaEta) pass = false;