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