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]);