Skip to content

Draft: Introduce SensorDesign Class

Yajun He requested to merge testbeamreco/corryvreckan:SensorDesignClass into master

(Everything is on behalf of Nigel Hessy)

Merge request to initiate discussion on improving the adaptability of Corryvreckan for new sensor designs by separating out the parts of a Detector Class into a new "SensorDesign" class. So the current Detector class which "is" a design would get a pointer to a SensorDesign which would do everything that is internal to a sensor.

Then people with any new sensor with whatever arrangement of diodes can implement their design, without altering the Detector class. Detector class becomes smaller and rather unchanging: it knows the position, orientation, transform local->global and vv, as well as Dector Type (DUT, ...)

Current idea is to have a base SensorDesign class with virtual methods to convert diode indices to position and vice versa. RectangularSensor would inherit from this and implement the most common form of sensors (Timepix, Medipix, Alpide, Mimosa26, ...; HexagonalDesign; and an ATLAS Endcap Strip sensor would be a StereoAnnulusDesign.

In a Mimosa telescope, there would be one design: RectangularDesign mimosa26Design(...); with six Detectors all pointing to this same design. A single config section would give the mimosa parameters (pixel size, number of rows and columns mainly). The geometry file would have this information replaced by a string describing what SensorDesign the Detector should point to.

Many other packages have this separation of an actual instance of a detector and the design of those detectors. This change will allow import of at least some of such code, or at least with reduced changes. This split would make Corryvreckan more scalable. This would possibly allow Corryvreckan to be used in ATLAS system tests where we will have hundreds of sensors, but only 8 sensor designs.

Edited by Yajun He

Merge request reports