CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes
HLTriggerJSONMonitoring Class Reference
Inheritance diagram for HLTriggerJSONMonitoring:
edm::global::EDAnalyzer<  edm::StreamCache< HLTriggerJSONMonitoringData::stream >, edm::RunCache< HLTriggerJSONMonitoringData::run >, edm::LuminosityBlockSummaryCache< HLTriggerJSONMonitoringData::lumisection > > edm::global::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

void analyze (edm::StreamID, edm::Event const &, edm::EventSetup const &) const override
 
std::unique_ptr< HLTriggerJSONMonitoringData::streambeginStream (edm::StreamID) const override
 
std::shared_ptr< HLTriggerJSONMonitoringData::lumisectionglobalBeginLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &) const override
 
std::shared_ptr< HLTriggerJSONMonitoringData::runglobalBeginRun (edm::Run const &, edm::EventSetup const &) const override
 
void globalEndLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, HLTriggerJSONMonitoringData::lumisection *) const override
 
void globalEndRun (edm::Run const &, edm::EventSetup const &) const override
 
 HLTriggerJSONMonitoring (const edm::ParameterSet &)
 
void streamBeginLuminosityBlock (edm::StreamID, edm::LuminosityBlock const &, edm::EventSetup const &) const override
 
void streamEndLuminosityBlockSummary (edm::StreamID, edm::LuminosityBlock const &, edm::EventSetup const &, HLTriggerJSONMonitoringData::lumisection *) const override
 
 ~HLTriggerJSONMonitoring () override=default
 
- Public Member Functions inherited from edm::global::EDAnalyzer< edm::StreamCache< HLTriggerJSONMonitoringData::stream >, edm::RunCache< HLTriggerJSONMonitoringData::run >, edm::LuminosityBlockSummaryCache< HLTriggerJSONMonitoringData::lumisection > >
 EDAnalyzer ()=default
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::global::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Static Private Member Functions

static void writeIniFile (HLTriggerJSONMonitoringData::run const &, unsigned int)
 
static void writeJsdFile (HLTriggerJSONMonitoringData::run const &)
 

Private Attributes

const edm::InputTag triggerResults_
 
const edm::EDGetTokenT< edm::TriggerResultstriggerResultsToken_
 

Static Private Attributes

static const char * streamName_ = "streamHLTRates"
 

Additional Inherited Members

- Public Types inherited from edm::global::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: This class outputs JSON files with HLT monitoring information.

Definition at line 75 of file HLTriggerJSONMonitoring.cc.

Constructor & Destructor Documentation

HLTriggerJSONMonitoring::HLTriggerJSONMonitoring ( const edm::ParameterSet )
explicit

Definition at line 138 of file HLTriggerJSONMonitoring.cc.

138  :
139  triggerResults_(config.getParameter<edm::InputTag>("triggerResults")),
140  triggerResultsToken_(consumes<edm::TriggerResults>(triggerResults_))
141 {
142 }
Definition: config.py:1
const edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken_
const edm::InputTag triggerResults_
HLTriggerJSONMonitoring::~HLTriggerJSONMonitoring ( )
overridedefault

Member Function Documentation

void HLTriggerJSONMonitoring::analyze ( edm::StreamID  sid,
edm::Event const &  event,
edm::EventSetup const &   
) const
overridevirtual

Implements edm::global::EDAnalyzerBase.

Definition at line 239 of file HLTriggerJSONMonitoring.cc.

References edm::HLTGlobalStatus::accept(), edm::HLTGlobalStatus::at(), edm::InputTag::encode(), edm::Event::getByToken(), edm::Event::getRun(), cmsBatch::handle, mps_fire::i, edm::Run::index(), createfilelist::int, edm::HandleBase::isValid(), or, callgraph::path, mps_update::results, lumiPlot::rundata, edm::HLTGlobalStatus::size(), mps_update::status, triggerResults_, and triggerResultsToken_.

