|
||||
File indexing completed on 2024-09-07 04:38:03
0001 #ifndef RecoVertex_PixelVertexFinding_DivisiveVertexFinder_h 0002 #define RecoVertex_PixelVertexFinding_DivisiveVertexFinder_h 0003 /** \class DivisiveVertexFinder DivisiveVertexFinder.h RecoVertex/PixelVertexFinding/interface/DivisiveVertexFinder.h 0004 0005 Description: Fits a primary vertex in 1D (z) using the "divisive method" 0006 0007 Implementation: 0008 This class was ported from ORCA by me (Aaron). It was originally written by ... 0009 Find the PV candidates with a simple divisive method. 0010 Divide the luminosity region in several regions according 0011 to the track distance and for each of them make a PVCluster. 0012 Iteratively discard tracks and recover them in a new PVCluster. 0013 Return a sorted vector<Vertex> (aka VertexCollection) with the z coordinate of PV candidates 0014 \param ntkmin Minimum number of tracks required to form a cluster. 0015 \param useError physical distances or weighted distances. 0016 \param zsep Maximum distance between two adjacent tracks that belong 0017 to the same initial cluster. 0018 \param wei Compute the cluster "center" with an unweighted or a weighted 0019 average of the tracks. Weighted means weighted with the error 0020 of the data point. 0021 0022 \author Aaron Dominguez (UNL) 0023 */ 0024 #include <vector> 0025 #include "DataFormats/VertexReco/interface/Vertex.h" 0026 #include "DataFormats/VertexReco/interface/VertexFwd.h" 0027 #include "DataFormats/TrackReco/interface/Track.h" 0028 #include "DataFormats/TrackReco/interface/TrackFwd.h" 0029 //#include "CommonTools/Clustering1D/interface/DivisiveClusterizer1D.h" 0030 #include "RecoVertex/PixelVertexFinding/interface/DivisiveClusterizer1D.h" 0031 0032 #include "RecoVertex/PixelVertexFinding/interface/PVClusterComparer.h" 0033 0034 class DivisiveVertexFinder { 0035 public: 0036 DivisiveVertexFinder(double track_pt_min, 0037 double track_pt_max, 0038 double track_chi2_max, 0039 double track_prob_min, 0040 double zOffset = 5.0, 0041 int ntrkMin = 5, 0042 bool useError = true, 0043 double zSeparation = 0.05, 0044 bool wtAverage = true, 0045 int verbosity = 0); 0046 ~DivisiveVertexFinder(); 0047 0048 /// Run the divisive algorithm and return a vector of vertexes for the input track collection 0049 bool findVertexes(const reco::TrackRefVector &trks, // input 0050 reco::VertexCollection &vertexes); // output 0051 bool findVertexesAlt(const reco::TrackRefVector &trks, // input 0052 reco::VertexCollection &vertexes, 0053 const math::XYZPoint &bs); // output 0054 private: 0055 /// Cuts on vertex formation and other options 0056 double zOffset_, zSeparation_; 0057 int ntrkMin_; 0058 bool useError_, wtAverage_; 0059 0060 /// We use Wolfgang's templated class that implements the actual divisive method 0061 pixeltemp::DivisiveClusterizer1D<reco::Track> divmeth_; 0062 // DivisiveClusterizer1D< reco::Track > divmeth_; 0063 0064 // How loud should I be? 0065 int verbose_; 0066 0067 PVClusterComparer *pvComparer_; 0068 }; 0069 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |