Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:52

0001 #ifndef DetLayers_MuRingForwardDoubleLayer_H
0002 #define DetLayers_MuRingForwardDoubleLayer_H
0003 
0004 /** \class MuRingForwardDoubleLayer
0005  *  A plane composed two layers of disks. Represents forward muon CSC stations.
0006  *
0007  *  \author R. Wilkinson
0008  *
0009  */
0010 
0011 #include "TrackingTools/DetLayers/interface/RingedForwardLayer.h"
0012 #include "Utilities/BinningTools/interface/BaseBinFinder.h"
0013 #include "RecoMuon/DetLayers/interface/MuRingForwardLayer.h"
0014 
0015 class ForwardDetRing;
0016 class ForwardDetRingBuilder;
0017 class GeomDet;
0018 
0019 class MuRingForwardDoubleLayer : public RingedForwardLayer {
0020 public:
0021   /// Constructor, takes ownership of pointers
0022   MuRingForwardDoubleLayer(const std::vector<const ForwardDetRing*>& frontRings,
0023                            const std::vector<const ForwardDetRing*>& backRings);
0024 
0025   ~MuRingForwardDoubleLayer() override {}
0026 
0027   // GeometricSearchDet interface
0028 
0029   const std::vector<const GeomDet*>& basicComponents() const override { return theBasicComponents; }
0030 
0031   const std::vector<const GeometricSearchDet*>& components() const override { return theComponents; }
0032 
0033   bool isInsideOut(const TrajectoryStateOnSurface& tsos) const;
0034 
0035   // tries closest layer first
0036   std::pair<bool, TrajectoryStateOnSurface> compatible(const TrajectoryStateOnSurface&,
0037                                                        const Propagator&,
0038                                                        const MeasurementEstimator&) const override;
0039 
0040   std::vector<DetWithState> compatibleDets(const TrajectoryStateOnSurface& startingState,
0041                                            const Propagator& prop,
0042                                            const MeasurementEstimator& est) const override;
0043 
0044   std::vector<DetGroup> groupedCompatibleDets(const TrajectoryStateOnSurface& startingState,
0045                                               const Propagator& prop,
0046                                               const MeasurementEstimator& est) const override;
0047 
0048   // DetLayer interface
0049   SubDetector subDetector() const override { return theBackLayer.subDetector(); }
0050 
0051   // Extension of the interface
0052 
0053   /// Return the vector of rings.
0054   virtual const std::vector<const ForwardDetRing*>& rings() const { return theRings; }
0055 
0056   bool isCrack(const GlobalPoint& gp) const;
0057 
0058   const MuRingForwardLayer* frontLayer() const { return &theFrontLayer; }
0059   const MuRingForwardLayer* backLayer() const { return &theBackLayer; }
0060 
0061   void selfTest() const;
0062 
0063 protected:
0064   BoundDisk* computeSurface() override;
0065 
0066 private:
0067   MuRingForwardLayer theFrontLayer;
0068   MuRingForwardLayer theBackLayer;
0069   std::vector<const ForwardDetRing*> theRings;
0070   std::vector<const GeometricSearchDet*> theComponents;  // duplication of the above
0071   std::vector<const GeomDet*> theBasicComponents;        // All chambers
0072 };
0073 #endif