Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:28:08

0001 // -*- C++ -*-
0002 // AID-GENERATED
0003 // =========================================================================
0004 // This class was generated by AID - Abstract Interface Definition          
0005 // DO NOT MODIFY, but use the org.freehep.aid.Aid utility to regenerate it. 
0006 // =========================================================================
0007 #ifndef AIDA_IDATAPOINTSETFACTORY_H
0008 #define AIDA_IDATAPOINTSETFACTORY_H 1
0009 
0010 //  This file is part of the AIDA library
0011 //  Copyright (C) 2002 by the AIDA team.  All rights reserved.
0012 //  This library is free software and under the terms of the
0013 //  GNU Library General Public License described in the LGPL.txt 
0014 
0015 #include <string>
0016 #include <vector>
0017 
0018 namespace AIDA {
0019 
0020 class ICloud1D;
0021 class ICloud2D;
0022 class ICloud3D;
0023 class IDataPointSet;
0024 class IHistogram1D;
0025 class IHistogram2D;
0026 class IHistogram3D;
0027 class IProfile1D;
0028 class IProfile2D;
0029 
0030 /**
0031  * Basic user-level interface for creating a factory
0032  * of IDataPointSet.
0033  * 
0034  * @author The AIDA team (http://aida.freehep.org/)
0035  *
0036  */
0037 
0038 class IDataPointSetFactory {
0039 
0040 public: 
0041     /// Destructor.
0042     virtual ~IDataPointSetFactory() { /* nop */; }
0043 
0044     /**
0045      * Create an empty IDataPointSet.
0046      * @param path        The path of the IDataPointSet. The path can either be a relative or full path.
0047      *                    ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0048      *                    All the directories in the path must exist. The characther `/` cannot be used
0049      *                    in names; it is only used to delimit directories within paths.
0050      * @param title       The title of the IDataPointSet.
0051      * @param dimOfPoints The dimension of the IDataPoints that can be stored in the set.
0052      * @return            The newly created IDataPointSet.
0053      *
0054      */
0055     virtual IDataPointSet * create(const std::string & path, const std::string & title, int dimOfPoints) = 0;
0056 
0057     /**
0058      * Create an empty IDataPointSet.
0059      * @param pathAndTitle The path of the IDataPointSet. The path can either be a relative or full path.
0060      *                     The last part of the path is used as the title.
0061      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0062      *                     All the directories in the path must exist. The characther `/` cannot be used
0063      *                     in names; it is only used to delimit directories within paths.
0064      * @param dimOfPoints  The dimension of the IDataPoints that can be stored in the set.
0065      * @return             The newly created IDataPointSet.
0066      *
0067      */
0068     virtual IDataPointSet * create(const std::string & pathAndTitle, int dimOfPoints) = 0;
0069 
0070     /**
0071      * Create a two dimensional IDataPointSet providing the data along y (the x value is 
0072      * the index of the y value in the array).
0073      * @param path  The path of the IDataPointSet. The path can either be a relative or full path.
0074      *              ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0075      *              All the directories in the path must exist. The characther `/` cannot be used
0076      *              in names; it is only used to delimit directories within paths.
0077      * @param title The title of the IDataPointSet.
0078      * @param y     The array of the y values
0079      * @param ey    The array with the symmetric errors on y
0080      * @return      The created IDataPointSet.
0081      *
0082      */
0083     virtual IDataPointSet * createY(const std::string & path, const std::string & title, const std::vector<double>  & y, const std::vector<double>  & ey) = 0;
0084 
0085     /**
0086      * Create a two dimensional IDataPointSet providing the data along y (the x value is 
0087      * the index of the y value in the array).
0088      * @param path  The path of the IDataPointSet. The path can either be a relative or full path.
0089      *              ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0090      *              All the directories in the path must exist. The characther `/` cannot be used
0091      *              in names; it is only used to delimit directories within paths.
0092      * @param title The title of the IDataPointSet.
0093      * @param y     The array of the y values
0094      * @param eyp   The array with the plus errors on y
0095      * @param eym   The array with the minus errors on y
0096      * @return      The created IDataPointSet.
0097      *
0098      */
0099     virtual IDataPointSet * createY(const std::string & path, const std::string & title, const std::vector<double>  & y, const std::vector<double>  & eyp, const std::vector<double>  & eym) = 0;
0100 
0101     /**
0102      * Create a two dimensional IDataPointSet providing the data along y (the x value is 
0103      * the index of the y value in the array).
0104      * @param pathAndTitle The path of the IDataPointSet. The path can either be a relative or full path.
0105      *                     The last part of the path is used as the title.
0106      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0107      *                     All the directories in the path must exist. The characther `/` cannot be used
0108      *                     in names; it is only used to delimit directories within paths.
0109      * @param y            The array of the y values
0110      * @param ey           The array with the symmetric errors on y
0111      * @return             The created IDataPointSet.
0112      *
0113      */
0114     virtual IDataPointSet * createY(const std::string & pathAndTitle, const std::vector<double>  & y, const std::vector<double>  & ey) = 0;
0115 
0116     /**
0117      * Create a two dimensional IDataPointSet providing the data along y (the x value is 
0118      * the index of the y value in the array).
0119      * @param pathAndTitle The path of the IDataPointSet. The path can either be a relative or full path.
0120      *                     The last part of the path is used as the title.
0121      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0122      *                     All the directories in the path must exist. The characther `/` cannot be used
0123      *                     in names; it is only used to delimit directories within paths.
0124      * @param y            The array of the y values
0125      * @param eyp          The array with the plus errors on y
0126      * @param eym          The array with the minus errors on y
0127      * @return             The created IDataPointSet.
0128      *
0129      */
0130     virtual IDataPointSet * createY(const std::string & pathAndTitle, const std::vector<double>  & y, const std::vector<double>  & eyp, const std::vector<double>  & eym) = 0;
0131 
0132     /**
0133      * Create a two dimensional IDataPointSet providing the data along x (the y value is 
0134      * the index of the x value in the array).
0135      * @param path  The path of the IDataPointSet. The path can either be a relative or full path.
0136      *              ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0137      *              All the directories in the path must exist. The characther `/` cannot be used
0138      *              in names; it is only used to delimit directories within paths.
0139      * @param title The title of the IDataPointSet.
0140      * @param x     The array of the x values
0141      * @param ex    The array with the symmetric errors on x
0142      * @return      The created IDataPointSet.
0143      *
0144      */
0145     virtual IDataPointSet * createX(const std::string & path, const std::string & title, const std::vector<double>  & x, const std::vector<double>  & ex) = 0;
0146 
0147     /**
0148      * Create a two dimensional IDataPointSet providing the data along x (the y value is 
0149      * the index of the x value in the array).
0150      * @param path  The path of the IDataPointSet. The path can either be a relative or full path.
0151      *              ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0152      *              All the directories in the path must exist. The characther `/` cannot be used
0153      *              in names; it is only used to delimit directories within paths.
0154      * @param title The title of the IDataPointSet.
0155      * @param x     The array of the x values
0156      * @param exp   The array with the plus errors on x
0157      * @param exm   The array with the minus errors on x
0158      * @return      The created IDataPointSet.
0159      *
0160      */
0161     virtual IDataPointSet * createX(const std::string & path, const std::string & title, const std::vector<double>  & x, const std::vector<double>  & exp, const std::vector<double>  & exm) = 0;
0162 
0163     /**
0164      * Create a two dimensional IDataPointSet providing the data along x (the y value is 
0165      * the index of the x value in the array).
0166      * @param pathAndTitle The path of the IDataPointSet. The path can either be a relative or full path.
0167      *                     The last part of the path is used as the title.
0168      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0169      *                     All the directories in the path must exist. The characther `/` cannot be used
0170      *                     in names; it is only used to delimit directories within paths.
0171      * @param x            The array of the x values
0172      * @param ex           The array with the symmetric errors on x
0173      * @return             The created IDataPointSet.
0174      *
0175      */
0176     virtual IDataPointSet * createX(const std::string & pathAndTitle, const std::vector<double>  & x, const std::vector<double>  & ex) = 0;
0177 
0178     /**
0179      * Create a two dimensional IDataPointSet providing the data along x (the y value is 
0180      * the index of the x value in the array).
0181      * @param pathAndTitle The path of the IDataPointSet. The path can either be a relative or full path.
0182      *                     The last part of the path is used as the title.
0183      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0184      *                     All the directories in the path must exist. The characther `/` cannot be used
0185      *                     in names; it is only used to delimit directories within paths.
0186      * @param x            The array of the x values
0187      * @param exp          The array with the plus errors on x
0188      * @param exm          The array with the minus errors on x
0189      * @return             The created IDataPointSet.
0190      *
0191      */
0192     virtual IDataPointSet * createX(const std::string & pathAndTitle, const std::vector<double>  & x, const std::vector<double>  & exp, const std::vector<double>  & exm) = 0;
0193 
0194     /**
0195      * Create a two dimensional IDataPointSet providing the data.
0196      * @param path  The path of the IDataPointSet. The path can either be a relative or full path.
0197      *              ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0198      *              All the directories in the path must exist. The characther `/` cannot be used
0199      *              in names; it is only used to delimit directories within paths.
0200      * @param title The title of the IDataPointSet.
0201      * @param x     The array of the x values
0202      * @param y     The array of the y values
0203      * @param exp   The array with the plus errors on x
0204      * @param eyp   The array with the plus errors on y
0205      * @param exm   The array with the minus errors on x
0206      * @param eym   The array with the minus errors on y
0207      * @return      The created IDataPointSet.
0208      *
0209      */
0210     virtual IDataPointSet * createXY(const std::string & path, const std::string & title, const std::vector<double>  & x, const std::vector<double>  & y, const std::vector<double>  & exp, const std::vector<double>  & eyp, const std::vector<double>  & exm, const std::vector<double>  & eym) = 0;
0211 
0212     /**
0213      * Create a two dimensional IDataPointSet providing the data.
0214      * @param path  The path of the IDataPointSet. The path can either be a relative or full path.
0215      *              ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0216      *              All the directories in the path must exist. The characther `/` cannot be used
0217      *              in names; it is only used to delimit directories within paths.
0218      * @param title The title of the IDataPointSet.
0219      * @param x     The array of the x values
0220      * @param y     The array of the y values
0221      * @param ex    The array with the symmetric errors on x
0222      * @param ey    The array with the symmetric errors on y
0223      * @return      The created IDataPointSet.
0224      *
0225      */
0226     virtual IDataPointSet * createXY(const std::string & path, const std::string & title, const std::vector<double>  & x, const std::vector<double>  & y, const std::vector<double>  & ex, const std::vector<double>  & ey) = 0;
0227 
0228     /**
0229      * Create a two dimensional IDataPointSet providing the data.
0230      * @param pathAndTitle The path of the IDataPointSet. The path can either be a relative or full path.
0231      *                     The last part of the path is used as the title.
0232      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0233      *                     All the directories in the path must exist. The characther `/` cannot be used
0234      *                     in names; it is only used to delimit directories within paths.
0235      * @param x            The array of the x values
0236      * @param y            The array of the y values
0237      * @param exp          The array with the plus errors on x
0238      * @param eyp          The array with the plus errors on y
0239      * @param exm          The array with the minus errors on x
0240      * @param eym          The array with the minus errors on y
0241      * @return             The created IDataPointSet.
0242      *
0243      */
0244     virtual IDataPointSet * createXY(const std::string & pathAndTitle, const std::vector<double>  & x, const std::vector<double>  & y, const std::vector<double>  & exp, const std::vector<double>  & eyp, const std::vector<double>  & exm, const std::vector<double>  & eym) = 0;
0245 
0246     /**
0247      * Create a two dimensional IDataPointSet providing the data.
0248      * @param pathAndTitle The path of the IDataPointSet. The path can either be a relative or full path.
0249      *                     The last part of the path is used as the title.
0250      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0251      *                     All the directories in the path must exist. The characther `/` cannot be used
0252      *                     in names; it is only used to delimit directories within paths.
0253      * @param x            The array of the x values
0254      * @param y            The array of the y values
0255      * @param ex           The array with the symmetric errors on x
0256      * @param ey           The array with the symmetric errors on y
0257      * @return             The created IDataPointSet.
0258      *
0259      */
0260     virtual IDataPointSet * createXY(const std::string & pathAndTitle, const std::vector<double>  & x, const std::vector<double>  & y, const std::vector<double>  & ex, const std::vector<double>  & ey) = 0;
0261 
0262     /**
0263      * Create a three dimensional IDataPointSet providing the data.
0264      * @param path  The path of the IDataPointSet. The path can either be a relative or full path.
0265      *              ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0266      *              All the directories in the path must exist. The characther `/` cannot be used
0267      *              in names; it is only used to delimit directories within paths.
0268      * @param title The title of the IDataPointSet.
0269      * @param x     The array of the x values
0270      * @param y     The array of the y values
0271      * @param z     The array of the z values
0272      * @param exp   The array with the plus errors on x
0273      * @param eyp   The array with the plus errors on y
0274      * @param ezp   The array with the plus errors on z
0275      * @param exm   The array with the minus errors on x
0276      * @param eym   The array with the minus errors on y
0277      * @param ezm   The array with the minus errors on z
0278      * @return      The created IDataPointSet.
0279      *
0280      */
0281     virtual IDataPointSet * createXYZ(const std::string & path, const std::string & title, const std::vector<double>  & x, const std::vector<double>  & y, const std::vector<double>  & z, const std::vector<double>  & exp, const std::vector<double>  & eyp, const std::vector<double>  & ezp, const std::vector<double>  & exm, const std::vector<double>  & eym, const std::vector<double>  & ezm) = 0;
0282 
0283     /**
0284      * Create a three dimensional IDataPointSet providing the data.
0285      * @param path  The path of the IDataPointSet. The path can either be a relative or full path.
0286      *              ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0287      *              All the directories in the path must exist. The characther `/` cannot be used
0288      *              in names; it is only used to delimit directories within paths.
0289      * @param title The title of the IDataPointSet.
0290      * @param x     The array of the x values
0291      * @param y     The array of the y values
0292      * @param z     The array of the z values
0293      * @param ex    The array with the symmetric errors on x
0294      * @param ey    The array with the symmetric errors on y
0295      * @param ez    The array with the symmetric errors on z
0296      * @return      The created IDataPointSet.
0297      *
0298      */
0299     virtual IDataPointSet * createXYZ(const std::string & path, const std::string & title, const std::vector<double>  & x, const std::vector<double>  & y, const std::vector<double>  & z, const std::vector<double>  & ex, const std::vector<double>  & ey, const std::vector<double>  & ez) = 0;
0300 
0301     /**
0302      * Create a two dimensional IDataPointSet providing the data.
0303      * @param pathAndTitle The path of the IDataPointSet. The path can either be a relative or full path.
0304      *                     The last part of the path is used as the title.
0305      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0306      *                     All the directories in the path must exist. The characther `/` cannot be used
0307      *                     in names; it is only used to delimit directories within paths.
0308      * @param x            The array of the x values
0309      * @param y            The array of the y values
0310      * @param z            The array of the z values
0311      * @param exp          The array with the plus errors on x
0312      * @param eyp          The array with the plus errors on y
0313      * @param ezp          The array with the plus errors on z
0314      * @param exm          The array with the minus errors on x
0315      * @param eym          The array with the minus errors on y
0316      * @param ezm          The array with the minus errors on z
0317      * @return             The created IDataPointSet.
0318      *
0319      */
0320     virtual IDataPointSet * createXYZ(const std::string & pathAndTitle, const std::vector<double>  & x, const std::vector<double>  & y, const std::vector<double>  & z, const std::vector<double>  & exp, const std::vector<double>  & eyp, const std::vector<double>  & ezp, const std::vector<double>  & exm, const std::vector<double>  & eym, const std::vector<double>  & ezm) = 0;
0321 
0322     /**
0323      * Create a two dimensional IDataPointSet providing the data.
0324      * @param pathAndTitle The path of the IDataPointSet. The path can either be a relative or full path.
0325      *                     The last part of the path is used as the title.
0326      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0327      *                     All the directories in the path must exist. The characther `/` cannot be used
0328      *                     in names; it is only used to delimit directories within paths.
0329      * @param x            The array of the x values
0330      * @param y            The array of the y values
0331      * @param z            The array of the z values
0332      * @param exp          The array with the symmetric errors on x
0333      * @param eyp          The array with the symmetric errors on y
0334      * @param ezp          The array with the symmetric errors on z
0335      * @return             The created IDataPointSet.
0336      *
0337      */
0338     virtual IDataPointSet * createXYZ(const std::string & pathAndTitle, const std::vector<double>  & x, const std::vector<double>  & y, const std::vector<double>  & z, const std::vector<double>  & ex, const std::vector<double>  & ey, const std::vector<double>  & ez) = 0;
0339 
0340     /**
0341      * Make a copy of a given IDataPointSet.
0342      * @param path         The path of the IDataPointSet. The path can either be a relative or full path.
0343      *                     ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0344      *                     All the directories in the path must exist. The characther `/` cannot be used
0345      *                     in names; it is only used to delimit directories within paths.
0346      * @param dataPointSet The IDataPointSet to be copied.
0347      * @return             The copy of the given IDataPointSet.
0348      *
0349      */
0350     virtual IDataPointSet * createCopy(const std::string & path, const IDataPointSet & dataPointSet) = 0;
0351 
0352     /**
0353      * Destroy a given IDataPointSet.
0354      * @param dataPointSet  The IDataPointSet to be destroyed.
0355      * @return false If dataPointSet cannot be destroyed.
0356      *
0357      */
0358     virtual bool destroy(IDataPointSet * dataPointSet) = 0;
0359 
0360     /**
0361      * Create an IDataPointSet from an IHistogram1D.
0362      * @param path    The path of the IDataPointSet. The path can either be a relative or full path.
0363      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0364      *                All the directories in the path must exist. The characther `/` cannot be used
0365      *                in names; it is only used to delimit directories within paths.
0366      * @param hist    The IHistogram1D from which the data is taken.
0367      * @param options Options, currently not specified
0368      * @return        The newly created IDataPointSet.
0369      *
0370      */
0371     virtual IDataPointSet * create(const std::string & path, const IHistogram1D & hist, const std::string & options = "") = 0;
0372 
0373     /**
0374      * Create an IDataPointSet from an IHistogram2D.
0375      * @param path    The path of the IDataPointSet. The path can either be a relative or full path.
0376      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0377      *                All the directories in the path must exist. The characther `/` cannot be used
0378      *                in names; it is only used to delimit directories within paths.
0379      * @param hist    The IHistogram2D from which the data is taken.
0380      * @param options Options, currently not specified
0381      * @return        The newly created IDataPointSet.
0382      *
0383      */
0384     virtual IDataPointSet * create(const std::string & path, const IHistogram2D & hist, const std::string & options = "") = 0;
0385 
0386     /**
0387      * Create an IDataPointSet from an IHistogram3D.
0388      * @param path    The path of the IDataPointSet. The path can either be a relative or full path.
0389      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0390      *                All the directories in the path must exist. The characther `/` cannot be used
0391      *                in names; it is only used to delimit directories within paths.
0392      * @param hist    The IHistogram3D from which the data is taken.
0393      * @param options Options, currently not specified
0394      * @return        The newly created IDataPointSet.
0395      *
0396      */
0397     virtual IDataPointSet * create(const std::string & path, const IHistogram3D & hist, const std::string & options = "") = 0;
0398 
0399     /**
0400      * Create an IDataPointSet from an ICloud1D.
0401      * @param path    The path of the IDataPointSet. The path can either be a relative or full path.
0402      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0403      *                All the directories in the path must exist. The characther `/` cannot be used
0404      *                in names; it is only used to delimit directories within paths.
0405      * @param cloud   The ICloud1D from which the data is taken.
0406      * @param options Options, currently not specified
0407      * @return        The newly created IDataPointSet.
0408      *
0409      */
0410     virtual IDataPointSet * create(const std::string & path, const ICloud1D & cloud, const std::string & options = "") = 0;
0411 
0412     /**
0413      * Create an IDataPointSet from an ICloud2D.
0414      * @param path    The path of the IDataPointSet. The path can either be a relative or full path.
0415      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0416      *                All the directories in the path must exist. The characther `/` cannot be used
0417      *                in names; it is only used to delimit directories within paths.
0418      * @param cloud   The ICloud2D from which the data is taken.
0419      * @param options Options, currently not specified
0420      * @return        The newly created IDataPointSet.
0421      *
0422      */
0423     virtual IDataPointSet * create(const std::string & path, const ICloud2D & cloud, const std::string & options = "") = 0;
0424 
0425     /**
0426      * Create an IDataPointSet from an ICloud3D.
0427      * @param path    The path of the IDataPointSet. The path can either be a relative or full path.
0428      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0429      *                All the directories in the path must exist. The characther `/` cannot be used
0430      *                in names; it is only used to delimit directories within paths.
0431      * @param cloud   The ICloud3D from which the data is taken.
0432      * @param options Options, currently not specified
0433      * @return        The newly created IDataPointSet.
0434      *
0435      */
0436     virtual IDataPointSet * create(const std::string & path, const ICloud3D & cloud, const std::string & options = "") = 0;
0437 
0438     /**
0439      * Create an IDataPointSet from an IProfile1D.
0440      * @param path    The path of the IDataPointSet. The path can either be a relative or full path.
0441      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0442      *                All the directories in the path must exist. The characther `/` cannot be used
0443      *                in names; it is only used to delimit directories within paths.
0444      * @param profile The IProfile1D from which the data is taken.
0445      * @param options Options, currently not specified
0446      * @return        The newly created IDataPointSet.
0447      *
0448      */
0449     virtual IDataPointSet * create(const std::string & path, const IProfile1D & profile, const std::string & options = "") = 0;
0450 
0451     /**
0452      * Create an IDataPointSet from an IProfile2D.
0453      * @param path    The path of the IDataPointSet. The path can either be a relative or full path.
0454      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0455      *                All the directories in the path must exist. The characther `/` cannot be used
0456      *                in names; it is only used to delimit directories within paths.
0457      * @param profile The IProfile2D from which the data is taken.
0458      * @param options Options, currently not specified
0459      * @return        The newly created IDataPointSet.
0460      *
0461      */
0462     virtual IDataPointSet * create(const std::string & path, const IProfile2D & profile, const std::string & options = "") = 0;
0463 
0464     /**
0465      * Add two IDataSetPoint, point by point and measurement by measurement.
0466      * @param path          The path of resulting the IDataPointSet. The path can either be a relative or full path.
0467      *                      ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0468      *                      All the directories in the path must exist. The characther `/` cannot be used
0469      *                      in names; it is only used to delimit directories within paths.
0470      * @param dataPointSet1 The first member of the addition.
0471      * @param dataPointSet2 The second member of the addition.
0472      *                      if a directory in the path does not exist, or the path is illegal.
0473      *
0474      */
0475     virtual IDataPointSet * add(const std::string & path, const IDataPointSet & dataPointSet1, const IDataPointSet & dataPointSet2) = 0;
0476 
0477     /**
0478      * Subtract two IDataSetPoint, point by point and measurement by measurement.
0479      * @param path          The path of the resulting IDataPointSet. The path can either be a relative or full path.
0480      *                      ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0481      *                      All the directories in the path must exist. The characther `/` cannot be used
0482      *                      in names; it is only used to delimit directories within paths.
0483      * @param dataPointSet1 The first member of the subtraction.
0484      * @param dataPointSet2 The second member of the subtraction.
0485      * @param strategy      The strategy of how to perform the subtraction. The default corresponds to
0486      *                      uncorrelated Gaussian error propagation.
0487      *                      if a directory in the path does not exist, or the path is illegal.
0488      *
0489      */
0490     virtual IDataPointSet * subtract(const std::string & path, const IDataPointSet & dataPointSet1, const IDataPointSet & dataPointSet2) = 0;
0491 
0492     /**
0493      * Multiply two IDataSetPoint, point by point and measurement by measurement.
0494      * @param path          The path of the resulting IDataPointSet. The path can either be a relative or full path.
0495      *                      ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0496      *                      All the directories in the path must exist. The characther `/` cannot be used
0497      *                      in names; it is only used to delimit directories within paths.
0498      * @param dataPointSet1 The first member of the multiplication.
0499      * @param dataPointSet2 The second member of the multiplication.
0500      * @param strategy      The strategy of how to perform the multiplication. The default corresponds to
0501      *                      uncorrelated Gaussian error propagation.
0502      *                      if a directory in the path does not exist, or the path is illegal.
0503      *
0504      */
0505     virtual IDataPointSet * multiply(const std::string & path, const IDataPointSet & dataPointSet1, const IDataPointSet & dataPointSet2) = 0;
0506 
0507     /**
0508      * Divide two IDataSetPoint, point by point and measurement by measurement.
0509      * @param path          The path of resulting the IDataPointSet. The path can either be a relative or full path.
0510      *                      ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0511      *                      All the directories in the path must exist. The characther `/` cannot be used
0512      *                      in names; it is only used to delimit directories within paths.
0513      * @param dataPointSet1 The first member of the division.
0514      * @param dataPointSet2 The second member of the division.
0515      * @param strategy      The strategy of how to perform the division. The default corresponds to
0516      *                      uncorrelated Gaussian error propagation.
0517      *                      if a directory in the path does not exist, or the path is illegal.
0518      *
0519      */
0520     virtual IDataPointSet * divide(const std::string & path, const IDataPointSet & dataPointSet1, const IDataPointSet & dataPointSet2) = 0;
0521 
0522     /**
0523      * Calculate weighted means of two IDataSetPoint, point by point and measurement by measurement.
0524      * @param path          The path of the resulting IDataPointSet. The path can either be a relative or full path.
0525      *                      ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0526      *                      All the directories in the path must exist. The characther `/` cannot be used
0527      *                      in names; it is only used to delimit directories within paths.
0528      * @param dataPointSet1 The first IDataPointSet.
0529      * @param dataPointSet2 The second IDataPointSet.
0530      * @param strategy      The strategy of how to calculate the weighted means. The default corresponds to
0531      *                      uncorrelated Gaussian error propagation.
0532      *                      if a directory in the path does not exist, or the path is illegal.
0533      *
0534      */
0535     virtual IDataPointSet * weightedMean(const std::string & path, const IDataPointSet & dataPointSet1, const IDataPointSet & dataPointSet2) = 0;
0536 }; // class
0537 } // namespace AIDA
0538 #endif /* ifndef AIDA_IDATAPOINTSETFACTORY_H */