240 {
241  auto & stream = * streamCache(sid);
242  auto const& rundata = * runCache(event.getRun().index());
243 
244  ++stream.processed;
245 
246  // check that the HLTConfigProvider for the current run has been successfully initialised
247  if (not rundata.hltConfig.inited())
248  return;
249 
250  // get hold of TriggerResults
252  if (not event.getByToken(triggerResultsToken_, handle) or not handle.isValid()){
253  edm::LogError("HLTriggerJSONMonitoring") << "TriggerResults with label [" + triggerResults_.encode() + "] not present or invalid";
254  return;
255  }
257  assert(results.size() == stream.hltWasRun.size());
258 
259  // check the results for each HLT path
260  for (unsigned int i = 0; i < results.size(); ++i) {
261  auto const& status = results.at(i);
262  if (status.wasrun()) {
263  ++stream.hltWasRun[i];
264  if (status.accept()) {
265  ++stream.hltL1s[i];
266  ++stream.hltPre[i];
267  ++stream.hltAccept[i];
268  } else {
269  int index = (int) status.index();
270  if (index > rundata.posL1s[i]) ++stream.hltL1s[i];
271  if (index > rundata.posPre[i]) ++stream.hltPre[i];
272  if (status.error())
273  ++stream.hltErrors[i];
274  else
275  ++stream.hltReject[i];
276  }
277  }
278  }
279 
280  // check the decision for each dataset
281  // FIXME this ignores the prescales, "smart" prescales, and event selection applied in the OutputModule itself
282  for (unsigned int i = 0; i < rundata.datasets.size(); ++i)
283  if (std::any_of(rundata.datasets[i].begin(), rundata.datasets[i].end(), [&](unsigned int path) { return results.accept(path); }))
284  ++stream.datasets[i];
285 
286 }
bool accept() const
Has at least one path accepted the event?
std::string encode() const
Definition: InputTag.cc:166
const edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken_
unsigned int size() const
Get number of paths stored.
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
bool isValid() const
Definition: HandleBase.h:74
const HLTPathStatus & at(const unsigned int i) const
const edm::InputTag triggerResults_
Definition: event.py:1
std::unique_ptr< HLTriggerJSONMonitoringData::stream > HLTriggerJSONMonitoring::beginStream ( edm::StreamID  ) const
override

Definition at line 155 of file HLTriggerJSONMonitoring.cc.

156 {
157  return std::make_unique<HLTriggerJSONMonitoringData::stream>();
158 }
void HLTriggerJSONMonitoring::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 146 of file HLTriggerJSONMonitoring.cc.

References edm::ConfigurationDescriptions::add(), and edm::ParameterSetDescription::add().

