Back to home page

Project CMSSW displayed by LXR

 
 

    


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  // GEOMETRY_FWRECO_GEOMETRY_ES_PRODUCER_H