00001
00002
00003
00004
00005
00006
00007 #ifndef AIDA_IDATAPOINTSETFACTORY_H
00008 #define AIDA_IDATAPOINTSETFACTORY_H 1
00009
00010
00011
00012
00013
00014
00015 #include <string>
00016
00017 namespace AIDA {
00018
00019 class ICloud1D;
00020 class ICloud2D;
00021 class ICloud3D;
00022 class IDataPointSet;
00023 class IHistogram1D;
00024 class IHistogram2D;
00025 class IHistogram3D;
00026 class IProfile1D;
00027 class IProfile2D;
00028
00037 class IDataPointSetFactory {
00038
00039 public:
00041 virtual ~IDataPointSetFactory() { ; }
00042
00051 virtual IDataPointSet * create(const std::string & name, const std::string & title, int dimOfPoints) = 0;
00052
00060 virtual IDataPointSet * create(const std::string & nameAndTitle, int dimOfPoints) = 0;
00061
00069 virtual IDataPointSet * createCopy(const std::string & name, const IDataPointSet & dataPointSet) = 0;
00070
00077 virtual bool destroy(IDataPointSet * dataPointSet) = 0;
00078
00086 virtual IDataPointSet * create(const std::string & name, const IHistogram1D & hist) = 0;
00087
00095 virtual IDataPointSet * create(const std::string & name, const IHistogram2D & hist) = 0;
00096
00104 virtual IDataPointSet * create(const std::string & name, const IHistogram3D & hist) = 0;
00105
00113 virtual IDataPointSet * create(const std::string & name, const ICloud1D & cloud) = 0;
00114
00122 virtual IDataPointSet * create(const std::string & name, const ICloud2D & cloud) = 0;
00123
00131 virtual IDataPointSet * create(const std::string & name, const ICloud3D & cloud) = 0;
00132
00140 virtual IDataPointSet * create(const std::string & name, const IProfile1D & profile) = 0;
00141
00149 virtual IDataPointSet * create(const std::string & name, const IProfile2D & profile) = 0;
00150
00158 virtual IDataPointSet * add(const std::string & name, const IDataPointSet & dataPointSet1, const IDataPointSet & dataPointSet2) = 0;
00159
00169 virtual IDataPointSet * subtract(const std::string & name, const IDataPointSet & dataPointSet1, const IDataPointSet & dataPointSet2) = 0;
00170
00180 virtual IDataPointSet * multiply(const std::string & name, const IDataPointSet & dataPointSet1, const IDataPointSet & dataPointSet2) = 0;
00181
00191 virtual IDataPointSet * divide(const std::string & name, const IDataPointSet & dataPointSet1, const IDataPointSet & dataPointSet2) = 0;
00192
00202 virtual IDataPointSet * weightedMean(const std::string & name, const IDataPointSet & dataPointSet1, const IDataPointSet & dataPointSet2) = 0;
00203 };
00204 };
00205 #endif