147 {
149  desc.add<edm::InputTag>("triggerResults", edm::InputTag("TriggerResults", "", "HLT"));
150  descriptions.add("HLTriggerJSONMonitoring", desc);
151 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::shared_ptr< HLTriggerJSONMonitoringData::lumisection > HLTriggerJSONMonitoring::globalBeginLuminosityBlockSummary ( edm::LuminosityBlock const &  lumi,
edm::EventSetup const &   
) const
override

Definition at line 291 of file HLTriggerJSONMonitoring.cc.

References edmIntegrityCheck::datasets, edm::LuminosityBlock::getRun(), mps_fire::i, edm::Run::index(), tablePrinter::lumidata, and lumiPlot::rundata.

292 {
293  unsigned int triggers = 0;
294  unsigned int datasets = 0;
295  auto const& rundata = * runCache(lumi.getRun().index());
296  if (rundata.hltConfig.inited()) {
297  triggers = rundata.hltConfig.triggerNames().size();
298  datasets = rundata.hltConfig.datasetNames().size();
299  };
300 
301  // the API of jsoncollector::HistoJ does not really match our use case,
302  // but it is the only vector-like object available in JsonMonitorable.h
303  auto lumidata = std::make_shared<HLTriggerJSONMonitoringData::lumisection>(HLTriggerJSONMonitoringData::lumisection{
304  jsoncollector::HistoJ<unsigned int>(1), // processed
305  jsoncollector::HistoJ<unsigned int>(triggers), // hltWasRun
306  jsoncollector::HistoJ<unsigned int>(triggers), // hltL1s
307  jsoncollector::HistoJ<unsigned int>(triggers), // hltPre
308  jsoncollector::HistoJ<unsigned int>(triggers), // hltAccept
309  jsoncollector::HistoJ<unsigned int>(triggers), // hltReject
310  jsoncollector::HistoJ<unsigned int>(triggers), // hltErrors
311  jsoncollector::HistoJ<unsigned int>(datasets) // datasets
312  });
313  // repeated calls to `update` necessary to set the internal element counter
314  lumidata->processed.update(0);
315  for (unsigned int i = 0; i < triggers; ++i) lumidata->hltWasRun.update(0);
316  for (unsigned int i = 0; i < triggers; ++i) lumidata->hltL1s.update(0);
317  for (unsigned int i = 0; i < triggers; ++i) lumidata->hltPre.update(0);
318  for (unsigned int i = 0; i < triggers; ++i) lumidata->hltAccept.update(0);
319  for (unsigned int i = 0; i < triggers; ++i) lumidata->hltReject.update(0);
320  for (unsigned int i = 0; i < triggers; ++i) lumidata->hltErrors.update(0);
321  for (unsigned int i = 0; i < datasets; ++i) lumidata->datasets.update(0);
322 
323  return lumidata;
324 }
std::shared_ptr< HLTriggerJSONMonitoringData::run > HLTriggerJSONMonitoring::globalBeginRun ( edm::Run const &  run,
edm::EventSetup const &  setup 
) const
override

Definition at line 162 of file HLTriggerJSONMonitoring.cc.

References makeLayoutFileForGui::datasetNames, edmIntegrityCheck::datasets, cmsPerfStripChart::format, mps_fire::i, edm::Service< T >::isAvailable(), diffTwoXMLs::label, evf::MergeTypeJSNDATA, AlCaHLTBitMon_ParallelJobs::p, edm::InputTag::process(), edm::RunBase::run(), lumiPlot::rundata, str, streamName_, AlCaHLTBitMon_QueryRunRegistry::string, triggerResults_, writeIniFile(), and writeJsdFile().

163 {
164  auto rundata = std::make_shared<HLTriggerJSONMonitoringData::run>();
165 
166  // set the DAQ parameters
168  rundata->streamDestination = edm::Service<evf::EvFDaqDirector>()->getStreamDestinations(streamName_);
169  rundata->streamMergeType = edm::Service<evf::EvFDaqDirector>()->getStreamMergeType(streamName_, evf::MergeTypeJSNDATA);
170  rundata->baseRunDir = edm::Service<evf::EvFDaqDirector>()->baseRunDir();
171  } else {
172  rundata->streamDestination = "";
173  rundata->streamMergeType = "";
174  rundata->baseRunDir = ".";
175  }
176 
177  // initialize HLTConfigProvider
178  bool changed = true;
179  if (not rundata->hltConfig.init(run, setup, triggerResults_.process(), changed)) {
180  edm::LogError("HLTriggerJSONMonitoring") << "HLTConfigProvider initialization failed!" << std::endl;
181  } else if (changed){
182  // update the trigger and dataset names
183  auto const & triggerNames = rundata->hltConfig.triggerNames();
184  auto const & datasetNames = rundata->hltConfig.datasetNames();
185  auto const & datasets = rundata->hltConfig.datasetContents();
186 
187  const unsigned int triggersSize = triggerNames.size();
188  const unsigned int datasetsSize = datasetNames.size();
189 
190  // extract the definition of the datasets
191  rundata->datasets.resize(datasetsSize);
192  for (unsigned int ds = 0; ds < datasetsSize; ++ds) {
193  auto & dataset = rundata->datasets[ds];
194  unsigned int paths = datasets[ds].size();
195  dataset.reserve(paths);
196  for (unsigned int p = 0; p < paths; p++) {
197  unsigned int index = rundata->hltConfig.triggerIndex(datasets[ds][p]);
198  if (index < triggersSize)
199  dataset.push_back(index);
200  }
201  }
202 
203  // find the positions of the L1 seed and prescale filters
204  rundata->posL1s.resize(triggersSize);
205  rundata->posPre.resize(triggersSize);
206  for (unsigned int i = 0; i < triggersSize; ++i) {
207  rundata->posL1s[i] = -1;
208  rundata->posPre[i] = -1;
209  std::vector<std::string> const& moduleLabels = rundata->hltConfig.moduleLabels(i);
210  for (unsigned int j = 0; j < moduleLabels.size(); ++j) {
211  std::string const& label = rundata->hltConfig.moduleType(moduleLabels[j]);
212  if (label == "HLTL1TSeed")
213  rundata->posL1s[i] = j;
214  else if (label == "HLTPrescaler")
215  rundata->posPre[i] = j;
216  }
217  }
218  }
219 
220  // write the per-run .jsd file
221  rundata->jsdFileName = (boost::format("run%06d_ls0000_streamHLTRates_pid%05d.jsd") % run.run() % getpid()).str();
223 
224  // write the per-run .ini file
225  // iniFileName = (boost::format("run%06d_ls0000_streamHLTRates_pid%05d.ini") % run.run() % getpid()).str();
226  writeIniFile(*rundata, run.run());
227 
228  return rundata;
229 }
static void writeIniFile(HLTriggerJSONMonitoringData::run const &, unsigned int)
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:1
bool isAvailable() const
Definition: Service.h:46
format
Some error handling for the usage.
static void writeJsdFile(HLTriggerJSONMonitoringData::run const &)
std::string const & process() const
Definition: InputTag.h:40
const edm::InputTag triggerResults_
#define str(s)
void HLTriggerJSONMonitoring::globalEndLuminosityBlockSummary ( edm::LuminosityBlock const &  lumi,
edm::EventSetup const &  ,
HLTriggerJSONMonitoringData::lumisection lumidata 
) const
override

