00001 // 00002 // Bes Emc barrel part and endcap Geometry service 00003 // 00004 // Created by Zhe Wang, May, 29 2004 00005 // 00006 00007 #ifndef EMC_REC_GEO_SVC_H 00008 #define EMC_REC_GEO_SVC_H 00009 00010 #include "GaudiKernel/Service.h" 00011 00012 #include "EmcRecGeoSvc/IEmcRecGeoSvc.h" 00013 00014 #include "Identifier/Identifier.h" 00015 #include "Identifier/EmcID.h" 00016 00017 #include "CLHEP/Geometry/Point3D.h" 00018 #ifndef ENABLE_BACKWARDS_COMPATIBILITY 00019 typedef HepGeom::Point3D<double> HepPoint3D; 00020 #endif 00021 #include "EmcRecGeoSvc/EmcRecCrystal.h" 00022 #include "EmcRecGeoSvc/EmcRecBarrelGeo.h" 00023 #include "EmcRecGeoSvc/EmcRecEndCapGeo.h" 00024 using namespace CLHEP; 00025 00026 class EmcRecROOTGeo; 00027 00028 class EmcRecGeoSvc:public Service,virtual public IEmcRecGeoSvc 00029 { 00030 public: 00031 EmcRecGeoSvc(const std::string& name, ISvcLocator* svcloc); 00032 ~EmcRecGeoSvc(); 00033 00034 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvUnknown); 00035 virtual StatusCode initialize ( ); 00036 virtual StatusCode finalize ( ); 00037 00038 //access for geometry 00039 virtual EmcRecCrystal GetCrystal(const Identifier& id) const; 00040 virtual HepPoint3D GetCrystalPoint(const Identifier& id, const int i) const; 00041 virtual HepPoint3D GetCCenter(const Identifier& id) const; 00042 virtual HepPoint3D GetCFrontCenter(const Identifier& id) const; 00043 00044 virtual double GetBarrelR() const; 00045 virtual double GetBarrelOffset1() const; 00046 virtual double GetBarrelOffset2() const; 00047 virtual double GetBarrelh1() const; 00048 virtual double GetBarrelh2() const; 00049 virtual double GetBarrelh3() const; 00050 virtual double GetBarrelL() const; 00051 virtual int GetBarrelNPhiMax() const; 00052 virtual int GetBarrelNThetaMax() const; 00053 00054 private: 00055 EmcRecBarrelGeo fBarrel; 00056 EmcRecEndCapGeo fEndCap; 00057 EmcRecROOTGeo *fROOTGeo; 00058 00059 private: 00060 bool fGdml; //use gdml or code 00061 }; 00062 00063 #endif //EMC_REC_GEO_SVC_H 00064