BaseModule.cc
00001 #include "BaseModule.hh"
00002 #include "AddCutFunctor.hh"
00003
00004
00005 BaseModule::BaseModule(const std::string& name, const std::string& helptext) :
00006 ParameterList(name, helptext), _last_process_return(0)
00007 {
00008 RegisterParameter("enabled", enabled = true,
00009 "Is this module enabled for this run?");
00010 RegisterParameter("skip_channels",_skip_channels,
00011 "List the channels which we don't process");
00012
00013 RegisterParameter("dependencies", _dependencies,
00014 "List of modules that need to process before us");
00015 }
00016
00017 BaseModule::~BaseModule()
00018 {
00019
00020
00021 for(size_t i=0; i < _cuts.size(); i++)
00022 delete _cuts[i];
00023 _cuts.clear();
00024 }
00025
00026
00027 int BaseModule::HandleEvent(EventPtr event, bool process_now)
00028 {
00029
00030 if(CheckCuts(event))
00031 _last_process_return = Process(event);
00032 else
00033 _last_process_return = 0;
00034 if(_last_process_return){
00035 Message(ERROR)<<"Module "<<GetName()<<" returns "
00036 <<_last_process_return
00037 <<" processing event "
00038 <<event->GetRawEvent()->GetID()<<"\n";
00039 }
00040 return _last_process_return;
00041 }
00042
00043 int BaseModule::AddDependency(const std::string& module)
00044 {
00045 _dependencies.insert(module);
00046 return _dependencies.size();
00047 }
00048
00049
00050 bool BaseModule::CheckCuts(EventPtr event){
00051
00052 for(std::vector<ProcessingCut*>::iterator cutit = _cuts.begin();
00053 cutit != _cuts.end(); cutit++){
00054 if((*cutit) -> Process(event->GetEventData()) == false)
00055 return false;
00056 }
00057 return true;
00058 }
00059
00060 void BaseModule::ClearCuts()
00061 {
00062 for(std::vector<ProcessingCut*>::iterator it = _cuts.begin();
00063 it != _cuts.end(); it++){
00064 delete *it;
00065 }
00066 _cuts.clear();
00067 }
00068