#ifndef NLD_FULLREC_H
#define NLD_FULLREC_H
#include "EventMarker.h"
#include "MCPartPrint.h"
#include "TrackRecSmear.h"
#include "ClusterSystem.h"
#include "RecModule.h"
#include "EventSource.h"
#include "Event.h"
#include "TObject.h"

class FullRecon : public TObject {

private:

  Event* m_event;
  EventSource* m_source;
  TObjArray m_ModuleList;
  TObjArrayIter *m_iter;
  RecModule* m_module;
  EventMarker* m_eventMarker;
  MCPartPrint* m_mcPartPrint;
  TrackRecSmear* m_trackRecSmear;
  ClusterSystem* m_ClusterSystem;
  FILE* m_ofile;
  FILE* m_parfile;

 public:

  FullRecon(EventSource* eventSource,
	 Char_t* parameterFileName,
	 Char_t* outputFileName
	 );

  ~FullRecon();

  //  Int_t DoEvent();        // Full processing done in batch
  Int_t DoEventNewstyle();  // same as above
  Int_t FetchEvent(Event *evt);
  void  Doit(Event *evt); // call doit for each module
  void  Spew(); // call spew for each module
  void  Cleanup(); // call cleanup for each module

  ClusterSystem* GetClusterSystem() {return m_ClusterSystem;}

 ClassDef(FullRecon,0)

};
#endif
