Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:31:40

0001 #ifndef LostHitsFractionTrajectoryFilter_H
0002 #define LostHitsFractionTrajectoryFilter_H
0003 
0004 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0005 #include "TrackingTools/TrajectoryFiltering/interface/TrajectoryFilter.h"
0006 
0007 class LostHitsFractionTrajectoryFilter final : public TrajectoryFilter {
0008 public:
0009   explicit LostHitsFractionTrajectoryFilter(float maxLostHitsFraction = 999., float constantValue = 1)
0010       : theMaxLostHitsFraction(maxLostHitsFraction), theConstantValue(constantValue) {}
0011 
0012   explicit LostHitsFractionTrajectoryFilter(const edm::ParameterSet& pset, edm::ConsumesCollector& iC) {
0013     theMaxLostHitsFraction = pset.getParameter<double>("maxLostHitsFraction");
0014     theConstantValue = pset.getParameter<double>("constantValueForLostHitsFractionFilter");
0015   }
0016 
0017   static void fillPSetDescription(edm::ParameterSetDescription& iDesc) {
0018     iDesc.add<double>("maxLostHitsFraction", .1);
0019     iDesc.add<double>("constantValueForLostHitsFractionFilter", 2.);
0020   }
0021 
0022   bool qualityFilter(const Trajectory& traj) const override { return TrajectoryFilter::qualityFilterIfNotContributing; }
0023   bool qualityFilter(const TempTrajectory& traj) const override {
0024     return TrajectoryFilter::qualityFilterIfNotContributing;
0025   }
0026 
0027   bool toBeContinued(TempTrajectory& traj) const override { return TBC<TempTrajectory>(traj); }
0028   bool toBeContinued(Trajectory& traj) const override { return TBC<Trajectory>(traj); }
0029 
0030   std::string name() const override { return "LostHitsFractionTrajectoryFilter"; }
0031 
0032   inline edm::ParameterSetDescription getFilledConfigurationDescription() {
0033     edm::ParameterSetDescription desc;
0034     desc.add<double>("maxLostHitsFraction", 999.);
0035     desc.add<double>("constantValueForLostHitsFractionFilter", 1.);
0036     return desc;
0037   }
0038 
0039 protected:
0040   template <class T>
0041   bool TBC(T& traj) const {
0042     bool ret = traj.lostHits() <= theConstantValue + theMaxLostHitsFraction * traj.foundHits();
0043     if (!ret)
0044       traj.setStopReason(StopReason::LOST_HIT_FRACTION);
0045     return ret;
0046   }
0047 
0048   float theMaxLostHitsFraction;
0049   float theConstantValue;
0050 };
0051 
0052 #endif