00001 #ifndef TrigConf_HLTPrescale
00002 #define TrigConf_HLTPrescale
00003
00004 #include <iosfwd>
00005 #include <string>
00006 #include <map>
00007 #include <vector>
00008 #include <utility>
00009
00010 #include "TrigConfL1Data/TrigConfData.h"
00011
00012 #include <boost/unordered_map.hpp>
00013
00014 namespace TrigConf {
00015 class HLTPrescale;
00016 }
00017
00018 namespace TrigConf {
00019
00020 std::ostream & operator<<(std::ostream &, const TrigConf::HLTPrescale &);
00021
00022 class HLTPrescale {
00023 public:
00024
00025
00026 HLTPrescale(float prescale=1, float pass_through=-1);
00027 HLTPrescale(const HLTPrescale& o);
00028
00029
00030 ~HLTPrescale();
00031
00032
00033 HLTPrescale& operator=(const HLTPrescale&);
00034
00035
00036 typedef boost::unordered_map<std::string, float> PrescaleMap_t;
00037 typedef PrescaleMap_t::value_type value_type;
00038
00039
00040 HLTPrescale& setPrescale(float prescale) { m_prescale = prescale; return *this; }
00041 HLTPrescale& setPassThrough(float pass_through) { m_pass_through = pass_through; return *this; }
00042 HLTPrescale& setRerunPrescale(const std::string& targetName, float ps);
00043 HLTPrescale& setStreamPrescale(const std::string& streamName, float ps);
00044
00045
00046 float prescale() const { return m_prescale; }
00047 float pass_through() const { return m_pass_through; }
00048 std::pair<bool, float> getRerunPrescale(const std::string& targetName) const;
00049 std::pair<bool, float> getStreamPrescale(const std::string& streamName) const;
00050 const PrescaleMap_t& getRerunPrescales() const { return m_rerun_prescale; }
00051 const PrescaleMap_t& getStreamPrescales() const { return m_stream_prescale; }
00052
00053 bool disabled() const { return m_prescale<0; }
00054
00055 std::string __str__() const;
00056
00057 private:
00058
00059 float m_prescale;
00060 float m_pass_through;
00061 PrescaleMap_t m_rerun_prescale;
00062 PrescaleMap_t m_stream_prescale;
00063 };
00064
00065 }
00066
00067 #endif