Commit a6918657 authored by Håkan Wennlöf's avatar Håkan Wennlöf
Browse files

Merge branch 'f-brickwall' into 'master'

Add Staggered Pixel Detector Model

See merge request allpix-squared/allpix-squared!1191
parents 964b3719 2f6afdbb
Loading
Loading
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}
+13 −2
Original line number Diff line number Diff line
@@ -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$.

![Staggered Matrix](./staggered.png)\
*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

@@ -46,7 +57,7 @@ overall grid dimensions as demonstrated below:
![Hexagonal pixel grid](./hexagon_grids.png)\
*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
+8.4 KiB
Loading image diff...
+1 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ ADD_LIBRARY(
    geometry/GeometryManager.cpp
    geometry/HexagonalPixelDetectorModel.cpp
    geometry/RadialStripDetectorModel.cpp
    geometry/StaggeredPixelDetectorModel.cpp
    Allpix.cpp)

# Link the dependencies
+3 −0
Original line number Diff line number Diff line
@@ -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>
@@ -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