Go to the documentation of this file.00001
00003
00004 #include "EventFilter/StorageManager/interface/EventConsumerRegistrationInfo.h"
00005 #include "EventFilter/StorageManager/interface/EventDistributor.h"
00006 #include "EventFilter/StorageManager/interface/Exception.h"
00007 #include "FWCore/Utilities/interface/EDMException.h"
00008
00009 #include <algorithm>
00010 #include <iterator>
00011 #include <ostream>
00012
00013
00014 namespace stor
00015 {
00016 EventConsumerRegistrationInfo::EventConsumerRegistrationInfo
00017 (
00018 const edm::ParameterSet& pset,
00019 const EventServingParams& eventServingParams,
00020 const std::string& remoteHost
00021 ) :
00022 RegistrationInfoBase(pset, remoteHost, eventServingParams, true)
00023 {
00024 parsePSet(pset);
00025 }
00026
00027 EventConsumerRegistrationInfo::EventConsumerRegistrationInfo
00028 (
00029 const edm::ParameterSet& pset,
00030 const std::string& remoteHost
00031 ) :
00032 RegistrationInfoBase(pset, remoteHost, EventServingParams(), false)
00033 {
00034 parsePSet(pset);
00035 }
00036
00037 void
00038 EventConsumerRegistrationInfo::parsePSet(const edm::ParameterSet& pset)
00039 {
00040 try
00041 {
00042 outputModuleLabel_ = pset.getUntrackedParameter<std::string>("SelectHLTOutput");
00043 }
00044 catch( edm::Exception& e )
00045 {
00046 XCEPT_RAISE( stor::exception::ConsumerRegistration,
00047 "No HLT output module specified" );
00048 }
00049
00050 triggerSelection_ = pset.getUntrackedParameter<std::string>("TriggerSelector", "");
00051
00052 try
00053 {
00054 eventSelection_ = pset.getParameter<Strings>("TrackedEventSelection");
00055 }
00056 catch( edm::Exception& e )
00057 {
00058 edm::ParameterSet tmpPSet1 =
00059 pset.getUntrackedParameter<edm::ParameterSet>("SelectEvents", edm::ParameterSet());
00060 if ( ! tmpPSet1.empty() )
00061 {
00062 eventSelection_ = tmpPSet1.getParameter<Strings>("SelectEvents");
00063 }
00064 }
00065
00066 prescale_ = pset.getUntrackedParameter<int>("prescale", 1);
00067 uniqueEvents_ = pset.getUntrackedParameter<bool>("uniqueEvents", false);
00068 headerRetryInterval_ = pset.getUntrackedParameter<int>("headerRetryInterval", 5);
00069 }
00070
00071
00072 void
00073 EventConsumerRegistrationInfo::do_appendToPSet(edm::ParameterSet& pset) const
00074 {
00075 pset.addUntrackedParameter<std::string>("SelectHLTOutput", outputModuleLabel_);
00076 pset.addUntrackedParameter<std::string>("TriggerSelector", triggerSelection_);
00077 pset.addParameter<Strings>("TrackedEventSelection", eventSelection_);
00078 pset.addUntrackedParameter<bool>("uniqueEvents", uniqueEvents_);
00079 pset.addUntrackedParameter<int>("prescale", prescale_);
00080
00081 if ( headerRetryInterval_ != 5 )
00082 pset.addUntrackedParameter<int>("headerRetryInterval", headerRetryInterval_);
00083 }
00084
00085 void
00086 EventConsumerRegistrationInfo::do_registerMe(EventDistributor* evtDist)
00087 {
00088 evtDist->registerEventConsumer(shared_from_this());
00089 }
00090
00091 void
00092 EventConsumerRegistrationInfo::do_eventType(std::ostream& os) const
00093 {
00094 os << "Output module: " << outputModuleLabel_ << "\n";
00095
00096 if ( triggerSelection_.empty() )
00097 {
00098 if ( ! eventSelection_.empty() )
00099 {
00100 os << "Event Selection: ";
00101 std::copy(eventSelection_.begin(), eventSelection_.end()-1,
00102 std::ostream_iterator<Strings::value_type>(os, ","));
00103 os << *(eventSelection_.end()-1);
00104 }
00105 }
00106 else
00107 os << "Trigger Selection: " << triggerSelection_;
00108
00109 if ( prescale_ != 1 )
00110 os << "; prescale: " << prescale_;
00111
00112 if ( uniqueEvents_ != false )
00113 os << "; uniqueEvents";
00114
00115 os << "\n";
00116 queueInfo(os);
00117 }
00118
00119 bool
00120 EventConsumerRegistrationInfo::operator<(const EventConsumerRegistrationInfo& other) const
00121 {
00122 if ( outputModuleLabel() != other.outputModuleLabel() )
00123 return ( outputModuleLabel() < other.outputModuleLabel() );
00124 if ( triggerSelection() != other.triggerSelection() )
00125 return ( triggerSelection() < other.triggerSelection() );
00126 if ( eventSelection() != other.eventSelection() )
00127 return ( eventSelection() < other.eventSelection() );
00128 if ( prescale() != other.prescale() )
00129 return ( prescale() < other.prescale() );
00130 if ( uniqueEvents() != other.uniqueEvents() )
00131 return ( uniqueEvents() < other.uniqueEvents() );
00132 return RegistrationInfoBase::operator<(other);
00133 }
00134
00135 bool
00136 EventConsumerRegistrationInfo::operator==(const EventConsumerRegistrationInfo& other) const
00137 {
00138 return (
00139 outputModuleLabel() == other.outputModuleLabel() &&
00140 triggerSelection() == other.triggerSelection() &&
00141 eventSelection() == other.eventSelection() &&
00142 prescale() == other.prescale() &&
00143 uniqueEvents() == other.uniqueEvents() &&
00144 RegistrationInfoBase::operator==(other)
00145 );
00146 }
00147
00148 bool
00149 EventConsumerRegistrationInfo::operator!=(const EventConsumerRegistrationInfo& other) const
00150 {
00151 return ! ( *this == other );
00152 }
00153
00154 }
00155