20 std::shared_ptr<const Segmentation> moduleSegmentation,
21 double halfThickness,
int readoutDirection,
double lorentzAngle,
22 double energyThreshold,
bool analogue)
25 m_halfThickness(halfThickness),
26 m_readoutDirection(readoutDirection),
27 m_lorentzAngle(lorentzAngle),
28 m_tanLorentzAngle(tan(lorentzAngle)),
29 m_energyThreshold(energyThreshold),
31 m_segmentation(std::
move(moduleSegmentation)),
33 m_segmentationSurfacesX(),
34 m_segmentationSurfacesY() {
37 halfThickness, readoutDirection, lorentzAngle);
48 if (startbinX > endbinX) {
52 for (; startbinX <= endbinX; ++startbinX) {
53 sSurfaces.push_back(m_segmentationSurfacesX[startbinX]);
60 if (startbinY > endbinY) {
64 for (; startbinY <= endbinY; ++startbinY) {
65 sSurfaces.push_back(m_segmentationSurfacesY[startbinY]);
83 if (sCellX > eCellX) {
94 if (sCellY > eCellY) {
98 stepSurfaces.reserve((eCellY - sCellY) + (eCellX - sCellX) + 2);
100 for (; sCellX <= eCellX && sCellX < m_segmentationSurfacesX.size();
102 stepSurfaces.push_back(m_segmentationSurfacesX[sCellX]);
105 for (; sCellY <= eCellY && sCellY < m_segmentationSurfacesY.size();
107 stepSurfaces.push_back(m_segmentationSurfacesY[sCellY]);