Back to home page

Project CMSSW displayed by LXR

 
 

    


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);