File indexing completed on 2024-05-22 04:03:04
0001 #include "FWCore/Framework/interface/ESProducer.h"
0002 #include "FWCore/Framework/interface/ModuleFactory.h"
0003 #include "FWCore/Framework/interface/ESHandle.h"
0004 #include "FWCore/Framework/interface/ESTransientHandle.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0008 #include "Geometry/Records/interface/IdealGeometryRecord.h"
0009 #include "Geometry/Records/interface/PTrackerAdditionalParametersPerDetRcd.h"
0010 #include "Geometry/TrackerNumberingBuilder/interface/GeometricDet.h"
0011 #include "CondFormats/GeometryObjects/interface/PTrackerAdditionalParametersPerDet.h"
0012
0013 #include <memory>
0014
0015 namespace edm {
0016 class ConfigurationDescriptions;
0017 }
0018 class PTrackerAdditionalParametersPerDet;
0019 class PTrackerAdditionalParametersPerDetRcd;
0020
0021 class TrackerAdditionalParametersPerDetESModule : public edm::ESProducer {
0022 public:
0023 TrackerAdditionalParametersPerDetESModule(const edm::ParameterSet&);
0024
0025 using ReturnType = std::unique_ptr<PTrackerAdditionalParametersPerDet>;
0026
0027 static void fillDescriptions(edm::ConfigurationDescriptions&);
0028
0029 ReturnType produce(const PTrackerAdditionalParametersPerDetRcd&);
0030
0031 private:
0032 edm::ESGetToken<GeometricDet, IdealGeometryRecord> geometricDetToken_;
0033 };
0034
0035 TrackerAdditionalParametersPerDetESModule::TrackerAdditionalParametersPerDetESModule(const edm::ParameterSet& ps) {
0036 auto cc = setWhatProduced(this);
0037 geometricDetToken_ = cc.consumesFrom<GeometricDet, IdealGeometryRecord>(edm::ESInputTag());
0038 }
0039
0040 void TrackerAdditionalParametersPerDetESModule::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0041 edm::ParameterSetDescription desc;
0042 descriptions.add("TrackerAdditionalParametersPerDet", desc);
0043 }
0044
0045 TrackerAdditionalParametersPerDetESModule::ReturnType TrackerAdditionalParametersPerDetESModule::produce(
0046 const PTrackerAdditionalParametersPerDetRcd& iRecord) {
0047 edm::LogInfo("TrackerAdditionalParametersPerDet")
0048 << "TrackerAdditionalParametersPerDetESModule::produce(const PTrackerAdditionalParametersPerDetRcd& iRecord)";
0049
0050 auto ptitp = std::make_unique<PTrackerAdditionalParametersPerDet>();
0051
0052 edm::ESTransientHandle<GeometricDet> gd = iRecord.getTransientHandle(geometricDetToken_);
0053
0054 std::vector<const GeometricDet*> comp;
0055 gd->deepComponents(comp);
0056
0057 for (auto& i : comp) {
0058 ptitp->setGeographicalId(i->geographicalId());
0059 ptitp->setBigPixelsX(i->bigPixelsx());
0060 ptitp->setBigPixelsY(i->bigPixelsy());
0061 ptitp->setBigPixelsPitchX(i->bigPixelsPitchx());
0062 ptitp->setBigPixelsPitchY(i->bigPixelsPitchy());
0063 }
0064
0065 return ptitp;
0066 }
0067
0068 DEFINE_FWK_EVENTSETUP_MODULE(TrackerAdditionalParametersPerDetESModule);