Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

GeoStripNode.h

Go to the documentation of this file.
00001 
00002 // $Id: GeoStripNode.h,v 1.15 2005/10/23 01:48:11 schubert Exp $
00003 //
00004 // GeoStripNode
00005 //
00006 // GeoStripNode is a specialized GeoNode to help keep track of information
00007 // identifying this strip.
00008 // Modeled after R. Hatcher's UgliStripNode class
00009 //
00010 // Author:  S. Kasahara  06/04
00012 
00013 #ifndef GEOSTRIPNODE_H
00014 #define GEOSTRIPNODE_H
00015 
00016 #include "GeoGeometry/GeoNode.h"  // base class
00017 #include "GeoGeometry/GeoStripVolume.h"
00018 #include "Plex/PlexStripEndId.h"  // data member
00019 
00020 class GeoStripNode;
00021 class GeoScintPlnNode;
00022 class GeoScintMdlNode;
00023 class TGeoMatrix;
00024 class TGeoVolume;
00025 
00026 class GeoStripNode : public GeoNode {
00027 
00028   friend class UgliStripHandle; // handle inc/dec ref count
00029   friend class GeoGeometry; // every node belongs to its geometry creator
00030 
00031  public:
00032 
00033   // Constructors and destructors
00034   GeoStripNode() : fScintMdlNode(0) {} // default constructor for i/o
00035   virtual ~GeoStripNode();
00036 
00037   // State testing methods
00038   virtual PlexStripEndId GetSEId() const { return fStripEndId; }
00039   GeoStripVolume* GetStripVolume() const 
00040     { return dynamic_cast<GeoStripVolume*>(GetVolume()); }  
00041   virtual Float_t GetLPosRelMdl() const;
00042   virtual Float_t GetTPosRelMdl() const;
00043   virtual Float_t GetZRotRelMdlRad() const;
00044 
00045   GeoScintMdlNode* GetScintMdlNode(void) const { return fScintMdlNode; }
00046   GeoScintPlnNode* GetScintPlnNode(void) const;
00047 
00048   // State testing, passed down to GeoStripVolume
00049   virtual Float_t GetHalfLength() const;
00050   virtual Float_t GetHalfThickness() const;
00051   virtual Float_t GetHalfWidth() const;
00052   virtual Float_t PartialLength(StripEnd::StripEnd_t end) const;
00053   virtual Float_t WlsBypass() const;
00054   virtual Float_t WlsPigtail(StripEnd::StripEnd_t end) const;
00055   virtual Bool_t  IsMirrored(StripEnd::StripEnd_t end) const;
00056   virtual Float_t ClearFiber(StripEnd::StripEnd_t end) const;
00057   virtual TVector3 GlobalPos(const Float_t alongLength,
00058                              const Bool_t onWLS = kFALSE) const;
00059   virtual Float_t GetTPos(Float_t orthCoord = 999999.) const;
00060   virtual Float_t DistanceAlong(const PlexStripEndId& orthogonalStrip) const;
00061   virtual TVector3 Intersection(const PlexStripEndId& orthogonalStrip) const;
00062 
00063   // Dummy, but also dummy in UgliStripNode
00064   virtual Float_t TotalAttenuation(StripEnd::StripEnd_t end,
00065                                    const Float_t alongLength) const;
00066   // Dummy Set methods
00067   void SetZRotRelMdlRad(Float_t radians);
00068   void SetLTPosRelMdl(Float_t lpos, Float_t tpos);
00069 
00070   
00071  protected:
00072  
00073   GeoStripNode(GeoGeometry* geom, TGeoVolume* stpvol,TGeoMatrix* stpmatrix, 
00074                GeoScintMdlNode* mdlNode, std::string nodename,
00075                const PlexStripEndId& seid);
00076 
00077  private:
00078 
00079   // Avoid copy and assignment ctor by making them private and w/no imp
00080   GeoStripNode(const GeoStripNode& that);
00081   GeoStripNode& operator=(const GeoStripNode& that);
00082 
00083   // data members
00084   PlexStripEndId  fStripEndId; // plane id info for this node
00085   GeoScintMdlNode* fScintMdlNode; // mdl node to which this strip node belongs
00086 
00087 ClassDef(GeoStripNode,1)
00088 };
00089 #endif // GEOSTRIPNODE_H

Generated on Mon Feb 15 11:06:45 2010 for loon by  doxygen 1.3.9.1