sventon subversion web client - http://www.sventon.org
[show recent changes]
 
  Help
HEAD
Rev: 10093 - svn://svn.freehep.org/svn / freehep / cvs / aidainclude / tags / AIDA-33-BRANCH-pre-merge-1 / AIDA / IHistogramFactory.h
Show File - IHistogramFactory.h  [show properties]
Search for Help
spinner
// -*- 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
10  // This file is part of the AIDA library
11  // Copyright (C) 2002 by the AIDA team. All rights reserved.
12  // This library is free software and under the terms of the
13  // GNU Library General Public License described in the LGPL.txt
14 
15  #include <string>
16  #include <vector>
17 
18  namespace AIDA {
19 
20  class IBaseHistogram;
21  class ICloud1D;
22  class ICloud2D;
23  class ICloud3D;
24  class IHistogram1D;
25  class IHistogram2D;
26  class IHistogram3D;
27  class IProfile1D;
28  class IProfile2D;
29 
30  /**
31   * User level interface for factory classes of Histograms (binned, unbinned, and profile)
32   * The created objects are assumed to be managed by the tree which is associated to the factory.
33   *
34   * @author The AIDA team (http://aida.freehep.org/)
35   *
36   */
37 
38  class IHistogramFactory {
39 
40  public:
41      /// Destructor.
42      virtual ~IHistogramFactory() { /* nop */; }
43 
44      /**
45       * Destroy an IBaseHistogram ogject.
46       * @param hist The IBaseHistogram to be destroyed.
47       * @return false If the histogram cannot be destroyed.
48       *
49       */
50      virtual bool destroy(IBaseHistogram * hist) = 0;
51 
52      /**
53       * Create a ICloud1D, an unbinned 1-dimensional histogram.
54       * @param path The path of the created ICloud. The path can either be a relative or full path.
55       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
56       * All the directories in the path must exist. The characther `/` cannot be used
57       * in names; it is only used to delimit directories within paths.
58       * @param title The title of the ICloud1D.
59       * @param nMax The maximum number of entries after which the ICloud1D
60       * will convert to an IHistogram1D. The default nMax = -1 means no autoconversion.
61       * @param options The options for the ICloud1D. "autoconvert=true" to enable autoconversion
62       * to an IHistogram1D.
63       * @return The newly created ICloud1D.
64       *
65       */
66      virtual ICloud1D * createCloud1D(const std::string & path, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
67 
68      /**
69       * Create a ICloud1D, an unbinned 1-dimensional histogram.
70       * @param pathAndTitle The path of the created ICloud. The path can either be a relative or full path.
71       * The last part of the path is used as the title.
72       * ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
73       * All the directories in the path must exist. The characther `/` cannot be used
74       * in names; it is only used to delimit directories within paths.
75       * @return The newly created ICloud1D.
76       *
77       */
78      virtual ICloud1D * createCloud1D(const std::string & pathAndTitle) = 0;
79 
80      /**
81       * Create a copy of an ICloud1D.
82       * @param path The path of the resulting ICloud. The path can either be a relative or full path.
83       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
84       * All the directories in the path must exist. The characther `/` cannot be used
85       * in names; it is only used to delimit directories within paths.
86       * @param cloud The ICloud1D to be copied.
87       * @return The copy of the ICloud1D.
88       *
89       */
90      virtual ICloud1D * createCopy(const std::string & path, const ICloud1D & cloud) = 0;
91 
92      /**
93       * Create a ICloud2D, an unbinned 2-dimensional histogram.
94       * @param path The path of the created ICloud. The path can either be a relative or full path.
95       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
96       * All the directories in the path must exist. The characther `/` cannot be used
97       * in names; it is only used to delimit directories within paths.
98       * @param title The title of the ICloud2D.
99       * @param nMax The maximum number of entries after which the ICloud2D
100       * will convert to an IHistogram2D. The default nMax = -1 means no autoconversion.
101       * @param options The options for the ICloud2D. "autoconvert=true" to enable autoconversion
102       * to an IHistogram2D.
103       * @return The newly created ICloud2D.
104       *
105       */
106      virtual ICloud2D * createCloud2D(const std::string & path, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
107 
108      /**
109       * Create a ICloud2D, an unbinned 2-dimensional histogram.
110       * @param pathAndTitle The path of the created created ICloud. The path can either be a relative or full path.
111       * The last part of the path is used as the title.
112       * ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
113       * All the directories in the path must exist. The characther `/` cannot be used
114       * in names; it is only used to delimit directories within paths.
115       * @return The newly created ICloud2D.
116       *
117       */
118      virtual ICloud2D * createCloud2D(const std::string & pathAndTitle) = 0;
119 
120      /**
121       * Create a copy of an ICloud2D.
122       * @param path The path of the resulting ICloud. The path can either be a relative or full path.
123       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
124       * All the directories in the path must exist. The characther `/` cannot be used
125       * in names; it is only used to delimit directories within paths.
126       * @param cloud The ICloud2D to be copied.
127       * @return The copy of the ICloud2D.
128       *
129       */
130      virtual ICloud2D * createCopy(const std::string & path, const ICloud2D & cloud) = 0;
131 
132      /**
133       * Create a ICloud3D, an unbinned 3-dimensional histogram.
134       * @param path The path of the created ICloud. The path can either be a relative or full path.
135       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
136       * All the directories in the path must exist. The characther `/` cannot be used
137       * in names; it is only used to delimit directories within paths.
138       * @param title The title of the ICloud3D.
139       * @param nMax The maximum number of entries after which the ICloud3D
140       * will convert to an IHistogram3D. The default nMax = -1 means no autoconversion
141       * @param options The options for the ICloud3D. "autoconvert=true" to enable autoconversion
142       * to an IHistogram3D.
143       * @return The newly created ICloud3D.
144       *
145       */
146      virtual ICloud3D * createCloud3D(const std::string & path, const std::string & title, int nMax = -1, const std::string & options = "") = 0;
147 
148      /**
149       * Create a ICloud3D, an unbinned 3-dimensional histogram.
150       * @param pathAndTitle The path of the created created ICloud. The path can either be a relative or full path.
151       * The last part of the path is used as the title.
152       * ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
153       * All the directories in the path must exist. The characther `/` cannot be used
154       * in names; it is only used to delimit directories within paths.
155       * @return The newly created ICloud3D.
156       *
157       */
158      virtual ICloud3D * createCloud3D(const std::string & pathAndTitle) = 0;
159 
160      /**
161       * Create a copy of an ICloud3D.
162       * @param path The path of the resulting ICloud. The path can either be a relative or full path.
163       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
164       * All the directories in the path must exist. The characther `/` cannot be used
165       * in names; it is only used to delimit directories within paths.
166       * @param cloud The ICloud3D to be copied.
167       * @return The copy of the ICloud3D.
168       *
169       */
170      virtual ICloud3D * createCopy(const std::string & path, const ICloud3D & cloud) = 0;
171 
172      /**
173       * Create a IHistogram1D.
174       * @param path The path of the created IHistogram. The path can either be a relative or full path.
175       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
176       * All the directories in the path must exist. The characther `/` cannot be used
177       * in names; it is only used to delimit directories within paths.
178       * @param title The title of the IHistogram1D.
179       * @param nBins The number of bins of the x axis.
180       * @param lowerEdge The lower edge of the x axis.
181       * @param upperEdge The upper edge of the x axis.
182       * @param options The options for the IHistogram1D. The default is "".
183       * "type=efficiency" for an efficiency IHistogram1D.
184       * @return The newly created IHistogram1D.
185       *
186       */
187      virtual IHistogram1D * createHistogram1D(const std::string & path, const std::string & title, int nBins, double lowerEdge, double upperEdge, const std::string & options = "") = 0;
188 
189      /**
190       * Create a IHistogram1D.
191       * @param pathAndTitle The path of the created created IHistogram. The path can either be a relative or full path.
192       * The last part of the path is used as the title.
193       * ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
194       * All the directories in the path must exist. The characther `/` cannot be used
195       * in names; it is only used to delimit directories within paths.
196       * @param nBins The number of bins of the x axis.
197       * @param lowerEdge The lower edge of the x axis.
198       * @param upperEdge The upper edge of the x axis.
199       * @return The newly created IHistogram1D.
200       *
201       */
202      virtual IHistogram1D * createHistogram1D(const std::string & pathAndTitle, int nBins, double lowerEdge, double upperEdge) = 0;
203 
204      /**
205       * Create a IHistogram1D.
206       * @param path The path of the created IHistogram. The path can either be a relative or full path.
207       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
208       * All the directories in the path must exist. The characther `/` cannot be used
209       * in names; it is only used to delimit directories within paths.
210       * @param title The title of the IHistogram1D.
211       * @param binEdges The array of the bin edges for the x axis.
212       * @param options The options for the IHistogram1D. The default is "".
213       * "type=efficiency" for an efficiency IHistogram1D.
214       * @return The newly created IHistogram1D.
215       *
216       */
217      virtual IHistogram1D * createHistogram1D(const std::string & path, const std::string & title, const std::vector<double> & binEdges, const std::string & options = "") = 0;
218 
219      /**
220       * Create a copy of an IHistogram1D.
221       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
222       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
223       * All the directories in the path must exist. The characther `/` cannot be used
224       * in names; it is only used to delimit directories within paths.
225       * @param hist The IHistogram1D to be copied.
226       * @return The copy of the IHistogram1D.
227       *
228       */
229      virtual IHistogram1D * createCopy(const std::string & path, const IHistogram1D & hist) = 0;
230 
231      /**
232       * Create a IHistogram2D.
233       * @param path The path of the created IHistogram. The path can either be a relative or full path.
234       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
235       * All the directories in the path must exist. The characther `/` cannot be used
236       * in names; it is only used to delimit directories within paths.
237       * @param title The title of the IHistogram2D.
238       * @param nBinsX The number of bins of the x axis.
239       * @param lowerEdgeX The lower edge of the x axis.
240       * @param upperEdgeX The upper edge of the x axis.
241       * @param nBinsY The number of bins of the y axis.
242       * @param lowerEdgeY The lower edge of the y axis.
243       * @param upperEdgeY The upper edge of the y axis.
244       * @param options The options for the IHistogram2D. The default is "".
245       * "type=efficiency" for an efficiency IHistogram2D.
246       * @return The newly created IHistogram2D.
247       *
248       */
249      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;
250 
251      /**
252       * Create a IHistogram2D.
253       * @param pathAndTitle The path of the created created IHistogram. The path can either be a relative or full path.
254       * The last part of the path is used as the title.
255       * ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
256       * All the directories in the path must exist. The characther `/` cannot be used
257       * in names; it is only used to delimit directories within paths.
258       * @param nBinsX The number of bins of the x axis.
259       * @param lowerEdgeX The lower edge of the x axis.
260       * @param upperEdgeX The upper edge of the x axis.
261       * @param nBinsY The number of bins of the y axis.
262       * @param lowerEdgeY The lower edge of the y axis.
263       * @param upperEdgeY The upper edge of the y axis.
264       * @return The newly created IHistogram2D.
265       *
266       */
267      virtual IHistogram2D * createHistogram2D(const std::string & pathAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY) = 0;
268 
269      /**
270       * Create a IHistogram2D.
271       * @param path The path of the created IHistogram. The path can either be a relative or full path.
272       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
273       * All the directories in the path must exist. The characther `/` cannot be used
274       * in names; it is only used to delimit directories within paths.
275       * @param title The title of the IHistogram2D.
276       * @param binEdgesX The array of the bin edges for the x axis.
277       * @param binEdgesY The array of the bin edges for the y axis.
278       * @param options The options for the IHistogram2D. The default is "".
279       * "type=efficiency" for an efficiency IHistogram2D.
280       * @return The newly created IHistogram2D.
281       *
282       */
283      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;
284 
285      /**
286       * Create a copy of an IHistogram2D.
287       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
288       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
289       * All the directories in the path must exist. The characther `/` cannot be used
290       * in names; it is only used to delimit directories within paths.
291       * @param hist The IHistogram2D to be copied.
292       * @return The copy of the IHistogram2D.
293       *
294       */
295      virtual IHistogram2D * createCopy(const std::string & copy, const IHistogram2D & hist) = 0;
296 
297      /**
298       * Create a IHistogram3D.
299       * @param path The path of the created IHistogram. The path can either be a relative or full path.
300       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
301       * All the directories in the path must exist. The characther `/` cannot be used
302       * in names; it is only used to delimit directories within paths.
303       * @param title The title of the IHistogram3D.
304       * @param nBinsX The number of bins of the x axis.
305       * @param lowerEdgeX The lower edge of the x axis.
306       * @param upperEdgeX The upper edge of the x axis.
307       * @param nBinsY The number of bins of the y axis.
308       * @param lowerEdgeY The lower edge of the y axis.
309       * @param upperEdgeY The upper edge of the y axis.
310       * @param nBinsZ The number of bins of the z axis.
311       * @param lowerEdgeZ The lower edge of the z axis.
312       * @param upperEdgeZ The upper edge of the z axis.
313       * @param options The options for the IHistogram3D. The default is "".
314       * "type=efficiency" for an efficiency IHistogram3D.
315       * @return The newly created IHistogram3D.
316       *
317       */
318      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;
319 
320      /**
321       * Create a IHistogram3D.
322       * @param pathAndTitle The path of the created created IHistogram. The path can either be a relative or full path.
323       * The last part of the path is used as the title.
324       * ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
325       * All the directories in the path must exist. The characther `/` cannot be used
326       * in names; it is only used to delimit directories within paths.
327       * @param nBinsX The number of bins of the x axis.
328       * @param lowerEdgeX The lower edge of the x axis.
329       * @param upperEdgeX The upper edge of the x axis.
330       * @param nBinsY The number of bins of the y axis.
331       * @param lowerEdgeY The lower edge of the y axis.
332       * @param upperEdgeY The upper edge of the y axis.
333       * @param nBinsZ The number of bins of the z axis.
334       * @param lowerEdgeZ The lower edge of the z axis.
335       * @param upperEdgeZ The upper edge of the z axis.
336       * @return The newly created IHistogram3D.
337       *
338       */
339      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;
340 
341      /**
342       * Create a IHistogram3D.
343       * @param path The path of the created IHistogram. The path can either be a relative or full path.
344       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
345       * All the directories in the path must exist. The characther `/` cannot be used
346       * in names; it is only used to delimit directories within paths.
347       * @param title The title of the IHistogram3D.
348       * @param binEdgesX The array of the bin edges for the x axis.
349       * @param binEdgesY The array of the bin edges for the y axis.
350       * @param binEdgesZ The array of the bin edges for the z axis.
351       * @param options The options for the IHistogram3D. The default is "".
352       * "type=efficiency" for an efficiency IHistogram3D.
353       * @return The newly created IHistogram3D.
354       *
355       */
356      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;
357 
358      /**
359       * Create a copy of an IHistogram3D.
360       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
361       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
362       * All the directories in the path must exist. The characther `/` cannot be used
363       * in names; it is only used to delimit directories within paths.
364       * @param hist The IHistogram3D to be copied.
365       * @return The copy of the IHistogram3D.
366       *
367       */
368      virtual IHistogram3D * createCopy(const std::string & path, const IHistogram3D & hist) = 0;
369 
370      /**
371       * Create a IProfile1D.
372       * @param path The path of the created IProfile. The path can either be a relative or full path.
373       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
374       * All the directories in the path must exist. The characther `/` cannot be used
375       * in names; it is only used to delimit directories within paths.
376       * @param title The title of the IProfile1D.
377       * @param nBins The number of bins of the x axis.
378       * @param lowerEdge The lower edge of the x axis.
379       * @param upperEdge The upper edge of the x axis.
380       * @param options The options for the IProfile1D. The default is "".
381       * @return The newly created IProfile1D.
382       *
383       */
384      virtual IProfile1D * createProfile1D(const std::string & path, const std::string & title, int nBins, double lowerEdge, double upperEdge, const std::string & options = "") = 0;
385 
386      /**
387       * Create a IProfile1D.
388       * @param path The path of the created IProfile. The path can either be a relative or full path.
389       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
390       * All the directories in the path must exist. The characther `/` cannot be used
391       * in names; it is only used to delimit directories within paths.
392       * @param title The title of the IProfile1D.
393       * @param nBins The number of bins of the x axis.
394       * @param lowerEdge The lower edge of the x axis.
395       * @param upperEdge The upper edge of the x axis.
396       * @param lowerValue The lower value displayed along the y axis.
397       * @param upperValue The upper value displayed along the y axis.
398       * @param options The options for the IProfile1D. The default is "".
399       * @return The newly created IProfile1D.
400       *
401       */
402      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;
403 
404      /**
405       * Create a IProfile1D.
406       * @param path The path of the created IProfile. The path can either be a relative or full path.
407       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
408       * All the directories in the path must exist. The characther `/` cannot be used
409       * in names; it is only used to delimit directories within paths.
410       * @param title The title of the IProfile1D.
411       * @param binEdges The array of the bin edges for the x axis.
412       * @param options The options for the IProfile1D. The default is "".
413       * @return The newly created IProfile1D.
414       *
415       */
416      virtual IProfile1D * createProfile1D(const std::string & path, const std::string & title, const std::vector<double> & binEdges, const std::string & options = "") = 0;
417 
418      /**
419       * Create a IProfile1D.
420       * @param path The path of the created IProfile. The path can either be a relative or full path.
421       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
422       * All the directories in the path must exist. The characther `/` cannot be used
423       * in names; it is only used to delimit directories within paths.
424       * @param title The title of the IProfile1D.
425       * @param binEdges The array of the bin edges for the x axis.
426       * @param lowerValue The lower value displayed along the y axis.
427       * @param upperValue The upper value displayed along the y axis.
428       * @param options The options for the IProfile1D. The default is "".
429       * @return The newly created IProfile1D.
430       *
431       */
432      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;
433 
434      /**
435       * Create a IProfile1D.
436       * @param pathAndTitle The path of the created created IProfile. The path can either be a relative or full path.
437       * The last part of the path is used as the title.
438       * ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
439       * All the directories in the path must exist. The characther `/` cannot be used
440       * in names; it is only used to delimit directories within paths.
441       * @param nBins The number of bins of the x axis.
442       * @param lowerEdge The lower edge of the x axis.
443       * @param upperEdge The upper edge of the x axis.
444       * @return The newly created IProfile1D.
445       *
446       */
447      virtual IProfile1D * createProfile1D(const std::string & pathAndTitle, int nBins, double lowerEdge, double upperEdge) = 0;
448 
449      /**
450       * Create a IProfile1D.
451       * @param pathAndTitle The path of the created created IProfile. The path can either be a relative or full path.
452       * The last part of the path is used as the title.
453       * ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
454       * All the directories in the path must exist. The characther `/` cannot be used
455       * in names; it is only used to delimit directories within paths.
456       * @param nBins The number of bins of the x axis.
457       * @param lowerEdge The lower edge of the x axis.
458       * @param upperEdge The upper edge of the x axis.
459       * @param lowerValue The lower value displayed along the y axis.
460       * @param upperValue The upper value displayed along the y axis.
461       * @return The newly created IProfile1D.
462       *
463       */
464      virtual IProfile1D * createProfile1D(const std::string & pathAndTitle, int nBins, double lowerEdge, double upperEdge, double lowerValue, double upperValue) = 0;
465 
466      /**
467       * Create a copy of an IProfile1D.
468       * @param path The path of the resulting IProfile. The path can either be a relative or full path.
469       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
470       * All the directories in the path must exist. The characther `/` cannot be used
471       * in names; it is only used to delimit directories within paths.
472       * @param profile The IProfile1D to be copied.
473       * @return The copy of the IProfile1D.
474       *
475       */
476      virtual IProfile1D * createCopy(const std::string & path, const IProfile1D & profile) = 0;
477 
478      /**
479       * Create a IProfile2D.
480       * @param path The path of the created IProfile. The path can either be a relative or full path.
481       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
482       * All the directories in the path must exist. The characther `/` cannot be used
483       * in names; it is only used to delimit directories within paths.
484       * @param title The title of the IProfile2D.
485       * @param nBinsX The number of bins of the x axis.
486       * @param lowerEdgeX The lower edge of the x axis.
487       * @param upperEdgeX The upper edge of the x axis.
488       * @param nBinsY The number of bins of the y axis.
489       * @param lowerEdgeY The lower edge of the y axis.
490       * @param upperEdgeY The upper edge of the y axis.
491       * @param options The options for the IProfile2D. The default is "".
492       * @return The newly created IProfile2D.
493       *
494       */
495      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;
496 
497      /**
498       * Create a IProfile2D.
499       * @param path The path of the created IProfile. The path can either be a relative or full path.
500       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
501       * All the directories in the path must exist. The characther `/` cannot be used
502       * in names; it is only used to delimit directories within paths.
503       * @param title The title of the IProfile2D.
504       * @param nBinsX The number of bins of the x axis.
505       * @param lowerEdgeX The lower edge of the x axis.
506       * @param upperEdgeX The upper edge of the x axis.
507       * @param nBinsY The number of bins of the y axis.
508       * @param lowerEdgeY The lower edge of the y axis.
509       * @param upperEdgeY The upper edge of the y axis.
510       * @param lowerValue The lower value displayed along the z axis.
511       * @param upperValue The upper value displayed along the z axis.
512       * @param options The options for the IProfile2D. The default is "".
513       * @return The newly created IProfile2D.
514       *
515       */
516      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;
517 
518      /**
519       * Create a IProfile2D.
520       * @param path The path of the created IProfile. The path can either be a relative or full path.
521       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
522       * All the directories in the path must exist. The characther `/` cannot be used
523       * in names; it is only used to delimit directories within paths.
524       * @param title The title of the IProfile2D.
525       * @param binEdgesX The array of the bin edges for the x axis.
526       * @param binEdgesY The array of the bin edges for the y axis.
527       * @param options The options for the IProfile2D. The default is "".
528       * @return The newly created IProfile2D.
529       *
530       */
531      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;
532 
533      /**
534       * Create a IProfile2D.
535       * @param path The path of the created IProfile. The path can either be a relative or full path.
536       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
537       * All the directories in the path must exist. The characther `/` cannot be used
538       * in names; it is only used to delimit directories within paths.
539       * @param title The title of the IProfile2D.
540       * @param binEdgesX The array of the bin edges for the x axis.
541       * @param binEdgesY The array of the bin edges for the y axis.
542       * @param lowerValue The lower value displayed along the y axis.
543       * @param upperValue The upper value displayed along the y axis.
544       * @param options The options for the IProfile2D. The default is "".
545       * @return The newly created IProfile2D.
546       *
547       */
548      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;
549 
550      /**
551       * Create a IProfile2D.
552       * @param pathAndTitle The path of the created created IProfile. The path can either be a relative or full path.
553       * The last part of the path is used as the title.
554       * ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
555       * All the directories in the path must exist. The characther `/` cannot be used
556       * in names; it is only used to delimit directories within paths.
557       * @param nBinsX The number of bins of the x axis.
558       * @param lowerEdgeX The lower edge of the x axis.
559       * @param upperEdgeX The upper edge of the x axis.
560       * @param nBinsY The number of bins of the y axis.
561       * @param lowerEdgeY The lower edge of the y axis.
562       * @param upperEdgeY The upper edge of the y axis.
563       * @return The newly created IProfile2D.
564       *
565       */
566      virtual IProfile2D * createProfile2D(const std::string & pathAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY) = 0;
567 
568      /**
569       * Create a IProfile2D.
570       * @param pathAndTitle The path of the created created IProfile. The path can either be a relative or full path.
571       * The last part of the path is used as the title.
572       * ("/folder1/folder2/dataTitle" and "../folder/dataTitle" are valid paths).
573       * All the directories in the path must exist. The characther `/` cannot be used
574       * in names; it is only used to delimit directories within paths.
575       * @param nBinsX The number of bins of the x axis.
576       * @param lowerEdgeX The lower edge of the x axis.
577       * @param upperEdgeX The upper edge of the x axis.
578       * @param nBinsY The number of bins of the y axis.
579       * @param lowerEdgeY The lower edge of the y axis.
580       * @param upperEdgeY The upper edge of the y axis.
581       * @param lowerValue The lower value displayed along the z axis.
582       * @param upperValue The upper value displayed along the z axis.
583       * @return The newly created IProfile2D.
584       *
585       */
586      virtual IProfile2D * createProfile2D(const std::string & pathAndTitle, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, double lowerValue, double upperValue) = 0;
587 
588      /**
589       * Create a copy of an IProfile2D.
590       * @param path The path of the resulting IProfile. The path can either be a relative or full path.
591       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
592       * All the directories in the path must exist. The characther `/` cannot be used
593       * in names; it is only used to delimit directories within paths.
594       * @param profile The IProfile2D to be copied.
595       * @return The copy of the IProfile2D.
596       *
597       */
598      virtual IProfile2D * createCopy(const std::string & path, const IProfile2D & profile) = 0;
599 
600      /**
601       * Create an IHistogram1D by adding two IHistogram1D.
602       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
603       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
604       * All the directories in the path must exist. The characther `/` cannot be used
605       * in names; it is only used to delimit directories within paths.
606       * @param hist1 The first member of the addition.
607       * @param hist2 The second member of the addition.
608       * @return The sum of the two IHistogram1D.
609       * if a directory in the path does not exist, or the path is illegal.
610       *
611       */
612      virtual IHistogram1D * add(const std::string & path, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
613 
614      /**
615       * Create an IHistogram1D by subtracting two IHistogram1D.
616       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
617       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
618       * All the directories in the path must exist. The characther `/` cannot be used
619       * in names; it is only used to delimit directories within paths.
620       * @param hist1 The first member of the subtraction.
621       * @param hist2 The second member of the subtraction.
622       * @return The difference of the two IHistogram1D.
623       * if a directory in the path does not exist, or the path is illegal.
624       *
625       */
626      virtual IHistogram1D * subtract(const std::string & path, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
627 
628      /**
629       * Create an IHistogram1D by multiplying two IHistogram1D.
630       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
631       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
632       * All the directories in the path must exist. The characther `/` cannot be used
633       * in names; it is only used to delimit directories within paths.
634       * @param hist1 The first member of the multiplication.
635       * @param hist2 The second member of the multiplication.
636       * @return The product of the two IHistogram1D.
637       * if a directory in the path does not exist, or the path is illegal.
638       *
639       */
640      virtual IHistogram1D * multiply(const std::string & path, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
641 
642      /**
643       * Create an IHistogram1D by dividing two IHistogram1D.
644       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
645       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
646       * All the directories in the path must exist. The characther `/` cannot be used
647       * in names; it is only used to delimit directories within paths.
648       * @param hist1 The first member of the division.
649       * @param hist2 The second member of the division.
650       * @return The ration of the two IHistogram1D.
651       * if a directory in the path does not exist, or the path is illegal.
652       *
653       */
654      virtual IHistogram1D * divide(const std::string & path, const IHistogram1D & hist1, const IHistogram1D & hist2) = 0;
655 
656      /**
657       * Create an IHistogram2D by adding two IHistogram2D.
658       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
659       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
660       * All the directories in the path must exist. The characther `/` cannot be used
661       * in names; it is only used to delimit directories within paths.
662       * @param hist1 The first member of the addition.
663       * @param hist2 The second member of the addition.
664       * @return The sum of the two IHistogram2D.
665       * if a directory in the path does not exist, or the path is illegal.
666       *
667       */
668      virtual IHistogram2D * add(const std::string & path, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
669 
670      /**
671       * Create an IHistogram2D by subtracting two IHistogram2D.
672       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
673       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
674       * All the directories in the path must exist. The characther `/` cannot be used
675       * in names; it is only used to delimit directories within paths.
676       * @param hist1 The first member of the subtraction.
677       * @param hist2 The second member of the subtraction.
678       * @return The difference of the two IHistogram2D.
679       * if a directory in the path does not exist, or the path is illegal.
680       *
681       */
682      virtual IHistogram2D * subtract(const std::string & path, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
683 
684      /**
685       * Create an IHistogram2D by multiplying two IHistogram2D.
686       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
687       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
688       * All the directories in the path must exist. The characther `/` cannot be used
689       * in names; it is only used to delimit directories within paths.
690       * @param hist1 The first member of the multiplication.
691       * @param hist2 The second member of the multiplication.
692       * @return The product of the two IHistogram2D.
693       * if a directory in the path does not exist, or the path is illegal.
694       *
695       */
696      virtual IHistogram2D * multiply(const std::string & path, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
697 
698      /**
699       * Create an IHistogram2D by dividing two IHistogram2D.
700       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
701       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
702       * All the directories in the path must exist. The characther `/` cannot be used
703       * in names; it is only used to delimit directories within paths.
704       * @param hist1 The first member of the division.
705       * @param hist2 The second member of the division.
706       * @return The ration of the two IHistogram2D.
707       * if a directory in the path does not exist, or the path is illegal.
708       *
709       */
710      virtual IHistogram2D * divide(const std::string & path, const IHistogram2D & hist1, const IHistogram2D & hist2) = 0;
711 
712      /**
713       * Create an IHistogram3D by adding two IHistogram3D.
714       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
715       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
716       * All the directories in the path must exist. The characther `/` cannot be used
717       * in names; it is only used to delimit directories within paths.
718       * @param hist1 The first member of the addition.
719       * @param hist2 The second member of the addition.
720       * @return The sum of the two IHistogram3D.
721       * if a directory in the path does not exist, or the path is illegal.
722       *
723       */
724      virtual IHistogram3D * add(const std::string & path, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
725 
726      /**
727       * Create an IHistogram3D by subtracting two IHistogram3D.
728       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
729       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
730       * All the directories in the path must exist. The characther `/` cannot be used
731       * in names; it is only used to delimit directories within paths.
732       * @param hist1 The first member of the subtraction.
733       * @param hist2 The second member of the subtraction.
734       * @return The difference of the two IHistogram3D.
735       * if a directory in the path does not exist, or the path is illegal.
736       *
737       */
738      virtual IHistogram3D * subtract(const std::string & path, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
739 
740      /**
741       * Create an IHistogram3D by multiplying two IHistogram3D.
742       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
743       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
744       * All the directories in the path must exist. The characther `/` cannot be used
745       * in names; it is only used to delimit directories within paths.
746       * @param hist1 The first member of the multiplication.
747       * @param hist2 The second member of the multiplication.
748       * @return The product of the two IHistogram3D.
749       * if a directory in the path does not exist, or the path is illegal.
750       *
751       */
752      virtual IHistogram3D * multiply(const std::string & path, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
753 
754      /**
755       * Create an IHistogram3D by dividing two IHistogram3D.
756       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
757       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
758       * All the directories in the path must exist. The characther `/` cannot be used
759       * in names; it is only used to delimit directories within paths.
760       * @param hist1 The first member of the division.
761       * @param hist2 The second member of the division.
762       * @return The ration of the two IHistogram3D.
763       * if a directory in the path does not exist, or the path is illegal.
764       *
765       */
766      virtual IHistogram3D * divide(const std::string & path, const IHistogram3D & hist1, const IHistogram3D & hist2) = 0;
767 
768      /**
769       * Create an IHistogram1D by projecting an IHistogram2D along its x axis.
770       * This is equivalent to <tt>sliceX(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
771       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
772       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
773       * All the directories in the path must exist. The characther `/` cannot be used
774       * in names; it is only used to delimit directories within paths.
775       * @param hist The IHistogram2D to be projected.
776       * @return The resulting projection.
777       *
778       */
779      virtual IHistogram1D * projectionX(const std::string & path, const IHistogram2D & hist) = 0;
780 
781      /**
782       * Create an IHistogram1D by projecting an IHistogram2D along its y axis.
783       * This is equivalent to <tt>sliceY(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
784       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
785       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
786       * All the directories in the path must exist. The characther `/` cannot be used
787       * in names; it is only used to delimit directories within paths.
788       * @param hist The IHistogram2D to be projected.
789       * @return The resulting projection.
790       *
791       */
792      virtual IHistogram1D * projectionY(const std::string & path, const IHistogram2D & hist) = 0;
793 
794      /**
795       * Create an IHistogram1D by slicing an IHistogram2D parallel to the y axis at a given bin.
796       * This is equivalent to <tt>sliceX(indexY,indexY)</tt>.
797       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
798       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
799       * All the directories in the path must exist. The characther `/` cannot be used
800       * in names; it is only used to delimit directories within paths.
801       * @param hist The IHistogram2D to be sliced.
802       * @param index The index of the bin along the y axis where the IHistogram2D has to be sliced.
803       * @return The resulting slice.
804       *
805       */
806      virtual IHistogram1D * sliceX(const std::string & path, const IHistogram2D & hist, int index) = 0;
807 
808      /**
809       * Create an IHistogram1D by slicing an IHistogram2D parallel to the x axis at a given bin.
810       * This is equivalent to <tt>sliceY(indexX,indexX)</tt>.
811       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
812       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
813       * All the directories in the path must exist. The characther `/` cannot be used
814       * in names; it is only used to delimit directories within paths.
815       * @param hist The IHistogram2D to be sliced.
816       * @param index The index of the bin along the x axis where the IHistogram2D has to be sliced.
817       * @return The resulting slice.
818       *
819       */
820      virtual IHistogram1D * sliceY(const std::string & path, const IHistogram2D & hist, int index) = 0;
821 
822      /**
823       * Create an IHistogram1D by slicing an IHistogram2D parallel to the y axis between two bins (inclusive).
824       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
825       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
826       * All the directories in the path must exist. The characther `/` cannot be used
827       * in names; it is only used to delimit directories within paths.
828       * @param hist The IHistogram2D to be sliced.
829       * @param index1 The index of the bin along the y axis that marks the lower edge of the slice.
830       * @param index2 The index of the bin along the y axis that marks the upper edge of the slice.
831       * @return The resulting slice.
832       *
833       */
834      virtual IHistogram1D * sliceX(const std::string & path, const IHistogram2D & hist, int index1, int index2) = 0;
835 
836      /**
837       * Create an IHistogram1D by slicing an IHistogram2D parallel to the x axis between two bins (inclusive).
838       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
839       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
840       * All the directories in the path must exist. The characther `/` cannot be used
841       * in names; it is only used to delimit directories within paths.
842       * @param hist The IHistogram2D to be sliced.
843       * @param index1 The index of the bin along the x axis that marks the lower edge of the slice.
844       * @param index2 The index of the bin along the x axis that marks the upper edge of the slice.
845       * @return The resulting slice.
846       *
847       */
848      virtual IHistogram1D * sliceY(const std::string & path, const IHistogram2D & hist, int index1, int index2) = 0;
849 
850      /**
851       * Create an IHistogram2D by projecting an IHistogram3D on the x-y plane.
852       * This is equivalent to <tt>sliceXY(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
853       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
854       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
855       * All the directories in the path must exist. The characther `/` cannot be used
856       * in names; it is only used to delimit directories within paths.
857       * @param hist The IHistogram3D to be projected.
858       * @return The resulting projection.
859       *
860       */
861      virtual IHistogram2D * projectionXY(const std::string & path, const IHistogram3D & hist) = 0;
862 
863      /**
864       * Create an IHistogram2D by projecting an IHistogram3D on the x-z plane.
865       * This is equivalent to <tt>sliceXZ(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
866       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
867       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
868       * All the directories in the path must exist. The characther `/` cannot be used
869       * in names; it is only used to delimit directories within paths.
870       * @param hist The IHistogram3D to be projected.
871       * @return The resulting projection.
872       *
873       */
874      virtual IHistogram2D * projectionXZ(const std::string & path, const IHistogram3D & hist) = 0;
875 
876      /**
877       * Create an IHistogram2D by projecting an IHistogram3D on the y-z plane.
878       * This is equivalent to <tt>sliceYZ(UNDERFLOW_BIN,OVERFLOW_BIN)</tt>.
879       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
880       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
881       * All the directories in the path must exist. The characther `/` cannot be used
882       * in names; it is only used to delimit directories within paths.
883       * @param hist The IHistogram3D to be projected.
884       * @return The resulting projection.
885       *
886       */
887      virtual IHistogram2D * projectionYZ(const std::string & path, const IHistogram3D & hist) = 0;
888 
889      /**
890       * Create an IHistogram2D by slicing an IHistogram3D perpendicular to the Z axis,
891       * between "index1" and "index2" (inclusive).
892       * The X axis of the IHistogram2D corresponds to the X axis of this IHistogram3D.
893       * The Y axis of the IHistogram2D corresponds to the Y axis of this IHistogram3D.
894       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
895       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
896       * All the directories in the path must exist. The characther `/` cannot be used
897       * in names; it is only used to delimit directories within paths.
898       * @param hist The IHistogram3D to sliced.
899       * @param index1 The index of the bin along the z axis that marks the lower edge of the slice.
900       * @param index2 The index of the bin along the z axis that marks the upper edge of the slice.
901       * @return The resulting slice.
902       *
903       */
904      virtual IHistogram2D * sliceXY(const std::string & path, const IHistogram3D & hist, int index1, int index2) = 0;
905 
906      /**
907       * Create an IHistogram2D by slicing an IHistogram3D perpendicular to the Y axis,
908       * between "index1" and "index2" (inclusive).
909       * The X axis of the IHistogram2D corresponds to the X axis of this IHistogram3D.
910       * The Z axis of the IHistogram2D corresponds to the Z axis of this IHistogram3D.
911       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
912       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
913       * All the directories in the path must exist. The characther `/` cannot be used
914       * in names; it is only used to delimit directories within paths.
915       * @param hist The IHistogram3D to sliced.
916       * @param index1 The index of the bin along the y axis that marks the lower edge of the slice.
917       * @param index2 The index of the bin along the y axis that marks the upper edge of the slice.
918       * @return The resulting slice.
919       *
920       */
921      virtual IHistogram2D * sliceXZ(const std::string & path, const IHistogram3D & hist, int index1, int index2) = 0;
922 
923      /**
924       * Create an IHistogram2D by slicing an IHistogram3D perpendicular to the X axis,
925       * between "index1" and "index2" (inclusive).
926       * The Y axis of the IHistogram2D corresponds to the Y axis of this IHistogram3D.
927       * The Z axis of the IHistogram2D corresponds to the Z axis of this IHistogram3D.
928       * @param path The path of the resulting IHistogram. The path can either be a relative or full path.
929       * ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
930       * All the directories in the path must exist. The characther `/` cannot be used
931       * in names; it is only used to delimit directories within paths.
932       * @param hist The IHistogram3D to sliced.
933       * @param index1 The index of the bin along the x axis that marks the lower edge of the slice.
934       * @param index2 The index of the bin along the x axis that marks the upper edge of the slice.
935       * @return The resulting slice.
936       *
937       */
938      virtual IHistogram2D * sliceYZ(const std::string & path, const IHistogram3D & hist, int index1, int index2) = 0;
939  }; // class
940  } // namespace AIDA
941  #endif /* ifndef AIDA_IHISTOGRAMFACTORY_H */


feed icon

sventon 2.5.1