File indexing completed on 2024-04-06 12:22:12
0001 #include "L1Trigger/VertexFinder/interface/AlgoSettings.h"
0002
0003 namespace l1tVertexFinder {
0004
0005
0006
0007 AlgoSettings::AlgoSettings(const edm::ParameterSet& iConfig)
0008 : vertex_(iConfig.getParameter<edm::ParameterSet>("VertexReconstruction")),
0009 vx_distance_(vertex_.getParameter<double>("VertexDistance")),
0010 vx_resolution_(vertex_.getParameter<double>("VertexResolution")),
0011 vx_distanceType_(vertex_.getParameter<unsigned int>("DistanceType")),
0012 vx_minTracks_(vertex_.getParameter<unsigned int>("MinTracks")),
0013 vx_weightedmean_(vertex_.getParameter<unsigned int>("WeightedMean")),
0014 vx_chi2cut_(vertex_.getParameter<double>("AVR_chi2cut")),
0015 vx_DoQualityCuts_(vertex_.getParameter<bool>("EM_DoQualityCuts")),
0016 vx_DoPtComp_(vertex_.getParameter<bool>("FH_DoPtComp")),
0017 vx_DoTightChi2_(vertex_.getParameter<bool>("FH_DoTightChi2")),
0018 vx_histogram_parameters_(vertex_.getParameter<std::vector<double> >("FH_HistogramParameters")),
0019 vx_nvtx_(vertex_.getParameter<unsigned int>("FH_NVtx")),
0020 vx_width_(vertex_.getParameter<double>("FH_VertexWidth")),
0021 vx_windowSize_(vertex_.getParameter<unsigned int>("FH_WindowSize")),
0022 vx_TrackMinPt_(vertex_.getParameter<double>("VxMinTrackPt")),
0023 vx_TrackMaxPt_(vertex_.getParameter<double>("VxMaxTrackPt")),
0024 vx_TrackMaxPtBehavior_(vertex_.getParameter<int>("VxMaxTrackPtBehavior")),
0025 vx_TrackMaxChi2_(vertex_.getParameter<double>("VxMaxTrackChi2")),
0026 vx_NStubMin_(vertex_.getParameter<unsigned int>("VxMinNStub")),
0027 vx_NStubPSMin_(vertex_.getParameter<unsigned int>("VxMinNStubPS")),
0028 vx_dbscan_pt_(vertex_.getParameter<double>("DBSCANPtThreshold")),
0029 vx_dbscan_mintracks_(vertex_.getParameter<unsigned int>("DBSCANMinDensityTracks")),
0030 vx_kmeans_iterations_(vertex_.getParameter<unsigned int>("KmeansIterations")),
0031 vx_kmeans_nclusters_(vertex_.getParameter<unsigned int>("KmeansNumClusters")),
0032 vx_trkw_graph_(vertex_.getParameter<edm::FileInPath>("TrackWeightGraph")),
0033 vx_pattrec_graph_(vertex_.getParameter<edm::FileInPath>("PatternRecGraph")),
0034
0035 debug_(iConfig.getParameter<unsigned int>("debug")) {
0036 const std::string algoName(vertex_.getParameter<std::string>("Algorithm"));
0037 const auto algoMapIt = algoNameMap.find(algoName);
0038 if (algoMapIt != algoNameMap.end())
0039 vx_algo_ = algoMapIt->second;
0040 else {
0041 std::ostringstream validAlgoNames;
0042 for (auto it = algoNameMap.begin(); it != algoNameMap.end(); it++) {
0043 validAlgoNames << '"' << it->first << '"';
0044 if (it != (--algoNameMap.end()))
0045 validAlgoNames << ", ";
0046 }
0047 throw cms::Exception("Invalid algo name '" + algoName +
0048 "' specified for L1T vertex producer. Valid algo names are: " + validAlgoNames.str());
0049 }
0050
0051 const auto algoPrecisionMapIt = algoPrecisionMap.find(vx_algo_);
0052 if (algoPrecisionMapIt != algoPrecisionMap.end()) {
0053 vx_precision_ = algoPrecisionMapIt->second;
0054 } else {
0055 throw cms::Exception("Unknown precision {Simulation, Emulation} for algo name " + algoName);
0056 }
0057 }
0058
0059 const std::map<std::string, Algorithm> AlgoSettings::algoNameMap = {
0060 {"fastHisto", Algorithm::fastHisto},
0061 {"fastHistoEmulation", Algorithm::fastHistoEmulation},
0062 {"fastHistoLooseAssociation", Algorithm::fastHistoLooseAssociation},
0063 {"GapClustering", Algorithm::GapClustering},
0064 {"agglomerative", Algorithm::agglomerativeHierarchical},
0065 {"DBSCAN", Algorithm::DBSCAN},
0066 {"PVR", Algorithm::PVR},
0067 {"adaptive", Algorithm::adaptiveVertexReconstruction},
0068 {"HPV", Algorithm::HPV},
0069 {"K-means", Algorithm::Kmeans},
0070 {"NNEmulation", Algorithm::NNEmulation}};
0071
0072 const std::map<Algorithm, Precision> AlgoSettings::algoPrecisionMap = {
0073 {Algorithm::fastHisto, Precision::Simulation},
0074 {Algorithm::fastHistoEmulation, Precision::Emulation},
0075 {Algorithm::fastHistoLooseAssociation, Precision::Simulation},
0076 {Algorithm::GapClustering, Precision::Simulation},
0077 {Algorithm::agglomerativeHierarchical, Precision::Simulation},
0078 {Algorithm::DBSCAN, Precision::Simulation},
0079 {Algorithm::PVR, Precision::Simulation},
0080 {Algorithm::adaptiveVertexReconstruction, Precision::Simulation},
0081 {Algorithm::HPV, Precision::Simulation},
0082 {Algorithm::Kmeans, Precision::Simulation},
0083 {Algorithm::NNEmulation, Precision::Emulation}};
0084
0085 }