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

GeoStripVolume.h

Go to the documentation of this file.
00001 
00002 // $Id: GeoStripVolume.h,v 1.6 2007/11/25 03:37:41 schubert Exp $
00003 //
00004 // GeoStripVolume
00005 //
00006 // GeoStripVolume is a strip volume.    
00007 //
00008 // Author:  S. Kasahara  07/04
00010 
00011 #ifndef GEOSTRIPVOLUME_H
00012 #define GEOSTRIPVOLUME_H
00013 
00014 #include "GeoGeometry/GeoVolume.h" // base class
00015 #include "Conventions/StripEnd.h"  // method argument
00016 
00017 class GeoStripVolume;
00018 class TGeoShape;
00019 class GeoGeometry;
00020 
00021 class GeoStripVolume : public GeoVolume {
00022 
00023  public:
00024   // Constructors & Destructors
00025    GeoStripVolume(): GeoVolume(),fTotalLen(0),fLenEastPart(0),
00026                     fLenWestPart(0),fWlsLenEast(0),fWlsLenWest(0),
00027                     fWlsLenBypass(0),fWidth(0),fThick(0),fMirrorMask(0),
00028                     fIsVetoShield(false) {}
00029    GeoStripVolume(GeoGeometry* geo, const char* name, 
00030                   Float_t totallen, Float_t leneastpart,
00031                   Float_t lenwestpart, Float_t wlsleneast, 
00032                   Float_t wlslenwest, Float_t wlslenbypass,
00033                   Bool_t isvetoshield);
00034    virtual ~GeoStripVolume() {}
00035 
00036    // State testing methods
00037    virtual Float_t GetHalfWidth() const { return 0.5*fWidth; }
00038    virtual Float_t GetHalfThickness() const { return 0.5*fThick; }
00039    virtual Float_t GetHalfLength() const { return 0.5*fTotalLen; }
00040    virtual Float_t GetWidth() const { return fWidth; }
00041    virtual Float_t GetThick() const { return fThick; }
00042    virtual Float_t GetTotalLen() const { return fTotalLen; }
00043    virtual Float_t GetLenPart(StripEnd::StripEnd_t end) const;
00044    virtual Float_t GetWlsLen(StripEnd::StripEnd_t end) const;
00045    virtual Float_t GetWlsLenBypass() const { return fWlsLenBypass; }       
00046    virtual Bool_t  IsSplit() const 
00047      { return ((1. - (fLenEastPart + fLenWestPart)/fTotalLen) > 0.01); }
00048    virtual Bool_t  IsMirrored(StripEnd::StripEnd_t stripend) const
00049      { return ( fMirrorMask & stripend ); }
00050    virtual void Print(Option_t *option="") const;
00051 
00052  private:
00053 
00054    TGeoShape* BuildStripShape() const;
00055    void AddPstyreneNodes();
00056    
00057    // Data members
00058    Float_t fTotalLen;         // total length of strip
00059    Float_t fLenEastPart;      // length of east part of strip if split
00060    Float_t fLenWestPart;      // length of west part of strip if split
00061    Float_t fWlsLenEast;       // length of east fiber pigtail
00062    Float_t fWlsLenWest;       // length of west fiber pigtail
00063    Float_t fWlsLenBypass;     // length of fiber along coil hole bypass
00064    Float_t fWidth;            // strip width
00065    Float_t fThick;            // strip thickness
00066    UInt_t  fMirrorMask;       // mask to indicate mirrored end(s) of strip 
00067    Bool_t  fIsVetoShield;     // shield strip (caldet or fardet)
00068 
00069 ClassDef(GeoStripVolume,2)
00070 };
00071 
00072 #endif // GEOSTRIPVOLUME_H

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