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 float theMaxShift = pSet.getParameter<double>("maxDistance"); //0.01 00014 int theMaxStep = pSet.getParameter<int>("maxNbrOfIterations"); //10 00015 bool limitComponents_ = pSet.getParameter<bool>("limitComponents"); 00016 bool useSmoothing = pSet.getParameter<bool>("smoothTracks"); 00017 00018 DeepCopyPointerByClone<GsfVertexMerger> theMerger; 00019 00020 if (limitComponents_) { 00021 edm::ParameterSet mergerPSet = pSet.getParameter<edm::ParameterSet>("GsfMergerParameters"); 00022 theMerger = new GsfVertexMerger(mergerPSet); 00023 } 00024 00025 theFitter = new AdaptiveVertexFitter( 00026 GeometricAnnealing(), 00027 linP, 00028 GsfVertexUpdator(limitComponents_, &*theMerger), 00029 GsfVertexTrackCompatibilityEstimator(), 00030 GsfVertexSmoother(limitComponents_, &*theMerger), 00031 MultiPerigeeLTSFactory() ); 00032 00033 // theFitter->setMaximumDistance(theMaxShift); 00034 // theFitter->setMaximumNumberOfIterations(theMaxStep); 00035 } 00036 00037 AdaptiveGsfVertexFitter::AdaptiveGsfVertexFitter(const AdaptiveGsfVertexFitter & original) 00038 { 00039 theFitter = original.theFitter->clone(); 00040 } 00041 00042 AdaptiveGsfVertexFitter::~AdaptiveGsfVertexFitter() 00043 { 00044 delete theFitter; 00045 }