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_IHISTOGRAMFACTORY_H
0008 #define AIDA_IHISTOGRAMFACTORY_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 IBaseHistogram;
0021 class ICloud1D;
0022 class ICloud2D;
0023 class ICloud3D;
0024 class IHistogram1D;
0025 class IHistogram2D;
0026 class IHistogram3D;
0027 class IProfile1D;
0028 class IProfile2D;
0029 
0030 /**
0031  * User level interface for factory classes of Histograms (binned, unbinned, and profile)
0032  * The created objects are assumed to be managed by the tree which is associated to the factory.
0033  *
0034  * @author The AIDA team (http://aida.freehep.org/)
0035  *
0036  */
0037  
0038 class IHistogramFactory {
0039 
0040 public: 
0041     /// Destructor.
0042     virtual ~IHistogramFactory() { /* nop */; }
0043 
0044     /**
0045      * Destroy an IBaseHistogram ogject.
0046      * @param hist The IBaseHistogram to be destroyed.
0047      * @return false If the histogram cannot be destroyed.
0048      *
0049      */
0050     virtual bool destroy(IBaseHistogram * hist) = 0;
0051 
0052     /**
0053      * Create a ICloud1D, an unbinned 1-dimensional histogram.
0054      * @param path    The path of the created ICloud. The path can either be a relative or full path.
0055      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0056      *                All the directories in the path must exist. The characther `/` cannot be used
0057      *                in names; it is only used to delimit directories within paths.
0058      * @param title   The title of the ICloud1D.
0059      * @param nMax    The maximum number of entries after which the ICloud1D
0060      *                will convert to an IHistogram1D. The default nMax = -1 means no autoconversion.
0061      * @param options The options for the ICloud1D. "autoconvert=true" to enable autoconversion
0062      *                to an IHistogram1D.
0063      * @return        The newly created ICloud1D.
0064      *
0065      */
0066     virtual ICloud1D * createCloud1D(const std::string & path, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
0067 
0068     /**
0069      * Create a ICloud1D, an unbinned 1-dimensional histogram.
0070      * @param pathAndTitle The path of the created ICloud. The path can either be a relative or full path.
0071      *                     The last part of the path is used as the title.
0072      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0073      *                     All the directories in the path must exist. The characther `/` cannot be used
0074      *                     in names; it is only used to delimit directories within paths.
0075      * @return             The newly created ICloud1D.
0076      *
0077      */
0078     virtual ICloud1D * createCloud1D(const std::string & pathAndTitle) = 0;
0079 
0080     /**
0081      * Create a copy of an ICloud1D.
0082      * @param path    The path of the resulting ICloud. The path can either be a relative or full path.
0083      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0084      *                All the directories in the path must exist. The characther `/` cannot be used
0085      *                in names; it is only used to delimit directories within paths.
0086      * @param cloud   The ICloud1D to be copied.
0087      * @return        The copy of the ICloud1D.
0088      *
0089      */
0090     virtual ICloud1D * createCopy(const std::string & path, const ICloud1D & cloud) = 0;
0091 
0092     /**
0093      * Create a ICloud2D, an unbinned 2-dimensional histogram.
0094      * @param path    The path of the created ICloud. The path can either be a relative or full path.
0095      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0096      *                All the directories in the path must exist. The characther `/` cannot be used
0097      *                in names; it is only used to delimit directories within paths.
0098      * @param title   The title of the ICloud2D.
0099      * @param nMax    The maximum number of entries after which the ICloud2D
0100      *                will convert to an IHistogram2D. The default nMax = -1 means no autoconversion. 
0101      * @param options The options for the ICloud2D. "autoconvert=true" to enable autoconversion
0102      *                to an IHistogram2D.
0103      * @return        The newly created ICloud2D.
0104      *
0105      */
0106     virtual ICloud2D * createCloud2D(const std::string & path, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
0107 
0108     /**
0109      * Create a ICloud2D, an unbinned 2-dimensional histogram.
0110      * @param pathAndTitle The path of the created created ICloud. The path can either be a relative or full path.
0111      *                     The last part of the path is used as the title.
0112      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0113      *                     All the directories in the path must exist. The characther `/` cannot be used
0114      *                     in names; it is only used to delimit directories within paths.
0115      * @return             The newly created ICloud2D.
0116      *
0117      */
0118     virtual ICloud2D * createCloud2D(const std::string & pathAndTitle) = 0;
0119 
0120     /**
0121      * Create a copy of an ICloud2D.
0122      * @param path    The path of the resulting ICloud. The path can either be a relative or full path.
0123      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0124      *                All the directories in the path must exist. The characther `/` cannot be used
0125      *                in names; it is only used to delimit directories within paths.
0126      * @param cloud   The ICloud2D to be copied.
0127      * @return        The copy of the ICloud2D.
0128      *
0129      */
0130     virtual ICloud2D * createCopy(const std::string & path, const ICloud2D & cloud) = 0;
0131 
0132     /**
0133      * Create a ICloud3D, an unbinned 3-dimensional histogram.
0134      * @param path    The path of the created ICloud. The path can either be a relative or full path.
0135      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0136      *                All the directories in the path must exist. The characther `/` cannot be used
0137      *                in names; it is only used to delimit directories within paths.
0138      * @param title   The title of the ICloud3D.
0139      * @param nMax    The maximum number of entries after which the ICloud3D
0140      *                will convert to an IHistogram3D. The default nMax = -1 means no autoconversion 
0141      * @param options The options for the ICloud3D. "autoconvert=true" to enable autoconversion
0142      *                to an IHistogram3D.
0143      * @return        The newly created ICloud3D.
0144      *
0145      */
0146     virtual ICloud3D * createCloud3D(const std::string & path, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
0147 
0148     /**
0149      * Create a ICloud3D, an unbinned 3-dimensional histogram.
0150      * @param pathAndTitle The path of the created created ICloud. The path can either be a relative or full path.
0151      *                     The last part of the path is used as the title.
0152      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0153      *                     All the directories in the path must exist. The characther `/` cannot be used
0154      *                     in names; it is only used to delimit directories within paths.
0155      * @return             The newly created ICloud3D.
0156      *
0157      */
0158     virtual ICloud3D * createCloud3D(const std::string & pathAndTitle) = 0;
0159 
0160     /**
0161      * Create a copy of an ICloud3D.
0162      * @param path    The path of the resulting ICloud. The path can either be a relative or full path.
0163      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0164      *                All the directories in the path must exist. The characther `/` cannot be used
0165      *                in names; it is only used to delimit directories within paths.
0166      * @param cloud   The ICloud3D to be copied.
0167      * @return        The copy of the ICloud3D.
0168      *
0169      */
0170     virtual ICloud3D * createCopy(const std::string & path, const ICloud3D & cloud) = 0;
0171 
0172     /**
0173      * Create a IHistogram1D.
0174      * @param path      The path of the created IHistogram. The path can either be a relative or full path.
0175      *                  ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0176      *                  All the directories in the path must exist. The characther `/` cannot be used
0177      *                  in names; it is only used to delimit directories within paths.
0178      * @param title     The title of the IHistogram1D.
0179      * @param nBins     The number of bins of the x axis.
0180      * @param lowerEdge The lower edge of the x axis.
0181      * @param upperEdge The upper edge of the x axis.
0182      * @param options   The options for the IHistogram1D. The default is "".
0183      *                  "type=efficiency" for an efficiency IHistogram1D.
0184      * @return          The newly created IHistogram1D.
0185      *
0186      */
0187     virtual IHistogram1D * createHistogram1D(const std::string & path, const std::string & title, int nBins, double lowerEdge, double upperEdge, const std::string & options = "") = 0;
0188 
0189     /**
0190      * Create a IHistogram1D.
0191      * @param pathAndTitle The path of the created created IHistogram. The path can either be a relative or full path.
0192      *                     The last part of the path is used as the title.
0193      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0194      *                     All the directories in the path must exist. The characther `/` cannot be used
0195      *                     in names; it is only used to delimit directories within paths.
0196      * @param nBins        The number of bins of the x axis.
0197      * @param lowerEdge    The lower edge of the x axis.
0198      * @param upperEdge    The upper edge of the x axis.
0199      * @return             The newly created IHistogram1D.
0200      *
0201      */
0202     virtual IHistogram1D * createHistogram1D(const std::string & pathAndTitle, int nBins, double lowerEdge, double upperEdge) = 0;
0203 
0204     /**
0205      * Create a IHistogram1D.
0206      * @param path      The path of the created IHistogram. The path can either be a relative or full path.
0207      *                  ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0208      *                  All the directories in the path must exist. The characther `/` cannot be used
0209      *                  in names; it is only used to delimit directories within paths.
0210      * @param title     The title of the IHistogram1D.
0211      * @param binEdges  The array of the bin edges for the x axis.
0212      * @param options   The options for the IHistogram1D. The default is "".
0213      *                  "type=efficiency" for an efficiency IHistogram1D.
0214      * @return          The newly created IHistogram1D.
0215      *
0216      */
0217     virtual IHistogram1D * createHistogram1D(const std::string & path, const std::string & title, const std::vector<double>  & binEdges, const std::string & options = "") = 0;
0218 
0219     /**
0220      * Create a copy of an IHistogram1D.
0221      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
0222      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0223      *             All the directories in the path must exist. The characther `/` cannot be used
0224      *             in names; it is only used to delimit directories within paths.
0225      * @param hist The IHistogram1D to be copied.
0226      * @return     The copy of the IHistogram1D.
0227      *
0228      */
0229     virtual IHistogram1D * createCopy(const std::string & path, const IHistogram1D & hist) = 0;
0230 
0231     /**
0232      * Create a IHistogram2D.
0233      * @param path       The path of the created IHistogram. The path can either be a relative or full path.
0234      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0235      *                   All the directories in the path must exist. The characther `/` cannot be used
0236      *                   in names; it is only used to delimit directories within paths.
0237      * @param title      The title of the IHistogram2D.
0238      * @param nBinsX     The number of bins of the x axis.
0239      * @param lowerEdgeX The lower edge of the x axis.
0240      * @param upperEdgeX The upper edge of the x axis.
0241      * @param nBinsY     The number of bins of the y axis.
0242      * @param lowerEdgeY The lower edge of the y axis.
0243      * @param upperEdgeY The upper edge of the y axis.
0244      * @param options    The options for the IHistogram2D. The default is "".
0245      *                   "type=efficiency" for an efficiency IHistogram2D.
0246      * @return           The newly created IHistogram2D.
0247      *
0248      */
0249     virtual IHistogram2D * createHistogram2D(const std::string & path, const std::string & title, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, const std::string & options = "") = 0;
0250 
0251     /**
0252      * Create a IHistogram2D.
0253      * @param pathAndTitle The path of the created created IHistogram. The path can either be a relative or full path.
0254      *                     The last part of the path is used as the title.
0255      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0256      *                     All the directories in the path must exist. The characther `/` cannot be used
0257      *                     in names; it is only used to delimit directories within paths.
0258      * @param nBinsX       The number of bins of the x axis.
0259      * @param lowerEdgeX   The lower edge of the x axis.
0260      * @param upperEdgeX   The upper edge of the x axis.
0261      * @param nBinsY       The number of bins of the y axis.
0262      * @param lowerEdgeY   The lower edge of the y axis.
0263      * @param upperEdgeY   The upper edge of the y axis.
0264      * @return             The newly created IHistogram2D.
0265      *
0266      */
0267     virtual IHistogram2D * createHistogram2D(const std::string & pathAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY) = 0;
0268 
0269     /**
0270      * Create a IHistogram2D.
0271      * @param path       The path of the created IHistogram. The path can either be a relative or full path.
0272      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0273      *                   All the directories in the path must exist. The characther `/` cannot be used
0274      *                   in names; it is only used to delimit directories within paths.
0275      * @param title      The title of the IHistogram2D.
0276      * @param binEdgesX  The array of the bin edges for the x axis.
0277      * @param binEdgesY  The array of the bin edges for the y axis.
0278      * @param options    The options for the IHistogram2D. The default is "".
0279      *                   "type=efficiency" for an efficiency IHistogram2D.
0280      * @return           The newly created IHistogram2D.
0281      *
0282      */
0283     virtual IHistogram2D * createHistogram2D(const std::string & path, const std::string & title, const std::vector<double>  & binEdgesX, const std::vector<double>  & binEdgesY, const std::string & options = "") = 0;
0284 
0285     /**
0286      * Create a copy of an IHistogram2D.
0287      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
0288      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0289      *             All the directories in the path must exist. The characther `/` cannot be used
0290      *             in names; it is only used to delimit directories within paths.
0291      * @param hist The IHistogram2D to be copied.
0292      * @return     The copy of the IHistogram2D.
0293      *
0294      */
0295     virtual IHistogram2D * createCopy(const std::string & copy, const IHistogram2D & hist) = 0;
0296 
0297     /**
0298      * Create a IHistogram3D.
0299      * @param path       The path of the created IHistogram. The path can either be a relative or full path.
0300      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0301      *                   All the directories in the path must exist. The characther `/` cannot be used
0302      *                   in names; it is only used to delimit directories within paths.
0303      * @param title      The title of the IHistogram3D.
0304      * @param nBinsX     The number of bins of the x axis.
0305      * @param lowerEdgeX The lower edge of the x axis.
0306      * @param upperEdgeX The upper edge of the x axis.
0307      * @param nBinsY     The number of bins of the y axis.
0308      * @param lowerEdgeY The lower edge of the y axis.
0309      * @param upperEdgeY The upper edge of the y axis.
0310      * @param nBinsZ     The number of bins of the z axis.
0311      * @param lowerEdgeZ The lower edge of the z axis.
0312      * @param upperEdgeZ The upper edge of the z axis.
0313      * @param options    The options for the IHistogram3D. The default is "".
0314      *                   "type=efficiency" for an efficiency IHistogram3D.
0315      * @return           The newly created IHistogram3D.
0316      *
0317      */
0318     virtual IHistogram3D * createHistogram3D(const std::string & path, const std::string & title, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, int nBinsZ, double lowerEdgeZ, double upperEdgeZ, const std::string & options = "") = 0;
0319 
0320     /**
0321      * Create a IHistogram3D.
0322      * @param pathAndTitle The path of the created created IHistogram. The path can either be a relative or full path.
0323      *                     The last part of the path is used as the title.
0324      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0325      *                     All the directories in the path must exist. The characther `/` cannot be used
0326      *                     in names; it is only used to delimit directories within paths.
0327      * @param nBinsX       The number of bins of the x axis.
0328      * @param lowerEdgeX   The lower edge of the x axis.
0329      * @param upperEdgeX   The upper edge of the x axis.
0330      * @param nBinsY       The number of bins of the y axis.
0331      * @param lowerEdgeY   The lower edge of the y axis.
0332      * @param upperEdgeY   The upper edge of the y axis.
0333      * @param nBinsZ       The number of bins of the z axis.
0334      * @param lowerEdgeZ   The lower edge of the z axis.
0335      * @param upperEdgeZ   The upper edge of the z axis.
0336      * @return             The newly created IHistogram3D.
0337      *
0338      */
0339     virtual IHistogram3D * createHistogram3D(const std::string & pathAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, int nBinsZ, double lowerEdgeZ, double upperEdgeZ) = 0;
0340 
0341     /**
0342      * Create a IHistogram3D.
0343      * @param path       The path of the created IHistogram. The path can either be a relative or full path.
0344      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0345      *                   All the directories in the path must exist. The characther `/` cannot be used
0346      *                   in names; it is only used to delimit directories within paths.
0347      * @param title      The title of the IHistogram3D.
0348      * @param binEdgesX  The array of the bin edges for the x axis.
0349      * @param binEdgesY  The array of the bin edges for the y axis.
0350      * @param binEdgesZ  The array of the bin edges for the z axis.
0351      * @param options    The options for the IHistogram3D. The default is "".
0352      *                   "type=efficiency" for an efficiency IHistogram3D.
0353      * @return           The newly created IHistogram3D.
0354      *
0355      */
0356     virtual IHistogram3D * createHistogram3D(const std::string & path, const std::string & title, const std::vector<double>  & binEdgesX, const std::vector<double>  & binEdgesY, const std::vector<double>  & binEdgesZ, const std::string & options = "") = 0;
0357 
0358     /**
0359      * Create a copy of an IHistogram3D.
0360      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
0361      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0362      *             All the directories in the path must exist. The characther `/` cannot be used
0363      *             in names; it is only used to delimit directories within paths.
0364      * @param hist The IHistogram3D to be copied.
0365      * @return     The copy of the IHistogram3D.
0366      *
0367      */
0368     virtual IHistogram3D * createCopy(const std::string & path, const IHistogram3D & hist) = 0;
0369 
0370     /**
0371      * Create a IProfile1D.
0372      * @param path      The path of the created IProfile. The path can either be a relative or full path.
0373      *                  ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0374      *                  All the directories in the path must exist. The characther `/` cannot be used
0375      *                  in names; it is only used to delimit directories within paths.
0376      * @param title     The title of the IProfile1D.
0377      * @param nBins     The number of bins of the x axis.
0378      * @param lowerEdge The lower edge of the x axis.
0379      * @param upperEdge The upper edge of the x axis.
0380      * @param options   The options for the IProfile1D. The default is "".
0381      * @return          The newly created IProfile1D.
0382      *
0383      */
0384     virtual IProfile1D * createProfile1D(const std::string & path, const std::string & title, int nBins, double lowerEdge, double upperEdge, const std::string & options = "") = 0;
0385 
0386     /**
0387      * Create a IProfile1D.
0388      * @param path       The path of the created IProfile. 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 title      The title of the IProfile1D.
0393      * @param nBins      The number of bins of the x axis.
0394      * @param lowerEdge  The lower edge of the x axis.
0395      * @param upperEdge  The upper edge of the x axis.
0396      * @param lowerValue The lower value displayed along the y axis.
0397      * @param upperValue The upper value displayed along the y axis.
0398      * @param options    The options for the IProfile1D. The default is "".
0399      * @return           The newly created IProfile1D.
0400      *
0401      */
0402     virtual IProfile1D * createProfile1D(const std::string & path, const std::string & title, int nBins, double lowerEdge, double upperEdge, double lowerValue, double upperValue, const std::string & options = "") = 0;
0403 
0404     /**
0405      * Create a IProfile1D.
0406      * @param path      The path of the created IProfile. The path can either be a relative or full path.
0407      *                  ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0408      *                  All the directories in the path must exist. The characther `/` cannot be used
0409      *                  in names; it is only used to delimit directories within paths.
0410      * @param title     The title of the IProfile1D.
0411      * @param binEdges  The array of the bin edges for the x axis.
0412      * @param options   The options for the IProfile1D. The default is "".
0413      * @return          The newly created IProfile1D.
0414      *
0415      */
0416     virtual IProfile1D * createProfile1D(const std::string & path, const std::string & title, const std::vector<double>  & binEdges, const std::string & options = "") = 0;
0417 
0418     /**
0419      * Create a IProfile1D.
0420      * @param path       The path of the created IProfile. The path can either be a relative or full path.
0421      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0422      *                   All the directories in the path must exist. The characther `/` cannot be used
0423      *                   in names; it is only used to delimit directories within paths.
0424      * @param title      The title of the IProfile1D.
0425      * @param binEdges   The array of the bin edges for the x axis.
0426      * @param lowerValue The lower value displayed along the y axis.
0427      * @param upperValue The upper value displayed along the y axis.
0428      * @param options    The options for the IProfile1D. The default is "".
0429      * @return           The newly created IProfile1D.
0430      *
0431      */
0432     virtual IProfile1D * createProfile1D(const std::string & path, const std::string & title, const std::vector<double>  & binEdges, double lowerValue, double upperValue, const std::string & options = "") = 0;
0433 
0434     /**
0435      * Create a IProfile1D.
0436      * @param pathAndTitle The path of the created created IProfile. The path can either be a relative or full path.
0437      *                     The last part of the path is used as the title.
0438      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0439      *                     All the directories in the path must exist. The characther `/` cannot be used
0440      *                     in names; it is only used to delimit directories within paths.
0441      * @param nBins        The number of bins of the x axis.
0442      * @param lowerEdge    The lower edge of the x axis.
0443      * @param upperEdge    The upper edge of the x axis.
0444      * @return             The newly created IProfile1D.
0445      *
0446      */
0447     virtual IProfile1D * createProfile1D(const std::string & pathAndTitle, int nBins, double lowerEdge, double upperEdge) = 0;
0448 
0449     /**
0450      * Create a IProfile1D.
0451      * @param pathAndTitle The path of the created created IProfile. The path can either be a relative or full path.
0452      *                     The last part of the path is used as the title.
0453      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0454      *                     All the directories in the path must exist. The characther `/` cannot be used
0455      *                     in names; it is only used to delimit directories within paths.
0456      * @param nBins        The number of bins of the x axis.
0457      * @param lowerEdge    The lower edge of the x axis.
0458      * @param upperEdge    The upper edge of the x axis.
0459      * @param lowerValue   The lower value displayed along the y axis.
0460      * @param upperValue   The upper value displayed along the y axis.
0461      * @return             The newly created IProfile1D.
0462      *
0463      */
0464     virtual IProfile1D * createProfile1D(const std::string & pathAndTitle, int nBins, double lowerEdge, double upperEdge, double lowerValue, double upperValue) = 0;
0465 
0466     /**
0467      * Create a copy of an IProfile1D.
0468      * @param path    The path of the resulting IProfile. The path can either be a relative or full path.
0469      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0470      *                All the directories in the path must exist. The characther `/` cannot be used
0471      *                in names; it is only used to delimit directories within paths.
0472      * @param profile The IProfile1D to be copied.
0473      * @return        The copy of the IProfile1D.
0474      *
0475      */
0476     virtual IProfile1D * createCopy(const std::string & path, const IProfile1D & profile) = 0;
0477 
0478     /**
0479      * Create a IProfile2D.
0480      * @param path       The path of the created IProfile. The path can either be a relative or full path.
0481      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0482      *                   All the directories in the path must exist. The characther `/` cannot be used
0483      *                   in names; it is only used to delimit directories within paths.
0484      * @param title      The title of the IProfile2D.
0485      * @param nBinsX     The number of bins of the x axis.
0486      * @param lowerEdgeX The lower edge of the x axis.
0487      * @param upperEdgeX The upper edge of the x axis.
0488      * @param nBinsY     The number of bins of the y axis.
0489      * @param lowerEdgeY The lower edge of the y axis.
0490      * @param upperEdgeY The upper edge of the y axis.
0491      * @param options    The options for the IProfile2D. The default is "".
0492      * @return           The newly created IProfile2D.
0493      *
0494      */
0495     virtual IProfile2D * createProfile2D(const std::string & path, const std::string & title, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, const std::string & options = "") = 0;
0496 
0497     /**
0498      * Create a IProfile2D.
0499      * @param path       The path of the created IProfile. The path can either be a relative or full path.
0500      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0501      *                   All the directories in the path must exist. The characther `/` cannot be used
0502      *                   in names; it is only used to delimit directories within paths.
0503      * @param title      The title of the IProfile2D.
0504      * @param nBinsX     The number of bins of the x axis.
0505      * @param lowerEdgeX The lower edge of the x axis.
0506      * @param upperEdgeX The upper edge of the x axis.
0507      * @param nBinsY     The number of bins of the y axis.
0508      * @param lowerEdgeY The lower edge of the y axis.
0509      * @param upperEdgeY The upper edge of the y axis.
0510      * @param lowerValue The lower value displayed along the z axis.
0511      * @param upperValue The upper value displayed along the z axis.
0512      * @param options    The options for the IProfile2D. The default is "".
0513      * @return           The newly created IProfile2D.
0514      *
0515      */
0516     virtual IProfile2D * createProfile2D(const std::string & path, const std::string & title, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, double lowerValue, double upperValue, const std::string & options = "") = 0;
0517 
0518     /**
0519      * Create a IProfile2D.
0520      * @param path       The path of the created IProfile. The path can either be a relative or full path.
0521      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0522      *                   All the directories in the path must exist. The characther `/` cannot be used
0523      *                   in names; it is only used to delimit directories within paths.
0524      * @param title      The title of the IProfile2D.
0525      * @param binEdgesX  The array of the bin edges for the x axis.
0526      * @param binEdgesY  The array of the bin edges for the y axis.
0527      * @param options    The options for the IProfile2D. The default is "".
0528      * @return           The newly created IProfile2D.
0529      *
0530      */
0531     virtual IProfile2D * createProfile2D(const std::string & path, const std::string & title, const std::vector<double>  & binEdgesX, const std::vector<double>  & binEdgesY, const std::string & options = "") = 0;
0532 
0533     /**
0534      * Create a IProfile2D.
0535      * @param path       The path of the created IProfile. The path can either be a relative or full path.
0536      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0537      *                   All the directories in the path must exist. The characther `/` cannot be used
0538      *                   in names; it is only used to delimit directories within paths.
0539      * @param title      The title of the IProfile2D.
0540      * @param binEdgesX  The array of the bin edges for the x axis.
0541      * @param binEdgesY  The array of the bin edges for the y axis.
0542      * @param lowerValue The lower value displayed along the y axis.
0543      * @param upperValue The upper value displayed along the y axis.
0544      * @param options    The options for the IProfile2D. The default is "".
0545      * @return           The newly created IProfile2D.
0546      *
0547      */
0548     virtual IProfile2D * createProfile2D(const std::string & path, const std::string & title, const std::vector<double>  & binEdgesX, const std::vector<double>  & binEdgesY, double lowerValue, double upperValue, const std::string & options = "") = 0;
0549 
0550     /**
0551      * Create a IProfile2D.
0552      * @param pathAndTitle The path of the created created IProfile. The path can either be a relative or full path.
0553      *                     The last part of the path is used as the title.
0554      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0555      *                     All the directories in the path must exist. The characther `/` cannot be used
0556      *                     in names; it is only used to delimit directories within paths.
0557      * @param nBinsX       The number of bins of the x axis.
0558      * @param lowerEdgeX   The lower edge of the x axis.
0559      * @param upperEdgeX   The upper edge of the x axis.
0560      * @param nBinsY       The number of bins of the y axis.
0561      * @param lowerEdgeY   The lower edge of the y axis.
0562      * @param upperEdgeY   The upper edge of the y axis.
0563      * @return             The newly created IProfile2D.
0564      *
0565      */
0566     virtual IProfile2D * createProfile2D(const std::string & pathAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY) = 0;
0567 
0568     /**
0569      * Create a IProfile2D.
0570      * @param pathAndTitle The path of the created created IProfile. The path can either be a relative or full path.
0571      *                     The last part of the path is used as the title.
0572      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
0573      *                     All the directories in the path must exist. The characther `/` cannot be used
0574      *                     in names; it is only used to delimit directories within paths.
0575      * @param nBinsX       The number of bins of the x axis.
0576      * @param lowerEdgeX   The lower edge of the x axis.
0577      * @param upperEdgeX   The upper edge of the x axis.
0578      * @param nBinsY       The number of bins of the y axis.
0579      * @param lowerEdgeY   The lower edge of the y axis.
0580      * @param upperEdgeY   The upper edge of the y axis.
0581      * @param lowerValue   The lower value displayed along the z axis.
0582      * @param upperValue   The upper value displayed along the z axis.
0583      * @return             The newly created IProfile2D.
0584      *
0585      */
0586     virtual IProfile2D * createProfile2D(const std::string & pathAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, double lowerValue, double upperValue) = 0;
0587 
0588     /**
0589      * Create a copy of an IProfile2D.
0590      * @param path    The path of the resulting IProfile. The path can either be a relative or full path.
0591      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0592      *                All the directories in the path must exist. The characther `/` cannot be used
0593      *                in names; it is only used to delimit directories within paths.
0594      * @param profile The IProfile2D to be copied.
0595      * @return        The copy of the IProfile2D.
0596      *
0597      */
0598     virtual IProfile2D * createCopy(const std::string & path, const IProfile2D & profile) = 0;
0599 
0600     /**
0601      * Create an IHistogram1D by adding two IHistogram1D.
0602      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0603      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0604      *              All the directories in the path must exist. The characther `/` cannot be used
0605      *              in names; it is only used to delimit directories within paths.
0606      * @param hist1 The first member of the addition.
0607      * @param hist2 The second member of the addition.
0608      * @return      The sum of the two IHistogram1D.
0609      *              if a directory in the path does not exist, or the path is illegal.
0610      *
0611      */
0612     virtual IHistogram1D * add(const std::string & path, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
0613 
0614     /**
0615      * Create an IHistogram1D by subtracting two IHistogram1D.
0616      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0617      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0618      *              All the directories in the path must exist. The characther `/` cannot be used
0619      *              in names; it is only used to delimit directories within paths.
0620      * @param hist1 The first member of the subtraction.
0621      * @param hist2 The second member of the subtraction.
0622      * @return      The difference of the two IHistogram1D.
0623      *              if a directory in the path does not exist, or the path is illegal.
0624      *
0625      */
0626     virtual IHistogram1D * subtract(const std::string & path, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
0627 
0628     /**
0629      * Create an IHistogram1D by multiplying two IHistogram1D.
0630      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0631      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0632      *              All the directories in the path must exist. The characther `/` cannot be used
0633      *              in names; it is only used to delimit directories within paths.
0634      * @param hist1 The first member of the multiplication.
0635      * @param hist2 The second member of the multiplication.
0636      * @return      The product of the two IHistogram1D.
0637      *              if a directory in the path does not exist, or the path is illegal.
0638      *
0639      */
0640     virtual IHistogram1D * multiply(const std::string & path, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
0641 
0642     /**
0643      * Create an IHistogram1D by dividing two IHistogram1D.
0644      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0645      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0646      *              All the directories in the path must exist. The characther `/` cannot be used
0647      *              in names; it is only used to delimit directories within paths.
0648      * @param hist1 The first member of the division.
0649      * @param hist2 The second member of the division.
0650      * @return      The ration of the two IHistogram1D.
0651      *              if a directory in the path does not exist, or the path is illegal.
0652      *
0653      */
0654     virtual IHistogram1D * divide(const std::string & path, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
0655 
0656     /**
0657      * Create an IHistogram2D by adding two IHistogram2D.
0658      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0659      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0660      *              All the directories in the path must exist. The characther `/` cannot be used
0661      *              in names; it is only used to delimit directories within paths.
0662      * @param hist1 The first member of the addition.
0663      * @param hist2 The second member of the addition.
0664      * @return      The sum of the two IHistogram2D.
0665      *              if a directory in the path does not exist, or the path is illegal.
0666      *
0667      */
0668     virtual IHistogram2D * add(const std::string & path, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
0669 
0670     /**
0671      * Create an IHistogram2D by subtracting two IHistogram2D.
0672      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0673      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0674      *              All the directories in the path must exist. The characther `/` cannot be used
0675      *              in names; it is only used to delimit directories within paths.
0676      * @param hist1 The first member of the subtraction.
0677      * @param hist2 The second member of the subtraction.
0678      * @return      The difference of the two IHistogram2D.
0679      *              if a directory in the path does not exist, or the path is illegal.
0680      *
0681      */
0682     virtual IHistogram2D * subtract(const std::string & path, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
0683 
0684     /**
0685      * Create an IHistogram2D by multiplying two IHistogram2D.
0686      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0687      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0688      *              All the directories in the path must exist. The characther `/` cannot be used
0689      *              in names; it is only used to delimit directories within paths.
0690      * @param hist1 The first member of the multiplication.
0691      * @param hist2 The second member of the multiplication.
0692      * @return      The product of the two IHistogram2D.
0693      *              if a directory in the path does not exist, or the path is illegal.
0694      *
0695      */
0696     virtual IHistogram2D * multiply(const std::string & path, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
0697 
0698     /**
0699      * Create an IHistogram2D by dividing two IHistogram2D.
0700      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0701      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0702      *              All the directories in the path must exist. The characther `/` cannot be used
0703      *              in names; it is only used to delimit directories within paths.
0704      * @param hist1 The first member of the division.
0705      * @param hist2 The second member of the division.
0706      * @return      The ration of the two IHistogram2D.
0707      *              if a directory in the path does not exist, or the path is illegal.
0708      *
0709      */
0710     virtual IHistogram2D * divide(const std::string & path, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
0711 
0712     /**
0713      * Create an IHistogram3D by adding two IHistogram3D.
0714      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0715      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0716      *              All the directories in the path must exist. The characther `/` cannot be used
0717      *              in names; it is only used to delimit directories within paths.
0718      * @param hist1 The first member of the addition.
0719      * @param hist2 The second member of the addition.
0720      * @return      The sum of the two IHistogram3D.
0721      *              if a directory in the path does not exist, or the path is illegal.
0722      *
0723      */
0724     virtual IHistogram3D * add(const std::string & path, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
0725 
0726     /**
0727      * Create an IHistogram3D by subtracting two IHistogram3D.
0728      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0729      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0730      *              All the directories in the path must exist. The characther `/` cannot be used
0731      *              in names; it is only used to delimit directories within paths.
0732      * @param hist1 The first member of the subtraction.
0733      * @param hist2 The second member of the subtraction.
0734      * @return      The difference of the two IHistogram3D.
0735      *              if a directory in the path does not exist, or the path is illegal.
0736      *
0737      */
0738     virtual IHistogram3D * subtract(const std::string & path, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
0739 
0740     /**
0741      * Create an IHistogram3D by multiplying two IHistogram3D.
0742      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0743      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0744      *              All the directories in the path must exist. The characther `/` cannot be used
0745      *              in names; it is only used to delimit directories within paths.
0746      * @param hist1 The first member of the multiplication.
0747      * @param hist2 The second member of the multiplication.
0748      * @return      The product of the two IHistogram3D.
0749      *              if a directory in the path does not exist, or the path is illegal.
0750      *
0751      */
0752     virtual IHistogram3D * multiply(const std::string & path, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
0753 
0754     /**
0755      * Create an IHistogram3D by dividing two IHistogram3D.
0756      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0757      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0758      *              All the directories in the path must exist. The characther `/` cannot be used
0759      *              in names; it is only used to delimit directories within paths.
0760      * @param hist1 The first member of the division.
0761      * @param hist2 The second member of the division.
0762      * @return      The ration of the two IHistogram3D.
0763      *              if a directory in the path does not exist, or the path is illegal.
0764      *
0765      */
0766     virtual IHistogram3D * divide(const std::string & path, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
0767 
0768     /**
0769      * Create an IHistogram1D by projecting an IHistogram2D along its x axis.
0770      * This is equivalent to <tt>sliceX(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
0771      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
0772      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0773      *             All the directories in the path must exist. The characther `/` cannot be used
0774      *             in names; it is only used to delimit directories within paths.
0775      * @param hist The IHistogram2D to be projected.
0776      * @return     The resulting projection.
0777      *
0778      */
0779     virtual IHistogram1D * projectionX(const std::string & path, const IHistogram2D & hist) = 0;
0780 
0781     /**
0782      * Create an IHistogram1D by projecting an IHistogram2D along its y axis.
0783      * This is equivalent to <tt>sliceY(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
0784      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
0785      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0786      *             All the directories in the path must exist. The characther `/` cannot be used
0787      *             in names; it is only used to delimit directories within paths.
0788      * @param hist The IHistogram2D to be projected.
0789      * @return     The resulting projection.
0790      *
0791      */
0792     virtual IHistogram1D * projectionY(const std::string & path, const IHistogram2D & hist) = 0;
0793 
0794     /**
0795      * Create an IHistogram1D by slicing an IHistogram2D parallel to the y axis at a given bin.
0796      * This is equivalent to <tt>sliceX(indexY,indexY)</tt>.
0797      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0798      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0799      *              All the directories in the path must exist. The characther `/` cannot be used
0800      *              in names; it is only used to delimit directories within paths.
0801      * @param hist  The IHistogram2D to be sliced.
0802      * @param index The index of the bin along the y axis where the IHistogram2D has to be sliced.
0803      * @return      The resulting slice.
0804      *
0805      */
0806     virtual IHistogram1D * sliceX(const std::string & path, const IHistogram2D & hist, int index) = 0;
0807 
0808     /**
0809      * Create an IHistogram1D by slicing an IHistogram2D parallel to the x axis at a given bin.
0810      * This is equivalent to <tt>sliceY(indexX,indexX)</tt>.
0811      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
0812      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0813      *              All the directories in the path must exist. The characther `/` cannot be used
0814      *              in names; it is only used to delimit directories within paths.
0815      * @param hist  The IHistogram2D to be sliced.
0816      * @param index The index of the bin along the x axis where the IHistogram2D has to be sliced.
0817      * @return      The resulting slice.
0818      *
0819      */
0820     virtual IHistogram1D * sliceY(const std::string & path, const IHistogram2D & hist, int index) = 0;
0821 
0822     /**
0823      * Create an IHistogram1D by slicing an IHistogram2D parallel to the y axis between two bins (inclusive).
0824      * @param path   The path of the resulting IHistogram. The path can either be a relative or full path.
0825      *               ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0826      *               All the directories in the path must exist. The characther `/` cannot be used
0827      *               in names; it is only used to delimit directories within paths.
0828      * @param hist   The IHistogram2D to be sliced.
0829      * @param index1 The index of the bin along the y axis that marks the lower edge of the slice.
0830      * @param index2 The index of the bin along the y axis that marks the upper edge of the slice.
0831      * @return       The resulting slice.
0832      *
0833      */
0834     virtual IHistogram1D * sliceX(const std::string & path, const IHistogram2D & hist, int index1, int index2) = 0;
0835 
0836     /**
0837      * Create an IHistogram1D by slicing an IHistogram2D parallel to the x axis between two bins (inclusive).
0838      * @param path   The path of the resulting IHistogram. The path can either be a relative or full path.
0839      *               ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0840      *               All the directories in the path must exist. The characther `/` cannot be used
0841      *               in names; it is only used to delimit directories within paths.
0842      * @param hist   The IHistogram2D to be sliced.
0843      * @param index1 The index of the bin along the x axis that marks the lower edge of the slice.
0844      * @param index2 The index of the bin along the x axis that marks the upper edge of the slice.
0845      * @return       The resulting slice.
0846      *
0847      */
0848     virtual IHistogram1D * sliceY(const std::string & path, const IHistogram2D & hist, int index1, int index2) = 0;
0849 
0850     /**
0851      * Create an IHistogram2D by projecting an IHistogram3D on the x-y plane.
0852      * This is equivalent to <tt>sliceXY(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
0853      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
0854      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0855      *             All the directories in the path must exist. The characther `/` cannot be used
0856      *             in names; it is only used to delimit directories within paths.
0857      * @param hist The IHistogram3D to be projected.
0858      * @return     The resulting projection.
0859      *
0860      */
0861     virtual IHistogram2D * projectionXY(const std::string & path, const IHistogram3D & hist) = 0;
0862 
0863     /**
0864      * Create an IHistogram2D by projecting an IHistogram3D on the x-z plane.
0865      * This is equivalent to <tt>sliceXZ(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
0866      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
0867      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0868      *             All the directories in the path must exist. The characther `/` cannot be used
0869      *             in names; it is only used to delimit directories within paths.
0870      * @param hist The IHistogram3D to be projected.
0871      * @return     The resulting projection.
0872      *
0873      */
0874     virtual IHistogram2D * projectionXZ(const std::string & path, const IHistogram3D & hist) = 0;
0875 
0876     /**
0877      * Create an IHistogram2D by projecting an IHistogram3D on the y-z plane.
0878      * This is equivalent to <tt>sliceYZ(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
0879      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
0880      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0881      *             All the directories in the path must exist. The characther `/` cannot be used
0882      *             in names; it is only used to delimit directories within paths.
0883      * @param hist The IHistogram3D to be projected.
0884      * @return     The resulting projection.
0885      *
0886      */
0887     virtual IHistogram2D * projectionYZ(const std::string & path, const IHistogram3D & hist) = 0;
0888 
0889     /**
0890      * Create an IHistogram2D by slicing an IHistogram3D perpendicular to the Z axis,
0891      * between "index1" and "index2" (inclusive).
0892      * The X axis of the IHistogram2D corresponds to the X axis of this IHistogram3D.
0893      * The Y axis of the IHistogram2D corresponds to the Y axis of this IHistogram3D.
0894      * @param path   The path of the resulting IHistogram. The path can either be a relative or full path.
0895      *               ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0896      *               All the directories in the path must exist. The characther `/` cannot be used
0897      *               in names; it is only used to delimit directories within paths.
0898      * @param hist   The IHistogram3D to sliced.
0899      * @param index1 The index of the bin along the z axis that marks the lower edge of the slice.
0900      * @param index2 The index of the bin along the z axis that marks the upper edge of the slice.
0901      * @return       The resulting slice.
0902      *
0903      */
0904     virtual IHistogram2D * sliceXY(const std::string & path, const IHistogram3D & hist, int index1, int index2) = 0;
0905 
0906     /**
0907      * Create an IHistogram2D by slicing an IHistogram3D perpendicular to the Y axis,
0908      * between "index1" and "index2" (inclusive).
0909      * The X axis of the IHistogram2D corresponds to the X axis of this IHistogram3D.
0910      * The Z axis of the IHistogram2D corresponds to the Z axis of this IHistogram3D.
0911      * @param path   The path of the resulting IHistogram. The path can either be a relative or full path.
0912      *               ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0913      *               All the directories in the path must exist. The characther `/` cannot be used
0914      *               in names; it is only used to delimit directories within paths.
0915      * @param hist   The IHistogram3D to sliced.
0916      * @param index1 The index of the bin along the y axis that marks the lower edge of the slice.
0917      * @param index2 The index of the bin along the y axis that marks the upper edge of the slice.
0918      * @return       The resulting slice.
0919      *
0920      */
0921     virtual IHistogram2D * sliceXZ(const std::string & path, const IHistogram3D & hist, int index1, int index2) = 0;
0922 
0923     /**
0924      * Create an IHistogram2D by slicing an IHistogram3D perpendicular to the X axis,
0925      * between "index1" and "index2" (inclusive).
0926      * The Y axis of the IHistogram2D corresponds to the Y axis of this IHistogram3D.
0927      * The Z axis of the IHistogram2D corresponds to the Z axis of this IHistogram3D.
0928      * @param path   The path of the resulting IHistogram. The path can either be a relative or full path.
0929      *               ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0930      *               All the directories in the path must exist. The characther `/` cannot be used
0931      *               in names; it is only used to delimit directories within paths.
0932      * @param hist   The IHistogram3D to sliced.
0933      * @param index1 The index of the bin along the x axis that marks the lower edge of the slice.
0934      * @param index2 The index of the bin along the x axis that marks the upper edge of the slice.
0935      * @return       The resulting slice.
0936      *
0937      */
0938     virtual IHistogram2D * sliceYZ(const std::string & path, const IHistogram3D & hist, int index1, int index2) = 0;
0939 }; // class
0940 } // namespace AIDA
0941 #endif /* ifndef AIDA_IHISTOGRAMFACTORY_H */