/
CorrectKiKf.h
98 lines (81 loc) · 3.46 KB
/
CorrectKiKf.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
#ifndef MANTID_ALGORITHMS_CORRECTKIKF_H_
#define MANTID_ALGORITHMS_CORRECTKIKF_H_
//----------------------------------------------------------------------
// Includes
//----------------------------------------------------------------------
#include "MantidAPI/Algorithm.h"
namespace Mantid {
namespace Algorithms {
/** Multiplies the workspace with k_i/k_f
The initial workspace must have energy transfer units.
The algorithm will throw an error if the input workspace is an event workspace
For Direct Geometry instruments the fixed energy is E_i, and the final
energy E_f=Ei-E.
For Indirect Geometry, the fixed energy is E_f, the initial energy is
E_i=E+E_f.
Each element of the workspace is multiplied by k_i/k_f=SQRT(E_i/E_f)
Required Properties:
<UL>
<LI> InputWorkspace - The name of the input workspace. </LI>
<LI> OutputWorkspace - The name of the output workspace. </LI>
<LI> Emode - The energy mode (1=direct
geometry, 2=indirect geometry) </LI>
<LI> Efixed - Value of fixed energy: EI
(emode=1)
or
EF
(emode=2) (meV) </LI>
</UL>
To do: check if instrument type is same as Emode
@author Andrei Savici
@date 10/21/2010
Copyright © 2010 ISIS Rutherford Appleton Laboratory, NScD Oak Ridge
National Laboratory & European Spallation Source
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 CorrectKiKf : public API::Algorithm {
public:
/// Algorithm's name for identification overriding a virtual method
const std::string name() const override { return "CorrectKiKf"; }
/// Summary of algorithms purpose
const std::string summary() const override {
return "Performs k_i/k_f multiplication, in order to transform "
"differential scattering cross section into dynamic structure "
"factor.";
}
/// Algorithm's version for identification overriding a virtual method
int version() const override { return 1; }
/// Algorithm's category for identification overriding a virtual method
const std::string category() const override {
return "Inelastic\\Corrections;CorrectionFunctions\\SpecialCorrections";
}
private:
// Overridden Algorithm methods
void init() override;
void exec() override;
void execEvent();
/**
* Execute CorrectKiKf for event lists
* @param wevector the list of events to correct
* @param efixed the value of the fixed energy
* @param emodeStr the energy mode description
*/
template <class T>
void correctKiKfEventHelper(std::vector<T> &wevector, double efixed,
const std::string emodeStr);
};
} // namespace Algorithm
} // namespace Mantid
#endif /*MANTID_ALGORITHMS_CORRECTKIKF_H_*/