File indexing completed on 2023-10-25 10:02:26
0001 #ifndef TkDoubleSensMeasurementDet_H
0002 #define TkDoubleSensMeasurementDet_H
0003
0004 #include "TrackingTools/MeasurementDet/interface/MeasurementDet.h"
0005 #include "TkPixelMeasurementDet.h"
0006
0007 #include "Geometry/CommonDetUnit/interface/StackGeomDet.h"
0008 #include "Geometry/CommonDetUnit/interface/DoubleSensGeomDet.h"
0009 #include "RecoLocalTracker/ClusterParameterEstimator/interface/PixelClusterParameterEstimator.h"
0010
0011 #include "FWCore/Utilities/interface/Visibility.h"
0012
0013 class TkDoubleSensMeasurementDet final : public MeasurementDet {
0014 public:
0015 TkDoubleSensMeasurementDet(const DoubleSensGeomDet* gdet, const PixelClusterParameterEstimator* cpe);
0016
0017 void init(const MeasurementDet* firstDet, const MeasurementDet* secondDet);
0018
0019 RecHitContainer recHits(const TrajectoryStateOnSurface&, const MeasurementTrackerEvent& data) const override;
0020
0021 const DoubleSensGeomDet& specificGeomDet() const { return static_cast<DoubleSensGeomDet const&>(fastGeomDet()); }
0022 typedef edm::Ref<edmNew::DetSetVector<Phase2TrackerCluster1D>, Phase2TrackerCluster1D> Phase2TrackerCluster1DRef;
0023
0024 typedef edmNew::DetSet<SiPixelCluster> detset;
0025 typedef detset::const_iterator const_iterator;
0026
0027 bool measurements(const TrajectoryStateOnSurface& stateOnThisDet,
0028 const MeasurementEstimator& est,
0029 const MeasurementTrackerEvent& data,
0030 TempMeasurements& result) const override;
0031
0032 const TkPixelMeasurementDet* firstDet() const { return theFirstDet; }
0033 const TkPixelMeasurementDet* secondDet() const { return theSecondDet; }
0034
0035
0036 bool isActive(const MeasurementTrackerEvent& data) const override {
0037 return firstDet()->isActive(data) && secondDet()->isActive(data);
0038 }
0039 bool isEmpty(const PxMeasurementDetSet& data) const {
0040 return data.empty(firstDet()->index()) || data.empty(secondDet()->index());
0041 }
0042
0043
0044 bool hasBadComponents(const TrajectoryStateOnSurface& tsos, const MeasurementTrackerEvent& data) const override {
0045 return (firstDet()->hasBadComponents(tsos, data) || secondDet()->hasBadComponents(tsos, data));
0046 }
0047
0048 private:
0049 const PixelClusterParameterEstimator* thePixelCPE;
0050 const TkPixelMeasurementDet* theFirstDet;
0051 const TkPixelMeasurementDet* theSecondDet;
0052 };
0053
0054 #endif