Go to the documentation of this file.00001 #include "RecoVertex/GaussianSumVertexFit/interface/AdaptiveGsfVertexFitter.h"
00002 #include "RecoVertex/VertexTools/interface/DummyVertexSmoother.h"
00003 #include "RecoVertex/GaussianSumVertexFit/interface/GsfVertexSmoother.h"
00004 #include "RecoVertex/GaussianSumVertexFit/interface/MultiPerigeeLTSFactory.h"
00005 #include "RecoVertex/GaussianSumVertexFit/interface/GsfVertexTrackCompatibilityEstimator.h"
00006 #include "RecoVertex/VertexTools/interface/GeometricAnnealing.h"
00007
00008
00009
00010 AdaptiveGsfVertexFitter::AdaptiveGsfVertexFitter(const edm::ParameterSet& pSet,
00011 const LinearizationPointFinder & linP )
00012 {
00013
00014 bool limitComponents_ = pSet.getParameter<bool>("limitComponents");
00015
00016 DeepCopyPointerByClone<GsfVertexMerger> theMerger;
00017
00018 if (limitComponents_) {
00019 theMerger = new GsfVertexMerger(pSet.getParameter<edm::ParameterSet>("GsfMergerParameters"));
00020 }
00021
00022 theFitter = new AdaptiveVertexFitter(
00023 GeometricAnnealing(),
00024 linP,
00025 GsfVertexUpdator(limitComponents_, &*theMerger),
00026 GsfVertexTrackCompatibilityEstimator(),
00027 GsfVertexSmoother(limitComponents_, &*theMerger),
00028 MultiPerigeeLTSFactory() );
00029 theFitter->gsfIntermediarySmoothing(true);
00030
00042 theFitter->setParameters ( pSet.getParameter<double>("maxshift"),
00043 pSet.getParameter<double>("maxlpshift"),
00044 pSet.getParameter<int>("maxstep"),
00045 pSet.getParameter<double>("weightthreshold") );
00046
00047 }
00048
00049 AdaptiveGsfVertexFitter::AdaptiveGsfVertexFitter(const AdaptiveGsfVertexFitter & original)
00050 {
00051 theFitter = original.theFitter->clone();
00052 }
00053
00054 AdaptiveGsfVertexFitter::~AdaptiveGsfVertexFitter()
00055 {
00056 delete theFitter;
00057 }