CMS 3D CMS Logo

ProxyPixelTopology.h
Go to the documentation of this file.
1 #ifndef Geometry_CommonTopologies_ProxyPixelTopology_H
2 #define Geometry_CommonTopologies_ProxyPixelTopology_H
3 
15 //
21 
25 
26 #include <memory>
27 
28 class Plane;
29 
30 class ProxyPixelTopology final : public PixelTopology {
31 public:
33 
34  LocalPoint localPosition(const MeasurementPoint &) const override;
36  LocalPoint localPosition(const MeasurementPoint &mp, const Topology::LocalTrackPred &trkPred) const override;
37 
38  LocalError localError(const MeasurementPoint &, const MeasurementError &) const override;
41  const MeasurementError &me,
42  const Topology::LocalTrackPred &trkPred) const override;
43 
44  MeasurementPoint measurementPosition(const LocalPoint &) const override;
46 
47  MeasurementError measurementError(const LocalPoint &lp, const LocalError &le) const override;
49  const LocalError &le,
50  const Topology::LocalTrackAngles &dir) const override;
51 
52  int channel(const LocalPoint &) const override;
53  int channel(const LocalPoint &lp, const Topology::LocalTrackAngles &dir) const override;
54 
55  std::pair<float, float> pixel(const LocalPoint &p) const override;
57  std::pair<float, float> pixel(const LocalPoint &p, const Topology::LocalTrackAngles &ltp) const override;
58 
59  std::pair<float, float> pitch() const override { return specificTopology().pitch(); }
60  int nrows() const override { return specificTopology().nrows(); }
61  int ncolumns() const override { return specificTopology().ncolumns(); }
62  int rocsY() const override { return specificTopology().rocsY(); }
63  int rocsX() const override { return specificTopology().rocsX(); }
64  int rowsperroc() const override { return specificTopology().rowsperroc(); }
65  int colsperroc() const override { return specificTopology().colsperroc(); }
66  bool bigpixelsX() const override { return specificTopology().bigpixelsX(); }
67  bool bigpixelsY() const override { return specificTopology().bigpixelsY(); }
68  float localX(const float mpX) const override;
69  float localX(const float mpX, const Topology::LocalTrackPred &trkPred) const override;
70  float localY(const float mpY) const override;
71  float localY(const float mpY, const Topology::LocalTrackPred &trkPred) const override;
72 
73  bool isItBigPixelInX(const int ixbin) const override { return specificTopology().isItBigPixelInX(ixbin); }
74  bool isItBigPixelInY(const int iybin) const override { return specificTopology().isItBigPixelInY(iybin); }
75  float pixelFractionInX(int ixbin) const override { return specificTopology().pixelFractionInX(ixbin); }
76  float pixelFractionInY(int iybin) const override { return specificTopology().pixelFractionInY(iybin); }
77  bool containsBigPixelInX(int ixmin, int ixmax) const override {
78  return specificTopology().containsBigPixelInX(ixmin, ixmax);
79  }
80  bool containsBigPixelInY(int iymin, int iymax) const override {
81  return specificTopology().containsBigPixelInY(iymin, iymax);
82  }
83 
84  bool isItEdgePixelInX(int ixbin) const override { return specificTopology().isItEdgePixelInX(ixbin); }
85  bool isItEdgePixelInY(int iybin) const override { return specificTopology().isItEdgePixelInY(iybin); }
86  bool isItEdgePixel(int ixbin, int iybin) const override { return specificTopology().isItEdgePixel(ixbin, iybin); }
87 
88  virtual const GeomDetType &type() const { return *theType; }
89 
90  virtual PixelGeomDetType const &specificType() const { return *theType; }
91 
92  const SurfaceDeformation *surfaceDeformation() const { return theSurfaceDeformation.operator->(); }
93  virtual void setSurfaceDeformation(const SurfaceDeformation *deformation);
94 
95  virtual const PixelTopology &specificTopology() const { return specificType().specificTopology(); }
96 
97 private:
101  const Topology::LocalTrackAngles &dir) const;
105 
108  std::unique_ptr<const SurfaceDeformation> theSurfaceDeformation;
109 };
110 
111 #endif
virtual void setSurfaceDeformation(const SurfaceDeformation *deformation)
virtual float pixelFractionInX(int ixbin) const =0
LocalPoint localPosition(const MeasurementPoint &) const override
std::pair< float, float > pitch() const override
PixelGeomDetType const * theType
int nrows() const override
virtual int ncolumns() const =0
LocalError localError(const MeasurementPoint &, const MeasurementError &) const override
SurfaceDeformation::Local2DVector positionCorrection(const LocalPoint &pos, const Topology::LocalTrackAngles &dir) const
virtual int rowsperroc() const =0
bool isItEdgePixelInY(int iybin) const override
virtual int nrows() const =0
float pixelFractionInY(int iybin) const override
int channel(const LocalPoint &) const override
bool containsBigPixelInX(int ixmin, int ixmax) const override
float pixelFractionInX(int ixbin) const override
virtual float pixelFractionInY(int iybin) const =0
virtual int rocsX() const =0
Definition: Plane.h:16
ProxyPixelTopology(PixelGeomDetType const *type, Plane *bp)
MeasurementError measurementError(const LocalPoint &lp, const LocalError &le) const override
virtual bool bigpixelsY() const =0
virtual bool isItEdgePixelInX(int ixbin) const =0
virtual bool containsBigPixelInY(int iymin, int iymax) const =0
bool bigpixelsX() const override
virtual bool isItBigPixelInX(int ixbin) const =0
virtual int colsperroc() const =0
float localY(const float mpY) const override
virtual bool isItBigPixelInY(int iybin) const =0
virtual bool containsBigPixelInX(int ixmin, int ixmax) const =0
int rowsperroc() const override
bool containsBigPixelInY(int iymin, int iymax) const override
bool isItEdgePixel(int ixbin, int iybin) const override
virtual bool bigpixelsX() const =0
virtual int rocsY() const =0
bool bigpixelsY() const override
int rocsY() const override
bool isItEdgePixelInX(int ixbin) const override
int ncolumns() const override
virtual const GeomDetType & type() const
virtual const PixelTopology & specificTopology() const
std::pair< float, float > pixel(const LocalPoint &p) const override
bool isItBigPixelInX(const int ixbin) const override
int colsperroc() const override
float localX(const float mpX) const override
std::unique_ptr< const SurfaceDeformation > theSurfaceDeformation
virtual bool isItEdgePixelInY(int iybin) const =0
virtual PixelGeomDetType const & specificType() const
bool isItBigPixelInY(const int iybin) const override
virtual std::pair< float, float > pitch() const =0
int rocsX() const override
const SurfaceDeformation * surfaceDeformation() const
virtual const TopologyType & specificTopology() const
MeasurementPoint measurementPosition(const LocalPoint &) const override
virtual bool isItEdgePixel(int ixbin, int iybin) const =0