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

UgliPlnHandle.h

Go to the documentation of this file.
00001 
00002 // $Id: UgliPlnHandle.h,v 1.6 2005/07/17 23:54:45 schubert Exp $
00003 //
00004 // UgliPlnHandle
00005 //
00006 // UgliPlnHandle is the handle to a single plane
00007 //
00008 // Author:  R. Hatcher 2000.11.15
00009 //
00011 
00012 #ifndef UGLIPLNHANDLE_H
00013 #define UGLIPLNHANDLE_H
00014 
00015 #include "GeoGeometry/GeoPlnNode.h"
00016 #include "UgliGeometry/UgliPlnNode.h"
00017 #include "UgliGeometry/UgliGeometry.h"
00018 
00019 
00020 class UgliPlnHandle : public UgliPlnABC {
00021 
00022  public:
00023 
00024    // Create handles from the actual node object, copy and assignment
00025    UgliPlnHandle(UgliPlnNode* plnNode);
00026    UgliPlnHandle(GeoPlnNode* plnNode);
00027    UgliPlnHandle(const UgliPlnHandle& that);
00028    UgliPlnHandle& operator=(const UgliPlnHandle& that);
00029 
00030    // One should avoid creating UgliPlnHandle without a reference 
00031    // (be sure to test IsValid())
00032    UgliPlnHandle();
00033 
00034    virtual ~UgliPlnHandle();
00035 
00036    virtual Bool_t         IsValid() const;
00037    virtual Bool_t         IsGeo() const { return (fGeoPlnNode != 0); }
00038      
00039    virtual PlexPlaneId                    GetPlexPlaneId() const;
00040    virtual Int_t                          GetPlaneNumber() const;
00041    virtual PlaneView::PlaneView_t         GetPlaneView() const;
00042    virtual PlaneCoverage::PlaneCoverage_t GetPlaneCoverage() const;
00043 
00044    virtual Float_t        GetHalfThickness() const;
00045    virtual TVector3       GetCenter() const;
00046    virtual Float_t        GetX0() const;
00047    virtual Float_t        GetY0() const;
00048    virtual Float_t        GetZ0() const;
00049 
00050  protected:
00051 
00052    // The actual node being referenced
00053    UgliPlnNode* fUgliPlnNode;
00054    GeoPlnNode* fGeoPlnNode;
00055    
00056  private:
00057 
00058 ClassDef(UgliPlnHandle,3)
00059 
00060 };
00061 
00062 #ifndef __CINT__
00063 //=============================================================================
00064 // Implementation details -- inlines need to be hidden from CINT
00065 //=============================================================================
00066 
00067 inline Bool_t UgliPlnHandle::IsValid() const
00068 { if ( !IsGeo() ) return (fUgliPlnNode) ? kTRUE : kFALSE;
00069   else return (fGeoPlnNode) ? kTRUE : kFALSE;  
00070 }
00071 
00072 inline PlexPlaneId UgliPlnHandle::GetPlexPlaneId() const
00073 { if ( !IsGeo() ) return fUgliPlnNode->GetPlexPlaneId(); 
00074   else return fGeoPlnNode->GetPlexPlaneId(); 
00075 }
00076 
00077 inline Int_t UgliPlnHandle::GetPlaneNumber() const
00078 { if ( !IsGeo() ) return fUgliPlnNode->GetPlexPlaneId().GetPlane(); 
00079  else return fGeoPlnNode->GetPlexPlaneId().GetPlane(); 
00080 }
00081 
00082 inline PlaneView::PlaneView_t UgliPlnHandle::GetPlaneView() const
00083 { if ( !IsGeo() ) return fUgliPlnNode->GetPlexPlaneId().GetPlaneView(); 
00084  else return fGeoPlnNode->GetPlexPlaneId().GetPlaneView(); 
00085 }
00086 
00087 inline PlaneCoverage::PlaneCoverage_t 
00088          UgliPlnHandle::GetPlaneCoverage() const
00089 { if ( !IsGeo() ) return fUgliPlnNode->GetPlexPlaneId().GetPlaneCoverage(); 
00090   else return fGeoPlnNode->GetPlexPlaneId().GetPlaneCoverage();
00091 }
00092 
00093 inline Float_t UgliPlnHandle::GetHalfThickness() const
00094 { if ( !IsGeo() ) return fUgliPlnNode->GetHalfThickness();
00095   else return (fGeoPlnNode->GetHalfThickness())*Munits::cm;
00096 }
00097 
00098 inline TVector3 UgliPlnHandle::GetCenter() const
00099 { if ( !IsGeo() ) return fUgliPlnNode->GetCenter();
00100   else return (fGeoPlnNode->GetCenter())*Munits::cm;
00101 }
00102 
00103 inline Float_t UgliPlnHandle::GetX0() const
00104 { if ( !IsGeo() ) return fUgliPlnNode->GetX0(); 
00105   else return (fGeoPlnNode->GetX0())*Munits::cm; 
00106 }
00107 
00108 inline Float_t UgliPlnHandle::GetY0() const
00109 { if ( !IsGeo() ) return fUgliPlnNode->GetY0(); 
00110   else return (fGeoPlnNode->GetY0())*Munits::cm;
00111 }
00112 
00113 inline Float_t UgliPlnHandle::GetZ0() const
00114 { if ( !IsGeo() ) return fUgliPlnNode->GetZ0(); 
00115   else return (fGeoPlnNode->GetZ0())*Munits::cm;
00116 }
00117 
00118 #endif /* __CINT__ */
00119 #endif // UGLIPLNHANDLE_H

Generated on Mon Nov 23 05:28:45 2009 for loon by  doxygen 1.3.9.1