File indexing completed on 2023-03-17 11:01:35
0001 #ifndef GEOMETRY_FWRECO_GEOMETRY_ES_PRODUCER_H
0002 #define GEOMETRY_FWRECO_GEOMETRY_ES_PRODUCER_H
0003
0004 #include <memory>
0005
0006 #include "FWCore/Framework/interface/ESProducer.h"
0007 #include "FWCore/Utilities/interface/ESGetToken.h"
0008 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0009
0010 namespace edm {
0011 class ParameterSet;
0012 }
0013
0014 class CaloGeometry;
0015 class CaloGeometryRecord;
0016 class GlobalTrackingGeometry;
0017 class GlobalTrackingGeometryRecord;
0018 class TrackerGeometry;
0019 class IdealGeometryRecord;
0020 class MTDGeometry;
0021 class MTDDigiGeometryRecord;
0022 class FWRecoGeometry;
0023 class FWRecoGeometryRecord;
0024 class GeomDet;
0025
0026 class FWRecoGeometryESProducer : public edm::ESProducer {
0027 public:
0028 FWRecoGeometryESProducer(const edm::ParameterSet&);
0029 ~FWRecoGeometryESProducer(void) override;
0030
0031 std::unique_ptr<FWRecoGeometry> produce(const FWRecoGeometryRecord&);
0032
0033 FWRecoGeometryESProducer(const FWRecoGeometryESProducer&) = delete;
0034 const FWRecoGeometryESProducer& operator=(const FWRecoGeometryESProducer&) = delete;
0035
0036 private:
0037 void addCSCGeometry(FWRecoGeometry&);
0038 void addDTGeometry(FWRecoGeometry&);
0039 void addRPCGeometry(FWRecoGeometry&);
0040 void addGEMGeometry(FWRecoGeometry&);
0041 void addME0Geometry(FWRecoGeometry&);
0042 void addPixelBarrelGeometry(FWRecoGeometry&);
0043 void addPixelForwardGeometry(FWRecoGeometry&);
0044 void addTIBGeometry(FWRecoGeometry&);
0045 void addTOBGeometry(FWRecoGeometry&);
0046 void addTIDGeometry(FWRecoGeometry&);
0047 void addTECGeometry(FWRecoGeometry&);
0048 void addCaloGeometry(FWRecoGeometry&);
0049
0050 void addMTDGeometry(FWRecoGeometry&);
0051
0052 void ADD_PIXEL_TOPOLOGY(unsigned int rawid, const GeomDet* detUnit, FWRecoGeometry&);
0053
0054 void ADD_MTD_TOPOLOGY(unsigned int rawid, const GeomDet* detUnit, FWRecoGeometry&);
0055
0056 unsigned int insert_id(unsigned int id, FWRecoGeometry&);
0057 void fillPoints(unsigned int id,
0058 std::vector<GlobalPoint>::const_iterator begin,
0059 std::vector<GlobalPoint>::const_iterator end,
0060 FWRecoGeometry&);
0061 void fillShapeAndPlacement(unsigned int id, const GeomDet* det, FWRecoGeometry&);
0062 void writeTrackerParametersXML(FWRecoGeometry&);
0063
0064 edm::ESGetToken<GlobalTrackingGeometry, GlobalTrackingGeometryRecord> m_trackingGeomToken;
0065 edm::ESGetToken<MTDGeometry, MTDDigiGeometryRecord> m_mtdGeomToken;
0066 edm::ESGetToken<CaloGeometry, CaloGeometryRecord> m_caloGeomToken;
0067 const GlobalTrackingGeometry* m_trackingGeom = nullptr;
0068 const MTDGeometry* m_mtdGeom = nullptr;
0069 const CaloGeometry* m_caloGeom = nullptr;
0070 const TrackerGeometry* m_trackerGeom = nullptr;
0071
0072 unsigned int m_current;
0073 bool m_tracker;
0074 bool m_muon;
0075 bool m_gem;
0076 bool m_calo;
0077 bool m_timing;
0078 };
0079
0080 #endif