00001 #include "emcModuleHelper.h"
00002
00003 #include "PHCompositeNode.h"
00004 #include "EMCModule.h"
00005 #include "PHString.h"
00006 #include <iomanip>
00007 #include <iostream>
00008
00009 using namespace std;
00010
00011
00012 emcModuleHelper::~emcModuleHelper()
00013 {
00014 for ( size_t i = 0; i < fModules.size(); ++i )
00015 {
00016 struct mod& module = fModules[i];
00017 delete module.module;
00018 module.module=0;
00019 }
00020 }
00021
00022
00023 void
00024 emcModuleHelper::add(EMCModule* module, EWhenToApply w, bool owner)
00025 {
00026 bool firstEvent=false;
00027
00028 if ( w == kFirstEventOnly )
00029 {
00030 firstEvent=true;
00031 }
00032
00033 fModules.push_back( mod(module,firstEvent,owner) );
00034 }
00035
00036
00037 int
00038 emcModuleHelper::event(PHCompositeNode* topNode, bool firstEvent)
00039 {
00040 for ( size_t im = 0; im < fModules.size(); im++ )
00041 {
00042 if ( fModules[im].firstEventOnly == true && firstEvent ) continue;
00043 fModules[im].module->event(topNode);
00044 }
00045 return 0;
00046 }
00047
00048
00049 void
00050 emcModuleHelper::print(ostream& os) const
00051 {
00052 for ( size_t im = 0; im < fModules.size(); im++ )
00053 {
00054 os << dec << setw(3) << im
00055 << " " << fModules[im].module->getName();
00056 if ( fModules[im].firstEventOnly==true )
00057 {
00058 os << " (first event only) ";
00059 }
00060 os << endl;
00061 }
00062 }