Mantid
Loading...
Searching...
No Matches
BankCalibration.h
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2025 ISIS Rutherford Appleton Laboratory UKRI,
4// NScD Oak Ridge National Laboratory, European Spallation Source,
5// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
6// SPDX - License - Identifier: GPL - 3.0 +
7
8#pragma once
9
10#include "MantidDataHandling/DllConfig.h"
12#include <map>
13#include <set>
14#include <utility>
15#include <vector>
16
18
19constexpr double IGNORE_PIXEL{1.e6};
20
25class MANTID_DATAHANDLING_DLL BankCalibration {
26public:
27 BankCalibration(const double time_conversion, const std::set<detid_t> &det_in_group,
28 const std::map<detid_t, double> &calibration_map, const std::map<detid_t, double> &scale_at_sample,
29 const std::set<detid_t> &mask);
30
31 const double &value_calibration(const detid_t detid) const;
36 double value_scale_at_sample(const detid_t detid) const;
37 const detid_t &idmin() const;
38 detid_t idmax() const;
39 bool empty() const;
40
41private:
42 bool detidInRange(const detid_t detid) const;
43
44 std::vector<double> m_calibration;
45 std::vector<double> m_scale_at_sample;
47};
48
49class MANTID_DATAHANDLING_DLL BankCalibrationFactory {
50public:
51 BankCalibrationFactory(const std::map<detid_t, double> &calibration_map,
52 const std::map<detid_t, double> &scale_at_sample,
53 const std::map<size_t, std::set<detid_t>> &grouping, const std::set<detid_t> &mask,
54 const std::map<size_t, std::set<detid_t>> &bank_detids);
55
62 std::vector<BankCalibration> getCalibrations(const double time_conversion, const size_t bank_index) const;
63
64private:
65 const std::map<detid_t, double> &m_calibration_map;
66 const std::map<detid_t, double> &m_scale_at_sample;
67 const std::map<size_t, std::set<detid_t>> &m_grouping;
68 const std::set<detid_t> &m_mask;
69 const std::map<size_t, std::set<detid_t>> &m_bank_detids;
70};
71} // namespace Mantid::DataHandling::AlignAndFocusPowderSlim
const std::map< size_t, std::set< detid_t > > & m_grouping
detector ids for output workspace index
const std::map< size_t, std::set< detid_t > > & m_bank_detids
const std::map< detid_t, double > & m_calibration_map
detid: difc/difc_focussed
const std::map< detid_t, double > & m_scale_at_sample
multiplicative 0<value<1 to move neutron TOF at sample
Class that handles all the calibration constants for a bank of detectors.
int32_t detid_t
Typedef for a detector ID.