Back to home page

Project CMSSW displayed by LXR

 
 

    


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         // existsAs test should be removed once MaxClusterSize is in the HLT config
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);  // eventually should be add()
0047   clusterizer.add("RemoveApvShots", true);
0048   clusterizer.add("setDetId", true);
0049   clusterizer.add("clusterChargeCut", getConfigurationDescription4CCC(CCC::kNone));
0050 }