File indexing completed on 2024-04-06 12:31:40
0001 #ifndef MaxCCCLostHitsTrajectoryFilter_H
0002 #define MaxCCCLostHitsTrajectoryFilter_H
0003
0004 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0005 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
0006 #include "TrackingTools/TrajectoryFiltering/interface/TrajectoryFilter.h"
0007 #include "RecoLocalTracker/SiStripClusterizer/interface/ClusterChargeCut.h"
0008
0009 class MaxCCCLostHitsTrajectoryFilter final : public TrajectoryFilter {
0010 public:
0011 explicit MaxCCCLostHitsTrajectoryFilter(int maxCCCHits = 0, float CCC_value = 0)
0012 : theMaxCCCLostHits_(maxCCCHits), minGoodStripCharge_(CCC_value) {}
0013
0014 explicit MaxCCCLostHitsTrajectoryFilter(const edm::ParameterSet& pset, edm::ConsumesCollector& iC)
0015 : theMaxCCCLostHits_(pset.getParameter<int>("maxCCCLostHits")),
0016 minGoodStripCharge_(clusterChargeCut(pset, "minGoodStripCharge")) {}
0017
0018 static void fillPSetDescription(edm::ParameterSetDescription& iDesc) {
0019 iDesc.add<int>("maxCCCLostHits", 9999);
0020 iDesc.add<edm::ParameterSetDescription>("minGoodStripCharge", getConfigurationDescription4CCC(CCC::kLoose));
0021 }
0022
0023 bool qualityFilter(const Trajectory& traj) const override { return TrajectoryFilter::qualityFilterIfNotContributing; }
0024 bool qualityFilter(const TempTrajectory& traj) const override {
0025 return TrajectoryFilter::qualityFilterIfNotContributing;
0026 }
0027
0028 bool toBeContinued(TempTrajectory& traj) const override { return TBC<TempTrajectory>(traj); }
0029 bool toBeContinued(Trajectory& traj) const override { return TBC<Trajectory>(traj); }
0030
0031 std::string name() const override { return "MaxCCCLostHitsTrajectoryFilter"; }
0032
0033 protected:
0034 template <class T>
0035 bool TBC(T& traj) const {
0036 bool ret = (traj.numberOfCCCBadHits(minGoodStripCharge_) <= theMaxCCCLostHits_);
0037 if (!ret)
0038 traj.setStopReason(StopReason::MAX_CCC_LOST_HITS);
0039 return ret;
0040 }
0041
0042 int theMaxCCCLostHits_;
0043 float minGoodStripCharge_;
0044 };
0045
0046 #endif