Definition at line 379 of file HLTriggerJSONMonitoring.cc.

References cms::Adler32(), Json::Value::append(), jsoncollector::DataPoint::DATA, HLTriggerJSONMonitoringData::lumisection::datasets, jsoncollector::DataPoint::DEFINITION, cmsPerfStripChart::format, edm::LuminosityBlock::getRun(), HLTriggerJSONMonitoringData::lumisection::hltAccept, HLTriggerJSONMonitoringData::lumisection::hltErrors, HLTriggerJSONMonitoringData::lumisection::hltL1s, HLTriggerJSONMonitoringData::lumisection::hltPre, HLTriggerJSONMonitoringData::lumisection::hltReject, HLTriggerJSONMonitoringData::lumisection::hltWasRun, edm::Run::index(), eostools::ls(), edm::LuminosityBlockBase::luminosityBlock(), HLTriggerJSONMonitoringData::lumisection::processed, mps_fire::result, edm::LuminosityBlockBase::run(), findQualityFiles::run, lumiPlot::rundata, evf::FastMonitoringService::shouldWriteFiles(), jsoncollector::DataPoint::SOURCE, AlCaHLTBitMon_QueryRunRegistry::string, jsoncollector::HistoJ< T >::toJsonValue(), jsoncollector::HistoJ< T >::value(), and cscNeutronWriter_cfi::writer.

