IAnalysisFactory.h

Go to the documentation of this file.
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 */