Public Member Functions | |
AlCaRecoTriggerBitsRcdRead (const edm::ParameterSet &cfg) | |
virtual void | analyze (const edm::Event &evt, const edm::EventSetup &evtSetup) |
virtual void | beginRun (const edm::Run &run, const edm::EventSetup &evtSetup) |
virtual void | endJob () |
~AlCaRecoTriggerBitsRcdRead () | |
Private Types | |
enum | OutputType { kText, kTwiki, kPython } |
Private Member Functions | |
void | printMap (edm::RunNumber_t firstRun, edm::RunNumber_t lastRun, const AlCaRecoTriggerBits &triggerMap) const |
OutputType | stringToEnum (const std::string &outputType) const |
Private Attributes | |
edm::RunNumber_t | firstRun_ |
edm::RunNumber_t | lastRun_ |
AlCaRecoTriggerBits | lastTriggerBits_ |
std::auto_ptr< std::ofstream > | output_ |
const OutputType | outputType_ |
edm::ESWatcher < AlCaRecoTriggerBitsRcd > | watcher_ |
Module to read trigger bit mappings (AlCaRecoTriggerBits) from DB and put out as text. Several output formats can be configured via parameter 'outputType':
Where to put the text is decided by parameter 'rawFileName':
Definition at line 40 of file AlCaRecoTriggerBitsRcdRead.cc.
enum AlCaRecoTriggerBitsRcdRead::OutputType [private] |
Definition at line 52 of file AlCaRecoTriggerBitsRcdRead.cc.
AlCaRecoTriggerBitsRcdRead::AlCaRecoTriggerBitsRcdRead | ( | const edm::ParameterSet & | cfg | ) | [explicit] |
Definition at line 72 of file AlCaRecoTriggerBitsRcdRead.cc.
References convertXMLtoSQLite_cfg::fileName, edm::ParameterSet::getUntrackedParameter(), kPython, kText, kTwiki, output_, and outputType_.
: outputType_(this->stringToEnum(cfg.getUntrackedParameter<std::string>("outputType"))), firstRun_(0), lastRun_(0) { // edm::LogInfo("") << "@SUB=AlCaRecoTriggerBitsRcdRead" // << cfg.getParameter<std::string>("@module_label"); std::string fileName(cfg.getUntrackedParameter<std::string>("rawFileName")); switch (outputType_) { // now append suffix case kText: fileName += ".txt"; break; case kPython: fileName += ".py"; break; case kTwiki: fileName += ".twiki"; break; } if (fileName.size()) { output_.reset(new std::ofstream(fileName.c_str())); if (!output_->good()) { edm::LogError("IOproblem") << "Could not open output file " << fileName << "."; output_.reset(); } } }
AlCaRecoTriggerBitsRcdRead::~AlCaRecoTriggerBitsRcdRead | ( | ) | [inline] |
Definition at line 43 of file AlCaRecoTriggerBitsRcdRead.cc.
{}
virtual void AlCaRecoTriggerBitsRcdRead::analyze | ( | const edm::Event & | evt, |
const edm::EventSetup & | evtSetup | ||
) | [inline, virtual] |
void AlCaRecoTriggerBitsRcdRead::beginRun | ( | const edm::Run & | run, |
const edm::EventSetup & | evtSetup | ||
) | [virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 112 of file AlCaRecoTriggerBitsRcdRead.cc.
References edm::ESWatcher< T >::check(), firstRun_, edm::EventSetup::get(), lastRun_, lastTriggerBits_, printMap(), edm::RunBase::run(), and watcher_.
{ if (watcher_.check(iSetup)) { // new IOV for this run // Print last IOV - if there has already been one: if (lastRun_ != 0) this->printMap(firstRun_, lastRun_, lastTriggerBits_); // Get AlCaRecoTriggerBits from EventSetup: edm::ESHandle<AlCaRecoTriggerBits> triggerBits; iSetup.get<AlCaRecoTriggerBitsRcd>().get(triggerBits); lastTriggerBits_ = *triggerBits; // copy for later use firstRun_ = run.run(); // keep track where it started } lastRun_ = run.run(); // keep track of last visited run }
void AlCaRecoTriggerBitsRcdRead::endJob | ( | void | ) | [virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 129 of file AlCaRecoTriggerBitsRcdRead.cc.
References firstRun_, lastRun_, lastTriggerBits_, and printMap().
{ // Print for very last IOV, not treated yet in beginRun(..): this->printMap(firstRun_, lastRun_, lastTriggerBits_); }
void AlCaRecoTriggerBitsRcdRead::printMap | ( | edm::RunNumber_t | firstRun, |
edm::RunNumber_t | lastRun, | ||
const AlCaRecoTriggerBits & | triggerMap | ||
) | const [private] |
Definition at line 136 of file AlCaRecoTriggerBitsRcdRead.cc.
References AlCaRecoTriggerBits::decompose(), i, kPython, kText, kTwiki, AlCaRecoTriggerBits::m_alcarecoToTrig, convertSQLitetoXML_cfg::output, output_, outputType_, and EgammaValidation_cff::paths.
Referenced by beginRun(), and endJob().
{ // Get map of strings to concatenated list of names of HLT paths: typedef std::map<std::string, std::string> TriggerMap; const TriggerMap &triggerMap = triggerBits.m_alcarecoToTrig; // Collect output for given run numbers via ostringstream. // Format depends on outputType_ configuration. std::ostringstream output; switch (outputType_) { case kPython: output << " triggerLists = cms.VPSet(\n"; // no 'break;'! case kText: output << "#\n# AlCaRecoTriggerBits settings for IOV " << firstRun << "-" << lastRun << ":\n#\n"; break; case kTwiki: output << "---+++++ *IOV*: " << firstRun << "-" << lastRun << "\n" << "| *TriggerBits list key* | *HLT paths* |\n"; break; } // if (outputType_ == kPython) output << " triggerLists = cms.VPSet(\n"; // loop over entries in map for (TriggerMap::const_iterator i = triggerMap.begin(); i != triggerMap.end(); ++i) { if (outputType_ == kPython && i != triggerMap.begin()) output << ",\n"; switch (outputType_) { case kPython: output << " cms.PSet(listName = cms.string('" << i->first << "'),\n" << " hltPaths = cms.vstring("; break; case kText: output << "trigger list key: '" << i->first << "'\npaths:\n"; break; case kTwiki: output << "| '" << i->first << "' | "; } // We must avoid a map<string,vector<string> > in DB for performance reason, // so the paths are mapped into one string separated by ';': const std::vector<std::string> paths = triggerBits.decompose(i->second); for (unsigned int iPath = 0; iPath < paths.size(); ++iPath) { if (iPath != 0) { output << ", "; // next path switch (outputType_) { case kPython: // only 2 per line case kText: // only 4 per line if (0 == (iPath % (outputType_ == kPython ? 2 : 4))) { output << "\n"; if (outputType_ == kPython) output << " "; } break; case kTwiki: // Twiki will handle that break; } } output << "'" << paths[iPath] << "'"; } switch (outputType_) { case kPython: output << ")\n )"; break; case kText: output << "\n#\n"; break; case kTwiki: output << " |\n"; } } if (outputType_ == kPython) output << "\n ) # closing of VPSet triggerLists\n"; // Final output - either message logger or output file: if (output_.get()) *output_ << output.str(); else edm::LogInfo("") << output.str(); }
AlCaRecoTriggerBitsRcdRead::OutputType AlCaRecoTriggerBitsRcdRead::stringToEnum | ( | const std::string & | outputType | ) | const [private] |
Definition at line 97 of file AlCaRecoTriggerBitsRcdRead.cc.
References Exception, kPython, kText, and kTwiki.
{ if (outputTypeStr == "text") return kText; if (outputTypeStr == "twiki") return kTwiki; if (outputTypeStr == "python") return kPython; // if (outputTypeStr == "html") return kHtml; throw cms::Exception("BadConfig") << "AlCaRecoTriggerBitsRcdRead: " << "outputType '" << outputTypeStr << "' not known," << " use 'text', 'twiki' or 'python'\n"; return kTwiki; // never reached, to please compiler }
Definition at line 62 of file AlCaRecoTriggerBitsRcdRead.cc.
Referenced by beginRun(), and endJob().
Definition at line 63 of file AlCaRecoTriggerBitsRcdRead.cc.
Referenced by beginRun(), and endJob().
Definition at line 64 of file AlCaRecoTriggerBitsRcdRead.cc.
Referenced by beginRun(), and endJob().
std::auto_ptr<std::ofstream> AlCaRecoTriggerBitsRcdRead::output_ [private] |
Definition at line 65 of file AlCaRecoTriggerBitsRcdRead.cc.
Referenced by AlCaRecoTriggerBitsRcdRead(), and printMap().
const OutputType AlCaRecoTriggerBitsRcdRead::outputType_ [private] |
Definition at line 60 of file AlCaRecoTriggerBitsRcdRead.cc.
Referenced by AlCaRecoTriggerBitsRcdRead(), and printMap().
Definition at line 61 of file AlCaRecoTriggerBitsRcdRead.cc.
Referenced by beginRun().