00001 #ifndef BASEMODULE_H_ 00002 #define BASEMODULE_H_ 00003 00004 #include "TGlobalData.h" 00005 #include "TSetupData.h" 00006 #include "TDirectory.h" 00007 00008 namespace modules{ 00009 class options; 00010 } 00011 00016 class BaseModule 00017 { 00018 public: 00027 BaseModule(const char* module_name, modules::options* opts=NULL , bool with_directory=true); 00028 virtual ~BaseModule(); 00029 00033 int ProcessGenericEntry(TGlobalData *gData, const TSetupData* gSetup); 00034 00039 int Preprocess(TGlobalData *gData, const TSetupData* gSetup); 00040 00045 int Postprocess(TGlobalData *gData, const TSetupData* gSetup); 00046 00050 virtual int BeforeFirstEntry(TGlobalData* gData, const TSetupData* setup)=0; 00051 00055 virtual int AfterLastEntry(TGlobalData* gData, const TSetupData* setup)=0; 00056 00059 void SetAlias(const std::string& alias){fAlias=alias;}; 00060 00063 std::string GetAlias()const{return fAlias;}; 00064 00066 const char* GetName()const{return fName.c_str();}; 00067 00068 protected: 00071 bool Debug()const{return fDebug;}; 00072 00074 TDirectory* GetDirectory()const {return fDirectory;} 00075 TDirectory* GetDirectory(const std::string& name=""); 00076 00077 private: 00085 virtual int ProcessEntry(TGlobalData *gData, const TSetupData* gSetup)=0; 00086 00087 private: 00088 TSetupData* fSetup; 00089 bool fDebug; 00090 std::string fName; 00091 TDirectory *fDirectory; 00092 std::string fAlias; 00093 00094 protected: 00098 TDirectory *dir; 00099 }; 00100 00101 #endif // BASEMODULE_H_