#include <RecoVertex/GaussianSumVertexFit/interface/GsfVertexMerger.h>
Public Member Functions | |
GsfVertexMerger * | clone () const |
GsfVertexMerger (const edm::ParameterSet &pSet) | |
VertexState | merge (const VertexState &vertex) const |
CachingVertex< 5 > | merge (const CachingVertex< 5 > &vertex) const |
~GsfVertexMerger () | |
Private Attributes | |
unsigned int | maxComponents |
DeepCopyPointerByClone < MultiGaussianStateMerger< 3 > > | merger |
Definition at line 15 of file GsfVertexMerger.h.
GsfVertexMerger::GsfVertexMerger | ( | const edm::ParameterSet & | pSet | ) |
Definition at line 14 of file GsfVertexMerger.cc.
References edm::ParameterSet::getParameter(), maxComponents, and merger.
Referenced by clone().
00015 { 00016 00017 maxComponents = pSet.getParameter<int>("maxNbrComponents"); 00018 std::string mergerName = pSet.getParameter<string>("merger"); 00019 std::string distanceName = pSet.getParameter<string>("distance"); 00020 00021 if ( mergerName=="CloseComponentsMerger" ) { 00022 DistanceBetweenComponents<3>* distance; 00023 00024 if ( distanceName=="KullbackLeiblerDistance" ) 00025 distance = new KullbackLeiblerDistance<3>(); 00026 // else if ( distanceName=="MahalanobisDistance" ) 00027 // distance = new MahalanobisDistance(); 00028 else 00029 throw VertexException("GsfVertexMerger: Distance type "+distanceName+" unknown. Check distance parameter in GsfMergerParameters PSet"); 00030 00031 merger = new CloseComponentsMerger<3>(maxComponents, distance); 00032 delete distance; 00033 } 00034 // else if ( mergerName=="LargestWeightsStateMerger" ) 00035 // merger = new LargestWeightsStateMerger(maxComponents); 00036 else 00037 throw VertexException("GsfVertexMerger: Merger type "+mergerName+" unknown. Check merger parameter in GsfMergerParameters PSet"); 00038 00039 // else if ( mergerName=="KeepingNonZeroWeightsMerger" ) 00040 // merger = new KeepingNonZeroWeightsMerger(); 00041 00042 // std::string mergerName = "test"; 00043 // edm::ESHandle<MultiGaussianStateMerger> mergerProducer; 00044 // iRecord.get(mergerName,mergerProducer); 00045 // merger = (MultiGaussianStateMerger *) mergerProducer.product(); 00046 00047 }
GsfVertexMerger::~GsfVertexMerger | ( | ) | [inline] |
GsfVertexMerger* GsfVertexMerger::clone | ( | void | ) | const [inline] |
Definition at line 25 of file GsfVertexMerger.h.
References GsfVertexMerger().
Referenced by GsfVertexUpdator::GsfVertexUpdator().
00025 { 00026 return new GsfVertexMerger(* this); 00027 }
VertexState GsfVertexMerger::merge | ( | const VertexState & | vertex | ) | const |
Definition at line 67 of file GsfVertexMerger.cc.
References VertexState::components(), maxComponents, merger, GaussianStateConversions::multiGaussianStateFromVertex(), and GaussianStateConversions::vertexFromMultiGaussianState().
00068 { 00069 using namespace GaussianStateConversions; 00070 00071 if (oldVertex.components().size() <= maxComponents) 00072 return oldVertex; 00073 00074 MultiGaussianState<3> multiGaussianState(multiGaussianStateFromVertex(oldVertex)); 00075 MultiGaussianState<3> finalState(merger->merge(multiGaussianState)); 00076 return vertexFromMultiGaussianState(finalState); 00077 }
CachingVertex< 5 > GsfVertexMerger::merge | ( | const CachingVertex< 5 > & | vertex | ) | const |
Definition at line 49 of file GsfVertexMerger.cc.
References VertexState::components(), CachingVertex< N >::hasPrior(), maxComponents, CachingVertex< N >::priorError(), CachingVertex< N >::priorPosition(), CachingVertex< N >::totalChiSquared(), CachingVertex< N >::tracks(), CachingVertex< N >::vertexState(), VertexState::weight(), and VertexState::weightTimesPosition().
00050 { 00051 if (oldVertex.vertexState().components().size() <= maxComponents) 00052 return oldVertex; 00053 00054 VertexState newVertexState = merge(oldVertex.vertexState()); 00055 00056 if (oldVertex.hasPrior()) { 00057 return CachingVertex<5>(oldVertex.priorPosition(), oldVertex.priorError(), 00058 newVertexState.weightTimesPosition(), newVertexState.weight(), 00059 oldVertex.tracks(), oldVertex.totalChiSquared()); 00060 } else { 00061 return CachingVertex<5>(newVertexState, oldVertex.tracks(), 00062 oldVertex.totalChiSquared()); 00063 } 00064 }
unsigned int GsfVertexMerger::maxComponents [private] |
DeepCopyPointerByClone< MultiGaussianStateMerger<3> > GsfVertexMerger::merger [private] |