-
Notifications
You must be signed in to change notification settings - Fork 122
/
NormaliseByDetector.h
63 lines (54 loc) · 2.41 KB
/
NormaliseByDetector.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Mantid Repository : https://github.com/mantidproject/mantid
//
// Copyright © 2012 ISIS Rutherford Appleton Laboratory UKRI,
// NScD Oak Ridge National Laboratory, European Spallation Source,
// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
// SPDX - License - Identifier: GPL - 3.0 +
#pragma once
#include "MantidAPI/Algorithm.h"
#include "MantidAlgorithms/DllConfig.h"
#include "MantidGeometry/Instrument/Detector.h"
#include "MantidGeometry/Instrument/FitParameter.h"
#include <memory>
namespace Mantid {
namespace API {
/// Forward declaration for MatrixWorkspace.
class MatrixWorkspace;
class Progress;
} // namespace API
namespace Algorithms {
/** NormaliseByDetector : Normalises a workspace with respect to the detector
efficiency function stored against components in the instrument parameters.
See wiki for more details.
Detector efficiency functions are calculated using the wavelengths in the
input workspace.
@date 2012-07-17
*/
class MANTID_ALGORITHMS_DLL NormaliseByDetector final : public API::Algorithm {
public:
NormaliseByDetector(bool parallelExecution = true);
const std::string name() const override;
/// Summary of algorithms purpose
const std::string summary() const override { return "Normalise the input workspace by the detector efficiency."; }
int version() const override;
const std::vector<std::string> seeAlso() const override { return {"Divide"}; }
const std::string category() const override;
private:
/// Flag to indicate that the histograms should be processed in parallel.
const bool m_parallelExecution;
/// Try to parse a function parameter and extract the correctly typed
/// parameter.
const Mantid::Geometry::FitParameter tryParseFunctionParameter(const Mantid::Geometry::Parameter_sptr ¶meter,
const Geometry::IDetector &det);
/// Block to process histograms.
std::shared_ptr<Mantid::API::MatrixWorkspace>
processHistograms(const std::shared_ptr<Mantid::API::MatrixWorkspace> &inWS);
/// Process indivdual histogram.
void processHistogram(size_t wsIndex, const std::shared_ptr<const Mantid::API::MatrixWorkspace> &inWS,
const std::shared_ptr<Mantid::API::MatrixWorkspace> &denominatorWS,
Mantid::API::Progress &prog);
void init() override;
void exec() override;
};
} // namespace Algorithms
} // namespace Mantid