380 {
381  unsigned int ls = lumi.luminosityBlock();
382  unsigned int run = lumi.run();
383 
384  bool writeFiles = true;
385  if (edm::Service<evf::MicroStateService>().isAvailable()) {
387  if (fms)
388  writeFiles = fms->shouldWriteFiles(ls);
389  }
390  if (not writeFiles)
391  return;
392 
393  unsigned int processed = lumidata->processed.value().at(0);
394  auto const& rundata = * runCache(lumi.getRun().index());
396 
397  // [SIC]
398  char hostname[33];
399  gethostname(hostname, 32);
400  std::string sourceHost(hostname);
401 
402  // [SIC]
403  std::stringstream sOutDef;
404  sOutDef << rundata.baseRunDir << "/" << "output_" << getpid() << ".jsd";
405 
406  std::string jsndataFileList = "";
407  unsigned int jsndataSize = 0;
408  unsigned int jsndataAdler32 = 1; // adler32 checksum for an empty file
409 
410  if (processed) {
411  // write the .jsndata files which contain the actual rates
412  Json::Value jsndata;
413  jsndata[jsoncollector::DataPoint::SOURCE] = sourceHost;
414  jsndata[jsoncollector::DataPoint::DEFINITION] = rundata.jsdFileName;
423 
424  auto jsndataFileName = boost::format("run%06d_ls%04d_streamHLTRates_pid%05d.jsndata") % run % ls % getpid();
425 
426  std::string result = writer.write(jsndata);
427  std::ofstream jsndataFile(rundata.baseRunDir + "/" + jsndataFileName.str());
428  jsndataFile << result;
429  jsndataFile.close();
430 
431  jsndataFileList = jsndataFileName.str();
432  jsndataSize = result.size();
433  jsndataAdler32 = cms::Adler32(result.c_str(), result.size());
434  }
435 
436  // create a metadata json file for the "HLT rates" pseudo-stream
437  unsigned int jsnProcessed = processed;
438  unsigned int jsnAccepted = processed;
439  unsigned int jsnErrorEvents = 0;
440  unsigned int jsnRetCodeMask = 0;
441  std::string jsnInputFiles = "";
442  unsigned int jsnHLTErrorEvents = 0;
443 
444  Json::Value jsn;
445  jsn[jsoncollector::DataPoint::SOURCE] = sourceHost;
446  jsn[jsoncollector::DataPoint::DEFINITION] = sOutDef.str();
447  jsn[jsoncollector::DataPoint::DATA].append(jsnProcessed);
448  jsn[jsoncollector::DataPoint::DATA].append(jsnAccepted);
449  jsn[jsoncollector::DataPoint::DATA].append(jsnErrorEvents);
450  jsn[jsoncollector::DataPoint::DATA].append(jsnRetCodeMask);
451  jsn[jsoncollector::DataPoint::DATA].append(jsndataFileList);
452  jsn[jsoncollector::DataPoint::DATA].append(jsndataSize);
453  jsn[jsoncollector::DataPoint::DATA].append(jsnInputFiles);
454  jsn[jsoncollector::DataPoint::DATA].append(jsndataAdler32);
455  jsn[jsoncollector::DataPoint::DATA].append(rundata.streamDestination);
456  jsn[jsoncollector::DataPoint::DATA].append(rundata.streamMergeType);
457  jsn[jsoncollector::DataPoint::DATA].append(jsnHLTErrorEvents);
458 
459  auto jsnFileName = boost::format("run%06d_ls%04d_streamHLTRates_pid%05d.jsn") % run % ls % getpid();
460  std::ofstream jsnFile( rundata.baseRunDir + "/" + jsnFileName.str() );
461  jsnFile << writer.write(jsn);
462  jsnFile.close();
463 }
static const std::string SOURCE
Definition: DataPoint.h:121
bool shouldWriteFiles(unsigned int lumi, unsigned int *proc=0)
Value & append(const Value &value)
Append value to array at the end.
jsoncollector::HistoJ< unsigned int > hltReject
Represents a JSON value.
Definition: value.h:111
virtual Json::Value toJsonValue() const
jsoncollector::HistoJ< unsigned int > hltErrors
std::vector< T > & value()
static const std::string DATA
Definition: DataPoint.h:123
jsoncollector::HistoJ< unsigned int > hltPre
format
Some error handling for the usage.
void Adler32(char const *data, size_t len, uint32_t &a, uint32_t &b)
def ls(path, rec=False)
Definition: eostools.py:348
jsoncollector::HistoJ< unsigned int > hltWasRun
jsoncollector::HistoJ< unsigned int > hltL1s
jsoncollector::HistoJ< unsigned int > processed
Writes a Value in JSON format in a human friendly way.
Definition: writer.h:65
static const std::string DEFINITION
Definition: DataPoint.h:122
jsoncollector::HistoJ< unsigned int > datasets
jsoncollector::HistoJ< unsigned int > hltAccept
void HLTriggerJSONMonitoring::globalEndRun ( edm::Run const &  ,
edm::EventSetup const &   
) const
override

