diff --git a/DetectorDescription/RoiDescriptor/Root/RoiUtil.cxx b/DetectorDescription/RoiDescriptor/Root/RoiUtil.cxx index e23a992de21528f5416573e5d832f7c9060e6399..812ed0b16f148d02e615ffbee6359e3a2f94b420 100644 --- a/DetectorDescription/RoiDescriptor/Root/RoiUtil.cxx +++ b/DetectorDescription/RoiDescriptor/Root/RoiUtil.cxx @@ -200,7 +200,7 @@ bool operator==( const IRoiDescriptor& roi0, const IRoiDescriptor& roi1 ) { /// check geometry if ( std::fabs(roi0.zed() -roi1.zed() )>1e-7 ) return false; if ( std::fabs(roi0.zedPlus() -roi1.zedPlus() )>1e-7 ) return false; - if ( std::fabs(roi0.zedMinus()-roi1.zedMinus())>1e-7 ) return false; + if ( std::fabs(roi0.zedMinus()-roi1.zedMinus())<1e-7 ) return false; if ( std::fabs(roi0.eta() -roi1.eta() )>1e-7 ) return false; if ( std::fabs(roi0.etaPlus() -roi1.etaPlus() )>1e-7 ) return false; diff --git a/Trigger/TrigAlgorithms/TrigGenericAlgs/CMakeLists.txt b/Trigger/TrigAlgorithms/TrigGenericAlgs/CMakeLists.txt index c7a3b62a1f6557dcea2dbb00e1786254b2297527..f2ea215983bcdc2275a450f0657b5ea0136b5585 100644 --- a/Trigger/TrigAlgorithms/TrigGenericAlgs/CMakeLists.txt +++ b/Trigger/TrigAlgorithms/TrigGenericAlgs/CMakeLists.txt @@ -20,8 +20,7 @@ atlas_depends_on_subdirs( PUBLIC PRIVATE Control/AthenaKernel DetectorDescription/IRegionSelector - DetectorDescription/RoiDescriptor - Event/ByteStreamCnvSvcBase + Event/ByteStreamCnvSvcBase GaudiKernel Trigger/TrigConfiguration/TrigConfL1Data Trigger/TrigEvent/TrigNavigation diff --git a/Trigger/TrigAlgorithms/TrigGenericAlgs/src/TrigRoiUpdater.cxx b/Trigger/TrigAlgorithms/TrigGenericAlgs/src/TrigRoiUpdater.cxx index a87247047f2e71135b596ae1b23bdaee295f631d..c8325c0a6880eac234035ca61be517609f590072 100644 --- a/Trigger/TrigAlgorithms/TrigGenericAlgs/src/TrigRoiUpdater.cxx +++ b/Trigger/TrigAlgorithms/TrigGenericAlgs/src/TrigRoiUpdater.cxx @@ -1,21 +1,18 @@ /* Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ +*/ #include "TrigRoiUpdater.h" #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/IIncidentSvc.h" #include "TrigSteeringEvent/TrigRoiDescriptor.h" -#include "RoiDescriptor/RoiDescriptor.h" -#include "IRegionSelector/RoiUtil.h" -#include "IRegionSelector/IRoiDescriptor.h" #include "IRegionSelector/IRegSelSvc.h" namespace PESA { TrigRoiUpdater::TrigRoiUpdater(const std::string &name, - ISvcLocator *pSvcLocator) + ISvcLocator *pSvcLocator) : HLT::FexAlgo (name, pSvcLocator), m_etaHalfWidth(0.), m_phiHalfWidth(0.), @@ -97,7 +94,7 @@ namespace PESA if (inc.type() == "BeginEvent") { //cleanup stored RoIs m_rois.clear(); - } + } } /////////////////////////////////////////////////////////////////// @@ -107,15 +104,15 @@ namespace PESA ATH_MSG_DEBUG("execHLTAlgorithm()"); - const TrigRoiDescriptor *roi = 0; - bool forIDfound=false; - bool updateNeeded=true; - m_inpPhiMinus = m_inpPhiPlus = m_inpPhiSize = -10.; m_inpEtaMinus = m_inpEtaPlus = m_inpEtaSize = -10.; m_PhiMinus = m_PhiPlus = m_PhiSize = -10.; m_EtaMinus = m_EtaPlus = m_EtaSize = -10.; + const TrigRoiDescriptor *roi = 0; + bool forIDfound=false; + bool updateNeeded=true; + std::vector<std::string> roiNames = {"forID3","forID2","forID1", "forID", ""}; std::string roiName= ""; @@ -129,14 +126,15 @@ namespace PESA break; } } - - if (roi->composite()) { + + + if (roi->composite()){ if (m_requestPIXRobs || m_requestSCTRobs){ - registerROBs(roi); + registerROBs(roi); } ATH_MSG_DEBUG("Not touching a composite RoI"); - updateNeeded = false; + return HLT::OK; } //signature specific modifications @@ -151,19 +149,24 @@ namespace PESA ATH_MSG_DEBUG("don't use fixed RoI halfwidths for bjets"); updateNeeded = false; } - + + + TrigRoiDescriptor *outroi = 0; if (updateNeeded) { m_inpPhiMinus= roi->phiMinus(); m_inpPhiPlus = roi->phiPlus(); m_inpPhiSize= m_inpPhiPlus - m_inpPhiMinus; m_inpEtaMinus= roi->etaMinus(); m_inpEtaPlus = roi->etaPlus(); m_inpEtaSize= m_inpEtaPlus - m_inpEtaMinus; + + float eta = roi->eta(); float phi = roi->phi(); float oldEtaW = m_inpEtaPlus - m_inpEtaMinus; float oldPhiW = m_inpPhiPlus - m_inpPhiMinus; + if ( m_inpPhiPlus < m_inpPhiMinus ) oldPhiW += 2*M_PI; float diff_eta = 0.5*oldEtaW - m_etaHalfWidth; @@ -209,7 +212,12 @@ namespace PESA if (m_monitorDuplicateRoIs){ for (auto it = m_rois.begin(); it != m_rois.end(); it++) { TrigRoiDescriptor r = (*it); - if (r == *outroi) { + if (fabs(r.etaMinus()-outroi->etaMinus())<0.001 && + fabs(r.etaPlus()-outroi->etaPlus())<0.001 && + fabs(r.zedMinus()-outroi->zedMinus())<0.1 && + fabs(r.zedPlus()-outroi->zedPlus())<0.1 && + fabs(r.phiMinus()-outroi->phiMinus())<0.001 && + fabs(r.phiPlus()-outroi->phiPlus())<0.001){ ATH_MSG_DEBUG("This RoI was already processed by the same instance of ID tracking"); ATH_MSG_DEBUG(*outroi); ATH_MSG_DEBUG(r); @@ -218,12 +226,9 @@ namespace PESA } if (!thesameroi){ - outroi->manageConstituents(false); m_rois.push_back(*outroi); - // m_rois.back().manageConstituents(false); - ATH_MSG_DEBUG("Registering RoI " << m_rois.back()); - } - else { + ATH_MSG_DEBUG("Registering RoI " << *outroi); + } else { m_duplicateRoIs++; } } @@ -231,11 +236,10 @@ namespace PESA m_invocations++; return HLT::OK; } - - ////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////// // Finalize /////////////////////////////////////////////////////////////////// - + HLT::ErrorCode TrigRoiUpdater::hltFinalize() { ATH_MSG_DEBUG("finalize() success"); @@ -247,12 +251,11 @@ namespace PESA // endRun method: //---------------------------------------------------------------------------- HLT::ErrorCode TrigRoiUpdater::hltEndRun() { - + ATH_MSG_DEBUG("TrigRoiUpdater::endRun()"); - + return HLT::OK; } - //--------------------------------------------------------------------------- HLT::ErrorCode TrigRoiUpdater::registerROBs(const TrigRoiDescriptor *roi){