emcModuleHelper.h

Go to the documentation of this file.
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