Commit 8a9fa957 authored by Morag Jean Williams's avatar Morag Jean Williams
Browse files

Merge branch 'unify_configkeys' into 'master'

Unify Configuration Keys

Closes #46

See merge request !81
parents 98dd6f1f 582cfa5a
Pipeline #652109 passed with stages
in 17 minutes and 55 seconds
......@@ -62,18 +62,21 @@ The internal base units of the framework are not chosen for user convenience but
& & ms (millisecond) \\
& & s (second) \\
\midrule
\multirow{3}{*}{\textit{Energy}} & \multirow{4}{*}{MeV (megaelectronvolt)} & eV (electronvolt) \\
\multirow{3}{*}{\textit{Energy}} & \multirow{3}{*}{MeV (megaelectronvolt)} & eV (electronvolt) \\
& & keV (kiloelectronvolt) \\
& & GeV (gigaelectronvolt) \\
\midrule
\textit{Temperature} & K (kelvin) & --- \\
\midrule
\multirow{2}{*}{\textit{Charge}} & e (elementary charge) & C (coulomb) \\
& & ke (kiloelectrons) \\
\multirow{3}{*}{\textit{Charge}} & \multirow{3}{*}{e (elementary charge)} & ke (kiloelectrons) \\
& & fC (femtocoulomb) \\
& & C (coulomb) \\
\midrule
\multirow{2}{*}{\textit{Voltage}} & \multirow{2}{*}{MV (megavolt)} & V (volt) \\
& & kV (kilovolt) \\
\midrule
\textit{Magnetic field strength} & T (tesla) & mT (millitesla) \\
\midrule
\multirow{2}{*}{\textit{Angle}} & \multirow{2}{*}{rad (radian)} & deg (degree) \\
& & mrad (milliradian) \\
\bottomrule
......@@ -194,10 +197,10 @@ All supported rotations are extrinsic active rotations, i.e. the vector itself i
\item The intrinsic resolution of the detector can be specified using the \parameter{resolution} parameter, a two-dimensional vector holding the position resolution for the column and row directions.
\item The \parameter{time_offset} can be used to shift the individual detector time frames of reference to e.g.\ account for time of flight effects between different detector planes by adding a fixed offset.
\item Pixels to be masked in the offline analysis can be placed in a separate file specified by the \parameter{mask_file} parameter explained in detail in Section~\ref{sec:masking}.
\item A region of interest in the given detector can be defined using the \parameter{roi} parameter. More details on this functionality cna be found in Section~\ref{sec:roi}.
\item A region of interest in the given detector can be defined using the \parameter{roi} parameter. More details on this functionality can be found in Section~\ref{sec:roi}.
\end{itemize}
An example configuration file describing a setup with one CLICpix2 detector (named \parameter{016_CP_PS} and two Timepix3~\cite{timepix} detectors (\parameter{W0013_D04}and \parameter{W0013_J05}) is the following:
An example configuration file describing a setup with one CLICpix2 detector named \parameter{016_CP_PS} and two Timepix3~\cite{timepix} detectors (\parameter{W0013_D04} and \parameter{W0013_J05}) is the following:
\begin{minted}[frame=single,framesep=3pt,breaklines=true,tabsize=2,linenos]{ini}
[W0013_D04]
......@@ -215,6 +218,7 @@ orientation = -0.02deg, 0.0deg, -0.015deg
orientation_mode = "xyz"
pixel_pitch = 25um, 25um
position = -0.9mm, 0.21mm, 106.0mm
role = "dut"
type = "CLICpix2"
[W0013_J05]
......@@ -223,6 +227,7 @@ orientation = -9deg, 9deg, 0deg
orientation_mode = "xyz"
pixel_pitch = 55um, 55um
position = 0um, 0um, 204mm
role = "reference"
type = "Timepix3"
\end{minted}
......
......@@ -35,8 +35,9 @@ These are specified by adding a dot (\texttt{.}) between the detector and the ac
No interaction with the framework is possible during the reconstruction. Signals can however be send using keyboard shortcuts to terminate the run, either gracefully or with force. The executable understand the following signals:
\begin{itemize}
\item \texttt{CTRL+C} (SIGINT): Request a graceful shutdown of the reconstruction. This means the currently processed event is finished, while all other events requested in the configuration file are ignored. After finishing the event, the finalization stage is executed for every module to ensure all modules finish properly.
\item \texttt{CTRL+\textbackslash} (SIGQUIT): Forcefully terminates the framework. It is not recommended to use this signal as it will normally lead to the loss of all generated data. This signal should only be used when graceful termination is for any reason not possible.
\item SIGINT (\texttt{CTRL+C}): Request a graceful shutdown of the reconstruction. This means the currently processed event is finished, while all other events requested in the configuration file are ignored. After finishing the event, the finalization stage is executed for every module to ensure all modules finish properly.
\item SIGTERM: Same as SIGINT, request a graceful shutdown of the reconstruction. This signal is emitted e.g.\ by the \command{kill} command or by cluster computing schedulers to ask for a termination of the job.
\item SIGQUIT (\texttt{CTRL+\textbackslash}): Forcefully terminates the framework. It is not recommended to use this signal as it will normally lead to the loss of all generated data. This signal should only be used when graceful termination is for any reason not possible.
\end{itemize}
\section{The Clipboard}
......@@ -65,6 +66,7 @@ The currently available global parameters are:
\begin{itemize}
\item \parameter{detectors_file}: Location of the file describing the detector configuration described in Section~\ref{sec:detector_config}.
The only \textit{required} global parameter: the framework will fail to start if it is not specified.
This parameter can take multiple paths, all provided files will be combined into one geometry description of the setup.
\item \parameter{detectors_file_updated}: Location of the file that the (potentially) updated detector configuration should be written into. If this file does not already exist, it will be created. If the same file is given as for \parameter{detectors_file}, the file is overwritten with the updated values.
\item \parameter{histogram_file}: Location of the file where the ROOT output histograms of all modules will be written to. The file extension \texttt{.root} will be appended if not present. Directories within the ROOT file will be created automatically for all modules.
\item \parameter{number_of_events}: Determines the total number of events the framework should process, negative numbers allow processing of all data available.
......@@ -73,7 +75,7 @@ Defaults to $-1$.
\item \parameter{number_of_tracks}: Determines the total number of tracks the framework should reconstruct, negative numbers indicate no limit on the number of reconstructed tracks.
After reaching the specified number of events, reconstruction is stopped.
Defaults to $-1$.
\item \parameter{run_time}: Determines the wall-clock time of data acquisition the framework should reconstruct up until. Negative numbers inidcate no limit on the time slice to reconstruct.
\item \parameter{run_time}: Determines the wall-clock time of data acquisition the framework should reconstruct up until. Negative numbers indicate no limit on the time slice to reconstruct.
Defaults to $-1$.
\item \parameter{log_level}: Specifies the lowest log level which should be reported.
Possible values are \texttt{FATAL}, \texttt{STATUS}, \texttt{ERROR}, \texttt{WARNING}, \texttt{INFO} and \texttt{DEBUG}, where all options are case-insensitive.
......
......@@ -118,7 +118,7 @@ $ cmake -DCMAKE_INSTALL_PREFIX=../install/ \
\end{verbatim}
\subsection{Compilation and installation}
Compiling the framework is now a single command in the build folder created earlier (replacing \textit{\textless number\_of\_cores> \textgreater} with the number of cores to use for compilation):
Compiling the framework is now a single command in the build folder created earlier (replacing \textit{\textless number\_of\_cores\textgreater} with the number of cores to use for compilation):
\begin{verbatim}
$ make -j<number_of_cores>
\end{verbatim}
......
......@@ -71,11 +71,10 @@ The section of a configuration file template with variable geometry file and DUT
```toml
[Corryvreckan]
detectors_file = "@telescopeGeometry@"
histogramFile = "histograms_run@RunNumber@.root"
histogram_file = "histograms_run@RunNumber@.root"
number_of_events = 5000000
DUT = "@DUTName@"
log_level = WARNING
```
......@@ -84,11 +83,10 @@ When `jobsub` is executed, these placeholders are replaced with user-defined val
```toml
[Corryvreckan]
detectors_file = "my_telescope_Nov2017_1.conf"
histogramFile = "histograms_run999.root"
histogram_file = "histograms_run999.root"
number_of_events = 5000000
DUT = "W0019_G07"
log_level = WARNING
```
......
......@@ -701,7 +701,7 @@ void ModuleManager::finaliseAll() {
// Write the output histogram file
m_histogramFile->Close();
LOG(STATUS) << "Wrote histogram output file to " << global_config.getPath("histogramFile");
LOG(STATUS) << "Wrote histogram output file to " << global_config.getPath("histogram_file");
// Write out update detectors file:
if(global_config.has("detectors_file_updated")) {
......
......@@ -25,11 +25,11 @@ AlignmentDUTResidual::AlignmentDUTResidual(Configuration config, std::shared_ptr
nIterations = m_config.get<size_t>("iterations", 3);
m_pruneTracks = m_config.get<bool>("prune_tracks", false);
m_alignPosition = m_config.get<bool>("alignPosition", true);
m_alignPosition = m_config.get<bool>("align_position", true);
if(m_alignPosition) {
LOG(INFO) << "Aligning positions";
}
m_alignOrientation = m_config.get<bool>("alignOrientation", true);
m_alignOrientation = m_config.get<bool>("align_orientation", true);
if(m_alignOrientation) {
LOG(INFO) << "Aligning orientations";
}
......
......@@ -12,11 +12,11 @@ This module uses tracks for alignment. The module moves the detector is is insta
### Parameters
* `number_of_tracks`: Number of tracks used in the alignment method chosen. Default value is `20000`.
* `iterations`: Number of times the chosen alignment method is to be iterated. Default value is `3`.
* `alignPosition`: Boolean to select whether to align the X and Y displacements of the detector or not. Note that the Z displacement is never aligned. The default value is `true`.
* `alignOrientation`: Boolean to select whether to align the three rotations of the detector under consideration or not. The default value is `true`.
* `prune_tracks`: Boolean to set if tracks with a number of associated clusters > `max_associated_clusters` or with a track chi^2 > `max_track_chi2ndof` should be excluded from use in the alignment. This parameter was designed for `alignmentMethod=1`. The number of discarded tracks is outputted on terminal. Default is `False`.
* `max_associated_clusters`: Maximum number of associated clusters per track allowed when `prune_tracks=True` for the track to be used in the alignment. Default value is `1`.
* `max_track_chi2ndof`: Maximum track chi^2 value allowed when `prune_tracks=True` for the track to be used in the alignment. Default value is `10.0`.
* `align_position`: Boolean to select whether to align the X and Y displacements of the detector or not. Note that the Z displacement is never aligned. The default value is `true`.
* `align_orientation`: Boolean to select whether to align the three rotations of the detector under consideration or not. The default value is `true`.
* `prune_tracks`: Boolean to set if tracks with a number of associated clusters > `max_associated_clusters` or with a track chi^2 > `max_track_chi2ndof` should be excluded from use in the alignment. The number of discarded tracks is outputted on terminal. Default is `false`.
* `max_associated_clusters`: Maximum number of associated clusters per track allowed when `prune_tracks = true` for the track to be used in the alignment. Default value is `1`.
* `max_track_chi2ndof`: Maximum track chi^2 value allowed when `prune_tracks = true` for the track to be used in the alignment. Default value is `10.0`.
### Plots produced
For the detector under consideration, the following plots are produced:
......
......@@ -21,7 +21,7 @@ AlignmentMillepede::AlignmentMillepede(Configuration config, std::vector<std::sh
m_rescut = m_config.get<double>("residual_cut", 0.05);
m_rescut_init = m_config.get<double>("residual_cut_init", 0.6);
m_nstdev = m_config.get<int>("NStdDev", 0);
m_nstdev = m_config.get<int>("number_of_stddev", 0);
m_convergence = m_config.get<double>("convergence", 0.00001);
......
......@@ -16,7 +16,7 @@ The modules stops if the convergence, i.e. the absolute sum of all corrections o
* `dofs`: Degrees of freedom to be aligned. This parameter should be given as vector of six boolean values for the parameters "Translation X", "Translation Y", "Translation Z", "Rotation X", "Rotation Y" and "Rotation Z". The default setting is an alignment of all parameters except for "Translation Z", i.e. `dofs = true, true, false, true, true, true`.
* `residual_cut`: Residual cut to reject a track as an outlier. Default value is `0.05mm`;
* `residual_cut_init`: Initial residual cut for outlier rejection in the first iteration. This value is applied for the first iteration and replaced by `residual_cut` thereafter. Default value is `0.6mm`.
* `nstddev`: Cut to reject track candidates based on their Chi2/ndof value. Default value is `0`, i.e. the feature is disabled.
* `number_of_stddev`: Cut to reject track candidates based on their Chi2/ndof value. Default value is `0`, i.e. the feature is disabled.
* `sigmas`: Uncertainties for each of the alignment parameters. Defaults to `0.05, 0.05, 0.5, 0.005, 0.005, 0.005`.
* `convergence`: Convergence value at which the module stops iterating. Default value is `10e-5`.
......
......@@ -17,11 +17,11 @@ AlignmentTrackChi2::AlignmentTrackChi2(Configuration config, std::vector<std::sh
nIterations = m_config.get<size_t>("iterations", 3);
m_pruneTracks = m_config.get<bool>("prune_tracks", false);
m_alignPosition = m_config.get<bool>("alignPosition", true);
m_alignPosition = m_config.get<bool>("align_position", true);
if(m_alignPosition) {
LOG(INFO) << "Aligning positions";
}
m_alignOrientation = m_config.get<bool>("alignOrientation", true);
m_alignOrientation = m_config.get<bool>("align_orientation", true);
if(m_alignOrientation) {
LOG(INFO) << "Aligning orientations";
}
......
......@@ -12,11 +12,11 @@ For each telescope detector except the reference plane, this method moves the de
### Parameters
* `number_of_tracks`: Number of tracks used in the alignment method chosen. Default value is `20000`.
* `iterations`: Number of times the chosen alignment method is to be iterated. Default value is `3`.
* `alignPosition`: Boolean to select whether to align the X and Y displacements of the detector or not. Note that the Z displacement is never aligned. The default value is `true`.
* `alignOrientation`: Boolean to select whether to align the three rotations of the detector under consideration or not. The default value is `true`.
* `prune_tracks`: Boolean to set if tracks with a number of associated clusters > `max_associated_clusters` or with a track chi^2 > `max_track_chi2ndof` should be excluded from use in the alignment. This parameter was designed for `alignmentMethod=1`. The number of discarded tracks is outputted on terminal. Default is `False`.
* `max_associated_clusters`: Maximum number of associated clusters per track allowed when `prune_tracks=True` for the track to be used in the alignment. Default value is `1`.
* `max_track_chi2ndof`: Maximum track chi^2 value allowed when `prune_tracks=True` for the track to be used in the alignment. Default value is `10.0`.
* `align_position`: Boolean to select whether to align the X and Y displacements of the detector or not. Note that the Z displacement is never aligned. The default value is `true`.
* `align_orientation`: Boolean to select whether to align the three rotations of the detector under consideration or not. The default value is `true`.
* `prune_tracks`: Boolean to set if tracks with a number of associated clusters > `max_associated_clusters` or with a track chi^2 > `max_track_chi2ndof` should be excluded from use in the alignment. The number of discarded tracks is outputted on terminal. Default is `false`.
* `max_associated_clusters`: Maximum number of associated clusters per track allowed when `prune_tracks = true` for the track to be used in the alignment. Default value is `1`.
* `max_track_chi2ndof`: Maximum track chi^2 value allowed when `prune_tracks = true` for the track to be used in the alignment. Default value is `10.0`.
### Plots produced
For each detector the following plots are produced:
......
......@@ -9,8 +9,8 @@ using namespace std;
AnalysisCLICpix::AnalysisCLICpix(Configuration config, std::shared_ptr<Detector> detector)
: Module(std::move(config), detector), m_detector(detector) {
m_associationCut = m_config.get<double>("associationCut", static_cast<double>(Units::convert(100, "um")));
m_proximityCut = m_config.get<double>("proximityCut", static_cast<double>(Units::convert(125, "um")));
m_associationCut = m_config.get<double>("association_cut", static_cast<double>(Units::convert(100, "um")));
m_proximityCut = m_config.get<double>("proximity_cut", static_cast<double>(Units::convert(125, "um")));
timepix3Telescope = m_config.get<bool>("timepix3Telescope", false);
}
......
......@@ -2,19 +2,18 @@
**Maintainer**: Daniel Hynds (<daniel.hynds@cern.ch>)
**Module Type**: *DUT*
**Detector Type**: *CLICpix*
**Status**: Functional
**Status**: Outdated
### Description
This module associates CLICpix2 DUT clusters to tracks using a spatial cut (device type not checked). A significant number of analysis plots are produced.
### Parameters
* `associationCut`: Maximum distance between a track and cluster for them to be associated. Units of mm. Default value is `0.05` (50um).
* `proximityCut`: Maximum distance apart two tracks are for them to be 'close' to each other. If at the CLICpix plane there are two tracks close to each other, the DUT cluster is not associated with either track. Units of mm. Default value is `0.0005` (0.5um).
* `timepix3Telescope`: Boolean to set whether the Timepix3 telescope is being used. Default value is `false`.
* `DUT`: Name of the DUT plane. The CLICpix device is assumed to be the DUT.
* `association_cut`: Maximum distance between a track and cluster for them to be associated. Units of mm. Default value is `50um`.
* `proximity_cut`: Maximum distance apart two tracks are for them to be 'close' to each other. If at the CLICpix plane there are two tracks close to each other, the DUT cluster is not associated with either track. Units of mm. Default value is `0.5um`.
* `timepix3_telescope`: Boolean to set whether the Timepix3 telescope is being used. Default value is `false`.
### Plots produced
For the DUT the following plots are produced:
The following plots are produced:
* 2D hitmap
* Column hits histogram
......@@ -82,7 +81,7 @@ For the DUT the following plots are produced:
* Local residuals for rows for 2-pixel clusters
* 2D track intercepts
* 2D associatedd track intercepts
* 2D associated track intercepts
* 2D cluster positions in global coordinates
* 2D associated cluster positions in global coordinates
* 2D track-pixel intercepts
......@@ -104,8 +103,7 @@ For the DUT the following plots are produced:
### Usage
```toml
[CLICpixAnalysis]
associationCut = 0.005
proximityCut = 0.005
association_cut = 0.005mm
proximity_cut = 0.005mm
timepix3Telescope = true
DUT = "W0003_H05"
```
......@@ -9,9 +9,9 @@ using namespace corryvreckan;
AnalysisDUT::AnalysisDUT(Configuration config, std::shared_ptr<Detector> detector)
: Module(std::move(config), detector), m_detector(detector) {
m_timeCutFrameEdge = m_config.get<double>("timeCutFrameEdge", static_cast<double>(Units::convert(20, "ns")));
spatialCut = m_config.get<double>("spatialCut", static_cast<double>(Units::convert(50, "um")));
chi2ndofCut = m_config.get<double>("chi2ndofCut", 3.);
m_timeCutFrameEdge = m_config.get<double>("time_cut_frameedge", static_cast<double>(Units::convert(20, "ns")));
spatialCut = m_config.get<double>("spatial_cut", static_cast<double>(Units::convert(50, "um")));
chi2ndofCut = m_config.get<double>("chi2ndof_cut", 3.);
}
void AnalysisDUT::initialise() {
......
......@@ -8,10 +8,9 @@
Analysis module for CLICpix2 prototypes. This module is still work in progress, changes to functionality and behaviour are to be expected.
### Parameters
* `timeCutFrameEdge`: Parameter to discard telescope tracks at the frame edges (start and end of the current CLICpix2 frame). Defaults to `20ns`.
* `spatialCut`: Spatial cut for associating a track with a DUT cluster, defaults to `50um`.
* `chi2ndofCut`: Acceptance criterion for telescope tracks, defaults to a value of `3`.
* `DUT`: Name of the DUT plane. The CLICpix2 device is assumed to be the DUT.
* `time_cut_frameedge`: Parameter to discard telescope tracks at the frame edges (start and end of the current CLICpix2 frame). Defaults to `20ns`.
* `spatial_cut`: Spatial cut for associating a track with a DUT cluster, defaults to `50um`.
* `chi2ndof_cut`: Acceptance criterion for telescope tracks, defaults to a value of `3`.
### Plots produced
* 2D Map of associated cluster positions
......@@ -37,4 +36,3 @@ Analysis module for CLICpix2 prototypes. This module is still work in progress,
[CLICpix2Analysis]
timeCutFrameEdge = 50ns
```
......@@ -19,8 +19,8 @@ AnalysisEfficiency::AnalysisEfficiency(Configuration config, std::shared_ptr<Det
: Module(std::move(config), detector) {
m_detector = detector;
m_timeCutFrameEdge = m_config.get<double>("timeCutFrameEdge", static_cast<double>(Units::convert(20, "ns")));
m_chi2ndofCut = m_config.get<double>("chi2ndofCut", 3.);
m_timeCutFrameEdge = m_config.get<double>("time_cut_frameedge", static_cast<double>(Units::convert(20, "ns")));
m_chi2ndofCut = m_config.get<double>("chi2ndof_cut", 3.);
}
void AnalysisEfficiency::initialise() {
......
......@@ -8,8 +8,8 @@
This module measures the efficiency of the device under test by comparing its cluster positions with the interpolated track position at the DUT.
### Parameters
* `timeCutFrameEdge`: Parameter to discard telescope tracks at the frame edges (start and end of the current event window). Defaults to `20ns`.
* `chi2ndofCut`: Acceptance criterion for telescope tracks, defaults to a value of `3`.
* `time_cut_frameedge`: Parameter to discard telescope tracks at the frame edges (start and end of the current event window). Defaults to `20ns`.
* `chi2ndof_cut`: Acceptance criterion for telescope tracks, defaults to a value of `3`.
### Plots produced
* 2D Map of in-pixel efficiency
......
......@@ -2,7 +2,7 @@
**Maintainer**: Estel Perez Codina
**Module Type**: *DUT*
**Module Type**: *Timepix3*
**Status**: Immature
**Status**: Outdated
### Description
Analysis of power pulsing behavior of Timepix3 chips.
......
......@@ -10,7 +10,7 @@ using namespace std;
AnalysisTelescope::AnalysisTelescope(Configuration config, std::vector<std::shared_ptr<Detector>> detectors)
: Module(std::move(config), std::move(detectors)) {
chi2ndofCut = m_config.get<double>("chi2ndofCut", 3.);
chi2ndofCut = m_config.get<double>("chi2ndof_cut", 3.);
}
void AnalysisTelescope::initialise() {
......
......@@ -9,7 +9,7 @@ This module produces reference histograms for the telescope performance used for
Furthermore, the telescope resolution at the position of the DUT detector is plotted of Monte Carlo information is available. The Monte Carlo particle position is compared with the track interception with the DUT.
### Parameters
* `chi2ndofCut`: Chi2 over number of degrees of freedom for the track to be taken into account. Tracks with a larger value are discarded. Default value is `3`.
* `chi2ndof_cut`: Chi2 over number of degrees of freedom for the track to be taken into account. Tracks with a larger value are discarded. Default value is `3`.
### Plots produced
* Telescope resolution at position of DUT
......@@ -24,5 +24,5 @@ For each detector participating in tracking, the following plots are produced:
### Usage
```toml
[NAME]
chi2ndofCut = 3
chi2ndof_cut = 3
```
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment