14 double lorentzAngle) :
16 m_halfThickness(halfThickness),
17 m_readoutDirection(readoutDirection),
18 m_lorentzAngle(lorentzAngle),
19 m_tanLorentzAngle(
tan(lorentzAngle)),
20 m_segmentation(std::move(moduleSegmentation)),
22 m_segmentationSurfacesX(),
23 m_segmentationSurfacesY()
35 std::vector< std::shared_ptr<const Trk::Surface> > sSurfaces;
37 int startbinX = entryCids.first;
38 int endbinX = exitCids.first;
40 if (startbinX > endbinX)
std::swap(startbinX,endbinX);
42 for ( ; startbinX <= endbinX; ++startbinX)
43 sSurfaces.push_back(m_segmentationSurfacesX[startbinX]);
46 int startbinY = entryCids.second;
47 int endbinY = exitCids.second;
49 if (startbinY > endbinY)
std::swap(startbinY,endbinY);
51 for ( ; startbinY <= endbinY; ++startbinY)
52 sSurfaces.push_back(m_segmentationSurfacesY[startbinY]);
61 std::vector< std::shared_ptr<const Trk::Surface> > stepSurfaces;
67 size_t sCellX = startCell.first;
68 size_t eCellX = endCell.first;
69 if (sCellX > eCellX)
std::swap(sCellX,eCellX);
71 if (sCellX > 0) --sCellX;
74 size_t sCellY = startCell.second;
75 size_t eCellY = endCell.second;
76 if (sCellY > eCellY)
std::swap(sCellY,eCellY);
78 stepSurfaces.reserve((eCellY-sCellY)+(eCellX-sCellX)+2);
80 for ( ; sCellX <= eCellX && sCellX < m_segmentationSurfacesX.size(); ++sCellX)
81 stepSurfaces.push_back(m_segmentationSurfacesX[sCellX]);
83 for ( ; sCellY <= eCellY && sCellY < m_segmentationSurfacesY.size(); ++sCellY)
84 stepSurfaces.push_back(m_segmentationSurfacesY[sCellY]);