CMS 3D CMS Logo

FWTGeoRecoGeometryESProducer.h
Go to the documentation of this file.
1 #ifndef GEOMETRY_FWTGEORECO_GEOMETRY_ES_PRODUCER_H
2 # define GEOMETRY_FWTGEORECO_GEOMETRY_ES_PRODUCER_H
3 
4 # include <memory>
5 
9 
10 namespace edm
11 {
12  class ParameterSet;
13 }
14 
15 class CaloGeometry;
17 class TrackerGeometry;
18 class TrackerTopology;
19 class FWTGeoRecoGeometry;
21 
22 class TGeoManager;
23 class TGeoShape;
24 class TGeoVolume;
25 class TGeoMaterial;
26 class TGeoMedium;
27 class GeomDet;
28 class CaloCellGeometry;
30 {
31  enum ERecoDet {kDummy,
32  kSiPixel, kSiStrip,
33  kMuonDT, kMuonRPC, kMuonCSC, kMuonGEM, kMuonME0,
34  kECal, kHCal, kCaloTower,
35  kHGCE, kHGCH };
36 public:
38  ~FWTGeoRecoGeometryESProducer( void ) override;
39 
40  std::unique_ptr<FWTGeoRecoGeometry> produce( const FWTGeoRecoGeometryRecord& );
41 
42 private:
45 
46  TGeoManager* createManager( int level );
47  TGeoShape* createShape( const GeomDet *det );
48  TGeoVolume* createVolume( const std::string& name, const GeomDet *det, ERecoDet = kDummy );
49  // TGeoMaterial* createMaterial( const std::string& name );
50 
51  TGeoVolume* GetDaughter(TGeoVolume* mother, const char* prefix, ERecoDet cidx, int id);
52  TGeoVolume* GetDaughter(TGeoVolume* mother, const char* prefix, ERecoDet cidx);
53  TGeoVolume* GetTopHolder( const char* prefix, ERecoDet cidx);
54 
55  TGeoMedium* GetMedium(ERecoDet);
56 
57  void addPixelBarrelGeometry();
58  void addPixelForwardGeometry();
59  void addTIBGeometry();
60  void addTOBGeometry();
61  void addTIDGeometry();
62  void addTECGeometry();
63  void addCSCGeometry();
64  void addDTGeometry();
65  void addRPCGeometry();
66  void addGEMGeometry();
67  void addME0Geometry();
68  void addEcalCaloGeometry();
69  void addHcalCaloGeometryBarrel();
70  void addHcalCaloGeometryEndcap();
71  void addHcalCaloGeometryOuter();
72  void addHcalCaloGeometryForward();
73  void addCaloTowerGeometry();
74 
75  std::map<std::string, TGeoShape*> m_nameToShape;
76  std::map<TGeoShape*, TGeoVolume*> m_shapeToVolume;
77  std::map<ERecoDet, TGeoMedium*> m_recoMedium;
78 
83 
84  TGeoMedium* m_dummyMedium;
85 
86  bool m_tracker;
87  bool m_muon;
88  bool m_calo;
89 };
90 
91 #endif // GEOMETRY_FWTGEORECO_GEOMETRY_ES_PRODUCER_H
edm::ESHandle< GlobalTrackingGeometry > m_geomRecord
std::map< TGeoShape *, TGeoVolume * > m_shapeToVolume
std::map< std::string, TGeoShape * > m_nameToShape
std::map< ERecoDet, TGeoMedium * > m_recoMedium
HLT enums.