Definition at line 233 of file HLTriggerJSONMonitoring.cc.

234 {
235 }
void HLTriggerJSONMonitoring::streamBeginLuminosityBlock ( edm::StreamID  sid,
edm::LuminosityBlock const &  lumi,
edm::EventSetup const &   
) const
override

Definition at line 328 of file HLTriggerJSONMonitoring.cc.

References edmIntegrityCheck::datasets, edm::LuminosityBlock::getRun(), edm::Run::index(), and lumiPlot::rundata.

329 {
330  auto & stream = * streamCache(sid);
331 
332  unsigned int triggers = 0;
333  unsigned int datasets = 0;
334  auto const& rundata = * runCache(lumi.getRun().index());
335  if (rundata.hltConfig.inited()) {
336  triggers = rundata.hltConfig.triggerNames().size();
337  datasets = rundata.hltConfig.datasetNames().size();
338  };
339 
340  // reset the stream counters
341  stream.processed = 0;
342  stream.hltWasRun.assign(triggers, 0);
343  stream.hltL1s.assign(triggers, 0);
344  stream.hltPre.assign(triggers, 0);
345  stream.hltAccept.assign(triggers, 0);
346  stream.hltReject.assign(triggers, 0);
347  stream.hltErrors.assign(triggers, 0);
348  stream.datasets.assign(datasets, 0);
349 }
void HLTriggerJSONMonitoring::streamEndLuminosityBlockSummary ( edm::StreamID  sid,
edm::LuminosityBlock const &  lumi,
edm::EventSetup const &  ,
HLTriggerJSONMonitoringData::lumisection lumidata 
) const
override

Definition at line 353 of file HLTriggerJSONMonitoring.cc.

References edmIntegrityCheck::datasets, HLTriggerJSONMonitoringData::lumisection::datasets, edm::LuminosityBlock::getRun(), HLTriggerJSONMonitoringData::lumisection::hltAccept, HLTriggerJSONMonitoringData::lumisection::hltErrors, HLTriggerJSONMonitoringData::lumisection::hltL1s, HLTriggerJSONMonitoringData::lumisection::hltPre, HLTriggerJSONMonitoringData::lumisection::hltReject, HLTriggerJSONMonitoringData::lumisection::hltWasRun, mps_fire::i, edm::Run::index(), HLTriggerJSONMonitoringData::lumisection::processed, lumiPlot::rundata, and jsoncollector::HistoJ< T >::value().

354 {
355  auto const& stream = * streamCache(sid);
356  auto const& rundata = * runCache(lumi.getRun().index());
357  lumidata->processed.value()[0] += stream.processed;
358 
359  // check that the HLTConfigProvider for the current run has been successfully initialised
360  if (not rundata.hltConfig.inited())
361  return;
362 
363  unsigned int triggers = rundata.hltConfig.triggerNames().size();
364  for (unsigned int i = 0; i < triggers; ++i) {
365  lumidata->hltWasRun.value()[i] += stream.hltWasRun[i];
366  lumidata->hltL1s.value()[i] += stream.hltL1s[i];
367  lumidata->hltPre.value()[i] += stream.hltPre[i];
368  lumidata->hltAccept.value()[i] += stream.hltAccept[i];
369  lumidata->hltReject.value()[i] += stream.hltReject[i];
370  lumidata->hltErrors.value()[i] += stream.hltErrors[i];
371  }
372  unsigned int datasets = rundata.hltConfig.datasetNames().size();
373  for (unsigned int i = 0; i < datasets; ++i)
374  lumidata->datasets.value()[i] += stream.datasets[i];
375 }
jsoncollector::HistoJ< unsigned int > hltReject
jsoncollector::HistoJ< unsigned int > hltErrors
std::vector< T > & value()
jsoncollector::HistoJ< unsigned int > hltPre
jsoncollector::HistoJ< unsigned int > hltWasRun
jsoncollector::HistoJ< unsigned int > hltL1s
jsoncollector::HistoJ< unsigned int > processed
jsoncollector::HistoJ< unsigned int > datasets
jsoncollector::HistoJ< unsigned int > hltAccept
void HLTriggerJSONMonitoring::writeIniFile ( HLTriggerJSONMonitoringData::run const &  rundata,
unsigned int  run 
)
staticprivate

