thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
AIHistogramFactory.h
1// -*- C++ -*-
2//
3// AIHistogramFactory.h is a part of ThePEG - Toolkit for HEP Event Generation
4// Copyright (C) 1999-2019 Leif Lonnblad
5//
6// ThePEG is licenced under version 3 of the GPL, see COPYING for details.
7// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8//
9#ifndef LWH_AIHistogramFactory_H
10#define LWH_AIHistogramFactory_H
11
12
13
16namespace AIDA {
17
18class ICloud1D;
19class ICloud2D;
20class ICloud3D;
21class IBaseHistogram;
22class IHistogram1D;
23class IHistogram2D;
24class IHistogram3D;
25class IProfile1D;
26class IProfile2D;
27
28class IHistogramFactory {
29
30public:
31
32 virtual ~IHistogramFactory() {}
33
34 virtual bool destroy(IBaseHistogram * hist) = 0;
35 virtual IHistogram1D *
36 createHistogram1D(const std::string &, const std::string &,
37 int, double, double, const std::string & = "") = 0;
38 virtual IHistogram1D *
39 createHistogram1D(const std::string &, int, double, double) = 0;
40 virtual IHistogram1D *
41 createHistogram1D(const std::string &, const std::string & ,
42 const std::vector<double> &, const std::string & = "") = 0;
43 virtual IHistogram1D *
44 createCopy(const std::string &, const IHistogram1D &) = 0;
45 virtual IHistogram1D * add(const std::string &,
46 const IHistogram1D &, const IHistogram1D &) = 0;
47 virtual IHistogram1D * subtract(const std::string &, const IHistogram1D &,
48 const IHistogram1D &) = 0;
49 virtual IHistogram1D * multiply(const std::string &, const IHistogram1D &,
50 const IHistogram1D &) = 0;
51 virtual IHistogram1D * divide(const std::string &, const IHistogram1D &,
52 const IHistogram1D &) = 0;
53
54
55 virtual IHistogram2D *
56 createHistogram2D(const std::string & path, const std::string & title,
57 int nx, double xlo, double xup,
58 int ny, double ylo, double yup,
59 const std::string & = "") = 0;
60
61 virtual IHistogram2D *
62 createHistogram2D(const std::string & pathAndTitle,
63 int nx, double xlo, double xup,
64 int ny, double ylo, double yup) = 0;
65
66 virtual IHistogram2D *
67 createHistogram2D(const std::string & path, const std::string & title,
68 const std::vector<double> & xedges,
69 const std::vector<double> & yedges,
70 const std::string & = "") = 0;
71
72 virtual IHistogram2D *
73 createCopy(const std::string & path, const IHistogram2D & hist) = 0;
74
75 virtual IHistogram2D * add(const std::string &,
76 const IHistogram2D &, const IHistogram2D &) = 0;
77 virtual IHistogram2D * subtract(const std::string &, const IHistogram2D &,
78 const IHistogram2D &) = 0;
79 virtual IHistogram2D * multiply(const std::string &, const IHistogram2D &,
80 const IHistogram2D &) = 0;
81 virtual IHistogram2D * divide(const std::string &, const IHistogram2D &,
82 const IHistogram2D &) = 0;
83
84 virtual IHistogram1D *
85 projectionX(const std::string &, const IHistogram2D &) = 0;
86
87 virtual IHistogram1D *
88 projectionY(const std::string &, const IHistogram2D &) = 0;
89
90 virtual IHistogram1D *
91 sliceX(const std::string &, const IHistogram2D &, int) = 0;
92
93 virtual IHistogram1D *
94 sliceY(const std::string &, const IHistogram2D &, int) = 0;
95
96 virtual IHistogram1D *
97 sliceX(const std::string &, const IHistogram2D &, int, int) = 0;
98
99 virtual IHistogram1D *
100 sliceY(const std::string &, const IHistogram2D &, int, int) = 0;
101
102};
103
104}
105
112#endif /* LWH_AIHistogramFactory_H */