00001 #ifndef eventVI_h
00002 #define eventVI_h
00003
00004 #include "Event/algorithmVI.h"
00005 #include "Event/algorithmTree.h"
00006
00007 00009
00010 \e eventVI is an algorithmVI.<br>
00011 \e eventVI is the main algorithm to execute the event tasks: generation, reconstruction and
00012 analysis.
00013 <ul>
00014 <li> It reuses an algorithmTree.
00015 <li> An event algorithm reflect the "physical" process of an \b event. An event
00016 is the process of an interacion of a particle with the detector and how the physicits
00017 retrieve the initial information from the detector response. An event has
00018 three separated task: \b generation (from the interaction of the particle to
00019 the response of the detector) this algorithm creates the Raw data;
00020 \b reconstruction (from the raw data to reconstructed data, data which is still not physical);
00021 and \b analysis (from reconstructed data to physics variables).
00022 Example: tracker device: 1) generation: from the interacion of the particle to the list
00023 of hits, 2) reconstruction: from the list of hits to reconstructed tracks; 3) analysis
00024 from the list of track to the initial direction of the incident particle.
00025 <li> An event algorithm executes three algorithms (also methods): \c generate(),
00026 \c reconstruct(), and \c analyze(). Each one is an algorithmComposite, so it can be
00027 composed of several algorithms.
00028 <li> This class uses an algorithmTree and renames
00029 the initalize, execute and finalize methods into generate,
00030 reconstruct and analyze methods.
00031 </ul>
00032 */
00033
00034
00035
00036
00037
00038 class eventVI : public algorithmTree
00039
00040 {
00041 public:
00042
00043
00045 eventVI() {};
00047 virtual ~eventVI() {};
00048
00050
00052 virtual void run();
00053
00055 virtual void generate() {initialize();}
00057 virtual void reconstruct() {execute();}
00059 virtual void analyze() {finalize();}
00060
00062 virtual void command(std::string com);
00063
00064 protected:
00065
00067 algorithmComposite* genAlg() const {return iniAlg();}
00069 algorithmComposite* recAlg() const {return exeAlg();}
00071 algorithmComposite* anaAlg() const {return finAlg();}
00072
00073 };
00074 #endif