Definition at line 487 of file HLTriggerJSONMonitoring.cc.

References Json::Value::append(), Json::arrayValue, HLTriggerJSONMonitoringData::run::baseRunDir, ws_sso_content_reader::content, makeLayoutFileForGui::datasetNames, HLTConfigProvider::datasetNames(), DEFINE_FWK_MODULE, FrontierConditions_GlobalTag_cff::file, cmsPerfStripChart::format, HLTriggerJSONMonitoringData::run::hltConfig, dataset::name, str, AlCaHLTBitMon_QueryRunRegistry::string, HLTConfigProvider::triggerNames(), Json::StyledWriter::write(), and cscNeutronWriter_cfi::writer.

Referenced by globalBeginRun().

488 {
490 
491  Json::Value triggerNames(Json::arrayValue);
492  for (auto const& name: rundata.hltConfig.triggerNames())
493  triggerNames.append(name);
494  content["Path-Names"] = triggerNames;
495 
497  for (auto const& name : rundata.hltConfig.datasetNames())
498  datasetNames.append(name);
499  content["Dataset-Names"] = datasetNames;
500 
501  std::string iniFileName = (boost::format("run%06d_ls0000_streamHLTRates_pid%05d.ini") % run % getpid()).str();
502  std::ofstream file(rundata.baseRunDir + "/" + iniFileName);
504  file << writer.write(content);
505  file.close();
506 }
Represents a JSON value.
Definition: value.h:111
format
Some error handling for the usage.
std::string write(const Value &root) override
Serialize a Value in JSON format.
Writes a Value in JSON format in a human friendly way.
Definition: writer.h:65
#define str(s)
array value (ordered list)
Definition: value.h:31
void HLTriggerJSONMonitoring::writeJsdFile ( HLTriggerJSONMonitoringData::run const &  rundata)
staticprivate

Definition at line 467 of file HLTriggerJSONMonitoring.cc.

References HLTriggerJSONMonitoringData::run::baseRunDir, FrontierConditions_GlobalTag_cff::file, and HLTriggerJSONMonitoringData::run::jsdFileName.

Referenced by globalBeginRun().

468 {
469  std::ofstream file(rundata.baseRunDir + "/" + rundata.jsdFileName);
470  file << R"""({
471  "data" : [
472  { "name" : "Processed", "type" : "integer", "operation" : "histo"},
473  { "name" : "Path-WasRun", "type" : "integer", "operation" : "histo"},
474  { "name" : "Path-AfterL1Seed", "type" : "integer", "operation" : "histo"},
475  { "name" : "Path-AfterPrescale", "type" : "integer", "operation" : "histo"},
476  { "name" : "Path-Accepted", "type" : "integer", "operation" : "histo"},
477  { "name" : "Path-Rejected", "type" : "integer", "operation" : "histo"},
478  { "name" : "Path-Errors", "type" : "integer", "operation" : "histo"},
479  { "name" : "Dataset-Accepted", "type" : "integer", "operation" : "histo"}
480  ]
481 }
482 )""";
483  file.close();
484 }

Member Data Documentation

const char* HLTriggerJSONMonitoring::streamName_ = "streamHLTRates"
staticprivate

Definition at line 125 of file HLTriggerJSONMonitoring.cc.

Referenced by globalBeginRun().

const edm::InputTag HLTriggerJSONMonitoring::triggerResults_
private

Definition at line 131 of file HLTriggerJSONMonitoring.cc.

Referenced by analyze(), and globalBeginRun().

const edm::EDGetTokenT<edm::TriggerResults> HLTriggerJSONMonitoring::triggerResultsToken_
private

Definition at line 132 of file HLTriggerJSONMonitoring.cc.

Referenced by analyze().