Files
geant4/examples/extended/analysis/A01/include/AIDA/IHistogramFactory.h
T
2016-06-08 16:57:27 +02:00

768 lines
36 KiB
C++

//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// -*- C++ -*-
// AID-GENERATED
// =========================================================================
// This class was generated by AID - Abstract Interface Definition
// DO NOT MODIFY, but use the org.freehep.aid.Aid utility to regenerate it.
// =========================================================================
#ifndef AIDA_IHISTOGRAMFACTORY_H
#define AIDA_IHISTOGRAMFACTORY_H 1
// This file is part of the AIDA library
// Copyright (C) 2002 by the AIDA team. All rights reserved.
// This library is free software and under the terms of the
// GNU Library General Public License described in the LGPL.txt
#include <string>
#include <vector>
namespace AIDA {
class IBaseHistogram;
class ICloud1D;
class ICloud2D;
class ICloud3D;
class IHistogram1D;
class IHistogram2D;
class IHistogram3D;
class IProfile1D;
class IProfile2D;
/**
* User level interface for factory classes of Histograms (binned, unbinned, and profile)
* The created objects are assumed to be managed by the tree which is associated to the factory.
*
* @author The AIDA team (http://aida.freehep.org/)
*
*/
class IHistogramFactory {
public:
/// Destructor.
virtual ~IHistogramFactory() { /* nop */; }
/**
* Destroy an IBaseHistogram ogject.
* @param hist The IBaseHistogram to be destroyed.
* @return false If the histogram cannot be destroyed.
*
*/
virtual bool destroy(IBaseHistogram * hist) = 0;
/**
* Create a ICloud1D, an unbinned 1-dimensioal histogram.
* @param name The name of the ICloud1D.
* @param title The title of the ICloud1D.
* @param nMax The maximum number of entries after which the ICloud1D
* will convert to an IHistogram1D. The default nMax = -1
* indicates no limit of entries before aoutoconversion to a IHistogram1D.
* @param options The options for the ICloud1D. "autoconvert=true" to enable autoconversion
* to an IHistogram1D.
* @return The newly created ICloud1D.
*
*/
virtual ICloud1D * createCloud1D(const std::string & name, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
/**
* Create a ICloud1D, an unbinned 1-dimensional histogram.
* @param nameAndTitle The name of the ICloud1D; it is also its title.
* @return The newly created ICloud1D.
*
*/
virtual ICloud1D * createCloud1D(const std::string & nameAndTitle) = 0;
/**
* Create a copy of an ICloud1D.
* @param name The name of the new copy.
* @param cloud The ICloud1D to be copied.
* @return The copy of the ICloud1D.
*
*/
virtual ICloud1D * createCopy(const std::string & name, const ICloud1D & cloud) = 0;
/**
* Create a ICloud2D, an unbinned 2-dimensional histogram.
* @param name The name of the ICloud2D.
* @param title The title of the ICloud2D.
* @param nMax The maximum number of entries after which the ICloud2D
* will convert to an IHistogram2D. The default nMax = -1
* indicates no limit of entries before aoutoconversion to a IHistogram2D.
* @param options The options for the ICloud2D. "autoconvert=true" to enable autoconversion
* to an IHistogram2D.
* @return The newly created ICloud2D.
*
*/
virtual ICloud2D * createCloud2D(const std::string & name, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
/**
* Create a ICloud2D, an unbinned 2-dimensional histogram.
* @param nameAndTitle The name of the ICloud2D; it is also its title.
* @return The newly created ICloud2D.
*
*/
virtual ICloud2D * createCloud2D(const std::string & nameAndTitle) = 0;
/**
* Create a copy of an ICloud2D.
* @param name The name of the new copy.
* @param cloud The ICloud2D to be copied.
* @return The copy of the ICloud2D.
*
*/
virtual ICloud2D * createCopy(const std::string & name, const ICloud2D & cloud) = 0;
/**
* Create a ICloud3D, an unbinned 3-dimensional histogram.
* @param name The name of the ICloud3D.
* @param title The title of the ICloud3D.
* @param nMax The maximum number of entries after which the ICloud3D
* will convert to an IHistogram3D. The default nMax = -1
* indicates no limit of entries before aoutoconversion to a IHistogram3D.
* @param options The options for the ICloud3D. "autoconvert=true" to enable autoconversion
* to an IHistogram3D.
* @return The newly created ICloud3D.
*
*/
virtual ICloud3D * createCloud3D(const std::string & name, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
/**
* Create a ICloud3D, an unbinned 3-dimensional histogram.
* @param nameAndTitle The name of the ICloud3D; it is also its title.
* @return The newly created ICloud3D.
*
*/
virtual ICloud3D * createCloud3D(const std::string & nameAndTitle) = 0;
/**
* Create a copy of an ICloud3D.
* @param name The name of the new copy.
* @param cloud The ICloud3D to be copied.
* @return The copy of the ICloud3D.
*
*/
virtual ICloud3D * createCopy(const std::string & name, const ICloud3D & cloud) = 0;
/**
* Create a IHistogram1D.
* @param name The name of the IHistogram1D.
* @param title The title of the IHistogram1D.
* @param nBins The number of bins of the x axis.
* @param lowerEdge The lower edge of the x axis.
* @param upperEdge The upper edge of the x axis.
* @param options The options for the IHistogram1D. The default is "".
* "type=efficiency" for an efficiency IHistogram1D.
* @return The newly created IHistogram1D.
*
*/
virtual IHistogram1D * createHistogram1D(const std::string & name, const std::string & title, int nBins, double lowerEdge, double upperEdge, const std::string & options = "") = 0;
/**
* Create a IHistogram1D.
* @param nameAndTitle The name of the IHistogram1D; it is also the title.
* @param nBins The number of bins of the x axis.
* @param lowerEdge The lower edge of the x axis.
* @param upperEdge The upper edge of the x axis.
* @return The newly created IHistogram1D.
*
*/
virtual IHistogram1D * createHistogram1D(const std::string & nameAndTitle, int nBins, double lowerEdge, double upperEdge) = 0;
/**
* Create a IHistogram1D.
* @param name The name of the IHistogram1D.
* @param title The title of the IHistogram1D.
* @param binEdges The array of the bin edges for the x axis.
* @param options The options for the IHistogram1D. The default is "".
* "type=efficiency" for an efficiency IHistogram1D.
* @return The newly created IHistogram1D.
*
*/
virtual IHistogram1D * createHistogram1D(const std::string & name, const std::string & title, const std::vector<double> & binEdges, const std::string & options = "") = 0;
/**
* Create a copy of an IHistogram1D.
* @param name The name of the new copy.
* @param hist The IHistogram1D to be copied.
* @return The copy of the IHistogram1D.
*
*/
virtual IHistogram1D * createCopy(const std::string & name, const IHistogram1D & hist) = 0;
/**
* Create a IHistogram2D.
* @param name The name of the IHistogram2D.
* @param title The title of the IHistogram2D.
* @param nBinsX The number of bins of the x axis.
* @param lowerEdgeX The lower edge of the x axis.
* @param upperEdgeX The upper edge of the x axis.
* @param nBinsY The number of bins of the y axis.
* @param lowerEdgeY The lower edge of the y axis.
* @param upperEdgeY The upper edge of the y axis.
* @param options The options for the IHistogram2D. The default is "".
* "type=efficiency" for an efficiency IHistogram2D.
* @return The newly created IHistogram2D.
*
*/
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;
/**
* Create a IHistogram2D.
* @param nameAndTitle The name of the IHistogram2D; it is also the title.
* @param nBinsX The number of bins of the x axis.
* @param lowerEdgeX The lower edge of the x axis.
* @param upperEdgeX The upper edge of the x axis.
* @param nBinsY The number of bins of the y axis.
* @param lowerEdgeY The lower edge of the y axis.
* @param upperEdgeY The upper edge of the y axis.
* @return The newly created IHistogram2D.
*
*/
virtual IHistogram2D * createHistogram2D(const std::string & nameAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY) = 0;
/**
* Create a IHistogram2D.
* @param name The name of the IHistogram2D.
* @param title The title of the IHistogram2D.
* @param binEdgesX The array of the bin edges for the x axis.
* @param binEdgesY The array of the bin edges for the y axis.
* @param options The options for the IHistogram2D. The default is "".
* "type=efficiency" for an efficiency IHistogram2D.
* @return The newly created IHistogram2D.
*
*/
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;
/**
* Create a copy of an IHistogram2D.
* @param name The name of the new copy.
* @param hist The IHistogram2D to be copied.
* @return The copy of the IHistogram2D.
*
*/
virtual IHistogram2D * createCopy(const std::string & name, const IHistogram2D & hist) = 0;
/**
* Create a IHistogram3D.
* @param name The name of the IHistogram3D.
* @param title The title of the IHistogram3D.
* @param nBinsX The number of bins of the x axis.
* @param lowerEdgeX The lower edge of the x axis.
* @param upperEdgeX The upper edge of the x axis.
* @param nBinsY The number of bins of the y axis.
* @param lowerEdgeY The lower edge of the y axis.
* @param upperEdgeY The upper edge of the y axis.
* @param nBinsZ The number of bins of the z axis.
* @param lowerEdgeZ The lower edge of the z axis.
* @param upperEdgeZ The upper edge of the z axis.
* @param options The options for the IHistogram3D. The default is "".
* "type=efficiency" for an efficiency IHistogram3D.
* @return The newly created IHistogram3D.
*
*/
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;
/**
* Create a IHistogram3D.
* @param nameAndTitle The name of the IHistogram3D; it is also the title.
* @param nBinsX The number of bins of the x axis.
* @param lowerEdgeX The lower edge of the x axis.
* @param upperEdgeX The upper edge of the x axis.
* @param nBinsY The number of bins of the y axis.
* @param lowerEdgeY The lower edge of the y axis.
* @param upperEdgeY The upper edge of the y axis.
* @param nBinsZ The number of bins of the z axis.
* @param lowerEdgeZ The lower edge of the z axis.
* @param upperEdgeZ The upper edge of the z axis.
* @return The newly created IHistogram3D.
*
*/
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;
/**
* Create a IHistogram3D.
* @param name The name of the IHistogram3D.
* @param title The title of the IHistogram3D.
* @param binEdgesX The array of the bin edges for the x axis.
* @param binEdgesY The array of the bin edges for the y axis.
* @param binEdgesZ The array of the bin edges for the z axis.
* @param options The options for the IHistogram3D. The default is "".
* "type=efficiency" for an efficiency IHistogram3D.
* @return The newly created IHistogram3D.
*
*/
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;
/**
* Create a copy of an IHistogram3D.
* @param name The name of the new copy.
* @param hist The IHistogram3D to be copied.
* @return The copy of the IHistogram3D.
*
*/
virtual IHistogram3D * createCopy(const std::string & name, const IHistogram3D & hist) = 0;
/**
* Create a IProfile1D.
* @param name The name of the IProfile1D.
* @param title The title of the IProfile1D.
* @param nBins The number of bins of the x axis.
* @param lowerEdge The lower edge of the x axis.
* @param upperEdge The upper edge of the x axis.
* @param options The options for the IProfile1D. The default is "".
* @return The newly created IProfile1D.
*
*/
virtual IProfile1D * createProfile1D(const std::string & name, const std::string & title, int nBins, double lowerEdge, double upperEdge, const std::string & options = "") = 0;
/**
* Create a IProfile1D.
* @param name The name of the IProfile1D.
* @param title The title of the IProfile1D.
* @param nBins The number of bins of the x axis.
* @param lowerEdge The lower edge of the x axis.
* @param upperEdge The upper edge of the x axis.
* @param lowerValue The lower value displayed along the y axis.
* @param upperValue The upper value displayed along the y axis.
* @param options The options for the IProfile1D. The default is "".
* @return The newly created IProfile1D.
*
*/
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;
/**
* Create a IProfile1D.
* @param name The name of the IProfile1D.
* @param title The title of the IProfile1D.
* @param binEdges The array of the bin edges for the x axis.
* @param options The options for the IProfile1D. The default is "".
* @return The newly created IProfile1D.
*
*/
virtual IProfile1D * createProfile1D(const std::string & name, const std::string & title, const std::vector<double> & binEdges, const std::string & options = "") = 0;
/**
* Create a IProfile1D.
* @param name The name of the IProfile1D.
* @param title The title of the IProfile1D.
* @param binEdges The array of the bin edges for the x axis.
* @param lowerValue The lower value displayed along the y axis.
* @param upperValue The upper value displayed along the y axis.
* @param options The options for the IProfile1D. The default is "".
* @return The newly created IProfile1D.
*
*/
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;
/**
* Create a IProfile1D.
* @param nameAndTitle The name of the IProfile1D; it is also the title.
* @param nBins The number of bins of the x axis.
* @param lowerEdge The lower edge of the x axis.
* @param upperEdge The upper edge of the x axis.
* @return The newly created IProfile1D.
*
*/
virtual IProfile1D * createProfile1D(const std::string & nameAndTitle, int nBins, double lowerEdge, double upperEdge) = 0;
/**
* Create a IProfile1D.
* @param nameAndTitle The name of the IProfile1D; it is also the title.
* @param nBins The number of bins of the x axis.
* @param lowerEdge The lower edge of the x axis.
* @param upperEdge The upper edge of the x axis.
* @param lowerValue The lower value displayed along the y axis.
* @param upperValue The upper value displayed along the y axis.
* @return The newly created IProfile1D.
*
*/
virtual IProfile1D * createProfile1D(const std::string & nameAndTitle, int nBins, double lowerEdge, double upperEdge, double lowerValue, double upperValue) = 0;
/**
* Create a copy of an IProfile1D.
* @param name The name of the new copy.
* @param profile The IProfile1D to be copied.
* @return The copy of the IProfile1D.
*
*/
virtual IProfile1D * createCopy(const std::string & name, const IProfile1D & profile) = 0;
/**
* Create a IProfile2D.
* @param name The name of the IProfile2D.
* @param title The title of the IProfile2D.
* @param nBinsX The number of bins of the x axis.
* @param lowerEdgeX The lower edge of the x axis.
* @param upperEdgeX The upper edge of the x axis.
* @param nBinsY The number of bins of the y axis.
* @param lowerEdgeY The lower edge of the y axis.
* @param upperEdgeY The upper edge of the y axis.
* @param options The options for the IProfile2D. The default is "".
* @return The newly created IProfile2D.
*
*/
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;
/**
* Create a IProfile2D.
* @param name The name of the IProfile2D.
* @param title The title of the IProfile2D.
* @param nBinsX The number of bins of the x axis.
* @param lowerEdgeX The lower edge of the x axis.
* @param upperEdgeX The upper edge of the x axis.
* @param nBinsY The number of bins of the y axis.
* @param lowerEdgeY The lower edge of the y axis.
* @param upperEdgeY The upper edge of the y axis.
* @param lowerValue The lower value displayed along the z axis.
* @param upperValue The upper value displayed along the z axis.
* @param options The options for the IProfile2D. The default is "".
* @return The newly created IProfile2D.
*
*/
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;
/**
* Create a IProfile2D.
* @param name The name of the IProfile2D.
* @param title The title of the IProfile2D.
* @param binEdgesX The array of the bin edges for the x axis.
* @param binEdgesY The array of the bin edges for the y axis.
* @param options The options for the IProfile2D. The default is "".
* @return The newly created IProfile2D.
*
*/
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;
/**
* Create a IProfile2D.
* @param name The name of the IProfile2D.
* @param title The title of the IProfile2D.
* @param binEdgesX The array of the bin edges for the x axis.
* @param binEdgesY The array of the bin edges for the y axis.
* @param lowerValue The lower value displayed along the y axis.
* @param upperValue The upper value displayed along the y axis.
* @param options The options for the IProfile2D. The default is "".
* @return The newly created IProfile2D.
*
*/
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;
/**
* Create a IProfile2D.
* @param nameAndTitle The name of the IProfile2D; it is also the title.
* @param nBinsX The number of bins of the x axis.
* @param lowerEdgeX The lower edge of the x axis.
* @param upperEdgeX The upper edge of the x axis.
* @param nBinsY The number of bins of the y axis.
* @param lowerEdgeY The lower edge of the y axis.
* @param upperEdgeY The upper edge of the y axis.
* @return The newly created IProfile2D.
*
*/
virtual IProfile2D * createProfile2D(const std::string & nameAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY) = 0;
/**
* Create a IProfile2D.
* @param nameAndTitle The name of the IProfile2D; it is also the title.
* @param nBinsX The number of bins of the x axis.
* @param lowerEdgeX The lower edge of the x axis.
* @param upperEdgeX The upper edge of the x axis.
* @param nBinsY The number of bins of the y axis.
* @param lowerEdgeY The lower edge of the y axis.
* @param upperEdgeY The upper edge of the y axis.
* @param lowerValue The lower value displayed along the z axis.
* @param upperValue The upper value displayed along the z axis.
* @return The newly created IProfile2D.
*
*/
virtual IProfile2D * createProfile2D(const std::string & nameAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, double lowerValue, double upperValue) = 0;
/**
* Create a copy of an IProfile2D.
* @param name The name of the new copy.
* @param profile The IProfile2D to be copied.
* @return The copy of the IProfile2D.
*
*/
virtual IProfile2D * createCopy(const std::string & name, const IProfile2D & profile) = 0;
/**
* Create an IHistogram1D by adding two IHistogram1D.
* @param name The name of the resulting IHistogram1D.
* @param hist1 The first member of the addition.
* @param hist2 The second member of the addition.
* @return The sum of the two IHistogram1D.
*
*/
virtual IHistogram1D * add(const std::string & name, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
/**
* Create an IHistogram1D by subtracting two IHistogram1D.
* @param name The name of the resulting IHistogram1D.
* @param hist1 The first member of the subtraction.
* @param hist2 The second member of the subtraction.
* @return The difference of the two IHistogram1D.
*
*/
virtual IHistogram1D * subtract(const std::string & name, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
/**
* Create an IHistogram1D by multiplying two IHistogram1D.
* @param name The name of the resulting IHistogram1D.
* @param hist1 The first member of the multiplication.
* @param hist2 The second member of the multiplication.
* @return The product of the two IHistogram1D.
*
*/
virtual IHistogram1D * multiply(const std::string & name, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
/**
* Create an IHistogram1D by dividing two IHistogram1D.
* @param name The name of the resulting IHistogram1D.
* @param hist1 The first member of the division.
* @param hist2 The second member of the division.
* @return The ration of the two IHistogram1D.
*
*/
virtual IHistogram1D * divide(const std::string & name, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
/**
* Create an IHistogram2D by adding two IHistogram2D.
* @param name The name of the resulting IHistogram2D.
* @param hist1 The first member of the addition.
* @param hist2 The second member of the addition.
* @return The sum of the two IHistogram2D.
*
*/
virtual IHistogram2D * add(const std::string & name, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
/**
* Create an IHistogram2D by subtracting two IHistogram2D.
* @param name The name of the resulting IHistogram2D.
* @param hist1 The first member of the subtraction.
* @param hist2 The second member of the subtraction.
* @return The difference of the two IHistogram2D.
*
*/
virtual IHistogram2D * subtract(const std::string & name, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
/**
* Create an IHistogram2D by multiplying two IHistogram2D.
* @param name The name of the resulting IHistogram2D.
* @param hist1 The first member of the multiplication.
* @param hist2 The second member of the multiplication.
* @return The product of the two IHistogram2D.
*
*/
virtual IHistogram2D * multiply(const std::string & name, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
/**
* Create an IHistogram2D by dividing two IHistogram2D.
* @param name The name of the resulting IHistogram2D.
* @param hist1 The first member of the division.
* @param hist2 The second member of the division.
* @return The ration of the two IHistogram2D.
*
*/
virtual IHistogram2D * divide(const std::string & name, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
/**
* Create an IHistogram3D by adding two IHistogram3D.
* @param name The name of the resulting IHistogram3D.
* @param hist1 The first member of the addition.
* @param hist2 The second member of the addition.
* @return The sum of the two IHistogram3D.
*
*/
virtual IHistogram3D * add(const std::string & name, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
/**
* Create an IHistogram3D by subtracting two IHistogram3D.
* @param name The name of the resulting IHistogram3D.
* @param hist1 The first member of the subtraction.
* @param hist2 The second member of the subtraction.
* @return The difference of the two IHistogram3D.
*
*/
virtual IHistogram3D * subtract(const std::string & name, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
/**
* Create an IHistogram3D by multiplying two IHistogram3D.
* @param name The name of the resulting IHistogram3D.
* @param hist1 The first member of the multiplication.
* @param hist2 The second member of the multiplication.
* @return The product of the two IHistogram3D.
*
*/
virtual IHistogram3D * multiply(const std::string & name, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
/**
* Create an IHistogram3D by dividing two IHistogram3D.
* @param name The name of the resulting IHistogram3D.
* @param hist1 The first member of the division.
* @param hist2 The second member of the division.
* @return The ration of the two IHistogram3D.
*
*/
virtual IHistogram3D * divide(const std::string & name, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
/**
* Create an IHistogram1D by projecting an IHistogram2D along its x axis.
* This is equivalent to <tt>sliceX(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
* @param name The name of the resulting IHistogram1D.
* @param hist The IHistogram2D to be projected.
* @return The resulting projection.
*
*/
virtual IHistogram1D * projectionX(const std::string & name, const IHistogram2D & hist) = 0;
/**
* Create an IHistogram1D by projecting an IHistogram2D along its y axis.
* This is equivalent to <tt>sliceY(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
* @param name The name of the resulting IHistogram1D.
* @param hist The IHistogram2D to be projected.
* @return The resulting projection.
*
*/
virtual IHistogram1D * projectionY(const std::string & name, const IHistogram2D & hist) = 0;
/**
* Create an IHistogram1D by slicing an IHistogram2D parallel to the y axis at a given bin.
* This is equivalent to <tt>sliceX(indexY,indexY)</tt>.
* @param name The name of the resulting IHistogram1D.
* @param hist The IHistogram2D to be sliced.
* @param index The index of the bin along the y axis where the IHistogram2D has to be sliced.
* @return The resulting slice.
*
*/
virtual IHistogram1D * sliceX(const std::string & name, const IHistogram2D & hist, int index) = 0;
/**
* Create an IHistogram1D by slicing an IHistogram2D parallel to the x axis at a given bin.
* This is equivalent to <tt>sliceY(indexX,indexX)</tt>.
* @param name The name of the resulting IHistogram1D.
* @param hist The IHistogram2D to be sliced.
* @param index The index of the bin along the x axis where the IHistogram2D has to be sliced.
* @return The resulting slice.
*
*/
virtual IHistogram1D * sliceY(const std::string & name, const IHistogram2D & hist, int index) = 0;
/**
* Create an IHistogram1D by slicing an IHistogram2D parallel to the y axis between two bins (inclusive).
* @param name The name of the resulting IHistogram1D.
* @param hist The IHistogram2D to be sliced.
* @param index1 The index of the bin along the y axis that marks the lower edge of the slice.
* @param index2 The index of the bin along the y axis that marks the upper edge of the slice.
* @return The resulting slice.
*
*/
virtual IHistogram1D * sliceX(const std::string & name, const IHistogram2D & hist, int index1, int index2) = 0;
/**
* Create an IHistogram1D by slicing an IHistogram2D parallel to the x axis between two bins (inclusive).
* @param name The name of the resulting IHistogram1D.
* @param hist The IHistogram2D to be sliced.
* @param index1 The index of the bin along the x axis that marks the lower edge of the slice.
* @param index2 The index of the bin along the x axis that marks the upper edge of the slice.
* @return The resulting slice.
*
*/
virtual IHistogram1D * sliceY(const std::string & name, const IHistogram2D & hist, int index1, int index2) = 0;
/**
* Create an IHistogram2D by projecting an IHistogram3D on the x-y plane.
* This is equivalent to <tt>sliceXY(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
* @param name The name of the resulting IHistogram2D.
* @param hist The IHistogram3D to be projected.
* @return The resulting projection.
*
*/
virtual IHistogram2D * projectionXY(const std::string & name, const IHistogram3D & hist) = 0;
/**
* Create an IHistogram2D by projecting an IHistogram3D on the x-z plane.
* This is equivalent to <tt>sliceXZ(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
* @param name The name of the resulting IHistogram2D.
* @param hist The IHistogram3D to be projected.
* @return The resulting projection.
*
*/
virtual IHistogram2D * projectionXZ(const std::string & name, const IHistogram3D & hist) = 0;
/**
* Create an IHistogram2D by projecting an IHistogram3D on the y-z plane.
* This is equivalent to <tt>sliceYZ(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
* @param name The name of the resulting IHistogram2D.
* @param hist The IHistogram3D to be projected.
* @return The resulting projection.
*
*/
virtual IHistogram2D * projectionYZ(const std::string & name, const IHistogram3D & hist) = 0;
/**
* Create an IHistogram2D by slicing an IHistogram3D perpendicular to the Z axis,
* between "index1" and "index2" (inclusive).
* The X axis of the IHistogram2D corresponds to the X axis of this IHistogram3D.
* The Y axis of the IHistogram2D corresponds to the Y axis of this IHistogram3D.
* @param name The name of the resulting IHistogram2D.
* @param hist The IHistogram3D to sliced.
* @param index1 The index of the bin along the z axis that marks the lower edge of the slice.
* @param index2 The index of the bin along the z axis that marks the upper edge of the slice.
* @return The resulting slice.
*
*/
virtual IHistogram2D * sliceXY(const std::string & name, const IHistogram3D & hist, int index1, int index2) = 0;
/**
* Create an IHistogram2D by slicing an IHistogram3D perpendicular to the Y axis,
* between "index1" and "index2" (inclusive).
* The X axis of the IHistogram2D corresponds to the X axis of this IHistogram3D.
* The Z axis of the IHistogram2D corresponds to the Z axis of this IHistogram3D.
* @param name The name of the resulting IHistogram2D.
* @param hist The IHistogram3D to sliced.
* @param index1 The index of the bin along the y axis that marks the lower edge of the slice.
* @param index2 The index of the bin along the y axis that marks the upper edge of the slice.
* @return The resulting slice.
*
*/
virtual IHistogram2D * sliceXZ(const std::string & name, const IHistogram3D & hist, int index1, int index2) = 0;
/**
* Create an IHistogram2D by slicing an IHistogram3D perpendicular to the X axis,
* between "index1" and "index2" (inclusive).
* The Y axis of the IHistogram2D corresponds to the Y axis of this IHistogram3D.
* The Z axis of the IHistogram2D corresponds to the Z axis of this IHistogram3D.
* @param name The name of the resulting IHistogram2D.
* @param hist The IHistogram3D to sliced.
* @param index1 The index of the bin along the x axis that marks the lower edge of the slice.
* @param index2 The index of the bin along the x axis that marks the upper edge of the slice.
* @return The resulting slice.
*
*/
virtual IHistogram2D * sliceYZ(const std::string & name, const IHistogram3D & hist, int index1, int index2) = 0;
}; // class
}; // namespace AIDA
#endif /* ifndef AIDA_IHISTOGRAMFACTORY_H */