00001 // -*- C++ -*- 00002 // AID-GENERATED 00003 // ========================================================================= 00004 // This class was generated by AID - Abstract Interface Definition 00005 // DO NOT MODIFY, but use the org.freehep.aid.Aid utility to regenerate it. 00006 // ========================================================================= 00007 #ifndef AIDA_IANALYSISFACTORY_H 00008 #define AIDA_IANALYSISFACTORY_H 1 00009 00010 // This file is part of the AIDA library 00011 // Copyright (C) 2002 by the AIDA team. All rights reserved. 00012 // This library is free software and under the terms of the 00013 // GNU Library General Public License described in the LGPL.txt 00014 00015 #include <string> 00016 00017 namespace AIDA { 00018 00019 class IDataPointSetFactory; 00020 class IFitFactory; 00021 class IFunctionFactory; 00022 class IHistogramFactory; 00023 class IPlotterFactory; 00024 class ITree; 00025 class ITreeFactory; 00026 class ITupleFactory; 00027 00028 /** 00029 * The "master" factory from which other factories are obtained. 00030 * Typically accessed by: 00031 * <pre> 00032 * IAnalysisFactory af =(IAnalysisFactory) ServiceManager.create("hep.aida.IAnalysisFactory"); 00033 * </pre> 00034 * 00035 * In C++ IAnalysisFactory* af = AIDA_createAnalysisFactory(); 00036 * 00037 * @author The AIDA team (http://aida.freehep.org/) 00038 */ 00039 00040 class IAnalysisFactory { 00041 00042 public: 00043 /// Destructor. 00044 virtual ~IAnalysisFactory() { /* nop */; } 00045 00046 /** 00047 * Create an ITreeFactory. 00048 * @return The ITreeFactory. 00049 * 00050 */ 00051 virtual ITreeFactory * createTreeFactory() = 0; 00052 00053 /** 00054 * Create an IHistogramFactory. 00055 * @param tree The ITree which created histograms will be associated to. 00056 * @return The IHistogramFactory. 00057 * 00058 */ 00059 virtual IHistogramFactory * createHistogramFactory(ITree & tree) = 0; 00060 00061 /** 00062 * Create an IDataPointSetFactory. 00063 * @param tree The ITree which created IDataPointSet will be associated to. 00064 * @return The IDataPointSetFactory. 00065 * 00066 */ 00067 virtual IDataPointSetFactory * createDataPointSetFactory(ITree & tree) = 0; 00068 00069 /** 00070 * Create an ITupleFactory. 00071 * @param tree The ITree which created tuples will be associated to. 00072 * @return The ITupleFactory. 00073 * 00074 */ 00075 virtual ITupleFactory * createTupleFactory(ITree & tree) = 0; 00076 00077 /** 00078 * Create an IFunctionFactory. 00079 * @param tree The ITree which created functions will be associated to. 00080 * @return The IFunctionFactory. 00081 * 00082 */ 00083 virtual IFunctionFactory * createFunctionFactory(ITree & tree) = 0; 00084 00085 /** 00086 * Create an IPlotterFactory. 00087 * Due to the fact that the plotter factory may activate a GUI 00088 * tookit, the process arguments (passed to the main function) 00089 * could be passed to the plotter factory. Most of the GUI 00090 * toolkit ask for them (Motif, gtk, Qt, FLTK). 00091 * @param imp The AIDA implementation to use. The default uses the current implementation one. 00092 * @param lib The plotter to use within the choosen AIDA implementation (an AIDA implementation may have multiple plotters based on different technologies). 00093 */ 00094 00095 00096 00097 00098 virtual IPlotterFactory * createPlotterFactory(int argc = 0, char * * args = 0, const std::string & imp = "", const std::string & lib = "") = 0; 00099 00100 /** 00101 * Create an IFitFactory. 00102 * @return The IFitFactory. 00103 * 00104 */ 00105 virtual IFitFactory * createFitFactory() = 0; 00106 }; // class 00107 } // namespace AIDA 00108 00109 00110 00111 /** 00112 * To hook an AIDA implementation. 00113 * For example : 00114 * #include <AIDA/IAnalysisFactory.h> 00115 * ... 00116 * IAnalysisFactory* analysisFactory = AIDA_createAnalysisFactory(); 00117 * ... 00118 */ 00119 00120 extern "C" { 00121 AIDA::IAnalysisFactory* AIDA_createAnalysisFactory(); 00122 } 00123 #endif /* ifndef AIDA_IANALYSISFACTORY_H */