Skip to content

Adding support for hexagonal pixel layout and other modules related to FASTPIX

Eric Buschmann requested to merge ebuschma/corryvreckan:fastpix into master

This MR includes changes to support detectors with a hexagonal pixel layout in Corry and adds a few generic and a few FASTPIX-specific modules necessary for our analysis of FASTPIX data, which has a hexagonal layout. This adds a HexagonalPixelDetector class derived from PixelDetector which implements the necessary functions. At the moment, it only supports pointy top orientation of the hexagons with identical pitches for both axes. It also adds a getInterceptPixel function that returns the pixel row/column of the intersected pixel. This is different from the getRow and getColumn functions, as calculating the (integer) coordinates of the closest pixel is not straightforward in a hexagonal layout. Pixel positions are stored as axial coordinates.

It also adds new objects used by some of the modules:

  • Waveform: Basically a vector of doubles and is used to store raw waveforms from an oscilloscope.
  • Timestamp: Used to store additional timing information that is not directly associated with a pixel or trigger or other object.

New generic modules:

  • EventLoaderTimestamp: Reads only the TDC trigger data from a Timepix3 device and inserts them as triggers into an event. Can also build new events around the triggers. This module is used to synchronise devices connected to the TDC inputs on a SPIDR board.
  • EventLoaderWaveform: Loads raw waveforms recorded with an oscilloscope. Uses TDC data for synchronisation.

FASTPIX specific modules:

  • EventLoaderFASTPIX: Loads pre-decoded FASTPIX data. Also uses TDC data for synchronisation.
  • AnalysisFASTPIX: Provides additional histograms to AnalysisDUT, takes the hexagonal layout into account for in-pixel plots, and performs efficiency measurements while taking the peculiarities of the oscilloscope-based readout and pixel decoding into account.
  • AnalysisTimingFASTPIX: Basic timing analysis with FASTPIX data and waveforms from a timing reference. Creates some basic timing plots and writes everything to a ROOT tree to perform timewalk correction over many runs combined.

Merge request reports