Multiply.h 3.34 KB
Newer Older
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
#ifndef MANTID_ALGORITHM_MULTIPLY_H_
#define MANTID_ALGORITHM_MULTIPLY_H_

//----------------------------------------------------------------------
// Includes
//----------------------------------------------------------------------
#include "MantidAlgorithms/CommutativeBinaryOperation.h"

namespace Mantid
{
  namespace Algorithms
  {
    /** 
    Multiply performs the product of two input workspaces.
    It inherits from the Algorithm class, and overrides
    the init()&+ exec()  methods.

    Required Properties:
    <UL>
    <LI> InputWorkspace1 - The name of the workspace </LI>
    <LI> InputWorkspace2 - The name of the workspace </LI>
    <LI> OutputWorkspace - The name of the workspace in which to store the product data </LI>
    </UL>

    @author Nick Draper
    @date 14/12/2007

Nick Draper's avatar
Nick Draper committed
28
    Copyright &copy; 2007-9 ISIS Rutherford Appleton Laboratory & NScD Oak Ridge National Laboratory
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

    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://svn.mantidproject.org/mantid/trunk/Code/Mantid>    
    */
    class DLLExport Multiply : public CommutativeBinaryOperation
    {
    public:
      /// Default constructor
      Multiply() : CommutativeBinaryOperation() {};
      /// Destructor
      virtual ~Multiply() {};
      /// Algorithm's name for identification overriding a virtual method
      virtual const std::string name() const { return "Multiply";}
      /// Algorithm's version for identification overriding a virtual method
57
      virtual int version() const { return 1;}
58
59

    private:
60
61
      /// Sets documentation strings for this algorithm
      virtual void initDocs();
62
63
64
65
66
      // Overridden BinaryOperation methods
      void performBinaryOperation(const MantidVec& lhsX, const MantidVec& lhsY, const MantidVec& lhsE,
                                  const MantidVec& rhsY, const MantidVec& rhsE, MantidVec& YOut, MantidVec& EOut);
      void performBinaryOperation(const MantidVec& lhsX, const MantidVec& lhsY, const MantidVec& lhsE,
                                  const double& rhsY, const double& rhsE, MantidVec& YOut, MantidVec& EOut);
67
68
69
70
71
72
73
74
75
76
77

      virtual void performEventBinaryOperation(DataObjects::EventList & lhs,
          const DataObjects::EventList & rhs);

      virtual void performEventBinaryOperation(DataObjects::EventList & lhs,
          const MantidVec& rhsX, const MantidVec& rhsY, const MantidVec& rhsE);

      virtual void performEventBinaryOperation(DataObjects::EventList & lhs,
          const double& rhsY, const double& rhsE);

      void checkRequirements();
78
      virtual bool checkSizeCompatibility(const API::MatrixWorkspace_const_sptr lhs,const API::MatrixWorkspace_const_sptr rhs) const;
79
      
80
81


82
83
84
85
86
87
    };

  } // namespace Algorithm
} // namespace Mantid

#endif /*MANTID_ALGORITHM_MULTIPLY_H_*/