thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
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 
16 namespace AIDA {
17 
18 class ICloud1D;
19 class ICloud2D;
20 class ICloud3D;
21 class IBaseHistogram;
22 class IHistogram1D;
23 class IHistogram2D;
24 class IHistogram3D;
25 class IProfile1D;
26 class IProfile2D;
27 
28 class IHistogramFactory {
29 
30 public:
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 */