Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef Geometry_TrackerGeometryBuilder_StripGeomDetUnit_H
0002 #define Geometry_TrackerGeometryBuilder_StripGeomDetUnit_H
0003 
0004 #include "Geometry/CommonDetUnit/interface/TrackerGeomDet.h"
0005 #include "DataFormats/DetId/interface/DetId.h"
0006 #include "Geometry/TrackerGeometryBuilder/interface/ProxyStripTopology.h"
0007 
0008 class StripGeomDetType;
0009 class StripTopology;
0010 class SurfaceDeformation;
0011 /**
0012  * StripGeomDetUnit is the abstract class for SiStripGeomDetUnit.
0013  */
0014 
0015 class StripGeomDetUnit final : public TrackerGeomDet {
0016 public:
0017   StripGeomDetUnit(BoundPlane* sp, StripGeomDetType const* type, DetId id);
0018 
0019   // Det interface
0020 
0021   /// NOTE (A.M.): The actual pointer to StripGeomDetType is now a member of the
0022   /// proxy topology. As StripGeomDetType 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 strip proxy topology
0030   const Topology& topology() const override;
0031 
0032   /// NOTE (A.M.): The actual pointer to StripGeomDetType is now a member of the
0033   /// proxy topology. As StripGeomDetType 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 StripGeomDetType const& specificType() const;
0039 
0040   /// Returns a reference to the strip proxy topology
0041   virtual const StripTopology& 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<ProxyStripTopology> theTopology;
0053 };
0054 
0055 #endif  // Tracker_StripGeomDetUnit_H