00001 #ifndef __emcModuleHelper_h__ 00002 #define __emcModuleHelper_h__ 00003 00004 #include <vector> 00005 #include <iostream> 00006 00007 class EMCModule; 00008 class PHCompositeNode; 00009 00018 class emcModuleHelper 00019 { 00020 00021 public: 00022 00023 enum EWhenToApply { kAnyEvent=0, kFirstEventOnly=1 }; 00024 00025 virtual ~emcModuleHelper(); 00026 00027 void add(EMCModule* module, 00028 EWhenToApply w = emcModuleHelper::kAnyEvent, 00029 bool owner = true); 00030 00031 int event(PHCompositeNode*, bool firstEvent=false); 00032 00033 void print(std::ostream& os=std::cout) const; 00034 00035 private: 00036 00037 struct mod 00038 { 00039 mod() : module(0), firstEventOnly(false), owner(false) {} 00040 mod(EMCModule* _module, bool f, bool o) 00041 : module(_module),firstEventOnly(f),owner(o) {} 00042 00043 EMCModule* module; 00044 bool firstEventOnly; 00045 bool owner; 00046 }; 00047 00048 private: 00049 std::vector<mod> fModules; 00050 }; 00051 #endif