CMS 3D CMS Logo

PixelBlade.h
Go to the documentation of this file.
1 #ifndef TkDetLayers_PixelBlade_h
2 #define TkDetLayers_PixelBlade_h
3 
4 #include "BoundDiskSector.h"
6 
8 #include "SubLayerCrossings.h"
9 
10 
14 #pragma GCC visibility push(hidden)
15 class PixelBlade final : public GeometricSearchDet {
16  public:
17 
18  PixelBlade(std::vector<const GeomDet*>& frontDets,
19  std::vector<const GeomDet*>& backDets ) __attribute__ ((cold));
20 
21  ~PixelBlade() override __attribute__ ((cold));
22 
23  // GeometricSearchDet interface
24  const BoundSurface& surface() const override {return *theDiskSector;}
25 
26  const std::vector<const GeomDet*>& basicComponents() const override {return theDets;}
27 
28  const std::vector<const GeometricSearchDet*>& components() const override __attribute__ ((cold));
29 
30  std::pair<bool, TrajectoryStateOnSurface>
32  const MeasurementEstimator&) const override __attribute__ ((cold));
33 
34  void
36  const Propagator& prop,
37  const MeasurementEstimator& est,
38  std::vector<DetGroup> & result) const override __attribute__ ((hot));
39 
40  //Extension of the interface
41  virtual const BoundDiskSector& specificSurface() const {return *theDiskSector;}
42 
43  private:
44  // private methods for the implementation of groupedCompatibleDets()
45 
47  PropagationDirection propDir) const __attribute__ ((hot));
48 
49  bool addClosest( const TrajectoryStateOnSurface& tsos,
50  const Propagator& prop,
51  const MeasurementEstimator& est,
52  const SubLayerCrossing& crossing,
53  std::vector<DetGroup>& result) const __attribute__ ((hot));
54 
55  float computeWindowSize( const GeomDet* det,
56  const TrajectoryStateOnSurface& tsos,
57  const MeasurementEstimator& est) const;
58 
59 
60  void searchNeighbors( const TrajectoryStateOnSurface& tsos,
61  const Propagator& prop,
62  const MeasurementEstimator& est,
63  const SubLayerCrossing& crossing,
64  float window,
65  std::vector<DetGroup>& result,
66  bool checkClosest) const __attribute__ ((hot));
67 
68  bool overlap( const GlobalPoint& gpos, const GeomDet& det, float phiWin) const;
69 
70  // This 2 find methods should be substituted with the use
71  // of a GeneralBinFinderInR
72 
73  int findBin( float R,int layer) const;
74 
75  GlobalPoint findPosition(int index,int diskSectorIndex) const ;
76 
77  const std::vector<const GeomDet*>& subBlade( int ind) const {
78  return (ind==0 ? theFrontDets : theBackDets);
79  }
80 
81 
82 
83  private:
84  std::vector<const GeomDet*> theDets;
85  std::vector<const GeomDet*> theFrontDets;
86  std::vector<const GeomDet*> theBackDets;
87 
91 };
92 
93 
94 #pragma GCC visibility pop
95 #endif
ReferenceCountingPointer< BoundDiskSector > theFrontDiskSector
Definition: PixelBlade.h:89
const std::vector< const GeomDet * > & basicComponents() const override
Definition: PixelBlade.h:26
ReferenceCountingPointer< BoundDiskSector > theBackDiskSector
Definition: PixelBlade.h:90
bool addClosest(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, std::vector< DetGroup > &result) const __attribute__((hot))
Definition: PixelBlade.cc:159
float __attribute__((vector_size(8))) cms_float32x2_t
Definition: ExtVec.h:12
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const
Definition: PixelBlade.cc:172
PropagationDirection
std::vector< const GeomDet * > theFrontDets
Definition: PixelBlade.h:85
GlobalPoint findPosition(int index, int diskSectorIndex) const
Definition: PixelBlade.cc:267
std::vector< const GeomDet * > theBackDets
Definition: PixelBlade.h:86
const std::vector< const GeomDet * > & subBlade(int ind) const
Definition: PixelBlade.h:77
bool overlap(const GlobalPoint &gpos, const GeomDet &det, float phiWin) const
Definition: PixelBlade.cc:221
int findBin(float R, int layer) const
Definition: PixelBlade.cc:248
std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &ts, const Propagator &, const MeasurementEstimator &) const override __attribute__((cold))
Definition: PixelBlade.cc:67
~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:642
PixelBlade(std::vector< const GeomDet * > &frontDets, std::vector< const GeomDet * > &backDets) __attribute__((cold))
Definition: PixelBlade.cc:20
virtual const BoundDiskSector & specificSurface() const
Definition: PixelBlade.h:41
const BoundSurface & surface() const override
The surface of the GeometricSearchDet.
Definition: PixelBlade.h:24
void groupedCompatibleDetsV(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const override __attribute__((hot))
Definition: PixelBlade.cc:76
std::vector< const GeomDet * > theDets
Definition: PixelBlade.h:84
const std::vector< const GeometricSearchDet * > & components() const override __attribute__((cold))
Returns basic components, if any.
Definition: PixelBlade.cc:62
ReferenceCountingPointer< BoundDiskSector > theDiskSector
Definition: PixelBlade.h:88
SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface &tsos, PropagationDirection propDir) const __attribute__((hot))
Definition: PixelBlade.cc:116
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:183