CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/TrackingTools/DetLayers/interface/ForwardDetLayer.h

Go to the documentation of this file.
00001 #ifndef DetLayers_ForwardDetLayer_H
00002 #define DetLayers_ForwardDetLayer_H
00003 
00012 #include "TrackingTools/DetLayers/interface/DetLayer.h"
00013 #include "DataFormats/GeometrySurface/interface/Surface.h" 
00014 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
00015 #include "DataFormats/GeometrySurface/interface/BoundDisk.h"
00016 
00017 #include <vector>
00018 #include <algorithm>
00019 
00020 class ForwardDetLayer : public DetLayer {
00021 public:
00022 
00023   ForwardDetLayer(): DetLayer(false),  theDisk(0){}
00024 
00025   virtual ~ForwardDetLayer();
00026 
00027   // GeometricSearchDet interface
00028   virtual const BoundSurface&  surface() const GCC11_FINAL { return *theDisk;}
00029 
00030   virtual std::pair<bool, TrajectoryStateOnSurface>
00031   compatible( const TrajectoryStateOnSurface&, const Propagator&, 
00032               const MeasurementEstimator&) const;
00033 
00034   // DetLayer interface
00035   virtual Location location() const  GCC11_FINAL {return GeomDetEnumerators::endcap;}
00036 
00037   // Extension of the interface
00038   virtual const BoundDisk& specificSurface() const  GCC11_FINAL { return *theDisk;}
00039 
00040   bool contains( const Local3DPoint& p) const;  
00041   
00042  protected:
00043   void setSurface( BoundDisk* cp);
00044 
00045   virtual void initialize();
00046 
00047   float rmin() const { return theDisk->innerRadius();}
00048   float rmax() const { return theDisk->outerRadius();}
00049   float zmin() const { return (theDisk->position().z() - theDisk->bounds().thickness()*0.5f);}
00050   float zmax() const { return (theDisk->position().z() + theDisk->bounds().thickness()*0.5f);}
00051 
00052 
00053   virtual BoundDisk* computeSurface();
00054 
00055 
00056  private:
00057   ReferenceCountingPointer<BoundDisk> theDisk;
00058 
00059 
00060 };
00061 
00062 
00063 #endif