00001 00002 /* 00003 2) the execution of a run, which loop in a collection of events to apply some 00004 algorithms, 3) the execution of some final algorithms. 00005 <br><ul> 00006 <br><li> Some of the algorithms executed in the initial and finalize part 00007 are already declared in \c define(), except two of them. They are the algorithmTask 00008 named \e "iniOfRun" and \e "endOfRun" where the \b user can define the algorithms 00009 to execute at the start and the end of the run. 00010 <br><li> The execute() method of 00011 \e centella run the runRunAlg algorithm, a system algorithm that performs the loop on 00012 the number of event of the persistent storage and call the algorithm runEventAlg to 00013 process every event. 00014 <br><li>The runEventAlg has an eventProcess (algorithm) called \e "runEvent" (a eventProcess) 00015 which the user can indicate which algorithms to run dinamically to. In addition 00016 runEventAlg has two cutSelection named "selRead" and "selAna" which decide if 00017 the event shoulb be processed and if the processed event should be intalled in 00018 persistent data. This two cutSelection can be dinamically defined by the user. 00019 </ul> 00020 </ul> 00021 */ 00022 00023 /* 00024 <li> The optionManager and messageManager are <b> application independent <\b>. 00025 In priciple the User will not need to modify them. 00026 </ul> 00027 <ul> 00028 The system has five managers. Three should have a \e Centella specific 00029 implementation: dataManager, processManager, selectionManager. 00030 Which declares the \b data (persistent and transient) the \b processes (algorithms and 00031 multialgorithms) and \b selections (cuts and multicuts). These managers 00032 declare and use the data, algorithms and selections relevant for the 00033 \e centella application. The virtual base classes 00034 for data, algorithms and selections are trsDataVI, algorithmVI and cutVI. 00035 <br><ul> 00036 <br><li>The data is clasified into detector data -geometry and calibration- (dataUserServerDet); 00037 event data - data relevant for every event - (dataUserServerEvent) and 00038 persistend data (dataUserServerROOT). In \e Centella the persisten data is 00039 stored into ROOT trees, histograms and ntuples. The dataManager serves the 00040 transient data via the \c getData() template method. In \e Centella calibration 00041 and event data are declared transient. The other data, persistent 00042 and geometry is for the moment provided via pointers. Most of the data is 00043 created one, it reference pointer stored into the server and its contents 00044 update. 00045 <br><li> The processes are algorithms. They are some system process and some user defined ones. 00046 The algorithms can be simple (algorithmVI, algorithmCommand) or multialgorithms 00047 (algorithmComposite, algorithmTree). Their main method is \c run(). The processManager serves the algorithms 00048 vita the \c getAlgorithm() method. 00049 In the processManager there are servers to algorithmTask and eventProcess which are 00050 algorithms that can be defined dinamically, in particular, they can be created 00051 by the user via the input file and the optionManager \c setOption() method. The algorithms 00052 are created at one and not removed after stored into the server. 00053 <br><li> The selections are cuts. They are some system cuts and some defined by the user. 00054 They are simple cuts (cutVI) or multicuts (cutComposite). Their main method is 00055 \c apply(). The selectionManager 00056 serves the selection via the \c getCut() method. selectionManager has also a server 00057 for cutSelection, a cutComposite that can be defined by the user. Again, the cuts 00058 should be construct an included in the server and not deleted. 00059 <br></ul><br> 00060 There are two independent managers: optionManager and messageManager. 00061 <br><ul> 00062 <br><li> The optionManager serves to set options (that can be turn into operations) 00063 into servived classes derived from the base class optionVI. Previously, paramaters of the classes, 00064 (types accepted: strings, double, int) should be turn into options 00065 using the method \c defineOption() declared in optionVI. In this way it is possible to create 00066 objects dinamically, in particular algorithms and selections by the user. 00067 In \e Centella algorithms and selections are dinamically implemented via 00068 the input file. 00069 <br><li>The messageManager defines an ostream where to send 00070 the messages and provides some methods (i.e \c message()) to send them. 00071 The messageManager and 00072 the classes serviced by messageVI has a message level that determines if a message should 00073 or not realized. 00074 </ul> 00075 <br> 00076 */