Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-05-22 04:02:48

0001 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0002 #include "FWCore/Framework/interface/ESTransientHandle.h"
0003 #include "FWCore/Framework/interface/MakerMacros.h"
0004 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0005 #include "FWCore/ServiceRegistry/interface/Service.h"
0006 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
0007 #include "CondFormats/GeometryObjects/interface/PTrackerAdditionalParametersPerDet.h"
0008 #include "Geometry/Records/interface/IdealGeometryRecord.h"
0009 #include "Geometry/TrackerNumberingBuilder/interface/GeometricDet.h"
0010 
0011 class PTrackerAdditionalParametersPerDetDBBuilder : public edm::one::EDAnalyzer<edm::one::WatchRuns> {
0012 public:
0013   PTrackerAdditionalParametersPerDetDBBuilder(const edm::ParameterSet&);
0014 
0015   void beginRun(edm::Run const& iEvent, edm::EventSetup const&) override;
0016   void analyze(edm::Event const& iEvent, edm::EventSetup const&) override {}
0017   void endRun(edm::Run const& iEvent, edm::EventSetup const&) override {}
0018 
0019 private:
0020   const edm::ESGetToken<GeometricDet, IdealGeometryRecord> geomDetToken_;
0021 };
0022 
0023 PTrackerAdditionalParametersPerDetDBBuilder::PTrackerAdditionalParametersPerDetDBBuilder(
0024     const edm::ParameterSet& iConfig)
0025     : geomDetToken_(esConsumes<edm::Transition::BeginRun>()) {}
0026 
0027 void PTrackerAdditionalParametersPerDetDBBuilder::beginRun(const edm::Run&, edm::EventSetup const& es) {
0028   PTrackerAdditionalParametersPerDet ptitp;
0029   edm::Service<cond::service::PoolDBOutputService> mydbservice;
0030   if (!mydbservice.isAvailable()) {
0031     edm::LogError("PTrackerAdditionalParametersPerDetDBBuilder") << "PoolDBOutputService unavailable";
0032     return;
0033   }
0034 
0035   const GeometricDet* gd = &es.getData(geomDetToken_);
0036 
0037   std::vector<const GeometricDet*> comp;
0038   gd->deepComponents(comp);
0039 
0040   for (auto& i : comp) {
0041     ptitp.setGeographicalId(i->geographicalId());
0042     ptitp.setBigPixelsX(i->bigPixelsx());
0043     ptitp.setBigPixelsY(i->bigPixelsy());
0044     ptitp.setBigPixelsPitchX(i->bigPixelsPitchx());
0045     ptitp.setBigPixelsPitchY(i->bigPixelsPitchy());
0046   }
0047 
0048   if (mydbservice->isNewTagRequest("PTrackerAdditionalParametersPerDetRcd")) {
0049     mydbservice->createOneIOV(ptitp, mydbservice->beginOfTime(), "PTrackerAdditionalParametersPerDetRcd");
0050   } else {
0051     edm::LogError("PTrackerAdditionalParametersPerDetDBBuilder")
0052         << "PTrackerAdditionalParametersPerDet and PTrackerAdditionalParametersPerDetRcd Tag already present";
0053   }
0054 }
0055 
0056 DEFINE_FWK_MODULE(PTrackerAdditionalParametersPerDetDBBuilder);