CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_13_patch3/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();
00024 
00025   virtual ~ForwardDetLayer();
00026 
00027   // GeometricSearchDet interface
00028   virtual const BoundSurface&  surface() const { 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 {return GeomDetEnumerators::endcap;}
00036 
00037   // Extension of the interface
00038   virtual const BoundDisk&    specificSurface() const { 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()/2);}
00050   float zmax() const { return (theDisk->position().z() + theDisk->bounds().thickness()/2);}
00051 
00052 
00053   virtual BoundDisk* computeSurface();
00054 
00055 
00056  private:
00057   //float theRmin, theRmax, theZmin, theZmax;
00058   ReferenceCountingPointer<BoundDisk> theDisk;
00059 
00060 
00061 };
00062 
00063 
00064 #endif