Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:15:15

0001 #ifndef Geometry_MTDGeometryBuilder_MTDGeomDetUnit_H
0002 #define Geometry_MTDGeometryBuilder_MTDGeomDetUnit_H
0003 
0004 #include "Geometry/CommonDetUnit/interface/MTDGeomDet.h"
0005 #include "DataFormats/DetId/interface/DetId.h"
0006 #include "Geometry/MTDGeometryBuilder/interface/ProxyMTDTopology.h"
0007 
0008 class MTDGeomDetType;
0009 class PixelTopology;
0010 class SurfaceDeformation;
0011 /**
0012  * The base PixelGeomDetUnit. Specialized in SiPixelGeomDetUnit.
0013  */
0014 
0015 class MTDGeomDetUnit final : public MTDGeomDet {
0016 public:
0017   MTDGeomDetUnit(BoundPlane* sp, MTDGeomDetType const* type, DetId id);
0018 
0019   // DetUnit interface
0020 
0021   /// NOTE (A.M.): The actual pointer to PixelGeomDetType is now a member of the
0022   /// proxy topology. As PixelGeomDetType has the actual topology as a pointer,
0023   /// it is possible to access this topology in two different ways. Once via
0024   /// the proxy topology (through topology() and specificTopology()) which includes
0025   /// corrections for the surface deformations, and once via the GeomDetType
0026   /// (through type().topology() and the like).
0027   const GeomDetType& type() const override;
0028 
0029   /// Returns a reference to the pixel proxy topology
0030   const Topology& topology() const override;
0031 
0032   /// NOTE (A.M.): The actual pointer to PixelGeomDetType is now a member of the
0033   /// proxy topology. As PixelGeomDetType has the actual topology as a pointer,
0034   /// it is possible to access this topology in two different ways. Once via
0035   /// the proxy topology (through topology() and specificTopology()) which includes
0036   /// corrections for the surface deformations, and once via the GeomDetType
0037   /// (through type().topology() and the like).
0038   virtual const MTDGeomDetType& specificType() const;
0039 
0040   /// Returns a reference to the pixel proxy topology
0041   virtual const PixelTopology& specificTopology() const;
0042 
0043   /// Return pointer to surface deformation.
0044   const SurfaceDeformation* surfaceDeformation() const override { return theTopology->surfaceDeformation(); }
0045 
0046   bool isLeaf() const override { return true; }
0047 
0048 private:
0049   /// set the SurfaceDeformation for this StripGeomDetUnit to proxy topology.
0050   void setSurfaceDeformation(const SurfaceDeformation* deformation) override;
0051 
0052   std::unique_ptr<ProxyMTDTopology> theTopology;
0053 };
0054 
0055 #endif  // MTD_MTDGeomDetUnit_H