18 std::shared_ptr<const Segmentation> moduleSegmentation,
19 double halfThickness,
int readoutDirection,
double lorentzAngle,
20 double energyThreshold,
bool analogue)
23 m_halfThickness(halfThickness),
24 m_readoutDirection(readoutDirection),
25 m_lorentzAngle(lorentzAngle),
26 m_tanLorentzAngle(tan(lorentzAngle)),
27 m_energyThreshold(energyThreshold),
29 m_segmentation(std::move(moduleSegmentation)),
31 m_segmentationSurfacesX(),
32 m_segmentationSurfacesY() {
35 halfThickness, readoutDirection, lorentzAngle);
46 if (startbinX > endbinX) {
50 for (; startbinX <= endbinX; ++startbinX) {
51 sSurfaces.push_back(m_segmentationSurfacesX[startbinX]);
58 if (startbinY > endbinY) {
62 for (; startbinY <= endbinY; ++startbinY) {
63 sSurfaces.push_back(m_segmentationSurfacesY[startbinY]);
81 if (sCellX > eCellX) {
92 if (sCellY > eCellY) {
96 stepSurfaces.reserve((eCellY - sCellY) + (eCellX - sCellX) + 2);
98 for (; sCellX <= eCellX && sCellX < m_segmentationSurfacesX.size();
100 stepSurfaces.push_back(m_segmentationSurfacesX[sCellX]);
103 for (; sCellY <= eCellY && sCellY < m_segmentationSurfacesY.size();
105 stepSurfaces.push_back(m_segmentationSurfacesY[sCellY]);