Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:12:34

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   };  // class PathAnalyzer
0027 
0028   //--------------------------------------------------------------------
0029   //
0030   // Implementation details
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 }  // namespace edmtest
0070 
0071 using edmtest::PathAnalyzer;
0072 DEFINE_FWK_MODULE(PathAnalyzer);