Loading doc/tikz/staggered.tex 0 → 100644 +27 −0 Original line number Diff line number Diff line \tikzset{% >=latex } \begin{tikzpicture}[thick] % Define pixel size and offset \def\psize{1.5cm} \def\offset{0.8cm} % Draw bottom row (no offset) \draw[fill=blue!10] (0,0) rectangle (\psize,\psize); \draw[fill=blue!10] (\psize,0) rectangle (2*\psize,\psize); % Draw top row (with offset) \draw[fill=blue!20] (\offset,\psize) rectangle (\offset+\psize,2*\psize); \draw[fill=blue!20] (\offset+\psize,\psize) rectangle (\offset+2*\psize,2*\psize); % Draw horizontal offset arrow \draw[<->,very thick,red] (2*\psize,0.5*\psize) -- ++(\offset,0) node[midway,below] {$\delta$}; % Label pixel dimensions \draw[<->,thick,teal] (2*\psize+\offset +0.1cm,0) -- ++(0,\psize) node[midway,right] {$p_y$}; \draw[<->,thick,teal] (0,-0.2cm) -- ++(\psize,0) node[midway,below] {$p_x$}; \end{tikzpicture} doc/usermanual/05_geometry_detectors/03_modelgeom.md +13 −2 Original line number Diff line number Diff line Loading @@ -14,8 +14,19 @@ selected via the parameter `geometry` in the detector model file. This geometry is the default assumed for any detector without the `geometry` keyword. The individual channels are rectangular pixels, the `pixel_size` parameter denotes the pitch in Cartesian `x` and `y` direction. This geometry can be selected using `geometry = pixel` This geometry can be selected using `geometry = pixel`. ## Staggered Pixel Matrix on a Cartesian Grid This geometry is an extension of the regular Cartesian grid and, in addition to the pixel pitch described above, it allows to configure a pixel offset for odd rows of the detector matrix using the `pixel_offset` parameter. The pixel offset needs to be provided in fractions of the pixel pitch and needs to be between $-1.0 < p < 1.0$. \ *Definition of a staggered pixel matrix. $`p_x`$ and $`p_y`$ indicate the pixel pitches along these Cartesian coordinates, $`\delta`$ denotes the relative offset of the odd rows* This geometry can be selected using `geometry = staggered`. ## Hexagonal Pixels Loading Loading @@ -46,7 +57,7 @@ overall grid dimensions as demonstrated below: \ *Grid layouts for pointy (left) and flat (right) hexagons with a size of 8-by-4 pixels.* This geometry can be selected using `geometry = hexagonal` This geometry can be selected using `geometry = hexagonal`. ## Radial Strips Loading doc/usermanual/05_geometry_detectors/staggered.png 0 → 100644 +8.4 KiB Loading image diff... src/core/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ ADD_LIBRARY( geometry/GeometryManager.cpp geometry/HexagonalPixelDetectorModel.cpp geometry/RadialStripDetectorModel.cpp geometry/StaggeredPixelDetectorModel.cpp Allpix.cpp) # Link the dependencies Loading src/core/geometry/DetectorModel.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ #include "core/geometry/HexagonalPixelDetectorModel.hpp" #include "core/geometry/PixelDetectorModel.hpp" #include "core/geometry/RadialStripDetectorModel.hpp" #include "core/geometry/StaggeredPixelDetectorModel.hpp" #include "tools/liang_barsky.h" #include <Math/Translation3D.h> Loading Loading @@ -55,6 +56,8 @@ std::shared_ptr<DetectorModel> DetectorModel::factory(const std::string& name, c model = std::make_shared<RadialStripDetectorModel>(name, assembly, reader, config); } else if(geometry == "hexagonal") { model = std::make_shared<HexagonalPixelDetectorModel>(name, assembly, reader, config); } else if(geometry == "staggered") { model = std::make_shared<StaggeredPixelDetectorModel>(name, assembly, reader, config); } else { LOG(FATAL) << "Model file " << config.getFilePath() << " geometry parameter is not valid"; // FIXME: The model can probably be silently ignored if we have more model readers later Loading Loading
doc/tikz/staggered.tex 0 → 100644 +27 −0 Original line number Diff line number Diff line \tikzset{% >=latex } \begin{tikzpicture}[thick] % Define pixel size and offset \def\psize{1.5cm} \def\offset{0.8cm} % Draw bottom row (no offset) \draw[fill=blue!10] (0,0) rectangle (\psize,\psize); \draw[fill=blue!10] (\psize,0) rectangle (2*\psize,\psize); % Draw top row (with offset) \draw[fill=blue!20] (\offset,\psize) rectangle (\offset+\psize,2*\psize); \draw[fill=blue!20] (\offset+\psize,\psize) rectangle (\offset+2*\psize,2*\psize); % Draw horizontal offset arrow \draw[<->,very thick,red] (2*\psize,0.5*\psize) -- ++(\offset,0) node[midway,below] {$\delta$}; % Label pixel dimensions \draw[<->,thick,teal] (2*\psize+\offset +0.1cm,0) -- ++(0,\psize) node[midway,right] {$p_y$}; \draw[<->,thick,teal] (0,-0.2cm) -- ++(\psize,0) node[midway,below] {$p_x$}; \end{tikzpicture}
doc/usermanual/05_geometry_detectors/03_modelgeom.md +13 −2 Original line number Diff line number Diff line Loading @@ -14,8 +14,19 @@ selected via the parameter `geometry` in the detector model file. This geometry is the default assumed for any detector without the `geometry` keyword. The individual channels are rectangular pixels, the `pixel_size` parameter denotes the pitch in Cartesian `x` and `y` direction. This geometry can be selected using `geometry = pixel` This geometry can be selected using `geometry = pixel`. ## Staggered Pixel Matrix on a Cartesian Grid This geometry is an extension of the regular Cartesian grid and, in addition to the pixel pitch described above, it allows to configure a pixel offset for odd rows of the detector matrix using the `pixel_offset` parameter. The pixel offset needs to be provided in fractions of the pixel pitch and needs to be between $-1.0 < p < 1.0$. \ *Definition of a staggered pixel matrix. $`p_x`$ and $`p_y`$ indicate the pixel pitches along these Cartesian coordinates, $`\delta`$ denotes the relative offset of the odd rows* This geometry can be selected using `geometry = staggered`. ## Hexagonal Pixels Loading Loading @@ -46,7 +57,7 @@ overall grid dimensions as demonstrated below: \ *Grid layouts for pointy (left) and flat (right) hexagons with a size of 8-by-4 pixels.* This geometry can be selected using `geometry = hexagonal` This geometry can be selected using `geometry = hexagonal`. ## Radial Strips Loading
src/core/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ ADD_LIBRARY( geometry/GeometryManager.cpp geometry/HexagonalPixelDetectorModel.cpp geometry/RadialStripDetectorModel.cpp geometry/StaggeredPixelDetectorModel.cpp Allpix.cpp) # Link the dependencies Loading
src/core/geometry/DetectorModel.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ #include "core/geometry/HexagonalPixelDetectorModel.hpp" #include "core/geometry/PixelDetectorModel.hpp" #include "core/geometry/RadialStripDetectorModel.hpp" #include "core/geometry/StaggeredPixelDetectorModel.hpp" #include "tools/liang_barsky.h" #include <Math/Translation3D.h> Loading Loading @@ -55,6 +56,8 @@ std::shared_ptr<DetectorModel> DetectorModel::factory(const std::string& name, c model = std::make_shared<RadialStripDetectorModel>(name, assembly, reader, config); } else if(geometry == "hexagonal") { model = std::make_shared<HexagonalPixelDetectorModel>(name, assembly, reader, config); } else if(geometry == "staggered") { model = std::make_shared<StaggeredPixelDetectorModel>(name, assembly, reader, config); } else { LOG(FATAL) << "Model file " << config.getFilePath() << " geometry parameter is not valid"; // FIXME: The model can probably be silently ignored if we have more model readers later Loading