IHistogramFactory.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 // AID-GENERATED
00003 // =========================================================================
00004 // This class was generated by AID - Abstract Interface Definition          
00005 // DO NOT MODIFY, but use the org.freehep.aid.Aid utility to regenerate it. 
00006 // =========================================================================
00007 #ifndef AIDA_IHISTOGRAMFACTORY_H
00008 #define AIDA_IHISTOGRAMFACTORY_H 1
00009 
00010 //  This file is part of the AIDA library
00011 //  Copyright (C) 2002 by the AIDA team.  All rights reserved.
00012 //  This library is free software and under the terms of the
00013 //  GNU Library General Public License described in the LGPL.txt 
00014 
00015 #include <string>
00016 #include <vector>
00017 
00018 namespace AIDA {
00019 
00020 class IBaseHistogram;
00021 class ICloud1D;
00022 class ICloud2D;
00023 class ICloud3D;
00024 class IHistogram1D;
00025 class IHistogram2D;
00026 class IHistogram3D;
00027 class IProfile1D;
00028 class IProfile2D;
00029 
00030 /**
00031  * User level interface for factory classes of Histograms (binned, unbinned, and profile)
00032  * The created objects are assumed to be managed by the tree which is associated to the factory.
00033  *
00034  * @author The AIDA team (http://aida.freehep.org/)
00035  *
00036  */
00037  
00038 class IHistogramFactory {
00039 
00040 public: 
00041     /// Destructor.
00042     virtual ~IHistogramFactory() { /* nop */; }
00043 
00044     /**
00045      * Destroy an IBaseHistogram ogject.
00046      * @param hist The IBaseHistogram to be destroyed.
00047      * @return false If the histogram cannot be destroyed.
00048      *
00049      */
00050     virtual bool destroy(IBaseHistogram * hist) = 0;
00051 
00052     /**
00053      * Create a ICloud1D, an unbinned 1-dimensional histogram.
00054      * @param path    The path of the created ICloud. The path can either be a relative or full path.
00055      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00056      *                All the directories in the path must exist. The characther `/` cannot be used
00057      *                in names; it is only used to delimit directories within paths.
00058      * @param title   The title of the ICloud1D.
00059      * @param nMax    The maximum number of entries after which the ICloud1D
00060      *                will convert to an IHistogram1D. The default nMax = -1 means no autoconversion.
00061      * @param options The options for the ICloud1D. "autoconvert=true" to enable autoconversion
00062      *                to an IHistogram1D.
00063      * @return        The newly created ICloud1D.
00064      *
00065      */
00066     virtual ICloud1D * createCloud1D(const std::string & path, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
00067 
00068     /**
00069      * Create a ICloud1D, an unbinned 1-dimensional histogram.
00070      * @param pathAndTitle The path of the created ICloud. The path can either be a relative or full path.
00071      *                     The last part of the path is used as the title.
00072      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
00073      *                     All the directories in the path must exist. The characther `/` cannot be used
00074      *                     in names; it is only used to delimit directories within paths.
00075      * @return             The newly created ICloud1D.
00076      *
00077      */
00078     virtual ICloud1D * createCloud1D(const std::string & pathAndTitle) = 0;
00079 
00080     /**
00081      * Create a copy of an ICloud1D.
00082      * @param path    The path of the resulting ICloud. The path can either be a relative or full path.
00083      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00084      *                All the directories in the path must exist. The characther `/` cannot be used
00085      *                in names; it is only used to delimit directories within paths.
00086      * @param cloud   The ICloud1D to be copied.
00087      * @return        The copy of the ICloud1D.
00088      *
00089      */
00090     virtual ICloud1D * createCopy(const std::string & path, const ICloud1D & cloud) = 0;
00091 
00092     /**
00093      * Create a ICloud2D, an unbinned 2-dimensional histogram.
00094      * @param path    The path of the created ICloud. The path can either be a relative or full path.
00095      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00096      *                All the directories in the path must exist. The characther `/` cannot be used
00097      *                in names; it is only used to delimit directories within paths.
00098      * @param title   The title of the ICloud2D.
00099      * @param nMax    The maximum number of entries after which the ICloud2D
00100      *                will convert to an IHistogram2D. The default nMax = -1 means no autoconversion. 
00101      * @param options The options for the ICloud2D. "autoconvert=true" to enable autoconversion
00102      *                to an IHistogram2D.
00103      * @return        The newly created ICloud2D.
00104      *
00105      */
00106     virtual ICloud2D * createCloud2D(const std::string & path, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
00107 
00108     /**
00109      * Create a ICloud2D, an unbinned 2-dimensional histogram.
00110      * @param pathAndTitle The path of the created created ICloud. The path can either be a relative or full path.
00111      *                     The last part of the path is used as the title.
00112      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
00113      *                     All the directories in the path must exist. The characther `/` cannot be used
00114      *                     in names; it is only used to delimit directories within paths.
00115      * @return             The newly created ICloud2D.
00116      *
00117      */
00118     virtual ICloud2D * createCloud2D(const std::string & pathAndTitle) = 0;
00119 
00120     /**
00121      * Create a copy of an ICloud2D.
00122      * @param path    The path of the resulting ICloud. The path can either be a relative or full path.
00123      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00124      *                All the directories in the path must exist. The characther `/` cannot be used
00125      *                in names; it is only used to delimit directories within paths.
00126      * @param cloud   The ICloud2D to be copied.
00127      * @return        The copy of the ICloud2D.
00128      *
00129      */
00130     virtual ICloud2D * createCopy(const std::string & path, const ICloud2D & cloud) = 0;
00131 
00132     /**
00133      * Create a ICloud3D, an unbinned 3-dimensional histogram.
00134      * @param path    The path of the created ICloud. The path can either be a relative or full path.
00135      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00136      *                All the directories in the path must exist. The characther `/` cannot be used
00137      *                in names; it is only used to delimit directories within paths.
00138      * @param title   The title of the ICloud3D.
00139      * @param nMax    The maximum number of entries after which the ICloud3D
00140      *                will convert to an IHistogram3D. The default nMax = -1 means no autoconversion 
00141      * @param options The options for the ICloud3D. "autoconvert=true" to enable autoconversion
00142      *                to an IHistogram3D.
00143      * @return        The newly created ICloud3D.
00144      *
00145      */
00146     virtual ICloud3D * createCloud3D(const std::string & path, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
00147 
00148     /**
00149      * Create a ICloud3D, an unbinned 3-dimensional histogram.
00150      * @param pathAndTitle The path of the created created ICloud. The path can either be a relative or full path.
00151      *                     The last part of the path is used as the title.
00152      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
00153      *                     All the directories in the path must exist. The characther `/` cannot be used
00154      *                     in names; it is only used to delimit directories within paths.
00155      * @return             The newly created ICloud3D.
00156      *
00157      */
00158     virtual ICloud3D * createCloud3D(const std::string & pathAndTitle) = 0;
00159 
00160     /**
00161      * Create a copy of an ICloud3D.
00162      * @param path    The path of the resulting ICloud. The path can either be a relative or full path.
00163      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00164      *                All the directories in the path must exist. The characther `/` cannot be used
00165      *                in names; it is only used to delimit directories within paths.
00166      * @param cloud   The ICloud3D to be copied.
00167      * @return        The copy of the ICloud3D.
00168      *
00169      */
00170     virtual ICloud3D * createCopy(const std::string & path, const ICloud3D & cloud) = 0;
00171 
00172     /**
00173      * Create a IHistogram1D.
00174      * @param path      The path of the created IHistogram. The path can either be a relative or full path.
00175      *                  ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00176      *                  All the directories in the path must exist. The characther `/` cannot be used
00177      *                  in names; it is only used to delimit directories within paths.
00178      * @param title     The title of the IHistogram1D.
00179      * @param nBins     The number of bins of the x axis.
00180      * @param lowerEdge The lower edge of the x axis.
00181      * @param upperEdge The upper edge of the x axis.
00182      * @param options   The options for the IHistogram1D. The default is "".
00183      *                  "type=efficiency" for an efficiency IHistogram1D.
00184      * @return          The newly created IHistogram1D.
00185      *
00186      */
00187     virtual IHistogram1D * createHistogram1D(const std::string & path, const std::string & title, int nBins, double lowerEdge, double upperEdge, const std::string & options = "") = 0;
00188 
00189     /**
00190      * Create a IHistogram1D.
00191      * @param pathAndTitle The path of the created created IHistogram. The path can either be a relative or full path.
00192      *                     The last part of the path is used as the title.
00193      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
00194      *                     All the directories in the path must exist. The characther `/` cannot be used
00195      *                     in names; it is only used to delimit directories within paths.
00196      * @param nBins        The number of bins of the x axis.
00197      * @param lowerEdge    The lower edge of the x axis.
00198      * @param upperEdge    The upper edge of the x axis.
00199      * @return             The newly created IHistogram1D.
00200      *
00201      */
00202     virtual IHistogram1D * createHistogram1D(const std::string & pathAndTitle, int nBins, double lowerEdge, double upperEdge) = 0;
00203 
00204     /**
00205      * Create a IHistogram1D.
00206      * @param path      The path of the created IHistogram. The path can either be a relative or full path.
00207      *                  ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00208      *                  All the directories in the path must exist. The characther `/` cannot be used
00209      *                  in names; it is only used to delimit directories within paths.
00210      * @param title     The title of the IHistogram1D.
00211      * @param binEdges  The array of the bin edges for the x axis.
00212      * @param options   The options for the IHistogram1D. The default is "".
00213      *                  "type=efficiency" for an efficiency IHistogram1D.
00214      * @return          The newly created IHistogram1D.
00215      *
00216      */
00217     virtual IHistogram1D * createHistogram1D(const std::string & path, const std::string & title, const std::vector<double>  & binEdges, const std::string & options = "") = 0;
00218 
00219     /**
00220      * Create a copy of an IHistogram1D.
00221      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
00222      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00223      *             All the directories in the path must exist. The characther `/` cannot be used
00224      *             in names; it is only used to delimit directories within paths.
00225      * @param hist The IHistogram1D to be copied.
00226      * @return     The copy of the IHistogram1D.
00227      *
00228      */
00229     virtual IHistogram1D * createCopy(const std::string & path, const IHistogram1D & hist) = 0;
00230 
00231     /**
00232      * Create a IHistogram2D.
00233      * @param path       The path of the created IHistogram. The path can either be a relative or full path.
00234      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00235      *                   All the directories in the path must exist. The characther `/` cannot be used
00236      *                   in names; it is only used to delimit directories within paths.
00237      * @param title      The title of the IHistogram2D.
00238      * @param nBinsX     The number of bins of the x axis.
00239      * @param lowerEdgeX The lower edge of the x axis.
00240      * @param upperEdgeX The upper edge of the x axis.
00241      * @param nBinsY     The number of bins of the y axis.
00242      * @param lowerEdgeY The lower edge of the y axis.
00243      * @param upperEdgeY The upper edge of the y axis.
00244      * @param options    The options for the IHistogram2D. The default is "".
00245      *                   "type=efficiency" for an efficiency IHistogram2D.
00246      * @return           The newly created IHistogram2D.
00247      *
00248      */
00249     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;
00250 
00251     /**
00252      * Create a IHistogram2D.
00253      * @param pathAndTitle The path of the created created IHistogram. The path can either be a relative or full path.
00254      *                     The last part of the path is used as the title.
00255      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
00256      *                     All the directories in the path must exist. The characther `/` cannot be used
00257      *                     in names; it is only used to delimit directories within paths.
00258      * @param nBinsX       The number of bins of the x axis.
00259      * @param lowerEdgeX   The lower edge of the x axis.
00260      * @param upperEdgeX   The upper edge of the x axis.
00261      * @param nBinsY       The number of bins of the y axis.
00262      * @param lowerEdgeY   The lower edge of the y axis.
00263      * @param upperEdgeY   The upper edge of the y axis.
00264      * @return             The newly created IHistogram2D.
00265      *
00266      */
00267     virtual IHistogram2D * createHistogram2D(const std::string & pathAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY) = 0;
00268 
00269     /**
00270      * Create a IHistogram2D.
00271      * @param path       The path of the created IHistogram. The path can either be a relative or full path.
00272      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00273      *                   All the directories in the path must exist. The characther `/` cannot be used
00274      *                   in names; it is only used to delimit directories within paths.
00275      * @param title      The title of the IHistogram2D.
00276      * @param binEdgesX  The array of the bin edges for the x axis.
00277      * @param binEdgesY  The array of the bin edges for the y axis.
00278      * @param options    The options for the IHistogram2D. The default is "".
00279      *                   "type=efficiency" for an efficiency IHistogram2D.
00280      * @return           The newly created IHistogram2D.
00281      *
00282      */
00283     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;
00284 
00285     /**
00286      * Create a copy of an IHistogram2D.
00287      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
00288      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00289      *             All the directories in the path must exist. The characther `/` cannot be used
00290      *             in names; it is only used to delimit directories within paths.
00291      * @param hist The IHistogram2D to be copied.
00292      * @return     The copy of the IHistogram2D.
00293      *
00294      */
00295     virtual IHistogram2D * createCopy(const std::string & copy, const IHistogram2D & hist) = 0;
00296 
00297     /**
00298      * Create a IHistogram3D.
00299      * @param path       The path of the created IHistogram. The path can either be a relative or full path.
00300      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00301      *                   All the directories in the path must exist. The characther `/` cannot be used
00302      *                   in names; it is only used to delimit directories within paths.
00303      * @param title      The title of the IHistogram3D.
00304      * @param nBinsX     The number of bins of the x axis.
00305      * @param lowerEdgeX The lower edge of the x axis.
00306      * @param upperEdgeX The upper edge of the x axis.
00307      * @param nBinsY     The number of bins of the y axis.
00308      * @param lowerEdgeY The lower edge of the y axis.
00309      * @param upperEdgeY The upper edge of the y axis.
00310      * @param nBinsZ     The number of bins of the z axis.
00311      * @param lowerEdgeZ The lower edge of the z axis.
00312      * @param upperEdgeZ The upper edge of the z axis.
00313      * @param options    The options for the IHistogram3D. The default is "".
00314      *                   "type=efficiency" for an efficiency IHistogram3D.
00315      * @return           The newly created IHistogram3D.
00316      *
00317      */
00318     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;
00319 
00320     /**
00321      * Create a IHistogram3D.
00322      * @param pathAndTitle The path of the created created IHistogram. The path can either be a relative or full path.
00323      *                     The last part of the path is used as the title.
00324      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
00325      *                     All the directories in the path must exist. The characther `/` cannot be used
00326      *                     in names; it is only used to delimit directories within paths.
00327      * @param nBinsX       The number of bins of the x axis.
00328      * @param lowerEdgeX   The lower edge of the x axis.
00329      * @param upperEdgeX   The upper edge of the x axis.
00330      * @param nBinsY       The number of bins of the y axis.
00331      * @param lowerEdgeY   The lower edge of the y axis.
00332      * @param upperEdgeY   The upper edge of the y axis.
00333      * @param nBinsZ       The number of bins of the z axis.
00334      * @param lowerEdgeZ   The lower edge of the z axis.
00335      * @param upperEdgeZ   The upper edge of the z axis.
00336      * @return             The newly created IHistogram3D.
00337      *
00338      */
00339     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;
00340 
00341     /**
00342      * Create a IHistogram3D.
00343      * @param path       The path of the created IHistogram. The path can either be a relative or full path.
00344      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00345      *                   All the directories in the path must exist. The characther `/` cannot be used
00346      *                   in names; it is only used to delimit directories within paths.
00347      * @param title      The title of the IHistogram3D.
00348      * @param binEdgesX  The array of the bin edges for the x axis.
00349      * @param binEdgesY  The array of the bin edges for the y axis.
00350      * @param binEdgesZ  The array of the bin edges for the z axis.
00351      * @param options    The options for the IHistogram3D. The default is "".
00352      *                   "type=efficiency" for an efficiency IHistogram3D.
00353      * @return           The newly created IHistogram3D.
00354      *
00355      */
00356     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;
00357 
00358     /**
00359      * Create a copy of an IHistogram3D.
00360      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
00361      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00362      *             All the directories in the path must exist. The characther `/` cannot be used
00363      *             in names; it is only used to delimit directories within paths.
00364      * @param hist The IHistogram3D to be copied.
00365      * @return     The copy of the IHistogram3D.
00366      *
00367      */
00368     virtual IHistogram3D * createCopy(const std::string & path, const IHistogram3D & hist) = 0;
00369 
00370     /**
00371      * Create a IProfile1D.
00372      * @param path      The path of the created IProfile. The path can either be a relative or full path.
00373      *                  ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00374      *                  All the directories in the path must exist. The characther `/` cannot be used
00375      *                  in names; it is only used to delimit directories within paths.
00376      * @param title     The title of the IProfile1D.
00377      * @param nBins     The number of bins of the x axis.
00378      * @param lowerEdge The lower edge of the x axis.
00379      * @param upperEdge The upper edge of the x axis.
00380      * @param options   The options for the IProfile1D. The default is "".
00381      * @return          The newly created IProfile1D.
00382      *
00383      */
00384     virtual IProfile1D * createProfile1D(const std::string & path, const std::string & title, int nBins, double lowerEdge, double upperEdge, const std::string & options = "") = 0;
00385 
00386     /**
00387      * Create a IProfile1D.
00388      * @param path       The path of the created IProfile. The path can either be a relative or full path.
00389      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00390      *                   All the directories in the path must exist. The characther `/` cannot be used
00391      *                   in names; it is only used to delimit directories within paths.
00392      * @param title      The title of the IProfile1D.
00393      * @param nBins      The number of bins of the x axis.
00394      * @param lowerEdge  The lower edge of the x axis.
00395      * @param upperEdge  The upper edge of the x axis.
00396      * @param lowerValue The lower value displayed along the y axis.
00397      * @param upperValue The upper value displayed along the y axis.
00398      * @param options    The options for the IProfile1D. The default is "".
00399      * @return           The newly created IProfile1D.
00400      *
00401      */
00402     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;
00403 
00404     /**
00405      * Create a IProfile1D.
00406      * @param path      The path of the created IProfile. The path can either be a relative or full path.
00407      *                  ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00408      *                  All the directories in the path must exist. The characther `/` cannot be used
00409      *                  in names; it is only used to delimit directories within paths.
00410      * @param title     The title of the IProfile1D.
00411      * @param binEdges  The array of the bin edges for the x axis.
00412      * @param options   The options for the IProfile1D. The default is "".
00413      * @return          The newly created IProfile1D.
00414      *
00415      */
00416     virtual IProfile1D * createProfile1D(const std::string & path, const std::string & title, const std::vector<double>  & binEdges, const std::string & options = "") = 0;
00417 
00418     /**
00419      * Create a IProfile1D.
00420      * @param path       The path of the created IProfile. The path can either be a relative or full path.
00421      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00422      *                   All the directories in the path must exist. The characther `/` cannot be used
00423      *                   in names; it is only used to delimit directories within paths.
00424      * @param title      The title of the IProfile1D.
00425      * @param binEdges   The array of the bin edges for the x axis.
00426      * @param lowerValue The lower value displayed along the y axis.
00427      * @param upperValue The upper value displayed along the y axis.
00428      * @param options    The options for the IProfile1D. The default is "".
00429      * @return           The newly created IProfile1D.
00430      *
00431      */
00432     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;
00433 
00434     /**
00435      * Create a IProfile1D.
00436      * @param pathAndTitle The path of the created created IProfile. The path can either be a relative or full path.
00437      *                     The last part of the path is used as the title.
00438      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
00439      *                     All the directories in the path must exist. The characther `/` cannot be used
00440      *                     in names; it is only used to delimit directories within paths.
00441      * @param nBins        The number of bins of the x axis.
00442      * @param lowerEdge    The lower edge of the x axis.
00443      * @param upperEdge    The upper edge of the x axis.
00444      * @return             The newly created IProfile1D.
00445      *
00446      */
00447     virtual IProfile1D * createProfile1D(const std::string & pathAndTitle, int nBins, double lowerEdge, double upperEdge) = 0;
00448 
00449     /**
00450      * Create a IProfile1D.
00451      * @param pathAndTitle The path of the created created IProfile. The path can either be a relative or full path.
00452      *                     The last part of the path is used as the title.
00453      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
00454      *                     All the directories in the path must exist. The characther `/` cannot be used
00455      *                     in names; it is only used to delimit directories within paths.
00456      * @param nBins        The number of bins of the x axis.
00457      * @param lowerEdge    The lower edge of the x axis.
00458      * @param upperEdge    The upper edge of the x axis.
00459      * @param lowerValue   The lower value displayed along the y axis.
00460      * @param upperValue   The upper value displayed along the y axis.
00461      * @return             The newly created IProfile1D.
00462      *
00463      */
00464     virtual IProfile1D * createProfile1D(const std::string & pathAndTitle, int nBins, double lowerEdge, double upperEdge, double lowerValue, double upperValue) = 0;
00465 
00466     /**
00467      * Create a copy of an IProfile1D.
00468      * @param path    The path of the resulting IProfile. The path can either be a relative or full path.
00469      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00470      *                All the directories in the path must exist. The characther `/` cannot be used
00471      *                in names; it is only used to delimit directories within paths.
00472      * @param profile The IProfile1D to be copied.
00473      * @return        The copy of the IProfile1D.
00474      *
00475      */
00476     virtual IProfile1D * createCopy(const std::string & path, const IProfile1D & profile) = 0;
00477 
00478     /**
00479      * Create a IProfile2D.
00480      * @param path       The path of the created IProfile. The path can either be a relative or full path.
00481      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00482      *                   All the directories in the path must exist. The characther `/` cannot be used
00483      *                   in names; it is only used to delimit directories within paths.
00484      * @param title      The title of the IProfile2D.
00485      * @param nBinsX     The number of bins of the x axis.
00486      * @param lowerEdgeX The lower edge of the x axis.
00487      * @param upperEdgeX The upper edge of the x axis.
00488      * @param nBinsY     The number of bins of the y axis.
00489      * @param lowerEdgeY The lower edge of the y axis.
00490      * @param upperEdgeY The upper edge of the y axis.
00491      * @param options    The options for the IProfile2D. The default is "".
00492      * @return           The newly created IProfile2D.
00493      *
00494      */
00495     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;
00496 
00497     /**
00498      * Create a IProfile2D.
00499      * @param path       The path of the created IProfile. The path can either be a relative or full path.
00500      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00501      *                   All the directories in the path must exist. The characther `/` cannot be used
00502      *                   in names; it is only used to delimit directories within paths.
00503      * @param title      The title of the IProfile2D.
00504      * @param nBinsX     The number of bins of the x axis.
00505      * @param lowerEdgeX The lower edge of the x axis.
00506      * @param upperEdgeX The upper edge of the x axis.
00507      * @param nBinsY     The number of bins of the y axis.
00508      * @param lowerEdgeY The lower edge of the y axis.
00509      * @param upperEdgeY The upper edge of the y axis.
00510      * @param lowerValue The lower value displayed along the z axis.
00511      * @param upperValue The upper value displayed along the z axis.
00512      * @param options    The options for the IProfile2D. The default is "".
00513      * @return           The newly created IProfile2D.
00514      *
00515      */
00516     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;
00517 
00518     /**
00519      * Create a IProfile2D.
00520      * @param path       The path of the created IProfile. The path can either be a relative or full path.
00521      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00522      *                   All the directories in the path must exist. The characther `/` cannot be used
00523      *                   in names; it is only used to delimit directories within paths.
00524      * @param title      The title of the IProfile2D.
00525      * @param binEdgesX  The array of the bin edges for the x axis.
00526      * @param binEdgesY  The array of the bin edges for the y axis.
00527      * @param options    The options for the IProfile2D. The default is "".
00528      * @return           The newly created IProfile2D.
00529      *
00530      */
00531     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;
00532 
00533     /**
00534      * Create a IProfile2D.
00535      * @param path       The path of the created IProfile. The path can either be a relative or full path.
00536      *                   ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00537      *                   All the directories in the path must exist. The characther `/` cannot be used
00538      *                   in names; it is only used to delimit directories within paths.
00539      * @param title      The title of the IProfile2D.
00540      * @param binEdgesX  The array of the bin edges for the x axis.
00541      * @param binEdgesY  The array of the bin edges for the y axis.
00542      * @param lowerValue The lower value displayed along the y axis.
00543      * @param upperValue The upper value displayed along the y axis.
00544      * @param options    The options for the IProfile2D. The default is "".
00545      * @return           The newly created IProfile2D.
00546      *
00547      */
00548     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;
00549 
00550     /**
00551      * Create a IProfile2D.
00552      * @param pathAndTitle The path of the created created IProfile. The path can either be a relative or full path.
00553      *                     The last part of the path is used as the title.
00554      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
00555      *                     All the directories in the path must exist. The characther `/` cannot be used
00556      *                     in names; it is only used to delimit directories within paths.
00557      * @param nBinsX       The number of bins of the x axis.
00558      * @param lowerEdgeX   The lower edge of the x axis.
00559      * @param upperEdgeX   The upper edge of the x axis.
00560      * @param nBinsY       The number of bins of the y axis.
00561      * @param lowerEdgeY   The lower edge of the y axis.
00562      * @param upperEdgeY   The upper edge of the y axis.
00563      * @return             The newly created IProfile2D.
00564      *
00565      */
00566     virtual IProfile2D * createProfile2D(const std::string & pathAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY) = 0;
00567 
00568     /**
00569      * Create a IProfile2D.
00570      * @param pathAndTitle The path of the created created IProfile. The path can either be a relative or full path.
00571      *                     The last part of the path is used as the title.
00572      *                     ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
00573      *                     All the directories in the path must exist. The characther `/` cannot be used
00574      *                     in names; it is only used to delimit directories within paths.
00575      * @param nBinsX       The number of bins of the x axis.
00576      * @param lowerEdgeX   The lower edge of the x axis.
00577      * @param upperEdgeX   The upper edge of the x axis.
00578      * @param nBinsY       The number of bins of the y axis.
00579      * @param lowerEdgeY   The lower edge of the y axis.
00580      * @param upperEdgeY   The upper edge of the y axis.
00581      * @param lowerValue   The lower value displayed along the z axis.
00582      * @param upperValue   The upper value displayed along the z axis.
00583      * @return             The newly created IProfile2D.
00584      *
00585      */
00586     virtual IProfile2D * createProfile2D(const std::string & pathAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, double lowerValue, double upperValue) = 0;
00587 
00588     /**
00589      * Create a copy of an IProfile2D.
00590      * @param path    The path of the resulting IProfile. The path can either be a relative or full path.
00591      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00592      *                All the directories in the path must exist. The characther `/` cannot be used
00593      *                in names; it is only used to delimit directories within paths.
00594      * @param profile The IProfile2D to be copied.
00595      * @return        The copy of the IProfile2D.
00596      *
00597      */
00598     virtual IProfile2D * createCopy(const std::string & path, const IProfile2D & profile) = 0;
00599 
00600     /**
00601      * Create an IHistogram1D by adding two IHistogram1D.
00602      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00603      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00604      *              All the directories in the path must exist. The characther `/` cannot be used
00605      *              in names; it is only used to delimit directories within paths.
00606      * @param hist1 The first member of the addition.
00607      * @param hist2 The second member of the addition.
00608      * @return      The sum of the two IHistogram1D.
00609      *              if a directory in the path does not exist, or the path is illegal.
00610      *
00611      */
00612     virtual IHistogram1D * add(const std::string & path, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
00613 
00614     /**
00615      * Create an IHistogram1D by subtracting two IHistogram1D.
00616      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00617      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00618      *              All the directories in the path must exist. The characther `/` cannot be used
00619      *              in names; it is only used to delimit directories within paths.
00620      * @param hist1 The first member of the subtraction.
00621      * @param hist2 The second member of the subtraction.
00622      * @return      The difference of the two IHistogram1D.
00623      *              if a directory in the path does not exist, or the path is illegal.
00624      *
00625      */
00626     virtual IHistogram1D * subtract(const std::string & path, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
00627 
00628     /**
00629      * Create an IHistogram1D by multiplying two IHistogram1D.
00630      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00631      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00632      *              All the directories in the path must exist. The characther `/` cannot be used
00633      *              in names; it is only used to delimit directories within paths.
00634      * @param hist1 The first member of the multiplication.
00635      * @param hist2 The second member of the multiplication.
00636      * @return      The product of the two IHistogram1D.
00637      *              if a directory in the path does not exist, or the path is illegal.
00638      *
00639      */
00640     virtual IHistogram1D * multiply(const std::string & path, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
00641 
00642     /**
00643      * Create an IHistogram1D by dividing two IHistogram1D.
00644      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00645      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00646      *              All the directories in the path must exist. The characther `/` cannot be used
00647      *              in names; it is only used to delimit directories within paths.
00648      * @param hist1 The first member of the division.
00649      * @param hist2 The second member of the division.
00650      * @return      The ration of the two IHistogram1D.
00651      *              if a directory in the path does not exist, or the path is illegal.
00652      *
00653      */
00654     virtual IHistogram1D * divide(const std::string & path, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
00655 
00656     /**
00657      * Create an IHistogram2D by adding two IHistogram2D.
00658      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00659      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00660      *              All the directories in the path must exist. The characther `/` cannot be used
00661      *              in names; it is only used to delimit directories within paths.
00662      * @param hist1 The first member of the addition.
00663      * @param hist2 The second member of the addition.
00664      * @return      The sum of the two IHistogram2D.
00665      *              if a directory in the path does not exist, or the path is illegal.
00666      *
00667      */
00668     virtual IHistogram2D * add(const std::string & path, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
00669 
00670     /**
00671      * Create an IHistogram2D by subtracting two IHistogram2D.
00672      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00673      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00674      *              All the directories in the path must exist. The characther `/` cannot be used
00675      *              in names; it is only used to delimit directories within paths.
00676      * @param hist1 The first member of the subtraction.
00677      * @param hist2 The second member of the subtraction.
00678      * @return      The difference of the two IHistogram2D.
00679      *              if a directory in the path does not exist, or the path is illegal.
00680      *
00681      */
00682     virtual IHistogram2D * subtract(const std::string & path, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
00683 
00684     /**
00685      * Create an IHistogram2D by multiplying two IHistogram2D.
00686      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00687      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00688      *              All the directories in the path must exist. The characther `/` cannot be used
00689      *              in names; it is only used to delimit directories within paths.
00690      * @param hist1 The first member of the multiplication.
00691      * @param hist2 The second member of the multiplication.
00692      * @return      The product of the two IHistogram2D.
00693      *              if a directory in the path does not exist, or the path is illegal.
00694      *
00695      */
00696     virtual IHistogram2D * multiply(const std::string & path, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
00697 
00698     /**
00699      * Create an IHistogram2D by dividing two IHistogram2D.
00700      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00701      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00702      *              All the directories in the path must exist. The characther `/` cannot be used
00703      *              in names; it is only used to delimit directories within paths.
00704      * @param hist1 The first member of the division.
00705      * @param hist2 The second member of the division.
00706      * @return      The ration of the two IHistogram2D.
00707      *              if a directory in the path does not exist, or the path is illegal.
00708      *
00709      */
00710     virtual IHistogram2D * divide(const std::string & path, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
00711 
00712     /**
00713      * Create an IHistogram3D by adding two IHistogram3D.
00714      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00715      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00716      *              All the directories in the path must exist. The characther `/` cannot be used
00717      *              in names; it is only used to delimit directories within paths.
00718      * @param hist1 The first member of the addition.
00719      * @param hist2 The second member of the addition.
00720      * @return      The sum of the two IHistogram3D.
00721      *              if a directory in the path does not exist, or the path is illegal.
00722      *
00723      */
00724     virtual IHistogram3D * add(const std::string & path, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
00725 
00726     /**
00727      * Create an IHistogram3D by subtracting two IHistogram3D.
00728      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00729      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00730      *              All the directories in the path must exist. The characther `/` cannot be used
00731      *              in names; it is only used to delimit directories within paths.
00732      * @param hist1 The first member of the subtraction.
00733      * @param hist2 The second member of the subtraction.
00734      * @return      The difference of the two IHistogram3D.
00735      *              if a directory in the path does not exist, or the path is illegal.
00736      *
00737      */
00738     virtual IHistogram3D * subtract(const std::string & path, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
00739 
00740     /**
00741      * Create an IHistogram3D by multiplying two IHistogram3D.
00742      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00743      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00744      *              All the directories in the path must exist. The characther `/` cannot be used
00745      *              in names; it is only used to delimit directories within paths.
00746      * @param hist1 The first member of the multiplication.
00747      * @param hist2 The second member of the multiplication.
00748      * @return      The product of the two IHistogram3D.
00749      *              if a directory in the path does not exist, or the path is illegal.
00750      *
00751      */
00752     virtual IHistogram3D * multiply(const std::string & path, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
00753 
00754     /**
00755      * Create an IHistogram3D by dividing two IHistogram3D.
00756      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00757      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00758      *              All the directories in the path must exist. The characther `/` cannot be used
00759      *              in names; it is only used to delimit directories within paths.
00760      * @param hist1 The first member of the division.
00761      * @param hist2 The second member of the division.
00762      * @return      The ration of the two IHistogram3D.
00763      *              if a directory in the path does not exist, or the path is illegal.
00764      *
00765      */
00766     virtual IHistogram3D * divide(const std::string & path, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
00767 
00768     /**
00769      * Create an IHistogram1D by projecting an IHistogram2D along its x axis.
00770      * This is equivalent to <tt>sliceX(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
00771      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
00772      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00773      *             All the directories in the path must exist. The characther `/` cannot be used
00774      *             in names; it is only used to delimit directories within paths.
00775      * @param hist The IHistogram2D to be projected.
00776      * @return     The resulting projection.
00777      *
00778      */
00779     virtual IHistogram1D * projectionX(const std::string & path, const IHistogram2D & hist) = 0;
00780 
00781     /**
00782      * Create an IHistogram1D by projecting an IHistogram2D along its y axis.
00783      * This is equivalent to <tt>sliceY(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
00784      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
00785      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00786      *             All the directories in the path must exist. The characther `/` cannot be used
00787      *             in names; it is only used to delimit directories within paths.
00788      * @param hist The IHistogram2D to be projected.
00789      * @return     The resulting projection.
00790      *
00791      */
00792     virtual IHistogram1D * projectionY(const std::string & path, const IHistogram2D & hist) = 0;
00793 
00794     /**
00795      * Create an IHistogram1D by slicing an IHistogram2D parallel to the y axis at a given bin.
00796      * This is equivalent to <tt>sliceX(indexY,indexY)</tt>.
00797      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00798      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00799      *              All the directories in the path must exist. The characther `/` cannot be used
00800      *              in names; it is only used to delimit directories within paths.
00801      * @param hist  The IHistogram2D to be sliced.
00802      * @param index The index of the bin along the y axis where the IHistogram2D has to be sliced.
00803      * @return      The resulting slice.
00804      *
00805      */
00806     virtual IHistogram1D * sliceX(const std::string & path, const IHistogram2D & hist, int index) = 0;
00807 
00808     /**
00809      * Create an IHistogram1D by slicing an IHistogram2D parallel to the x axis at a given bin.
00810      * This is equivalent to <tt>sliceY(indexX,indexX)</tt>.
00811      * @param path  The path of the resulting IHistogram. The path can either be a relative or full path.
00812      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00813      *              All the directories in the path must exist. The characther `/` cannot be used
00814      *              in names; it is only used to delimit directories within paths.
00815      * @param hist  The IHistogram2D to be sliced.
00816      * @param index The index of the bin along the x axis where the IHistogram2D has to be sliced.
00817      * @return      The resulting slice.
00818      *
00819      */
00820     virtual IHistogram1D * sliceY(const std::string & path, const IHistogram2D & hist, int index) = 0;
00821 
00822     /**
00823      * Create an IHistogram1D by slicing an IHistogram2D parallel to the y axis between two bins (inclusive).
00824      * @param path   The path of the resulting IHistogram. The path can either be a relative or full path.
00825      *               ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00826      *               All the directories in the path must exist. The characther `/` cannot be used
00827      *               in names; it is only used to delimit directories within paths.
00828      * @param hist   The IHistogram2D to be sliced.
00829      * @param index1 The index of the bin along the y axis that marks the lower edge of the slice.
00830      * @param index2 The index of the bin along the y axis that marks the upper edge of the slice.
00831      * @return       The resulting slice.
00832      *
00833      */
00834     virtual IHistogram1D * sliceX(const std::string & path, const IHistogram2D & hist, int index1, int index2) = 0;
00835 
00836     /**
00837      * Create an IHistogram1D by slicing an IHistogram2D parallel to the x axis between two bins (inclusive).
00838      * @param path   The path of the resulting IHistogram. The path can either be a relative or full path.
00839      *               ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00840      *               All the directories in the path must exist. The characther `/` cannot be used
00841      *               in names; it is only used to delimit directories within paths.
00842      * @param hist   The IHistogram2D to be sliced.
00843      * @param index1 The index of the bin along the x axis that marks the lower edge of the slice.
00844      * @param index2 The index of the bin along the x axis that marks the upper edge of the slice.
00845      * @return       The resulting slice.
00846      *
00847      */
00848     virtual IHistogram1D * sliceY(const std::string & path, const IHistogram2D & hist, int index1, int index2) = 0;
00849 
00850     /**
00851      * Create an IHistogram2D by projecting an IHistogram3D on the x-y plane.
00852      * This is equivalent to <tt>sliceXY(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
00853      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
00854      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00855      *             All the directories in the path must exist. The characther `/` cannot be used
00856      *             in names; it is only used to delimit directories within paths.
00857      * @param hist The IHistogram3D to be projected.
00858      * @return     The resulting projection.
00859      *
00860      */
00861     virtual IHistogram2D * projectionXY(const std::string & path, const IHistogram3D & hist) = 0;
00862 
00863     /**
00864      * Create an IHistogram2D by projecting an IHistogram3D on the x-z plane.
00865      * This is equivalent to <tt>sliceXZ(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
00866      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
00867      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00868      *             All the directories in the path must exist. The characther `/` cannot be used
00869      *             in names; it is only used to delimit directories within paths.
00870      * @param hist The IHistogram3D to be projected.
00871      * @return     The resulting projection.
00872      *
00873      */
00874     virtual IHistogram2D * projectionXZ(const std::string & path, const IHistogram3D & hist) = 0;
00875 
00876     /**
00877      * Create an IHistogram2D by projecting an IHistogram3D on the y-z plane.
00878      * This is equivalent to <tt>sliceYZ(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
00879      * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
00880      *             ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00881      *             All the directories in the path must exist. The characther `/` cannot be used
00882      *             in names; it is only used to delimit directories within paths.
00883      * @param hist The IHistogram3D to be projected.
00884      * @return     The resulting projection.
00885      *
00886      */
00887     virtual IHistogram2D * projectionYZ(const std::string & path, const IHistogram3D & hist) = 0;
00888 
00889     /**
00890      * Create an IHistogram2D by slicing an IHistogram3D perpendicular to the Z axis,
00891      * between "index1" and "index2" (inclusive).
00892      * The X axis of the IHistogram2D corresponds to the X axis of this IHistogram3D.
00893      * The Y axis of the IHistogram2D corresponds to the Y axis of this IHistogram3D.
00894      * @param path   The path of the resulting IHistogram. The path can either be a relative or full path.
00895      *               ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00896      *               All the directories in the path must exist. The characther `/` cannot be used
00897      *               in names; it is only used to delimit directories within paths.
00898      * @param hist   The IHistogram3D to sliced.
00899      * @param index1 The index of the bin along the z axis that marks the lower edge of the slice.
00900      * @param index2 The index of the bin along the z axis that marks the upper edge of the slice.
00901      * @return       The resulting slice.
00902      *
00903      */
00904     virtual IHistogram2D * sliceXY(const std::string & path, const IHistogram3D & hist, int index1, int index2) = 0;
00905 
00906     /**
00907      * Create an IHistogram2D by slicing an IHistogram3D perpendicular to the Y axis,
00908      * between "index1" and "index2" (inclusive).
00909      * The X axis of the IHistogram2D corresponds to the X axis of this IHistogram3D.
00910      * The Z axis of the IHistogram2D corresponds to the Z axis of this IHistogram3D.
00911      * @param path   The path of the resulting IHistogram. The path can either be a relative or full path.
00912      *               ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00913      *               All the directories in the path must exist. The characther `/` cannot be used
00914      *               in names; it is only used to delimit directories within paths.
00915      * @param hist   The IHistogram3D to sliced.
00916      * @param index1 The index of the bin along the y axis that marks the lower edge of the slice.
00917      * @param index2 The index of the bin along the y axis that marks the upper edge of the slice.
00918      * @return       The resulting slice.
00919      *
00920      */
00921     virtual IHistogram2D * sliceXZ(const std::string & path, const IHistogram3D & hist, int index1, int index2) = 0;
00922 
00923     /**
00924      * Create an IHistogram2D by slicing an IHistogram3D perpendicular to the X axis,
00925      * between "index1" and "index2" (inclusive).
00926      * The Y axis of the IHistogram2D corresponds to the Y axis of this IHistogram3D.
00927      * The Z axis of the IHistogram2D corresponds to the Z axis of this IHistogram3D.
00928      * @param path   The path of the resulting IHistogram. The path can either be a relative or full path.
00929      *               ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
00930      *               All the directories in the path must exist. The characther `/` cannot be used
00931      *               in names; it is only used to delimit directories within paths.
00932      * @param hist   The IHistogram3D to sliced.
00933      * @param index1 The index of the bin along the x axis that marks the lower edge of the slice.
00934      * @param index2 The index of the bin along the x axis that marks the upper edge of the slice.
00935      * @return       The resulting slice.
00936      *
00937      */
00938     virtual IHistogram2D * sliceYZ(const std::string & path, const IHistogram3D & hist, int index1, int index2) = 0;
00939 }; // class
00940 } // namespace AIDA
00941 #endif /* ifndef AIDA_IHISTOGRAMFACTORY_H */