Major Rework of Central Corryvreckan Components

Simon Spannagel requested to merge moduletypes into master

This MR changes a substantial fraction of how Corryvreckan works. The main changes are listed below. Since many of these changes break with conventions, analysis configurations will have to be adapted. This MR should be merged after !53 (merged) has landed in master and after other derivative work has been merged (i.e. changes implemented by @jekroege).

Module types

There are now three different module types which are identified at compile time via the CMakeLists.txt directive:

  • Global modules are instantiated once and have access to all detectors (unless restricted via detectors as usual)
  • Detector modules are instantiated once per detector and only have access to this detector and the reference detector (as marked via the detector role)
  • DUT modules are instantiated once per detector marked as DUT in the geometry file

Detector type restrictions

Some modules only work for a specific type, such as event loaders. The detector types a module can operate on can now be specified in the CMakeLists.txt file. Detector modules are then only instantiated for detectors they are valid for.

The old configuration key detectors is replaced by a key called name, it is also possible to use the type keyword to restrict modules. Be aware that the module-defined detector type restriction will always take precedence over a user-configured one.

Module naming scheme

A new module naming scheme has been adopted and first modules have been renamed. The new scheme first names the function and then the detector type, such as EventLoaderCLICpix2. The following modules have been renamed:

  • ATLASpixEventLoader -> EventLoaderATLASpix
  • Alignment -> split into AlignmentDUTResidual, AlignmentTrackChi2
  • BasicTracking -> Tracking4D
  • CLICpixEventLoader -> EventLoaderCLICpix
  • Clicpix2EventLoader -> EventLoaderCLICpix2
  • CLICpix2Analysis -> AnalysisDUT
  • DataOutput -> TreeWriterDUT
  • EUDAQEventLoader -> EventLoaderEUDAQ
  • Millepede -> AlignmentMillepede
  • SpatialClustering -> ClusteringSpatial
  • SpatialTracking -> TrackingSpatial
  • Timepix1EventLoader -> EventLoaderTimepix1
  • Timepix3Clustering -> Clustering4D
  • Timepix3EventLoader -> EventLoaderTimepix3
  • Timepix3MaskCreator -> MaskCreatorTimepix3

ROOT directory structure

The main folder "corryvreckan" in the histogram file has been removed. Instead, detector modules create detector-subfolders inside the module folder, e.g. Clustering4D/W12345_G01/clusterSize. This makes finding specific histograms easier.

New Modules

The following modules are either completely new or originate from an existing module which has been split:

  • AlignmentDUTResidual: This module is part of the old Alignment module, run with alginMethod = 1
  • AlignmentTrackChi2: This module is part of the old Alignment module, run with alignMethod = 0
  • AnalysisEfficiency: A new module to show-case a modular analysis, each figure of merit is determined by a different module, so a full analysis can be plugged together with a set of Analysis* modules.
  • AnalysisPowerPulsing: A new DUT module for type "Timepix3" detectors, a port of @estel's module developed here:
Edited by Simon Spannagel

Merge request reports