/
PoldiTruncateData.h
101 lines (74 loc) · 3.39 KB
/
PoldiTruncateData.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#ifndef MANTID_SINQ_POLDITRUNCATEDATA_H_
#define MANTID_SINQ_POLDITRUNCATEDATA_H_
#include "MantidKernel/System.h"
#include "MantidAPI/Algorithm.h"
#include "MantidSINQ/PoldiUtilities/PoldiAbstractChopper.h"
namespace Mantid {
namespace Poldi {
/** PoldiTruncateData :
POLDI data time bin count and width are directly connected to the
chopper rotation speed. In the raw data, there are some additional
bins at the end of each spectrum. These extra bins should not contain
any data. If there are more than just a few extra counts in those bins,
something is wrong with the measurement.
This algorithm checks these extra bins (if present) and outputs
a table with the counts in each bin summed over all spectra.
Then these extra bins are removed, so data analysis can carry on properly.
@author Michael Wedel, Paul Scherrer Institut - SINQ
@date 11/06/2014
Copyright © 2014 PSI-MSS
This file is part of Mantid.
Mantid is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
Mantid is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
File change history is stored at: <https://github.com/mantidproject/mantid>
Code Documentation is available at: <http://doxygen.mantidproject.org>
*/
class DLLExport PoldiTruncateData : public API::Algorithm {
public:
PoldiTruncateData();
~PoldiTruncateData() override {}
const std::string name() const override { return "PoldiTruncateData"; }
int version() const override;
const std::string category() const override;
const std::string summary() const override;
size_t getCalculatedBinCount();
size_t getActualBinCount();
protected:
void setChopperFromWorkspace(API::MatrixWorkspace_const_sptr workspace);
void setChopper(PoldiAbstractChopper_sptr chopper);
void setTimeBinWidthFromWorkspace(API::MatrixWorkspace_const_sptr workspace);
void setTimeBinWidth(double timeBinWidth);
void setActualBinCount(size_t actualBinCount);
double getMaximumTimeValue(size_t calculatedBinCount);
double getMinimumExtraTimeValue(size_t calculatedBinCount);
API::MatrixWorkspace_sptr
getCroppedWorkspace(API::MatrixWorkspace_sptr workspace);
API::MatrixWorkspace_sptr
getExtraCountsWorkspace(API::MatrixWorkspace_sptr workspace);
API::MatrixWorkspace_sptr
getWorkspaceBelowX(API::MatrixWorkspace_sptr workspace, double x);
API::MatrixWorkspace_sptr
getWorkspaceAboveX(API::MatrixWorkspace_sptr workspace, double x);
API::Algorithm_sptr
getCropAlgorithmForWorkspace(API::MatrixWorkspace_sptr workspace);
API::MatrixWorkspace_sptr getOutputWorkspace(API::Algorithm_sptr algorithm);
API::MatrixWorkspace_sptr
getSummedSpectra(API::MatrixWorkspace_sptr workspace);
PoldiAbstractChopper_sptr m_chopper;
double m_timeBinWidth;
size_t m_actualBinCount;
private:
void init() override;
void exec() override;
};
} // namespace SINQ
} // namespace Mantid
#endif /* MANTID_SINQ_POLDITRUNCATEDATA_H_ */