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 
18 
19 
20 
22 
23 
24 public:
25 
26 struct track_t{
27  double z; // z-coordinate at point of closest approach to the beamline
28  double dz2; // square of the error of z(pca)
29  const reco::TransientTrack* tt; // a pointer to the Transient Track
30  double Z; // Z[i] for DA clustering
31  double pi; // track weight
32 };
33 
34 
35 struct vertex_t{
36  double z; // z 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 se;
43  // ---for Tc
44  double swE;
45  double Tc;
46 };
47 
48 
49 
50 
52 
53  std::vector< std::vector<reco::TransientTrack> >
54  clusterize(const std::vector<reco::TransientTrack> & tracks)const override;
55 
56 
57  std::vector< TransientVertex >
58  vertices(const std::vector<reco::TransientTrack> & tracks, const int verbosity=0)const;
59 
60 
61  std::vector<track_t> fill(const std::vector<reco::TransientTrack> & tracks)const;
62 
63  bool split(
64  double beta,
65  std::vector<track_t> & tks,
66  std::vector<vertex_t> & y,
67  double threshold
68  )const;
69 
70  double update(
71  double beta,
72  std::vector<track_t> & tks,
73  std::vector<vertex_t> & y
74  )const;
75 
76  double update(
77  double beta,
78  std::vector<track_t> & tks,
79  std::vector<vertex_t> & y,
80  double &
81  )const;
82 
83  void dump(const double beta, const std::vector<vertex_t> & y, const std::vector<track_t> & tks, const int verbosity=0)const;
84  bool merge(std::vector<vertex_t> &,int )const;
85  bool merge(std::vector<vertex_t> &,double & )const;
86  bool purge(std::vector<vertex_t> &, std::vector<track_t> & , double &, const double )const;
87 
88  void splitAll(
89  std::vector<vertex_t> & y
90  )const;
91 
92  double beta0(
93  const double betamax,
94  std::vector<track_t> & tks,
95  std::vector<vertex_t> & y
96  )const;
97 
98  double Eik(const track_t & t, const vertex_t & k)const;
99 
100 
101 private:
102  bool verbose_;
103  bool useTc_;
104  float vertexSize_;
107  float betamax_;
108  float betastop_;
109  double dzCutOff_;
110  double d0CutOff_;
111 };
112 
113 #endif
const double beta
std::vector< track_t > fill(const std::vector< reco::TransientTrack > &tracks) const
std::vector< std::vector< reco::TransientTrack > > clusterize(const std::vector< reco::TransientTrack > &tracks) const override
bool merge(std::vector< vertex_t > &, int) const
bool split(double beta, std::vector< track_t > &tks, std::vector< vertex_t > &y, double threshold) const
int k[5][pyjets_maxn]
DAClusterizerInZ(const edm::ParameterSet &conf)
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
void splitAll(std::vector< vertex_t > &y) const
double update(double beta, std::vector< track_t > &tks, std::vector< vertex_t > &y) const
double Eik(const track_t &t, const vertex_t &k) const
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
std::vector< TransientVertex > vertices(const std::vector< reco::TransientTrack > &tracks, const int verbosity=0) const