Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:22:12

0001 #include "L1Trigger/VertexFinder/interface/AlgoSettings.h"
0002 
0003 namespace l1tVertexFinder {
0004 
0005   ///=== Get configuration parameters
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         // Debug printout
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 }  // end namespace l1tVertexFinder