CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/RecoMuon/DetLayers/interface/MuRingForwardDoubleLayer.h

Go to the documentation of this file.
00001 #ifndef DetLayers_MuRingForwardDoubleLayer_H
00002 #define DetLayers_MuRingForwardDoubleLayer_H
00003 
00013 #include "TrackingTools/DetLayers/interface/RingedForwardLayer.h"
00014 #include "Utilities/BinningTools/interface/BaseBinFinder.h"
00015 #include "RecoMuon/DetLayers/interface/MuRingForwardLayer.h"
00016 
00017 class ForwardDetRing;
00018 class ForwardDetRingBuilder;
00019 class GeomDet;
00020 
00021 class MuRingForwardDoubleLayer : public RingedForwardLayer {
00022 
00023  public:  
00024 
00026   MuRingForwardDoubleLayer(const std::vector<const ForwardDetRing*>& frontRings,  
00027                            const std::vector<const ForwardDetRing*>& backRings);
00028 
00029   virtual ~MuRingForwardDoubleLayer() {}
00030 
00031 
00032   // GeometricSearchDet interface
00033 
00034   virtual const std::vector<const GeomDet*>& basicComponents() const {return theBasicComponents;}
00035   
00036   virtual const std::vector<const GeometricSearchDet*>& components() const {return theComponents;}
00037 
00038   bool isInsideOut(const TrajectoryStateOnSurface&tsos) const;
00039 
00040   // tries closest layer first
00041   virtual std::pair<bool, TrajectoryStateOnSurface>
00042   compatible( const TrajectoryStateOnSurface&, const Propagator&,
00043               const MeasurementEstimator&) const;
00044 
00045   virtual std::vector<DetWithState> 
00046   compatibleDets( const TrajectoryStateOnSurface& startingState,
00047                   const Propagator& prop, 
00048                   const MeasurementEstimator& est) const;
00049   
00050   virtual std::vector<DetGroup> 
00051   groupedCompatibleDets( const TrajectoryStateOnSurface& startingState,
00052                          const Propagator& prop,
00053                          const MeasurementEstimator& est) const;
00054 
00055 
00056   virtual bool hasGroups() const {return true;}
00057 
00058 
00059   // DetLayer interface
00060   virtual SubDetector subDetector() const {return theBackLayer.subDetector();}
00061 
00062 
00063   // Extension of the interface
00064 
00066   virtual const std::vector<const ForwardDetRing*>& rings() const {return theRings;}
00067 
00068   bool isCrack(const GlobalPoint & gp) const;
00069 
00070   const MuRingForwardLayer * frontLayer() const {return &theFrontLayer;}
00071   const MuRingForwardLayer * backLayer() const {return &theBackLayer;}
00072 
00073   void selfTest() const;
00074  protected:
00075     virtual BoundDisk * computeSurface();
00076  private:  
00077   MuRingForwardLayer theFrontLayer;
00078   MuRingForwardLayer theBackLayer;
00079   std::vector<const ForwardDetRing*> theRings;
00080   std::vector <const GeometricSearchDet*> theComponents; // duplication of the above
00081   std::vector<const GeomDet*> theBasicComponents; // All chambers
00082 
00083 };
00084 #endif
00085