CMS 3D CMS Logo

DAClusterizerInZT.h
Go to the documentation of this file.
1 #ifndef RecoVertex_PrimaryVertexProducer_DAClusterizerInZT_h
2 #define RecoVertex_PrimaryVertexProducer_DAClusterizerInZT_h
3 
13 #include <vector>
17 
19 
20 public:
21 
22 struct track_t{
23  double z; // z-coordinate at point of closest approach to the beamline
24  double t; // t-coordinate at point of closest approach to the beamline
25  double dz2; // square of the error of z(pca)
26  double dtz; // covariance of z-t
27  double dt2; // square of the error of t(pca)
28  const reco::TransientTrack* tt; // a pointer to the Transient Track
29  double zi; // Z[i] for DA clustering
30  double pi; // track weight
31 };
32 
33 
34 struct vertex_t{
35  double z; // z coordinate
36  double t; // t coordinate
37  double pk; // vertex weight for "constrained" clustering
38  // --- temporary numbers, used during update
39  double ei;
40  double sw;
41  double swz;
42  double swt;
43  double se;
44  // ---for Tc
45  double swE;
46  double tC;
47 };
48 
49 
50 
51 
53 
54  std::vector< std::vector<reco::TransientTrack> >
55  clusterize(const std::vector<reco::TransientTrack> & tracks)const;
56 
57 
58  std::vector< TransientVertex >
59  vertices(const std::vector<reco::TransientTrack> & tracks, const int verbosity=0)const;
60 
61 
62  std::vector<track_t> fill(const std::vector<reco::TransientTrack> & tracks)const;
63 
64  bool split( double beta,
65  std::vector<track_t> & tks,
66  std::vector<vertex_t> & y,
67  double threshold ) const;
68 
69  double update(double beta,
70  std::vector<track_t> & tks,
71  std::vector<vertex_t> & y,
72  const double rho0 = 0.0 )const;
73 
74  void dump(const double beta, const std::vector<vertex_t> & y, const std::vector<track_t> & tks, const int verbosity=0) const;
75  bool merge(std::vector<vertex_t> &,int ) const;
76  bool merge(std::vector<vertex_t> &,double & ) const;
77  bool purge(std::vector<vertex_t> &, std::vector<track_t> & , double &, const double ) const;
78 
79  void splitAll( std::vector<vertex_t> & y ) const;
80 
81  double beta0(const double betamax,
82  std::vector<track_t> & tks,
83  std::vector<vertex_t> & y )const;
84 
85  double e_ik(const track_t & t, const vertex_t & k)const;
86 
87 
88 private:
89  bool verbose_;
90  bool useTc_;
91  float vertexSize_;
95  float betamax_;
96  float betastop_;
97  double dzCutOff_;
98  double d0CutOff_;
99  double dtCutOff_; // for when the beamspot has time
100 };
101 
102 #endif
std::vector< std::vector< reco::TransientTrack > > clusterize(const std::vector< reco::TransientTrack > &tracks) const
const double beta
const reco::TransientTrack * tt
double update(double beta, std::vector< track_t > &tks, std::vector< vertex_t > &y, const double rho0=0.0) const
std::vector< TransientVertex > vertices(const std::vector< reco::TransientTrack > &tracks, const int verbosity=0) const
double e_ik(const track_t &t, const vertex_t &k) const
void dump(const double beta, const std::vector< vertex_t > &y, const std::vector< track_t > &tks, const int verbosity=0) const
void splitAll(std::vector< vertex_t > &y) const
bool split(double beta, std::vector< track_t > &tks, std::vector< vertex_t > &y, double threshold) const
std::vector< track_t > fill(const std::vector< reco::TransientTrack > &tracks) const
int k[5][pyjets_maxn]
bool merge(std::vector< vertex_t > &, int) const
DAClusterizerInZT(const edm::ParameterSet &conf)
double beta0(const double betamax, std::vector< track_t > &tks, std::vector< vertex_t > &y) const
bool purge(std::vector< vertex_t > &, std::vector< track_t > &, double &, const double) const