00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
00013 #ifndef GEOSCINTMDLNODE_H
00014 #define GEOSCINTMDLNODE_H
00015
00016 #include "GeoGeometry/GeoNode.h"
00017 #include "GeoGeometry/GeoScintMdlVolume.h"
00018 #include "Plex/PlexScintMdlId.h"
00019 #include "Conventions/StripEnd.h"
00020
00021 class GeoScintMdlNode : public GeoNode {
00022
00023 friend class UgliScintMdlHandle;
00024 friend class GeoGeometry;
00025
00026 public:
00027
00028
00029 GeoScintMdlNode() : fScintMdlId(),fScintPlnNode(0),
00030 fClearLenEast(0),fClearLenWest(0),
00031 fWlsLenEast(0),fWlsLenWest(0) {}
00032 virtual ~GeoScintMdlNode();
00033
00034
00035 GeoScintMdlVolume* GetScintMdlVolume() const
00036 { return dynamic_cast<GeoScintMdlVolume*>(GetVolume()); }
00037 GeoScintPlnNode* GetScintPlnNode() const { return fScintPlnNode; }
00038
00039 GeoStripNode* GetStripNode(const PlexStripEndId& seid) const;
00040 virtual PlexScintMdlId GetPlexScintMdlId() const { return fScintMdlId; }
00041 virtual PlexPlaneId GetPlexPlaneId() const;
00042 virtual Int_t GetModuleNum() const;
00043 virtual Float_t GetClearFiber(StripEnd::StripEnd_t end) const;
00044 virtual Float_t GetExtraWlsFiber(StripEnd::StripEnd_t end) const;
00045 virtual std::vector<GeoStripNode*> GetStripNodePtrVector() const;
00046
00047 Float_t GetZRotRelPlnRad() const;
00048 Float_t GetLPosRelPln() const;
00049 Float_t GetTPosRelPln() const;
00050
00051
00052 virtual Int_t NumberOfStrips() const;
00053
00054
00055 void SetZRotRelPlnRad(Float_t radians);
00056 void SetLTPosRelPln(Float_t lpos, Float_t tpos);
00057
00058 protected:
00059
00060 GeoScintMdlNode(GeoGeometry* geoGeometry, TGeoVolume* mdlvol,
00061 TGeoMatrix* mdlmatrix, GeoScintPlnNode* parNode,
00062 std::string nodename, const PlexScintMdlId& moduleid,
00063 Float_t clearleneast, Float_t clearlenwest,
00064 Float_t wlsleneast, Float_t wlslenwest);
00065
00066 private:
00067
00068
00069 GeoScintMdlNode(const GeoScintMdlNode& that);
00070 GeoScintMdlNode& operator=(const GeoScintMdlNode& that);
00071
00072
00073 PlexScintMdlId fScintMdlId;
00074 GeoScintPlnNode* fScintPlnNode;
00075 Float_t fClearLenEast;
00076 Float_t fClearLenWest;
00077 Float_t fWlsLenEast;
00078 Float_t fWlsLenWest;
00079
00080 ClassDef(GeoScintMdlNode,1)
00081 };
00082
00083 inline PlexPlaneId GeoScintMdlNode::GetPlexPlaneId() const {
00084 return PlexPlaneId(fScintMdlId);
00085 }
00086
00087 inline Int_t GeoScintMdlNode::GetModuleNum() const {
00088 return fScintMdlId.GetModule();
00089 }
00090
00091 inline Int_t GeoScintMdlNode::NumberOfStrips() const {
00092 return (GetScintMdlVolume()->NumberOfStrips());
00093 }
00094 #endif // GEOSCINTMDLNODE_H