// ESAF : Euso Simulation and Analysis Framework
// Simulation framework
// $Id: SimuFramework.hh,v 1.5 2004/09/28 12:10:35 thea Exp $
// A. Thea created Oct, 13 2004
// SimuFramework a simplified version of RecoFramework.
// It foresees the merging of simulation and reconstrucion into an unique
// framework. Also, though the module structure, gives Simu the capability to
// Simu run in special modes.

#ifndef __SIMUFRAMEWORK_HH_
#define __SIMUFRAMEWORK_HH_

#include <map>
#include <iostream>
#include <string>

#include "euso.hh"
#include "EsafConfigurable.hh"

class SimuModule;

class SimuFramework : public EsafConfigurable {
public:
    // ctor
    SimuFramework();

    // dtor
    virtual ~SimuFramework();

    // parse a command line
    void ParseCommandLine(const int&, const char**);
    
    // load module list from file
    bool Load(const string&) { return kFALSE; }

    // execute module list
    void Execute();
    
    // execute on a single event
    // void Execute( SimuEvent* );

    // dump module list and infos
    void Dump( ostream& = cout) const;

    EsafConfigClass(General,SimuFramework)

private:
    // add module to list
    bool AddModule(const string&);
    
    // map of reco modules
    map<string,SimuModule*> fModules;


    ClassDef(SimuFramework,0)
};

#endif  /* __SIMUFRAMEWORK_HH_ */