Back to home page

Project CMSSW displayed by LXR

 
 

    


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