From de3e5d1db7174c489ef850418d012441fcf69cfd Mon Sep 17 00:00:00 2001 From: Fabio Cossutti Date: Fri, 16 Apr 2021 17:57:17 +0200 Subject: [PATCH] Move check for pixel active area into RectangularMTDTopology, make it usable for BTL as well --- .../data/mtdParameters/v2/mtdParameters.xml | 4 +++- .../interface/RectangularMTDTopology.h | 3 +++ .../src/RectangularMTDTopology.cc | 19 +++++++++++++++++++ .../FastTimingCommon/src/ETLDeviceSim.cc | 15 +++------------ 4 files changed, 28 insertions(+), 13 deletions(-) diff --git a/Geometry/MTDCommonData/data/mtdParameters/v2/mtdParameters.xml b/Geometry/MTDCommonData/data/mtdParameters/v2/mtdParameters.xml index 11a3101f66de7..77e8e6801a1a5 100644 --- a/Geometry/MTDCommonData/data/mtdParameters/v2/mtdParameters.xml +++ b/Geometry/MTDCommonData/data/mtdParameters/v2/mtdParameters.xml @@ -5,8 +5,10 @@ 4, 4, 4, 24 + + - 0, 0, 0, 0, 0, 0, 0, 0, 1, 16, 3, 1 + 3733, 1867, 112, 60, 0, 0, 0, 0, 1, 16, 3, 1 50, 50, 50, 50, 0, 0, 0, 0, 16, 16, 2, 1 diff --git a/Geometry/MTDGeometryBuilder/interface/RectangularMTDTopology.h b/Geometry/MTDGeometryBuilder/interface/RectangularMTDTopology.h index 2474d3e2c4846..dbba18a8e6aaf 100644 --- a/Geometry/MTDGeometryBuilder/interface/RectangularMTDTopology.h +++ b/Geometry/MTDGeometryBuilder/interface/RectangularMTDTopology.h @@ -84,6 +84,9 @@ class RectangularMTDTopology final : public PixelTopology { // PixelTopology interface. std::pair pixel(const LocalPoint& p) const override; + //check whether LocalPoint is inside the pixel active area + bool isInPixel(const LocalPoint& p) const; + // Errors // Error in local (cm) from the masurement errors LocalError localError(const MeasurementPoint&, const MeasurementError&) const override; diff --git a/Geometry/MTDGeometryBuilder/src/RectangularMTDTopology.cc b/Geometry/MTDGeometryBuilder/src/RectangularMTDTopology.cc index 931d71e080143..1daca844880d9 100644 --- a/Geometry/MTDGeometryBuilder/src/RectangularMTDTopology.cc +++ b/Geometry/MTDGeometryBuilder/src/RectangularMTDTopology.cc @@ -16,6 +16,25 @@ std::pair RectangularMTDTopology::pixel(const LocalPoint& p) const return std::pair(newxbin, newybin); } +//The following lines check whether the point is actually out of the active pixel area. +bool RectangularMTDTopology::isInPixel(const LocalPoint& p) const { + bool isInside = true; + const auto& thepixel = pixel(p); + const int ixbin = static_cast(thepixel.first); + const int iybin = static_cast(thepixel.second); + const float fractionX = thepixel.first - ixbin; + const float fractionY = thepixel.second - iybin; + if ((fractionX > 1.0 - m_GAPxInterpadFrac || fractionX < m_GAPxInterpadFrac) || + (ixbin == 0 && fractionX < m_GAPxBorderFrac) || (ixbin == m_nrows - 1 && fractionX > 1.0 - m_GAPxBorderFrac)) { + isInside = false; + } + if ((fractionY > 1.0 - m_GAPyInterpadFrac || fractionY < m_GAPyInterpadFrac) || + (iybin == 0 && fractionY < m_GAPyBorderFrac) || (iybin == m_ncols - 1 && fractionY > 1.0 - m_GAPyBorderFrac)) { + isInside = false; + } + return isInside; +} + //---------------------------------------------------------------------- // Topology interface, go from Measurement to Local corrdinates // pixel coordinates (mp) -> cm (LocalPoint) diff --git a/SimFastTiming/FastTimingCommon/src/ETLDeviceSim.cc b/SimFastTiming/FastTimingCommon/src/ETLDeviceSim.cc index 113d55625bef0..4ef834e20ee3d 100644 --- a/SimFastTiming/FastTimingCommon/src/ETLDeviceSim.cc +++ b/SimFastTiming/FastTimingCommon/src/ETLDeviceSim.cc @@ -61,21 +61,12 @@ void ETLDeviceSim::getHitsResponse(const std::vector 1.0 - topo.gapxInterpadFrac() || fractionX < topo.gapxInterpadFrac()) || - (ixbin == 0 && fractionX < topo.gapxBorderFrac()) || - (ixbin == topo.nrows() - 1 && fractionX > 1.0 - topo.gapxBorderFrac())) - continue; - if ((fractionY > 1.0 - topo.gapyInterpadFrac() || fractionY < topo.gapyInterpadFrac()) || - (iybin == 0 && fractionY < topo.gapyBorderFrac()) || - (iybin == topo.ncolumns() - 1 && fractionY > 1.0 - topo.gapyBorderFrac())) + if (!topo.isInPixel(simscaled)) { continue; + } + const auto& thepixel = topo.pixel(simscaled); const uint8_t row(thepixel.first), col(thepixel.second); auto simHitIt =