Fork me on GitHub

source: git/modules/VertexFinderDA4D.h@ 95b4e9f

ImprovedOutputFile Timing dual_readout llp
Last change on this file since 95b4e9f was 95b4e9f, checked in by Pavel Demin <pavel.demin@…>, 8 years ago

reorganize includes in vertexing modules

  • Property mode set to 100644
File size: 2.8 KB
RevLine 
[29d662e]1#ifndef VertexFinderDA4D_h
2#define VertexFinderDA4D_h
3
4/** \class VertexFinderDA4D
5 *
6 * Cluster vertices from tracks using deterministic annealing and timing information
7 *
8 * \authors M. Selvaggi, L. Gray
9 *
10 */
11
12
13#include "classes/DelphesModule.h"
14
[95b4e9f]15#include <vector>
[29d662e]16
17class TObjArray;
[95b4e9f]18class TIterator;
[29d662e]19class Candidate;
20
21class VertexFinderDA4D: public DelphesModule
22{
23public:
24
25 VertexFinderDA4D();
26 ~VertexFinderDA4D();
27
28 void Init();
29 void Process();
30 void Finish();
31
[95b4e9f]32 struct track_t
33 {
34 double z; // z-coordinate at point of closest approach to the beamline
35 double t; // t-coordinate at point of closest approach to the beamline
36 double dz2; // square of the error of z(pca)
37 double dtz; // covariance of z-t
38 double dt2; // square of the error of t(pca)
39 Candidate* tt; // a pointer to the Candidate Track
40 double Z; // Z[i] for DA clustering
41 double pi; // track weight
42 double pt;
43 double eta;
44 double phi;
45 };
46
47
48 struct vertex_t
49 {
50 double z;
51 double t;
52 double pk; // vertex weight for "constrained" clustering
53 // --- temporary numbers, used during update
54 double ei;
55 double sw;
56 double swz;
57 double swt;
58 double se;
59 // ---for Tc
60 double swE;
61 double Tc;
62 };
[29d662e]63
64 void clusterize(const TObjArray & tracks, TObjArray & clusters);
65
66 std::vector< Candidate* > vertices();
67
68 std::vector<track_t> fill() const;
69
[95b4e9f]70 bool split(double beta,
[29d662e]71 std::vector<track_t> & tks,
72 std::vector<vertex_t> & y) const;
73
[95b4e9f]74 double update(double beta,
[29d662e]75 std::vector<track_t> & tks,
[95b4e9f]76 std::vector<vertex_t> & y) const;
[29d662e]77
78 double update(double beta,
[95b4e9f]79 std::vector<track_t> & tks,
80 std::vector<vertex_t> & y,
81 double &)const;
[29d662e]82
83 void dump(const double beta, const std::vector<vertex_t> & y, const std::vector<track_t> & tks) const;
84 bool merge(std::vector<vertex_t> &) const;
[95b4e9f]85 bool merge(std::vector<vertex_t> &, double &) const;
86 bool purge(std::vector<vertex_t> &, std::vector<track_t> & , double &, const double) const;
[29d662e]87
[95b4e9f]88 void splitAll(std::vector<vertex_t> &y) const;
[29d662e]89
90 double beta0(const double betamax,
[95b4e9f]91 std::vector<track_t> &tks,
92 std::vector<vertex_t> &y)const;
[29d662e]93
[95b4e9f]94 double Eik(const track_t &t, const vertex_t &k)const;
[29d662e]95
96private:
97
98 Bool_t fVerbose;
99 Double_t fMinPT;
100
101 Float_t fVertexSpaceSize;
102 Float_t fVertexTimeSize;
103 Bool_t fUseTc;
104 Float_t fBetaMax;
105 Float_t fBetaStop;
106 Double_t fCoolingFactor;
107 Int_t fMaxIterations;
108 Double_t fDzCutOff;
109 Double_t fD0CutOff;
110 Double_t fDtCutOff; // for when the beamspot has time
111
112 TObjArray *fInputArray;
113 TIterator *fItInputArray;
114
115 TObjArray *fOutputArray;
116 TObjArray *fVertexOutputArray;
117
118 ClassDef(VertexFinderDA4D, 1)
119};
120
121#endif
Note: See TracBrowser for help on using the repository browser.