CMS 3D CMS Logo

DAClusterizerInZ.h
Go to the documentation of this file.
1 #ifndef DAClusterizerInZ_h
2 #define DAClusterizerInZ_h
3 
13 #include <vector>
17 
19 public:
20  struct track_t {
21  double z; // z-coordinate at point of closest approach to the beamline
22  double dz2; // square of the error of z(pca)
23  const reco::TransientTrack *tt; // a pointer to the Transient Track
24  double Z; // Z[i] for DA clustering
25  double pi; // track weight
26  };
27 
28  struct vertex_t {
29  double z; // z coordinate
30  double pk; // vertex weight for "constrained" clustering
31  // --- temporary numbers, used during update
32  double ei;
33  double sw;
34  double swz;
35  double se;
36  // ---for Tc
37  double swE;
38  double Tc;
39  };
40 
42 
43  std::vector<std::vector<reco::TransientTrack> > clusterize(
44  const std::vector<reco::TransientTrack> &tracks) const override;
45 
46  std::vector<TransientVertex> vertices(const std::vector<reco::TransientTrack> &tracks, const int verbosity = 0) const;
47 
48  std::vector<track_t> fill(const std::vector<reco::TransientTrack> &tracks) const;
49 
50  bool split(double beta, std::vector<track_t> &tks, std::vector<vertex_t> &y, double threshold) const;
51 
52  double update(double beta, std::vector<track_t> &tks, std::vector<vertex_t> &y) const;
53 
54  double update(double beta, std::vector<track_t> &tks, std::vector<vertex_t> &y, double &) const;
55 
56  void dump(const double beta,
57  const std::vector<vertex_t> &y,
58  const std::vector<track_t> &tks,
59  const int verbosity = 0) const;
60  bool merge(std::vector<vertex_t> &, int) const;
61  bool merge(std::vector<vertex_t> &, double &) const;
62  bool purge(std::vector<vertex_t> &, std::vector<track_t> &, double &, const double) const;
63 
64  void splitAll(std::vector<vertex_t> &y) const;
65 
66  double beta0(const double betamax, std::vector<track_t> &tks, std::vector<vertex_t> &y) const;
67 
68  double Eik(const track_t &t, const vertex_t &k) const;
69 
70 private:
71  bool verbose_;
72  bool useTc_;
73  float vertexSize_;
76  float betamax_;
77  float betastop_;
78  double dzCutOff_;
79  double d0CutOff_;
80 };
81 
82 #endif
bool split(double beta, std::vector< track_t > &tks, std::vector< vertex_t > &y, double threshold) const
double update(double beta, std::vector< track_t > &tks, std::vector< vertex_t > &y) const
std::vector< TransientVertex > vertices(const std::vector< reco::TransientTrack > &tracks, const int verbosity=0) const
void splitAll(std::vector< vertex_t > &y) const
std::vector< track_t > fill(const std::vector< reco::TransientTrack > &tracks) const
bool purge(std::vector< vertex_t > &, std::vector< track_t > &, double &, const double) const
double beta0(const double betamax, std::vector< track_t > &tks, std::vector< vertex_t > &y) const
const int verbosity
auto const & tracks
cannot be loose
std::vector< std::vector< reco::TransientTrack > > clusterize(const std::vector< reco::TransientTrack > &tracks) const override
DAClusterizerInZ(const edm::ParameterSet &conf)
bool merge(std::vector< vertex_t > &, int) const
const reco::TransientTrack * tt
void dump(const double beta, const std::vector< vertex_t > &y, const std::vector< track_t > &tks, const int verbosity=0) const
double Eik(const track_t &t, const vertex_t &k) const