00001
00002
00003
00004
00005
00006
00007 #ifndef AIDA_IHISTOGRAMFACTORY_H
00008 #define AIDA_IHISTOGRAMFACTORY_H 1
00009
00010
00011
00012
00013
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
00038 class IHistogramFactory {
00039
00040 public:
00042 virtual ~IHistogramFactory() { ; }
00043
00050 virtual bool destroy(IBaseHistogram * hist) = 0;
00051
00064 virtual ICloud1D * createCloud1D(const std::string & name, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
00065
00072 virtual ICloud1D * createCloud1D(const std::string & nameAndTitle) = 0;
00073
00081 virtual ICloud1D * createCopy(const std::string & name, const ICloud1D & cloud) = 0;
00082
00095 virtual ICloud2D * createCloud2D(const std::string & name, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
00096
00103 virtual ICloud2D * createCloud2D(const std::string & nameAndTitle) = 0;
00104
00112 virtual ICloud2D * createCopy(const std::string & name, const ICloud2D & cloud) = 0;
00113
00126 virtual ICloud3D * createCloud3D(const std::string & name, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
00127
00134 virtual ICloud3D * createCloud3D(const std::string & nameAndTitle) = 0;
00135
00143 virtual ICloud3D * createCopy(const std::string & name, const ICloud3D & cloud) = 0;
00144
00157 virtual IHistogram1D * createHistogram1D(const std::string & name, const std::string & title, int nBins, double lowerEdge, double upperEdge, const std::string & options = "") = 0;
00158
00168 virtual IHistogram1D * createHistogram1D(const std::string & nameAndTitle, int nBins, double lowerEdge, double upperEdge) = 0;
00169
00180 virtual IHistogram1D * createHistogram1D(const std::string & name, const std::string & title, const std::vector<double> & binEdges, const std::string & options = "") = 0;
00181
00189 virtual IHistogram1D * createCopy(const std::string & name, const IHistogram1D & hist) = 0;
00190
00206 virtual IHistogram2D * createHistogram2D(const std::string & name, const std::string & title, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, const std::string & options = "") = 0;
00207
00220 virtual IHistogram2D * createHistogram2D(const std::string & nameAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY) = 0;
00221
00233 virtual IHistogram2D * createHistogram2D(const std::string & name, const std::string & title, const std::vector<double> & binEdgesX, const std::vector<double> & binEdgesY, const std::string & options = "") = 0;
00234
00242 virtual IHistogram2D * createCopy(const std::string & name, const IHistogram2D & hist) = 0;
00243
00262 virtual IHistogram3D * createHistogram3D(const std::string & name, 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;
00263
00279 virtual IHistogram3D * createHistogram3D(const std::string & nameAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, int nBinsZ, double lowerEdgeZ, double upperEdgeZ) = 0;
00280
00293 virtual IHistogram3D * createHistogram3D(const std::string & name, const std::string & title, const std::vector<double> & binEdgesX, const std::vector<double> & binEdgesY, const std::vector<double> & binEdgesZ, const std::string & options = "") = 0;
00294
00302 virtual IHistogram3D * createCopy(const std::string & name, const IHistogram3D & hist) = 0;
00303
00315 virtual IProfile1D * createProfile1D(const std::string & name, const std::string & title, int nBins, double lowerEdge, double upperEdge, const std::string & options = "") = 0;
00316
00330 virtual IProfile1D * createProfile1D(const std::string & name, const std::string & title, int nBins, double lowerEdge, double upperEdge, double lowerValue, double upperValue, const std::string & options = "") = 0;
00331
00341 virtual IProfile1D * createProfile1D(const std::string & name, const std::string & title, const std::vector<double> & binEdges, const std::string & options = "") = 0;
00342
00354 virtual IProfile1D * createProfile1D(const std::string & name, const std::string & title, const std::vector<double> & binEdges, double lowerValue, double upperValue, const std::string & options = "") = 0;
00355
00365 virtual IProfile1D * createProfile1D(const std::string & nameAndTitle, int nBins, double lowerEdge, double upperEdge) = 0;
00366
00378 virtual IProfile1D * createProfile1D(const std::string & nameAndTitle, int nBins, double lowerEdge, double upperEdge, double lowerValue, double upperValue) = 0;
00379
00387 virtual IProfile1D * createCopy(const std::string & name, const IProfile1D & profile) = 0;
00388
00403 virtual IProfile2D * createProfile2D(const std::string & name, const std::string & title, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, const std::string & options = "") = 0;
00404
00421 virtual IProfile2D * createProfile2D(const std::string & name, 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;
00422
00433 virtual IProfile2D * createProfile2D(const std::string & name, const std::string & title, const std::vector<double> & binEdgesX, const std::vector<double> & binEdgesY, const std::string & options = "") = 0;
00434
00447 virtual IProfile2D * createProfile2D(const std::string & name, const std::string & title, const std::vector<double> & binEdgesX, const std::vector<double> & binEdgesY, double lowerValue, double upperValue, const std::string & options = "") = 0;
00448
00461 virtual IProfile2D * createProfile2D(const std::string & nameAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY) = 0;
00462
00477 virtual IProfile2D * createProfile2D(const std::string & nameAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, double lowerValue, double upperValue) = 0;
00478
00486 virtual IProfile2D * createCopy(const std::string & name, const IProfile2D & profile) = 0;
00487
00496 virtual IHistogram1D * add(const std::string & name, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
00497
00506 virtual IHistogram1D * subtract(const std::string & name, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
00507
00516 virtual IHistogram1D * multiply(const std::string & name, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
00517
00526 virtual IHistogram1D * divide(const std::string & name, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
00527
00536 virtual IHistogram2D * add(const std::string & name, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
00537
00546 virtual IHistogram2D * subtract(const std::string & name, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
00547
00556 virtual IHistogram2D * multiply(const std::string & name, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
00557
00566 virtual IHistogram2D * divide(const std::string & name, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
00567
00576 virtual IHistogram3D * add(const std::string & name, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
00577
00586 virtual IHistogram3D * subtract(const std::string & name, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
00587
00596 virtual IHistogram3D * multiply(const std::string & name, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
00597
00606 virtual IHistogram3D * divide(const std::string & name, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
00607
00616 virtual IHistogram1D * projectionX(const std::string & name, const IHistogram2D & hist) = 0;
00617
00626 virtual IHistogram1D * projectionY(const std::string & name, const IHistogram2D & hist) = 0;
00627
00637 virtual IHistogram1D * sliceX(const std::string & name, const IHistogram2D & hist, int index) = 0;
00638
00648 virtual IHistogram1D * sliceY(const std::string & name, const IHistogram2D & hist, int index) = 0;
00649
00659 virtual IHistogram1D * sliceX(const std::string & name, const IHistogram2D & hist, int index1, int index2) = 0;
00660
00670 virtual IHistogram1D * sliceY(const std::string & name, const IHistogram2D & hist, int index1, int index2) = 0;
00671
00680 virtual IHistogram2D * projectionXY(const std::string & name, const IHistogram3D & hist) = 0;
00681
00690 virtual IHistogram2D * projectionXZ(const std::string & name, const IHistogram3D & hist) = 0;
00691
00700 virtual IHistogram2D * projectionYZ(const std::string & name, const IHistogram3D & hist) = 0;
00701
00714 virtual IHistogram2D * sliceXY(const std::string & name, const IHistogram3D & hist, int index1, int index2) = 0;
00715
00728 virtual IHistogram2D * sliceXZ(const std::string & name, const IHistogram3D & hist, int index1, int index2) = 0;
00729
00742 virtual IHistogram2D * sliceYZ(const std::string & name, const IHistogram3D & hist, int index1, int index2) = 0;
00743 };
00744 };
00745 #endif