![]() |
![]() |
#include <PrescaleService.h>
Public Types | |
typedef std::map< std::string, std::vector< unsigned int > > | PrescaleTable_t |
typedef std::vector< std::string > | VString_t |
Public Member Functions | |
unsigned int | getLvl1IndexDefault () const |
const VString_t & | getLvl1Labels () const |
unsigned int | getPrescale (std::string const &prescaledPath) |
unsigned int | getPrescale (unsigned int lvl1Index, std::string const &prescaledPath) |
const PrescaleTable_t & | getPrescaleTable () const |
void | postBeginJob () |
void | postEndJob () |
void | postEventProcessing (Event const &, EventSetup const &) |
void | postModule (ModuleDescription const &) |
void | preEventProcessing (EventID const &, Timestamp const &) |
void | preModule (ModuleDescription const &) |
PrescaleService (ParameterSet const &, ActivityRegistry &) | |
void | reconfigure (ParameterSet const &ps) |
void | setIndex (unsigned int lvl1Index) |
~PrescaleService () | |
Static Public Member Functions | |
static void | fillDescriptions (edm::ConfigurationDescriptions &descriptions) |
Private Member Functions | |
void | configure () |
Private Attributes | |
bool | configured_ |
unsigned int | iLvl1IndexDefault_ |
VString_t | lvl1Labels_ |
unsigned int | nLvl1Index_ |
PrescaleTable_t | prescaleTable_ |
std::vector< ParameterSet > | vpsetPrescales_ |
Definition at line 25 of file PrescaleService.h.
typedef std::map<std::string, std::vector<unsigned int> > edm::service::PrescaleService::PrescaleTable_t |
Definition at line 54 of file PrescaleService.h.
typedef std::vector<std::string> edm::service::PrescaleService::VString_t |
Definition at line 53 of file PrescaleService.h.
edm::service::PrescaleService::PrescaleService | ( | ParameterSet const & | iPS, |
ActivityRegistry & | iReg | ||
) |
Definition at line 29 of file PrescaleService.cc.
References edm::ParameterSet::getUntrackedParameter(), i, iLvl1IndexDefault_, lvl1Labels_, postBeginJob(), postEndJob(), postEventProcessing(), postModule(), preEventProcessing(), preModule(), edm::ActivityRegistry::watchPostBeginJob(), edm::ActivityRegistry::watchPostEndJob(), edm::ActivityRegistry::watchPostModule(), edm::ActivityRegistry::watchPostProcessEvent(), edm::ActivityRegistry::watchPreModule(), and edm::ActivityRegistry::watchPreProcessEvent().
: configured_(false) , lvl1Labels_(iPS.getParameter<std::vector<std::string> >("lvl1Labels")) , nLvl1Index_(lvl1Labels_.size()) , iLvl1IndexDefault_(0) , vpsetPrescales_(iPS.getParameterSetVector("prescaleTable")) , prescaleTable_() { std::string lvl1DefaultLabel= iPS.getUntrackedParameter<std::string>("lvl1DefaultLabel",""); for (unsigned int i = 0; i < lvl1Labels_.size(); ++i) { if (lvl1Labels_[i] == lvl1DefaultLabel) iLvl1IndexDefault_ = i; } iReg.watchPostBeginJob(this, &PrescaleService::postBeginJob); iReg.watchPostEndJob(this, &PrescaleService::postEndJob); iReg.watchPreProcessEvent(this, &PrescaleService::preEventProcessing); iReg.watchPostProcessEvent(this, &PrescaleService::postEventProcessing); iReg.watchPreModule(this, &PrescaleService::preModule); iReg.watchPostModule(this, &PrescaleService::postModule); }
edm::service::PrescaleService::~PrescaleService | ( | ) |
Definition at line 54 of file PrescaleService.cc.
{ }
void edm::service::PrescaleService::configure | ( | ) | [private] |
Definition at line 83 of file PrescaleService.cc.
References configured_, Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterSet(), edm::getProcessParameterSet(), i, moduleLabel(), nLvl1Index_, pathName(), makeHLTPrescaleTable::prescales, prescaleTable_, MultipleCompare::pset, and vpsetPrescales_.
Referenced by getPrescale(), postBeginJob(), and reconfigure().
{ configured_ = true; ParameterSet prcPS = getProcessParameterSet(); // find all HLTPrescaler modules std::set<std::string> prescalerModules; std::vector<std::string> allModules=prcPS.getParameter<std::vector<std::string> >("@all_modules"); for(unsigned int i = 0; i < allModules.size(); ++i) { ParameterSet const& pset = prcPS.getParameterSet(allModules[i]); std::string moduleLabel = pset.getParameter<std::string>("@module_label"); std::string moduleType = pset.getParameter<std::string>("@module_type"); if (moduleType == "HLTPrescaler") prescalerModules.insert(moduleLabel); } // find all paths with an HLTPrescaler and check for <=1 std::set<std::string> prescaledPathSet; std::vector<std::string> allPaths = prcPS.getParameter<std::vector<std::string> >("@paths"); for (unsigned int iP = 0; iP < allPaths.size(); ++iP) { std::string pathName = allPaths[iP]; std::vector<std::string> modules = prcPS.getParameter<std::vector<std::string> >(pathName); for (unsigned int iM = 0; iM < modules.size(); ++iM) { std::string moduleLabel = modules[iM]; if (prescalerModules.erase(moduleLabel)>0) { std::set<std::string>::const_iterator itPath=prescaledPathSet.find(pathName); if (itPath==prescaledPathSet.end()) { prescaledPathSet.insert(pathName); } else { throw cms::Exception("DuplicatePrescaler") <<"path '"<<pathName<<"' has more than one HLTPrescaler!"; } } } } std::vector<std::string> prescaledPaths; for (unsigned int iVPSet=0; iVPSet < vpsetPrescales_.size(); ++iVPSet) { ParameterSet psetPrescales = vpsetPrescales_[iVPSet]; std::string pathName = psetPrescales.getParameter<std::string>("pathName"); if (prescaledPathSet.erase(pathName) > 0) { std::vector<unsigned int> prescales = psetPrescales.getParameter<std::vector<unsigned int> >("prescales"); if (prescales.size()!=nLvl1Index_) { throw cms::Exception("PrescaleTableMismatch") << "path '" << pathName << "' has unexpected number of prescales"; } prescaleTable_[pathName] = prescales; } else { throw cms::Exception("PrescaleTableUnknownPath") <<"path '"<<pathName<<"' is invalid or does not " <<"contain any HLTPrescaler"; } } }
void edm::service::PrescaleService::fillDescriptions | ( | edm::ConfigurationDescriptions & | descriptions | ) | [static] |
Definition at line 164 of file PrescaleService.cc.
References edm::ParameterSetDescription::add(), edm::ConfigurationDescriptions::add(), edm::ParameterSet::addParameter(), edm::ParameterSetDescription::addUntracked(), and edm::ParameterSetDescription::addVPSet().
{ edm::ParameterSetDescription desc; std::vector<std::string> defaultVector; defaultVector.push_back(std::string("default")); desc.add<std::vector<std::string> >("lvl1Labels", defaultVector); // This default vector<ParameterSet> will be used when // the configuration does not include this parameter and // it also gets written into the generated cfi file. std::vector<edm::ParameterSet> defaultVPSet; edm::ParameterSet pset0; pset0.addParameter<std::string>("pathName", std::string("HLTPath")); std::vector<unsigned> defaultVectorU; defaultVectorU.push_back(1u); pset0.addParameter<std::vector<unsigned> >("prescales", defaultVectorU); defaultVPSet.push_back(pset0); edm::ParameterSetDescription validator; validator.add<std::string>("pathName"); validator.add<std::vector<unsigned int> >("prescales"); desc.addVPSet("prescaleTable", validator, defaultVPSet); desc.addUntracked<std::string>("lvl1DefaultLabel", std::string("default")); descriptions.add("PrescaleService", desc); }
unsigned int edm::service::PrescaleService::getLvl1IndexDefault | ( | ) | const [inline] |
Definition at line 55 of file PrescaleService.h.
References iLvl1IndexDefault_.
Referenced by HLTPrescaleRecorder::beginLuminosityBlock(), and HLTPrescaleRecorder::beginRun().
{return iLvl1IndexDefault_;}
const VString_t& edm::service::PrescaleService::getLvl1Labels | ( | ) | const [inline] |
Definition at line 56 of file PrescaleService.h.
References lvl1Labels_.
Referenced by HLTPrescaleRecorder::beginLuminosityBlock(), and HLTPrescaleRecorder::beginRun().
{return lvl1Labels_;}
unsigned int edm::service::PrescaleService::getPrescale | ( | unsigned int | lvl1Index, |
std::string const & | prescaledPath | ||
) |
Definition at line 147 of file PrescaleService.cc.
References configure(), configured_, Exception, nLvl1Index_, and prescaleTable_.
Referenced by HLTPrescaler::filter(), getPrescale(), and evf::FWEPWrapper::taskWebPage().
{ if (lvl1Index >= nLvl1Index_) { throw cms::Exception("InvalidLvl1Index") <<"lvl1Index '"<<lvl1Index<<"' exceeds number of prescale columns"; } if (!configured_) { configure(); } PrescaleTable_t::const_iterator it = prescaleTable_.find(prescaledPath); return (it == prescaleTable_.end()) ? 1 : it->second[lvl1Index]; }
unsigned int edm::service::PrescaleService::getPrescale | ( | std::string const & | prescaledPath | ) |
Definition at line 141 of file PrescaleService.cc.
References getPrescale(), and iLvl1IndexDefault_.
{ return getPrescale(iLvl1IndexDefault_, prescaledPath); }
const PrescaleTable_t& edm::service::PrescaleService::getPrescaleTable | ( | ) | const [inline] |
Definition at line 57 of file PrescaleService.h.
References prescaleTable_.
Referenced by HLTPrescaleRecorder::beginLuminosityBlock(), and HLTPrescaleRecorder::beginRun().
{return prescaleTable_;}
void edm::service::PrescaleService::postBeginJob | ( | ) |
Definition at line 76 of file PrescaleService.cc.
References configure(), and configured_.
Referenced by PrescaleService().
{ if (!configured_) { configure(); } }
void edm::service::PrescaleService::postEndJob | ( | ) | [inline] |
void edm::service::PrescaleService::postEventProcessing | ( | Event const & | , |
EventSetup const & | |||
) | [inline] |
void edm::service::PrescaleService::postModule | ( | ModuleDescription const & | ) | [inline] |
void edm::service::PrescaleService::preModule | ( | ModuleDescription const & | ) | [inline] |
void edm::service::PrescaleService::reconfigure | ( | ParameterSet const & | ps | ) |
Definition at line 61 of file PrescaleService.cc.
References configure(), edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterSetVector(), edm::ParameterSet::getUntrackedParameter(), i, iLvl1IndexDefault_, lvl1Labels_, nLvl1Index_, prescaleTable_, and vpsetPrescales_.
Referenced by evf::FWEPWrapper::init().
{ vpsetPrescales_.clear(); prescaleTable_.clear(); iLvl1IndexDefault_ = 0; lvl1Labels_ = iPS.getParameter<std::vector<std::string> >("lvl1Labels"); nLvl1Index_ = lvl1Labels_.size(); vpsetPrescales_ = iPS.getParameterSetVector("prescaleTable"); std::string lvl1DefaultLabel= iPS.getUntrackedParameter<std::string>("lvl1DefaultLabel"); for (unsigned int i=0; i < lvl1Labels_.size(); ++i) { if (lvl1Labels_[i] == lvl1DefaultLabel) iLvl1IndexDefault_ = i; } configure(); }
void edm::service::PrescaleService::setIndex | ( | unsigned int | lvl1Index | ) | [inline] |
Definition at line 45 of file PrescaleService.h.
References iLvl1IndexDefault_.
Referenced by evf::FWEPWrapper::getTriggerReport().
{iLvl1IndexDefault_ = lvl1Index;}
bool edm::service::PrescaleService::configured_ [private] |
Definition at line 71 of file PrescaleService.h.
Referenced by configure(), getPrescale(), and postBeginJob().
unsigned int edm::service::PrescaleService::iLvl1IndexDefault_ [private] |
Definition at line 74 of file PrescaleService.h.
Referenced by getLvl1IndexDefault(), getPrescale(), PrescaleService(), reconfigure(), and setIndex().
Definition at line 72 of file PrescaleService.h.
Referenced by getLvl1Labels(), PrescaleService(), and reconfigure().
unsigned int edm::service::PrescaleService::nLvl1Index_ [private] |
Definition at line 73 of file PrescaleService.h.
Referenced by configure(), getPrescale(), and reconfigure().
Definition at line 76 of file PrescaleService.h.
Referenced by configure(), getPrescale(), getPrescaleTable(), and reconfigure().
std::vector<ParameterSet> edm::service::PrescaleService::vpsetPrescales_ [private] |
Definition at line 75 of file PrescaleService.h.
Referenced by configure(), and reconfigure().