File indexing completed on 2023-03-17 11:02:53
0001 #include <algorithm>
0002 #include <iterator>
0003 #include <sstream>
0004
0005 #include "FWCore/Framework/interface/global/EDAnalyzer.h"
0006 #include "FWCore/Framework/interface/MakerMacros.h"
0007 #include "FWCore/Framework/interface/TriggerNamesService.h"
0008 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0009 #include "FWCore/ServiceRegistry/interface/Service.h"
0010 #include "FWCore/Utilities/interface/Algorithms.h"
0011 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0012 #include "FWCore/ParameterSet/interface/Registry.h"
0013
0014 namespace edmtest {
0015 class PathAnalyzer : public edm::global::EDAnalyzer<> {
0016 public:
0017 explicit PathAnalyzer(edm::ParameterSet const&);
0018 ~PathAnalyzer() override;
0019
0020 void analyze(edm::StreamID, edm::Event const&, edm::EventSetup const&) const override;
0021 void beginJob() override;
0022 void endJob() override;
0023
0024 private:
0025 void dumpTriggerNamesServiceInfo(char const* where) const;
0026 };
0027
0028
0029
0030
0031
0032 PathAnalyzer::PathAnalyzer(edm::ParameterSet const&) {}
0033
0034 PathAnalyzer::~PathAnalyzer() {}
0035
0036 void PathAnalyzer::analyze(edm::StreamID, edm::Event const&, edm::EventSetup const&) const {
0037 dumpTriggerNamesServiceInfo("analyze");
0038 }
0039
0040 void PathAnalyzer::beginJob() { dumpTriggerNamesServiceInfo("beginJob"); }
0041
0042 void PathAnalyzer::endJob() { dumpTriggerNamesServiceInfo("endJob"); }
0043
0044 void PathAnalyzer::dumpTriggerNamesServiceInfo(char const* where) const {
0045 edm::LogInfo("PathAnalyzer").log([&](auto& message) {
0046 edm::Service<edm::service::TriggerNamesService> tns;
0047 message << "TNS size: " << tns->size() << "\n";
0048
0049 auto const& trigpaths = tns->getTrigPaths();
0050 message << "dumpTriggernamesServiceInfo called from PathAnalyzer::" << where << '\n';
0051 message << "trigger paths are:";
0052 for (auto const& p : trigpaths) {
0053 message << " " << p;
0054 }
0055 message << '\n';
0056
0057 for (auto const& p : trigpaths) {
0058 message << "path name: " << p << " contains:";
0059 for (auto const& m : tns->getTrigPathModules(p)) {
0060 message << " " << m;
0061 }
0062 message << '\n';
0063 }
0064
0065 message << "trigger ParameterSet:\n" << tns->getTriggerPSet() << '\n';
0066 });
0067 }
0068
0069 }
0070
0071 using edmtest::PathAnalyzer;
0072 DEFINE_FWK_MODULE(PathAnalyzer);