File indexing completed on 2024-04-06 12:26:28
0001 #include "RecoLocalTracker/SiStripClusterizer/interface/StripClusterizerAlgorithmFactory.h"
0002
0003 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0004 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0005 #include "RecoLocalTracker/SiStripClusterizer/interface/StripClusterizerAlgorithm.h"
0006 #include "RecoLocalTracker/SiStripClusterizer/interface/ThreeThresholdAlgorithm.h"
0007 #include "RecoLocalTracker/SiStripClusterizer/interface/ClusterChargeCut.h"
0008
0009 std::unique_ptr<StripClusterizerAlgorithm> StripClusterizerAlgorithmFactory::create(edm::ConsumesCollector&& iC,
0010 const edm::ParameterSet& conf) {
0011 std::string algorithm = conf.getParameter<std::string>("Algorithm");
0012
0013 if (algorithm == "ThreeThresholdAlgorithm") {
0014 return std::unique_ptr<StripClusterizerAlgorithm>(new ThreeThresholdAlgorithm(
0015 iC.esConsumes<SiStripClusterizerConditions, SiStripClusterizerConditionsRcd>(
0016 edm::ESInputTag{"", conf.getParameter<std::string>("ConditionsLabel")}),
0017 conf.getParameter<double>("ChannelThreshold"),
0018 conf.getParameter<double>("SeedThreshold"),
0019 conf.getParameter<double>("ClusterThreshold"),
0020 conf.getParameter<unsigned>("MaxSequentialHoles"),
0021 conf.getParameter<unsigned>("MaxSequentialBad"),
0022 conf.getParameter<unsigned>("MaxAdjacentBad"),
0023
0024 conf.existsAs<unsigned>("MaxClusterSize") ? conf.getParameter<unsigned>("MaxClusterSize") : 3U * 256U,
0025 conf.getParameter<bool>("RemoveApvShots"),
0026 clusterChargeCut(conf)));
0027 }
0028
0029 if (algorithm == "OldThreeThresholdAlgorithm") {
0030 throw cms::Exception("[StripClusterizerAlgorithmFactory] obsolete") << algorithm << " Obsolete since 7_3_0";
0031 }
0032
0033 throw cms::Exception("[StripClusterizerAlgorithmFactory] Unregistered Algorithm")
0034 << algorithm << " is not a registered StripClusterizerAlgorithm";
0035 }
0036
0037 void StripClusterizerAlgorithmFactory::fillDescriptions(edm::ParameterSetDescription& clusterizer) {
0038 clusterizer.add<std::string>("Algorithm", "ThreeThresholdAlgorithm");
0039 clusterizer.add<std::string>("ConditionsLabel", "");
0040 clusterizer.add("ChannelThreshold", 2.0);
0041 clusterizer.add("SeedThreshold", 3.0);
0042 clusterizer.add("ClusterThreshold", 5.0);
0043 clusterizer.add("MaxSequentialHoles", 0U);
0044 clusterizer.add("MaxSequentialBad", 1U);
0045 clusterizer.add("MaxAdjacentBad", 0U);
0046 clusterizer.addOptional("MaxClusterSize", 3U * 256U);
0047 clusterizer.add("RemoveApvShots", true);
0048 clusterizer.add("setDetId", true);
0049 clusterizer.add("clusterChargeCut", getConfigurationDescription4CCC(CCC::kNone));
0050 }