File indexing completed on 2024-04-06 12:14:41
0001
0002 #include "FWCore/Framework/interface/Frameworkfwd.h"
0003 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0004 #include "FWCore/Framework/interface/Event.h"
0005 #include "FWCore/Framework/interface/EventSetup.h"
0006 #include "FWCore/Framework/interface/MakerMacros.h"
0007 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0009 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0010
0011 #include "Geometry/GEMGeometry/interface/ME0Geometry.h"
0012 #include "Geometry/GEMGeometry/interface/ME0Chamber.h"
0013 #include "Geometry/CommonTopologies/interface/StripTopology.h"
0014 #include "Geometry/Records/interface/MuonGeometryRecord.h"
0015
0016
0017 #include <vector>
0018 #include <sstream>
0019 #include <fstream>
0020 #include <string>
0021 #include <iomanip>
0022
0023 class ME0GeometryDump : public edm::one::EDAnalyzer<> {
0024 public:
0025 explicit ME0GeometryDump(const edm::ParameterSet&);
0026 static void fillDescriptions(edm::ConfigurationDescriptions&);
0027
0028 private:
0029 void analyze(const edm::Event&, const edm::EventSetup&) override;
0030
0031 const bool verbose_;
0032 const edm::ESGetToken<ME0Geometry, MuonGeometryRecord> tokGeom_;
0033 const ME0Geometry* me0Geometry_;
0034 };
0035
0036 ME0GeometryDump::ME0GeometryDump(const edm::ParameterSet& iC)
0037 : verbose_(iC.getParameter<bool>("verbose")),
0038 tokGeom_{esConsumes<ME0Geometry, MuonGeometryRecord>(edm::ESInputTag{})} {}
0039
0040 void ME0GeometryDump::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0041 edm::ParameterSetDescription desc;
0042 desc.add<bool>("verbose", false);
0043 descriptions.add("me0GeometryDump", desc);
0044 }
0045
0046 void ME0GeometryDump::analyze(const edm::Event& event, const edm::EventSetup& eventSetup) {
0047 me0Geometry_ = &eventSetup.getData(tokGeom_);
0048
0049 auto const& chambers = me0Geometry_->chambers();
0050 edm::LogVerbatim("ME0Geometry") << "ME0Geometry found with " << chambers.size() << " chambers\n";
0051 for (unsigned int k1 = 0; k1 < chambers.size(); ++k1) {
0052 edm::LogVerbatim("ME0Geometry") << "\nChamber " << k1 << ":" << chambers[k1]->id() << " with "
0053 << chambers[k1]->nLayers() << " layers";
0054 auto const& layers = chambers[k1]->layers();
0055
0056 for (unsigned int k2 = 0; k2 < layers.size(); ++k2) {
0057 edm::LogVerbatim("ME0Geometry") << "\nLayer " << k2 << ":" << layers[k2]->id() << " with "
0058 << layers[k2]->nEtaPartitions() << " etaPartitions";
0059 auto const& etaPartitions = layers[k2]->etaPartitions();
0060
0061 for (unsigned int k3 = 0; k3 < etaPartitions.size(); ++k3) {
0062 edm::LogVerbatim("ME0Geometry") << "\nEtaPartition " << k3 << ":" << etaPartitions[k3]->id()
0063 << etaPartitions[k3]->type().name() << " with " << etaPartitions[k3]->nstrips()
0064 << " strips of pitch " << std::setprecision(4) << etaPartitions[k3]->pitch()
0065 << " and " << etaPartitions[k3]->npads() << " pads of pitch "
0066 << std::setprecision(4) << etaPartitions[k3]->padPitch();
0067 if (verbose_) {
0068 for (int k = 0; k < etaPartitions[k3]->nstrips(); ++k)
0069 edm::LogVerbatim("ME0Geometry")
0070 << "Strip[" << k << "] " << std::setprecision(4) << etaPartitions[k3]->centreOfStrip(k);
0071 for (int k = 0; k < etaPartitions[k3]->npads(); ++k)
0072 edm::LogVerbatim("ME0Geometry")
0073 << "Pad[" << k << "] " << std::setprecision(4) << etaPartitions[k3]->centreOfPad(k);
0074 }
0075 }
0076 }
0077 }
0078 }
0079
0080 DEFINE_FWK_MODULE(ME0GeometryDump);