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).
There are now three different module types which are identified at compile time via the
- Global modules are instantiated once and have access to all detectors (unless restricted via
- 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.
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: https://gitlab.cern.ch/estel/corryvreckan/tree/PowPulsAnalogDigital/