diff --git a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiDetElementRoadMakerData_xk.h b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiDetElementRoadMakerData_xk.h index f85a241ef31f022915e2735ca1ecd6596577f557..260bbdc0dd4ae3cce7e408ba86f957c7baea578f 100644 --- a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiDetElementRoadMakerData_xk.h +++ b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiDetElementRoadMakerData_xk.h @@ -28,23 +28,6 @@ namespace InDet { class SiDetElementRoadMakerData_xk { public: - /// This helper class is used to keep track of - /// which detector elements are already being - /// considered when forming a search road during - /// the extension of silicon seeds through the full - /// Si detectors. - class UsedFlag { - public: - UsedFlag() : m_used(false) {} - /// read the flag - bool used() const { return m_used; } - /// toggle the flag - void setUsed() { m_used=true; } - /// reset without having to overwrite the object - void reset(){ m_used=false;} - private: - bool m_used; - }; /// trivial constructor - the members of this event /// data struct need client tool information for @@ -69,7 +52,7 @@ namespace InDet { /// are already on a search road. Nested in the hierarchy of /// detector region - layer - module within layer. /// Dynamic to avoid hard-coding a certain geometry. - typedef std::array<std::vector<std::vector<UsedFlag> >,3> ElementUsageTracker; + typedef std::array<std::vector<std::vector<bool> >,3> ElementUsageTracker; ElementUsageTracker elementUsageTracker; /// Flag to check if the event data was already initialized by the client tool. diff --git a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiDetElementRoadMakerData_xk.cxx b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiDetElementRoadMakerData_xk.cxx index 56dc7e91c6d111c23db4246a31d473e110a6dcbd..71c439d4e0cd29c125b7b06de03e840cde37cdaf 100644 --- a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiDetElementRoadMakerData_xk.cxx +++ b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/src/SiDetElementRoadMakerData_xk.cxx @@ -4,7 +4,7 @@ void InDet::SiDetElementRoadMakerData_xk::resetUsageTracker(){ for (auto & outerVec : elementUsageTracker){ /// loop over detector regions for (auto & innerVec : outerVec){ /// loop over layers in region - std::for_each(innerVec.begin(), innerVec.end(), [](InDet::SiDetElementRoadMakerData_xk::UsedFlag & flag){flag.reset();}); /// loop over elements on layer + std::fill(innerVec.begin(), innerVec.end(), false); /// loop over elements on layer } } } \ No newline at end of file diff --git a/InnerDetector/InDetRecTools/SiDetElementsRoadTool_xk/SiDetElementsRoadTool_xk/SiDetElementsLayer_xk.h b/InnerDetector/InDetRecTools/SiDetElementsRoadTool_xk/SiDetElementsRoadTool_xk/SiDetElementsLayer_xk.h index 0d80dff26644412399736a100e18ba9df439faba..915e3f65f3a0528fcabfd9e5feaa93fd731fac7d 100644 --- a/InnerDetector/InDetRecTools/SiDetElementsRoadTool_xk/SiDetElementsRoadTool_xk/SiDetElementsLayer_xk.h +++ b/InnerDetector/InDetRecTools/SiDetElementsRoadTool_xk/SiDetElementsRoadTool_xk/SiDetElementsLayer_xk.h @@ -81,13 +81,13 @@ namespace InDet{ (const std::array<float,6> & startingPoint, const std::array<float,3> & searchDirection, std::vector<InDet::SiDetElementLink_xk::ElementWay> &lDE, - std::vector<InDet::SiDetElementRoadMakerData_xk::UsedFlag> &used) const; + std::vector<bool> &used) const; void getEndcapDetElements (const std::array<float,6> & startingPoint, const std::array<float,3> & searchDirection, std::vector<InDet::SiDetElementLink_xk::ElementWay> &lDE, - std::vector<InDet::SiDetElementRoadMakerData_xk::UsedFlag> &used) const; + std::vector<bool> &used) const; void sortDetectorElements(); @@ -114,7 +114,7 @@ namespace InDet{ float phiCrossing, float reducedRoadWidth, std::vector<InDet::SiDetElementLink_xk::ElementWay> &lDE, - std::vector<InDet::SiDetElementRoadMakerData_xk::UsedFlag> &used) const; + std::vector<bool> &used) const; }; ///////////////////////////////////////////////////////////////////////////////// diff --git a/InnerDetector/InDetRecTools/SiDetElementsRoadTool_xk/src/SiDetElementsLayer_xk.cxx b/InnerDetector/InDetRecTools/SiDetElementsRoadTool_xk/src/SiDetElementsLayer_xk.cxx index 7c7e33ef81a674aef2ac556046b2b2772f6f697d..f79ab320f6ecf1bf313fa0b36c28cc613eb688f1 100644 --- a/InnerDetector/InDetRecTools/SiDetElementsRoadTool_xk/src/SiDetElementsLayer_xk.cxx +++ b/InnerDetector/InDetRecTools/SiDetElementsRoadTool_xk/src/SiDetElementsLayer_xk.cxx @@ -31,7 +31,7 @@ void InDet::SiDetElementsLayer_xk::getBarrelDetElements (const std::array<float,6> & startingPoint, const std::array<float,3> & searchDirection, std::vector<InDet::SiDetElementLink_xk::ElementWay> &lDE, - std::vector<InDet::SiDetElementRoadMakerData_xk::UsedFlag> &used) const + std::vector<bool> &used) const { /// In the following, identify where we cross the layer in r @@ -99,7 +99,7 @@ void InDet::SiDetElementsLayer_xk::getEndcapDetElements (const std::array<float,6> & startingPoint, const std::array<float,3> & searchDirection, std::vector<InDet::SiDetElementLink_xk::ElementWay> &lDE, - std::vector<InDet::SiDetElementRoadMakerData_xk::UsedFlag> &used) const + std::vector<bool> &used) const { /// solve the linear equation /// z_layer = z_startingPont + s * z_searchDirection @@ -137,7 +137,7 @@ void InDet::SiDetElementsLayer_xk::getDetElements float phiCrossing, float reducedRoadWidth, std::vector<InDet::SiDetElementLink_xk::ElementWay> &lDE, - std::vector<InDet::SiDetElementRoadMakerData_xk::UsedFlag> &used) const + std::vector<bool> &used) const { constexpr float pi = M_PI; constexpr float pi2 = 2.*pi; @@ -166,7 +166,7 @@ void InDet::SiDetElementsLayer_xk::getDetElements while(1) { assert( static_cast<unsigned int>(i)<m_elements.size() ); /// if detector element i on this layer is not already used for this road - if(!used[i].used()) { + if(!used[i]) { /// float dPhi =std::abs(m_elements[i].phi()-phiCrossing); if(dPhi>pi) dPhi=std::abs(dPhi-pi2); /// project delta phi into -pi..pi @@ -187,7 +187,7 @@ void InDet::SiDetElementsLayer_xk::getDetElements ) { /// we found a compatible detector element - add to our list lDE.push_back(InDet::SiDetElementLink_xk::ElementWay(&m_elements[i],startingPoint[5]+intersectionOutcome[2],std::max(intersectionOutcome[0],intersectionOutcome[1]))); - used[i].setUsed(); + used[i]=true; } } ++i; @@ -204,7 +204,7 @@ void InDet::SiDetElementsLayer_xk::getDetElements /// stop at full circle if(i==i1) return; assert( static_cast<unsigned int>(i)<m_elements.size() ); - if(!used[i].used()) { + if(!used[i]) { float dPhi =std::abs(m_elements[i].phi()-phiCrossing); if(dPhi>pi) dPhi=std::abs(dPhi-pi2); if((dPhi-reducedRoadWidth)>m_dfe) return; @@ -212,7 +212,7 @@ void InDet::SiDetElementsLayer_xk::getDetElements if((intersectionOutcome[0]-startingPoint[4])<=0 && (intersectionOutcome[1]-startingPoint[4])<=0.) { lDE.push_back(InDet::SiDetElementLink_xk::ElementWay(&m_elements[i],startingPoint[5]+intersectionOutcome[2],std::max(intersectionOutcome[0],intersectionOutcome[1]))); - used[i].setUsed(); + used[i]=true; } } } diff --git a/InnerDetector/InDetRecTools/SiDetElementsRoadTool_xk/src/SiDetElementsRoadMaker_xk.cxx b/InnerDetector/InDetRecTools/SiDetElementsRoadTool_xk/src/SiDetElementsRoadMaker_xk.cxx index 1c39130f9942ce8647b672d899f7905ac40b946b..76317bce2b5155ed7be6f8d24054a1eda43401e0 100644 --- a/InnerDetector/InDetRecTools/SiDetElementsRoadTool_xk/src/SiDetElementsRoadMaker_xk.cxx +++ b/InnerDetector/InDetRecTools/SiDetElementsRoadTool_xk/src/SiDetElementsRoadMaker_xk.cxx @@ -43,8 +43,6 @@ InDet::SiDetElementsRoadMaker_xk::SiDetElementsRoadMaker_xk StatusCode InDet::SiDetElementsRoadMaker_xk::initialize() { //Class optimization checks - static_assert(std::is_trivially_copyable<SiDetElementRoadMakerData_xk::UsedFlag>::value); - static_assert(std::is_trivially_destructible<SiDetElementRoadMakerData_xk::UsedFlag>::value); static_assert(std::is_trivially_copyable<SiDetElementLink_xk::ElementWay>::value); static_assert(std::is_trivially_destructible<SiDetElementLink_xk::ElementWay>::value); static_assert(std::is_trivially_copyable<SiDetElementLink_xk>::value);