File indexing completed on 2024-04-06 12:29:06
0001 #include "RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveFitter.h"
0002 #include "RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromFitter.h"
0003 #include "RecoVertex/AdaptiveVertexFit/interface/AdaptiveVertexFitter.h"
0004 #include "RecoVertex/VertexTools/interface/GeometricAnnealing.h"
0005 #include "RecoVertex/LinearizationPointFinders/interface/DefaultLinearizationPointFinder.h"
0006
0007
0008
0009 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexUpdator.h"
0010 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexTrackCompatibilityEstimator.h"
0011 #include "RecoVertex/ConfigurableVertexReco/interface/ConfigurableAnnealing.h"
0012 #include "RecoVertex/VertexTools/interface/DummyVertexSmoother.h"
0013 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexSmoother.h"
0014 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0015
0016 using namespace std;
0017
0018 namespace {
0019 edm::ParameterSet mydefaults() {
0020 edm::ParameterSet ret;
0021 ret.addParameter<string>("annealing", "geom");
0022 ret.addParameter<bool>("smoothing", true);
0023 ret.addParameter<double>("sigmacut", 3.0);
0024 ret.addParameter<double>("Tini", 256.0);
0025 ret.addParameter<double>("ratio", 0.25);
0026
0027 ret.addParameter<double>("maxshift", 0.0001);
0028 ret.addParameter<double>("maxlpshift", 0.1);
0029 ret.addParameter<int>("maxstep", 30);
0030 ret.addParameter<double>("weightthreshold", 0.001);
0031 return ret;
0032 }
0033 }
0034
0035 ConfigurableAdaptiveFitter::ConfigurableAdaptiveFitter() : AbstractConfFitter(AdaptiveVertexFitter()) {}
0036
0037 void ConfigurableAdaptiveFitter::configure(const edm::ParameterSet& n) {
0038 edm::ParameterSet m = n;
0039 m.augment(mydefaults());
0040 ConfigurableAnnealing ann(m);
0041 DefaultLinearizationPointFinder linpt;
0042
0043
0044
0045 KalmanVertexUpdator<5> updator;
0046 bool s = m.getParameter<bool>("smoothing");
0047 VertexSmoother<5>* smoother = nullptr;
0048 if (s) {
0049 smoother = new KalmanVertexSmoother();
0050 } else {
0051 smoother = new DummyVertexSmoother<5>();
0052 }
0053 KalmanVertexTrackCompatibilityEstimator<5> estimator;
0054
0055 if (theFitter)
0056 delete theFitter;
0057 AdaptiveVertexFitter* fitter = new AdaptiveVertexFitter(ann, linpt, updator, estimator, *smoother);
0058 delete smoother;
0059 fitter->setParameters(m);
0060 theFitter = fitter;
0061 }
0062
0063 ConfigurableAdaptiveFitter::~ConfigurableAdaptiveFitter() {
0064
0065
0066
0067
0068 }
0069
0070 ConfigurableAdaptiveFitter::ConfigurableAdaptiveFitter(const ConfigurableAdaptiveFitter& o) : AbstractConfFitter(o) {}
0071
0072 ConfigurableAdaptiveFitter* ConfigurableAdaptiveFitter::clone() const { return new ConfigurableAdaptiveFitter(*this); }
0073
0074 edm::ParameterSet ConfigurableAdaptiveFitter::defaults() const { return mydefaults(); }
0075
0076 #include "RecoVertex/ConfigurableVertexReco/interface/ConfFitterBuilder.h"
0077
0078 namespace {
0079 const ConfFitterBuilder<ConfigurableAdaptiveFitter> t("avf", "AdaptiveVertexFitter");
0080 }