CMS 3D CMS Logo

GsfVertexMerger Class Reference

#include <RecoVertex/GaussianSumVertexFit/interface/GsfVertexMerger.h>

List of all members.

Public Member Functions

GsfVertexMergerclone () 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


Detailed Description

Definition at line 15 of file GsfVertexMerger.h.


Constructor & Destructor Documentation

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]

Definition at line 19 of file GsfVertexMerger.h.

00019 {}


Member Function Documentation

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 }


Member Data Documentation

unsigned int GsfVertexMerger::maxComponents [private]

Definition at line 31 of file GsfVertexMerger.h.

Referenced by GsfVertexMerger(), and merge().

DeepCopyPointerByClone< MultiGaussianStateMerger<3> > GsfVertexMerger::merger [private]

Definition at line 30 of file GsfVertexMerger.h.

Referenced by GsfVertexMerger(), and merge().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:23:19 2009 for CMSSW by  doxygen 1.5.4