CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MeasurementDet.h
Go to the documentation of this file.
1 #ifndef MeasurementDet_H
2 #define MeasurementDet_H
3 
5 
9 
11 
13 class Propagator;
15 
17 public:
20 
21  MeasurementDet( const GeomDet* gdet) : theGeomDet(gdet) {}
22 
23  virtual RecHitContainer recHits( const TrajectoryStateOnSurface&) const = 0;
24 
25  // use a MeasurementEstimator to filter the hits (same algo as below..)
26  // default as above
27  virtual bool recHits( const TrajectoryStateOnSurface& stateOnThisDet, const MeasurementEstimator&,
28  RecHitContainer & result, std::vector<float> &) const {
29  result = recHits(stateOnThisDet);
30  return !result.empty();
31  }
32 
39  std::vector<TrajectoryMeasurement>
40  fastMeasurements( const TrajectoryStateOnSurface& stateOnThisDet,
42  const Propagator&,
43  const MeasurementEstimator& est) const {
44 
45  TempMeasurements tmps;
46  measurements(stateOnThisDet, est, tmps);
47  std::vector<TrajectoryMeasurement> result;
48  result.reserve(tmps.size());
49  int index[tmps.size()]; tmps.sortIndex(index);
50  for (std::size_t i=0; i!=tmps.size(); ++i) {
51  auto j=index[i];
52  result.emplace_back(stateOnThisDet,std::move(tmps.hits[j]),tmps.distances[j]);
53  }
54  return result;
55  }
56 
57  // return false if missing ( if inactive is true and one hit)
58  virtual bool measurements( const TrajectoryStateOnSurface& stateOnThisDet,
59  const MeasurementEstimator& est,
60  TempMeasurements & result) const =0;
61 
62 
63  const GeomDet& fastGeomDet() const { return *theGeomDet;}
64  virtual const GeomDet& geomDet() const { return *theGeomDet;}
65 
66  const Surface& surface() const {return geomDet().surface();}
67 
68  const Surface::PositionType& position() const {return geomDet().position();}
69 
70  virtual bool isActive() const=0;
71  virtual bool hasBadComponents(const TrajectoryStateOnSurface &tsos) const=0;
72 
73  private:
74 
76 
77 };
78 
79 
80 #endif
const GeomDet * theGeomDet
int i
Definition: DBlmapReader.cc:9
tracking::TempMeasurements TempMeasurements
std::size_t size() const
virtual bool recHits(const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &, RecHitContainer &result, std::vector< float > &) const
virtual bool isActive() const =0
MeasurementDet(const GeomDet *gdet)
TransientTrackingRecHit::ConstRecHitContainer RecHitContainer
virtual const GeomDet & geomDet() const
const Surface & surface() const
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:35
std::vector< TrajectoryMeasurement > fastMeasurements(const TrajectoryStateOnSurface &stateOnThisDet, const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &est) const
const GeomDet & fastGeomDet() const
virtual RecHitContainer recHits(const TrajectoryStateOnSurface &) const =0
const Surface::PositionType & position() const
The position (origin of the R.F.)
Definition: GeomDet.h:41
tuple result
Definition: query.py:137
int j
Definition: DBlmapReader.cc:9
virtual bool hasBadComponents(const TrajectoryStateOnSurface &tsos) const =0
const Surface::PositionType & position() const
std::vector< ConstRecHitPointer > ConstRecHitContainer
void sortIndex(int *index) const
virtual bool measurements(const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &est, TempMeasurements &result) const =0