00001 #ifndef VIS_RECO_GEOMETRY_VIS_TRACKING_GEOMETRY_H
00002 # define VIS_RECO_GEOMETRY_VIS_TRACKING_GEOMETRY_H
00003
00004
00005
00006 # include "FWCore/Framework/interface/ESHandle.h"
00007 # include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00008 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h"
00009 # include <string>
00010
00011
00012
00013
00014
00015 class GeomDetUnit;
00016 class SbVec3f;
00017 class SoSeparator;
00018 class SoAnnotation;
00019 class TrackerGeometry;
00020
00021
00022
00023
00024
00025 class VisTrackingGeometry
00026 {
00027 public:
00028
00029
00030
00031
00032 enum DetectorRep { FullDet, RZDet, RPhiDet,
00033 CSCME1, CSCME2, CSCME3, CSCME4};
00034
00035 static SoSeparator *buildDet (DetectorRep type, edm::ESHandle<TrackerGeometry> &pDD, int subDetector);
00036 static SoSeparator *buildDet (DetectorRep type, std::vector<const GeomDetUnit *>&);
00037 static SoAnnotation *buildDet_anno (DetectorRep type, std::vector<const GeomDetUnit *>&);
00038
00039 static int subDetector (const std::string &key);
00040 static bool visible (const GlobalPoint & point, DetectorRep type, int subDetector);
00041 static void addWafer (SoSeparator *separator, const GeomDetUnit *det,DetectorRep type);
00042 static void addBoxWafer (SoSeparator *separator, const GeomDetUnit *det);
00043 static void createRotation (const GeomDetUnit *det, SbVec3f & axis, float & angle);
00044 };
00045
00046
00047
00048
00049 #endif // VIS_RECO_GEOMETRY_VIS_TRACKING_GEOMETRY_H