1#ifndef VertexFit_VertexFit_H
2#define VertexFit_VertexFit_H
38 void AddVertex(
int number,
VertexParameter vpar,
int n1,
int n2,
int n3,
int n4,
int n5,
int n6,
int n7,
int n8,
int n9);
39 void AddVertex(
int number,
VertexParameter vpar,
int n1,
int n2,
int n3,
int n4,
int n5,
int n6,
int n7,
int n8,
int n9,
int n10);
40 void AddVertex(
int number,
VertexParameter vpar,
int n1,
int n2,
int n3,
int n4,
int n5,
int n6,
int n7,
int n8,
int n9,
int n10,
int n11);
41 void AddVertex(
int number,
VertexParameter vpar,
int n1,
int n2,
int n3,
int n4,
int n5,
int n6,
int n7,
int n8,
int n9,
int n10,
int n11,
int n12);
49 void setChisqCut(
const double chicut = 1000,
const double chiter = 1.0e-3) { m_chicut = chicut;m_chiter = chiter; }
51 double factor()
const {
return m_factor; }
59 void Swim(
int n){ vertexCovMatrix(
n); swimVertex(
n);}
66 double chisq()
const {
return m_chi;}
67 double chisq(
int n)
const {
return m_chisq[
n];}
72 bool pull(
int n,
int itk, HepVector& p);
82 HepVector
cpu()
const {
return m_cpu;}
86 HepVector
Vx(
int n)
const {
return m_vpar_infit[
n].Vx();}
87 HepSymMatrix
Evx(
int n)
const {
return m_vpar_infit[
n].Evx();}
88 double errorVx(
int n,
int i)
const {
return sqrt((m_vpar_infit[
n].
Evx())[i][i]);}
99 void fitVertex(
int n);
101 void vertexCovMatrix(
int n);
103 void swimVertex(
int n);
106 void swimBeam(
int n);
109 std::vector<VertexParameter> m_vpar_origin;
111 std::vector<VertexParameter> m_vpar_infit;
113 std::vector<VertexConstraints> m_vc;
115 std::vector<double> m_chisq;
119 std::vector<WTrackParameter> m_virtual_wtrk;
124 HepSymMatrix m_xcovOrigin;
125 HepSymMatrix m_xcovOriginInversed;
126 inline HepVector xOrigin()
const {
return m_xOrigin;}
127 inline void setXOrigin(
const HepVector &x) { m_xOrigin =
x;}
128 inline HepSymMatrix xcovOrigin()
const {
return m_xcovOrigin;}
129 inline void setXCovOrigin(
const HepSymMatrix &
v) {m_xcovOrigin =
v;}
130 inline HepSymMatrix xcovOriginInversed()
const {
return m_xcovOriginInversed;}
131 inline void setXCovOriginInversed(
const HepSymMatrix &
v){m_xcovOriginInversed =
v;}
135 HepSymMatrix m_xcovInfit;
136 HepSymMatrix m_xcovInfitInversed;
137 inline HepVector xInfit()
const {
return m_xInfit;}
138 inline void setXInfit(
const HepVector &x) {m_xInfit =
x;}
139 inline HepSymMatrix xcovInfit()
const {
return m_xcovInfit;}
140 void setXCovInfit(
const HepSymMatrix &
v) {m_xcovInfit =
v;}
141 inline HepSymMatrix xcovInfitInversed()
const {
return m_xcovInfitInversed;}
142 void setXCovInfitInversed(
const HepSymMatrix &
v) {m_xcovInfitInversed =
v;}
146 HepSymMatrix m_pcovOrigin;
147 inline HepVector pOrigin(
int i)
const {
return m_pOrigin.sub(i*NTRKPAR+1, (i+1)*NTRKPAR); }
148 inline void setPOrigin(
int i,
const HepVector &p) { m_pOrigin.sub(i*NTRKPAR+1, p); }
149 inline HepSymMatrix pcovOrigin(
int i)
const {
return m_pcovOrigin.sub(i*NTRKPAR+1, (i+1)*NTRKPAR); }
150 inline void setPCovOrigin(
int i,
const HepSymMatrix &
v) { m_pcovOrigin.sub(i*NTRKPAR+1,
v); }
154 HepSymMatrix m_pcovInfit;
155 inline HepVector pInfit(
int i)
const {
return m_pInfit.sub(i*NTRKPAR+1, (i+1)*NTRKPAR); }
156 inline void setPInfit(
int i,
const HepVector &p) { m_pInfit.sub(i*NTRKPAR+1, p); }
157 inline HepSymMatrix pcovInfit(
int i)
const {
return m_pcovInfit.sub(i*NTRKPAR+1, (i+1)*NTRKPAR); }
158 inline void setPCovInfit(
int i,
const HepSymMatrix &
v) { m_pcovInfit.sub(i*NTRKPAR+1,
v); }
162 inline HepMatrix vfB(
int i)
const {
return m_B.sub(i*NCONSTR+1, (i+1)*NCONSTR, 1, NVTXPAR);}
163 inline void setB(
int i,
const HepMatrix &e) {m_B.sub(i*NCONSTR+1, 1, e);}
166 inline HepMatrix vfBT(
int i)
const {
return m_BT.sub(1, NVTXPAR, i*NCONSTR+1, (i+1)*NCONSTR);}
167 inline void setBT(
int i,
const HepMatrix &e) {m_BT.sub(1, i*NCONSTR+1, e);}
170 inline HepMatrix vfA(
int i)
const {
return m_A.sub(i*NCONSTR+1, (i+1)*NCONSTR, i*NTRKPAR+1, (i+1)*NTRKPAR);}
171 inline void setA(
int i,
const HepMatrix &d) {m_A.sub(i*NCONSTR+1, i*NTRKPAR+1, d);}
174 inline HepMatrix vfAT(
int i)
const {
return m_AT.sub(i*NTRKPAR+1, (i+1)*NTRKPAR, i*NCONSTR+1, (i+1)*NCONSTR);}
175 inline void setAT(
int i,
const HepMatrix &d) {m_AT.sub(i*NTRKPAR+1, i*NCONSTR+1, d);}
178 inline HepMatrix vfKQ(
int i)
const {
return m_KQ.sub(1, NVTXPAR, i*NCONSTR+1, (i+1)*NCONSTR);}
179 inline void setKQ(
int i,
const HepMatrix &d) {m_KQ.sub(1, i*NCONSTR+1, d);}
182 inline HepVector vfG(
int i)
const {
return m_G.sub(i*NCONSTR+1, (i+1)*NCONSTR);}
183 inline void setG(
int i,
const HepVector &p) {m_G.sub(i*NCONSTR+1, p);}
186 inline HepSymMatrix vfW(
int i)
const {
return m_W.sub(i*NCONSTR+1, (i+1)*NCONSTR);}
187 inline void setW(
int i, HepSymMatrix &m) {m_W.sub(i*NCONSTR+1, m);}
190 inline HepMatrix vfE(
int i)
const {
return m_E.sub(i*NTRKPAR+1, (i+1)*NTRKPAR, 1, NVTXPAR);}
191 inline void setE(
int i,
const HepMatrix &p){m_E.sub(i*NTRKPAR+1, 1, p);}
197 HepVector Convert67(
const double &
mass,
const HepVector &p);
200 HepVector Convert76(
const HepVector &p);
212 static const int NTRKPAR;
213 static const int NVTXPAR;
214 static const int NCONSTR;
**********Class see also m_nmax DOUBLE PRECISION m_amel DOUBLE PRECISION m_x2 DOUBLE PRECISION m_alfinv DOUBLE PRECISION m_Xenph INTEGER m_KeyWtm INTEGER m_idyfs DOUBLE PRECISION m_zini DOUBLE PRECISION m_q2 DOUBLE PRECISION m_Wt_KF DOUBLE PRECISION m_WtCut INTEGER m_KFfin *COMMON c_KarLud $ !Input CMS energy[GeV] $ !CMS energy after beam spread beam strahlung[GeV] $ !Beam energy spread[GeV] $ !z boost due to beam spread $ !electron beam mass *ff pair spectrum $ !minimum v
std::vector< WTrackParameter > wTrackInfit() const
WTrackParameter wtrk(int n) const
HepVector Vx(int n) const
HepSymMatrix Ew(int n) const
void setIterNumber(const int niter=10)
double chisq(int n) const
WTrackParameter wVirtualTrack(int n) const
void AddBeamFit(int number, VertexParameter vpar, int n)
void AddVertex(int number, VertexParameter vpar, std::vector< int > lis)
HepSymMatrix Evx(int n) const
bool pull(int n, int itk, HepVector &p)
HepPoint3D vx(int n) const
HepLorentzVector pfit(int n) const
HepPoint3D xfit(int n) const
void setMagCorrFactor(const double factor=1.000)
static VertexFit * instance()
VertexParameter vpar(int n) const
void BuildVirtualParticle(int number)
void setChisqCut(const double chicut=1000, const double chiter=1.0e-3)
double errorVx(int n, int i) const