00001 00002 // $Id: UgliSteelPlnNode.h,v 1.8 2006/06/27 20:08:23 rhatcher Exp $ 00003 // 00004 // UgliSteelPlnNode 00005 // 00006 // UgliSteelPlnNode is single steel plane 00007 // 00008 // Author: R. Hatcher 2000.11.15 00009 // 00011 00012 #ifndef UGLISTEELPLNNODE_H 00013 #define UGLISTEELPLNNODE_H 00014 00015 #include "UgliGeometry/UgliSteelPlnABC.h" 00016 #include "UgliGeometry/UgliPlnNode.h" 00017 00018 class UgliDbiTables; 00019 class VldContext; 00020 00021 class UgliSteelPlnNode : public UgliSteelPlnABC, public UgliPlnNode { 00022 00023 friend class UgliGeometry; // the geometry creates these 00024 friend class UgliGeometryReroot; // the geometry creates these 00025 friend class UgliSteelPlnHandle; // handles play with our ref count 00026 00027 public: 00028 00029 // base TNode class has this public 00030 virtual ~UgliSteelPlnNode(); 00031 00032 virtual PlexPlaneId GetPlexPlaneId() const 00033 {return fPlaneId;} 00034 00035 virtual Float_t GetHalfThickness() const; 00036 virtual TVector3 GetCenter() const; 00037 virtual Float_t GetX0() const; 00038 virtual Float_t GetY0() const; 00039 virtual Float_t GetZ0() const; 00040 00041 // convert between world and steel plane coordinates 00042 virtual TVector3 GlobalToLocal(const TVector3& global) const; 00043 virtual TVector3 LocalToGlobal(const TVector3& local) const; 00044 virtual TVector3 GlobalToLocalVect(const TVector3& global) const; 00045 virtual TVector3 LocalToGlobalVect(const TVector3& local) const; 00046 00047 virtual UgliGeometry *GetUgliGeometry() const { return fUgliGeometry; } 00048 00049 public: 00050 00051 // Avoid creating UgliStrip without a reference 00052 // to something having a Validity object 00053 UgliSteelPlnNode(); // should be protected, but needed for i/o 00054 00055 protected: 00056 00057 // inc/dec of references to this object should also that of UgliGeometry 00058 virtual void IncrementRef(); 00059 virtual void DecrementRef(); 00060 00061 // ctor that old REROOT-based UgliGeometry uses in constructing 00062 UgliSteelPlnNode(UgliGeometry *ugligeom, const PlexPlaneId planeid); 00063 00064 // ctor for DBI driven UgliGeometry 00065 UgliSteelPlnNode(const PlexPlaneId planeid, UgliGeometry *ugligeom, 00066 const UgliDbiTables& ugliTables); 00067 00068 // used by GetCenter, Get[X,Y,Z]0 00069 void TransformLocal2Global(Double_t *lxyz, Double_t *gxyz) const; 00070 00071 private: 00072 00073 // avoid copy and assignment ctor by making them private and w/ no imp 00074 UgliSteelPlnNode(const UgliSteelPlnNode& that); 00075 UgliSteelPlnNode& operator=(const UgliSteelPlnNode& ugh); 00076 00077 ClassDef(UgliSteelPlnNode,1) 00078 }; 00079 00080 #endif // UGLISTEELPLNNODE_H
1.3.9.1