File indexing completed on 2024-04-06 12:31:40
0001 #ifndef MaxLostHitsTrajectoryFilter_H
0002 #define MaxLostHitsTrajectoryFilter_H
0003
0004 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0005 #include "TrackingTools/TrajectoryFiltering/interface/TrajectoryFilter.h"
0006
0007 class MaxLostHitsTrajectoryFilter final : public TrajectoryFilter {
0008 public:
0009 explicit MaxLostHitsTrajectoryFilter(int maxHits = 0) : theMaxLostHits(maxHits) {}
0010
0011 explicit MaxLostHitsTrajectoryFilter(const edm::ParameterSet& pset, edm::ConsumesCollector& iC)
0012 : theMaxLostHits(pset.getParameter<int>("maxLostHits")) {}
0013
0014 static void fillPSetDescription(edm::ParameterSetDescription& iDesc) { iDesc.add<int>("maxLostHits", 999); }
0015
0016 bool qualityFilter(const Trajectory& traj) const override { return TrajectoryFilter::qualityFilterIfNotContributing; }
0017 bool qualityFilter(const TempTrajectory& traj) const override {
0018 return TrajectoryFilter::qualityFilterIfNotContributing;
0019 }
0020
0021 bool toBeContinued(TempTrajectory& traj) const override { return TBC<TempTrajectory>(traj); }
0022 bool toBeContinued(Trajectory& traj) const override { return TBC<Trajectory>(traj); }
0023
0024 std::string name() const override { return "MaxLostHitsTrajectoryFilter"; }
0025
0026 protected:
0027 template <class T>
0028 bool TBC(T& traj) const {
0029 bool ret = traj.lostHits() <= theMaxLostHits;
0030 if (!ret)
0031 traj.setStopReason(StopReason::MAX_LOST_HITS);
0032 return ret;
0033 }
0034
0035 int theMaxLostHits;
0036 };
0037
0038 #endif