Main Page | Class Hierarchy | Class List | File List | Class Members

VXDLayerLayoutImpl.h

00001 // -*- C++ -*-
00002 #ifndef GEAR_VXDLayerLayoutImpl_H
00003 #define GEAR_VXDLayerLayoutImpl_H 1
00004 
00005 #include "gear/VXDLayerLayout.h"
00006 #include <vector>
00007 
00008 namespace gear {
00009 
00019 class VXDLayerLayoutImpl : public VXDLayerLayout {
00020 
00021 public: 
00022   
00024   struct Layer {
00025     int    NLadders ;
00026     double Phi0 ;
00027     double Distance ;
00028     double Offset ;
00029     double Thickness ;
00030     double Length ;
00031     double Width ;
00032     double RadLength ;
00033   } ;
00034 
00035   typedef std::vector<Layer> LayerVec ;
00036 
00037   // Destructor.
00038   virtual ~VXDLayerLayoutImpl() { /* nop */; }
00039   
00042   virtual int getNLayers() const { return _lVec.size() ; }
00043   
00047   virtual int getNLadders(int layerIndex) const { return _lVec.at( layerIndex ).NLadders  ; }
00048 
00052   virtual double getPhi0(int layerIndex) const { return _lVec.at( layerIndex ).Phi0  ; }
00053   
00057   virtual double getLadderRadLength(int layerIndex) const { return _lVec.at( layerIndex ).RadLength  ; }
00058   
00062   virtual double getLadderDistance(int layerIndex) const { return _lVec.at( layerIndex ).Distance  ; }
00063 
00067   virtual double getLadderThickness(int layerIndex) const { return _lVec.at( layerIndex ).Thickness  ; }
00068 
00075   virtual double getLadderOffset(int layerIndex) const { return _lVec.at( layerIndex ).Offset  ; }
00076 
00080   virtual double getLadderWidth(int layerIndex) const { return _lVec.at( layerIndex ).Width  ; }
00081 
00085   virtual double getLadderLength(int layerIndex) const { return _lVec.at( layerIndex ).Length  ; }
00086   
00090   virtual double getSensitiveRadLength(int layerIndex) const { return _sVec.at( layerIndex ).RadLength  ; }
00091 
00094   virtual double getSensitiveDistance(int layerIndex) const { return _sVec.at( layerIndex ).Distance  ; }
00095 
00098   virtual double getSensitiveThickness(int layerIndex) const { return _sVec.at( layerIndex ).Thickness  ; }
00099 
00105   virtual double getSensitiveOffset(int layerIndex) const { return _sVec.at( layerIndex ).Offset  ; }
00106 
00109   virtual double getSensitiveWidth(int layerIndex) const { return _sVec.at( layerIndex ).Width  ; }
00110 
00113   virtual double getSensitiveLength(int layerIndex) const { return _sVec.at( layerIndex ).Length  ; }
00114 
00117   virtual void addLayer(int nLadders, double phi0, 
00118                         // ladder
00119                         double ladderDistance, double ladderOffset, double ladderThickness,
00120                         double ladderLength, double ladderWidth, double ladderRadLength,
00121                         // sensitive
00122                         double sensitiveDistance, double sensitiveOffset, double sensitiveThickness,
00123                         double sensitiveLength, double sensitiveWidth, double sensitiveRadLength);
00124  
00127   virtual double getMaxRadius( int layerIndex , bool sensitive=false ) const ; 
00128   
00131   virtual double getStartInnerPhi( int layerIndex , bool sensitive=false ) const ;
00132 
00135   virtual double getEndInnerPhi( int layerIndex , bool sensitive=false ) const ;
00136 
00139   virtual double getStartOuterPhi( int layerIndex , bool sensitive=false ) const ;
00140 
00143   virtual double getEndOuterPhi( int layerIndex , bool sensitive=false ) const ;
00144   
00149   virtual double getThicknessForPhi( int layerIndex, double phi , bool sensitive=false ) const ;
00150   
00151   
00152 protected:
00153 
00154   // Ladder
00155   LayerVec _lVec ;
00156   // Sensitive
00157   LayerVec _sVec ;
00158     
00159 private:
00160 
00161 
00162 }; // class
00163 } // namespace gear
00164 #endif /* ifndef GEAR_VXDLAYERLAYOUT_H */

Generated on Tue Sep 5 11:36:30 2006 for Gear by doxygen 1.3.5