00001 #ifndef centellaSys_h
00002 #define centellaSys_h
00003
00004 class processManager;
00005 class selectionManager;
00006 class dataManager;
00007
00008 class optionManager;
00009 class messageManager;
00010
00011 00013
00014 \e Centella System has the following managers: dataManager, processManager, selectionManager,
00015 optionManager and messageManager. <br>
00016 \e Managers are singletons. They can be invoqued using the static method \c instance(),
00017 (i.e processManager::instance() returns a pointer to processManager).<br>
00018 \e Managers: optionManager, and messageManager are <b> application independent </b>.
00019 In priniple the <b> uer </b> does not need to modify them or implement any class.
00020 It could be that the user will create classes derived from serviceI, optionVI or messageVI and will need
00021 to declare them to the servers of the managers. <br
00022 \e Managers: dataManager, processManager and selectionManager, are <b> application dependent </b>.
00023 The <b> users </b> should implement their algorithms, cuts and transient data classes,
00024 and add them into the managers. That force the user the derived his/her classes from
00025 the following base classes: algorithmVI, cutVI and trsDataVI. the detector geometry or the persistent
00026 data could force the <b> user </b> to make some modifications in the dataManager.
00027 <ul>
00028 <li> the processManagers stores, serves and executes the system an application
00029 algorithms. All the algorithms lately inherits from the base class algorithmVI.
00030 <li> the selectionManager stores, servers and apply the system and application
00031 selections and cuts. All the cuts and selections lately inherits from the base class
00032 cutVI.
00033 <li> the dataManagers stores ans serves the data. The data is clasified into
00034 persistent and transient. The persistent data is left to the <b> user </b> to handle.
00035 The transient data inherits from the base class trsDataVI.
00036 the user should provide the converters from transient to persistent data and turn
00037 them into algorithms.
00038 <li> the optionManager allows to set options into classes.
00039 Those classes should inherit from optionVI and should be declared into the server.
00040 The options can be strings, doubles, integers, and booleans.
00041 <li> the messageManager defines an ostream for the system, and allows the classes
00042 to send messages to that ostream.
00043 </ul>
00044 */
00045
00046
00047
00048
00049 class centellaSys
00050
00051 {
00052 public:
00053
00055 centellaSys();
00057 ~centellaSys();
00058
00059 private:
00060
00062 messageManager* m_messageManager;
00064 optionManager* m_optionManager;
00065
00067 dataManager* m_dataManager;
00069 processManager* m_processManager;
00071 selectionManager* m_selectionManager;
00072 };
00073 #endif