emcModuleHelper.C

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