00001 #ifndef GEO_CELLGEO_H
00002 #define GEO_CELLGEO_H
00003 #ifndef GEO_CELLUNIQUEID_H
00004 #include "Geometry/CellUniqueId.h"
00005 #endif
00006 #include <vector>
00007 class TGeoNode;
00008 class TGeoHMatrix;
00009 class TGeoMatrix;
00010
00011 namespace geo {
00013
00022
00023 class CellGeo {
00024 public:
00025 CellGeo(std::vector<const TGeoNode*>& n, int depth);
00026
00027 void GetCenter(double* xyz, double localz=0.0) const;
00028 double DistToReadOut(double localz) const;
00029 double HalfW() const;
00030 double HalfL() const;
00031 double HalfD() const;
00032
00033 void LocalToWorld(const double* local, double* world) const;
00034 void LocalToWorldVect(const double* local, double* world) const;
00035 void WorldToLocal(const double* local, double* world) const;
00036 void WorldToLocalVect(const double* local, double* world) const;
00037
00038 const TGeoNode* Node() const { return fCellNode; }
00039 const CellUniqueId& Id() const { return fId; }
00040
00041 private:
00042 CellUniqueId fId;
00043 const TGeoNode* fCellNode;
00044 TGeoHMatrix* fGeoMatrix;
00045 };
00046 }
00047
00048
00049 #endif