File indexing completed on 2024-12-12 23:19:25
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "FWCore/Framework/interface/ESProducer.h"
0010 #include "FWCore/Framework/interface/ModuleFactory.h"
0011 #include "FWCore/Framework/interface/EventSetup.h"
0012 #include "FWCore/Framework/interface/ESHandle.h"
0013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0014
0015 #include "RecoMTD/Records/interface/MTDRecoGeometryRecord.h"
0016 #include "Geometry/Records/interface/MTDDigiGeometryRecord.h"
0017 #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h"
0018 #include "Geometry/Records/interface/MTDTopologyRcd.h"
0019 #include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h"
0020
0021 #include "RecoMTD/DetLayers/interface/ETLDetLayerGeometryBuilder.h"
0022 #include "RecoMTD/DetLayers/interface/BTLDetLayerGeometryBuilder.h"
0023 #include "RecoMTD/DetLayers/interface/MTDDetLayerGeometry.h"
0024
0025 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0026
0027 #include <memory>
0028 #include <iostream>
0029
0030 class MTDDetLayerGeometryESProducer : public edm::ESProducer {
0031 public:
0032
0033 MTDDetLayerGeometryESProducer(const edm::ParameterSet& p);
0034
0035
0036 std::unique_ptr<MTDDetLayerGeometry> produce(const MTDRecoGeometryRecord& record);
0037
0038 static void fillDescriptions(edm::ConfigurationDescriptions&);
0039
0040 private:
0041 edm::ESGetToken<MTDGeometry, MTDDigiGeometryRecord> geomToken_;
0042 edm::ESGetToken<MTDTopology, MTDTopologyRcd> mtdtopoToken_;
0043 };
0044
0045 using namespace edm;
0046
0047 MTDDetLayerGeometryESProducer::MTDDetLayerGeometryESProducer(const edm::ParameterSet& p) {
0048 auto cc = setWhatProduced(this);
0049 geomToken_ = cc.consumes();
0050 mtdtopoToken_ = cc.consumes();
0051 }
0052
0053 std::unique_ptr<MTDDetLayerGeometry> MTDDetLayerGeometryESProducer::produce(const MTDRecoGeometryRecord& record) {
0054 auto mtdDetLayerGeometry = std::make_unique<MTDDetLayerGeometry>();
0055 auto mtd = record.getHandle(geomToken_);
0056 auto mtdtopo = record.getHandle(mtdtopoToken_);
0057
0058
0059
0060 mtdDetLayerGeometry->buildLayers(&(*mtd), &(*mtdtopo));
0061
0062
0063 mtdDetLayerGeometry->sortLayers();
0064
0065 return mtdDetLayerGeometry;
0066 }
0067
0068 void MTDDetLayerGeometryESProducer::fillDescriptions(edm::ConfigurationDescriptions& desc) {
0069 edm::ParameterSetDescription ps;
0070 desc.addDefault(ps);
0071 }
0072
0073 DEFINE_FWK_EVENTSETUP_MODULE(MTDDetLayerGeometryESProducer);