File indexing completed on 2024-04-06 12:14:26
0001 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0002 #include "FWCore/Framework/interface/Event.h"
0003 #include "FWCore/ServiceRegistry/interface/Service.h"
0004 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006 #include "FWCore/Framework/interface/Event.h"
0007 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
0008 #include "FWCore/Framework/interface/EventSetup.h"
0009 #include "FWCore/Framework/interface/ESTransientHandle.h"
0010 #include "CondFormats/RecoGeometryObjects/interface/RecoIdealGeometry.h"
0011 #include "Geometry/DTGeometryBuilderinterface/DTGeometryParsFromDD.h"
0012 #include "Geometry/Records/interface/RecoIdealGeometryRcd.h"
0013 #include "Geometry/Records/interface/MuonGeometryRecord.h"
0014 #include "DetectorDescription/Core/interface/DDCompactView.h"
0015 #include "Geometry/Records/interface/MuonNumberingRecord.h"
0016 #include "Geometry/MuonNumbering/interface/MuonDDDConstants.h"
0017
0018 #include <iostream>
0019 #include <string>
0020 #include <vector>
0021 #include <map>
0022 #include <sstream>
0023 #include <algorithm>
0024
0025 class DTRecoIdealDBLoader : public edm::one::EDAnalyzer<> {
0026 public:
0027 explicit DTRecoIdealDBLoader(const edm::ParameterSet& iConfig);
0028 ~DTRecoIdealDBLoader();
0029
0030 void beginJob() override;
0031 void analyze(edm::Event const& iEvent, edm::EventSetup const&) override;
0032 void endJob() override;
0033
0034 private:
0035 const std::string label_;
0036 const edm::ESGetToken<DTGeometry, MuonGeometryRecord> tokDT_;
0037 const edm::ESGetToken<DDCompactView, IdealGeometryRecord> tokDDD_;
0038 int rotNumSeed_;
0039 };
0040
0041 using namespace std;
0042
0043 DTRecoIdealDBLoader::DTRecoIdealDBLoader(const edm::ParameterSet& iConfig)
0044 : label_(),
0045 tokDT_{esConsumes<DTGeometry, MuonGeometryRecord>(edm::ESInputTag{})},
0046 tokDDD_{esConsumes<DDCompactView, IdealGeometryRecord>(edm::ESInputTag{"", label_})} {
0047 edm::LogVerbatim("DTGeometry") << "DTRecoIdealDBLoader::DTRecoIdealDBLoader";
0048 }
0049
0050 DTRecoIdealDBLoader::~DTRecoIdealDBLoader() {
0051 edm::LogVerbatim("DTGeometry") << "DTRecoIdealDBLoader::~DTRecoIdealDBLoader";
0052 }
0053
0054 void DTRecoIdealDBLoader::analyze(const edm::Event& evt, const edm::EventSetup& es) {
0055 edm::LogVerbatim("DTGeometry") << "DTRecoIdealDBLoader::beginJob";
0056 RecoIdealGeometry rig;
0057
0058 edm::Service<cond::service::PoolDBOutputService> mydbservice;
0059 if (!mydbservice.isAvailable()) {
0060 edm::LogVerbatim("DTGeometry") << "PoolDBOutputService unavailable";
0061 return;
0062 }
0063
0064 const DDCompactView& cpv = es.getData(tokDDD_);
0065 const auto& pMNDC = &es.getData(tokDT_);
0066 DTGeometryParsFromDD dtgp;
0067
0068 dtgp.build(&cpv, *pMNDC, rig);
0069 edm::LogVerbatim("DTGeometry") << "RecoIdealGeometry " << rig.size();
0070
0071 if (mydbservice->isNewTagRequest("RecoIdealGeometryRcd")) {
0072 edm::LogVerbatim("DTGeometry") << "mydbservice " << mydbservice->beginOfTime() << " to "
0073 << mydbservice->endOfTime();
0074 mydbservice->createOneIOV(rig, mydbservice->beginOfTime(), "RecoIdealGeometryRcd");
0075 } else {
0076 edm::LogVerbatim("DTGeometry") << "RecoIdealGeometryRcd Tag is already present.";
0077 }
0078 }
0079
0080 #include "FWCore/Framework/interface/MakerMacros.h"
0081 DEFINE_FWK_MODULE(DTRecoIdealDBLoader);