00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 #ifndef GEOSTRIPVOLUME_H
00012 #define GEOSTRIPVOLUME_H
00013
00014 #include "GeoGeometry/GeoVolume.h"
00015 #include "Conventions/StripEnd.h"
00016
00017 class GeoStripVolume;
00018 class TGeoShape;
00019 class GeoGeometry;
00020
00021 class GeoStripVolume : public GeoVolume {
00022
00023 public:
00024
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
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
00058 Float_t fTotalLen;
00059 Float_t fLenEastPart;
00060 Float_t fLenWestPart;
00061 Float_t fWlsLenEast;
00062 Float_t fWlsLenWest;
00063 Float_t fWlsLenBypass;
00064 Float_t fWidth;
00065 Float_t fThick;
00066 UInt_t fMirrorMask;
00067 Bool_t fIsVetoShield;
00068
00069 ClassDef(GeoStripVolume,2)
00070 };
00071
00072 #endif // GEOSTRIPVOLUME_H