Back to home page

Project CMSSW displayed by LXR

 
 

    


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 // #include "RecoVertex/LinearizationPointFinders/interface/GenericLinearizationPointFinder.h"
0007 // #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexFitter.h"
0008 // #include "RecoVertex/LinearizationPointFinders/interface/ZeroLinearizationPointFinder.h"
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 }  // namespace
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   // ZeroLinearizationPointFinder linpt;
0043   // KalmanVertexFitter kvf;
0044   // GenericLinearizationPointFinder linpt ( kvf );
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   if (theFitter) delete theFitter;
0066   theFitter=0;
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 }