CMS 3D CMS Logo

PixelBlade.h
Go to the documentation of this file.
1 #ifndef TkDetLayers_PixelBlade_h
2 #define TkDetLayers_PixelBlade_h
3 
6 
8 #include "SubLayerCrossings.h"
9 
13 #pragma GCC visibility push(hidden)
14 class PixelBlade final : public GeometricSearchDet {
15 public:
16  PixelBlade(std::vector<const GeomDet*>& frontDets, std::vector<const GeomDet*>& backDets) __attribute__((cold));
17 
18  ~PixelBlade() override __attribute__((cold));
19 
20  // GeometricSearchDet interface
21  const BoundSurface& surface() const override { return *theDiskSector; }
22 
23  const std::vector<const GeomDet*>& basicComponents() const override { return theDets; }
24 
25  const std::vector<const GeometricSearchDet*>& components() const override __attribute__((cold));
26 
30  __attribute__((cold));
31 
33  const Propagator& prop,
35  std::vector<DetGroup>& result) const override __attribute__((hot));
36 
37  //Extension of the interface
38  virtual const BoundDiskSector& specificSurface() const { return *theDiskSector; }
39 
40 private:
41  // private methods for the implementation of groupedCompatibleDets()
42 
44  __attribute__((hot));
45 
46  bool addClosest(const TrajectoryStateOnSurface& tsos,
47  const Propagator& prop,
48  const MeasurementEstimator& est,
49  const SubLayerCrossing& crossing,
50  std::vector<DetGroup>& result) const __attribute__((hot));
51 
52  float computeWindowSize(const GeomDet* det,
53  const TrajectoryStateOnSurface& tsos,
54  const MeasurementEstimator& est) const;
55 
57  const Propagator& prop,
58  const MeasurementEstimator& est,
59  const SubLayerCrossing& crossing,
60  float window,
61  std::vector<DetGroup>& result,
62  bool checkClosest) const __attribute__((hot));
63 
64  bool overlap(const GlobalPoint& gpos, const GeomDet& det, float phiWin) const;
65 
66  // This 2 find methods should be substituted with the use
67  // of a GeneralBinFinderInR
68 
69  int findBin(float R, int layer) const;
70 
71  GlobalPoint findPosition(int index, int diskSectorIndex) const;
72 
73  const std::vector<const GeomDet*>& subBlade(int ind) const { return (ind == 0 ? theFrontDets : theBackDets); }
74 
75 private:
76  std::vector<const GeomDet*> theDets;
77  std::vector<const GeomDet*> theFrontDets;
78  std::vector<const GeomDet*> theBackDets;
79 
83 };
84 
85 #pragma GCC visibility pop
86 #endif
ReferenceCountingPointer< BoundDiskSector > theFrontDiskSector
Definition: PixelBlade.h:81
int findBin(float R, int layer) const
Definition: PixelBlade.cc:214
ReferenceCountingPointer< BoundDiskSector > theBackDiskSector
Definition: PixelBlade.h:82
void groupedCompatibleDetsV(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const override __attribute__((hot))
Definition: PixelBlade.cc:59
bool addClosest(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, std::vector< DetGroup > &result) const __attribute__((hot))
Definition: PixelBlade.cc:136
std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &ts, const Propagator &, const MeasurementEstimator &) const override __attribute__((cold))
Definition: PixelBlade.cc:52
PropagationDirection
std::vector< const GeomDet * > theFrontDets
Definition: PixelBlade.h:77
std::vector< const GeomDet * > theBackDets
Definition: PixelBlade.h:78
GlobalPoint findPosition(int index, int diskSectorIndex) const
Definition: PixelBlade.cc:230
constexpr std::array< uint8_t, layerIndexSize > layer
const std::vector< const GeometricSearchDet * > & components() const override __attribute__((cold))
Returns basic components, if any.
Definition: PixelBlade.cc:48
float __attribute__((vector_size(8))) cms_float32x2_t
Definition: ExtVec.h:12
~PixelBlade() override __attribute__((cold))
Definition: PixelBlade.cc:18
def window(xmin, xmax, ymin, ymax, x=0, y=0, width=100, height=100, xlogbase=None, ylogbase=None, minusInfinity=-1000, flipx=False, flipy=True)
Definition: svgfig.py:643
bool overlap(const GlobalPoint &gpos, const GeomDet &det, float phiWin) const
Definition: PixelBlade.cc:189
std::vector< const GeomDet * > theDets
Definition: PixelBlade.h:76
const std::vector< const GeomDet * > & subBlade(int ind) const
Definition: PixelBlade.h:73
PixelBlade(std::vector< const GeomDet *> &frontDets, std::vector< const GeomDet *> &backDets) __attribute__((cold))
Definition: PixelBlade.cc:20
const std::vector< const GeomDet * > & basicComponents() const override
Definition: PixelBlade.h:23
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const
Definition: PixelBlade.cc:145
ReferenceCountingPointer< BoundDiskSector > theDiskSector
Definition: PixelBlade.h:80
virtual const BoundDiskSector & specificSurface() const
Definition: PixelBlade.h:38
SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface &tsos, PropagationDirection propDir) const __attribute__((hot))
Definition: PixelBlade.cc:97
void searchNeighbors(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, bool checkClosest) const __attribute__((hot))
Definition: PixelBlade.cc:151
const BoundSurface & surface() const override
The surface of the GeometricSearchDet.
Definition: PixelBlade.h:21