1#include "VertexFit/TrackPool.h"
2#include "VertexFit/WTrackParameter.h"
3#include "VertexFit/GammaShape.h"
26 for(
int i = 0; i < 5; i++)
27 helix[i] = trk->
helix(i);
28 for(
int i = 0; i < 15; i++)
29 error[i] = trk->
err(i);
35 std::cout <<
"TrackPool: wrong track index" <<
" "
41 m_numberone = m_numberone + 4;
49 double ptrk = trk->
energy();
50 double e = sqrt(ptrk*ptrk +
mass *
mass);
51 double the = trk->
theta();
52 double phi = trk->
phi();
53 HepLorentzVector p4(ptrk *
sin(the) *
cos(phi),
54 ptrk *
sin(the) *
sin(phi),
57 double dphi = trk->
dphi();
58 double dthe = trk->
dtheta();
59 double de = trk->
dE();
65 HepSymMatrix Vpl = HepSymMatrix(2,0);
67 HepSymMatrix Vclus = HepSymMatrix (3,0);
68 Vclus = (wtrk.
Ew()).sub(5,7);
69 double xpr =
x - m_BeamPosition[0];
70 double ypr = y - m_BeamPosition[1];
71 double zpr = z - m_BeamPosition[2];
72 double Rpr = sqrt(xpr*xpr + ypr*ypr);
75 J[0][0] = -ypr/(Rpr*Rpr);
76 J[0][1] = xpr/(Rpr*Rpr);
77 J[1][0] = -xpr * zpr/(Rpr*Rpr*Rpr);
78 J[1][1] = -ypr * zpr/(Rpr*Rpr*Rpr);
80 Vpl = Vclus.similarity(J) + m_VBeamPosition.similarity(J);
84 double phipre = atan(ypr/xpr);
87 phipre = atan(ypr/xpr) + 3.1415926;
89 double lambdapre = zpr/Rpr;
93 double p0x = ptrk*
cos(phipre)/sqrt(1 + lambdapre*lambdapre);
94 double p0y = ptrk*
sin(phipre)/sqrt(1 + lambdapre*lambdapre);
95 double p0z = ptrk*lambdapre/sqrt(1 + lambdapre*lambdapre);
99 double p0ver = sqrt(p0x*p0x + p0y*p0y);
104 B[0][1] = -p0z * p0x * p0ver/(p0e * p0e);
107 B[1][1] = -p0z * p0y * p0ver/(p0e * p0e);
109 B[2][1] = p0ver * p0ver * p0ver/(p0e * p0e);
113 HepSymMatrix Vple(3,0);
114 Vple[0][0] = Vpl[0][0];
115 Vple[1][1] = Vpl[1][1];
116 Vple[2][2] = de * de;
118 HepSymMatrix Vpxyze(4,0);
119 Vpxyze = Vple.similarity(B);
128 HepSymMatrix Vplme(4,0);
129 Vplme[0][0] = Vpl[0][0];
130 Vplme[1][1] = Vpl[1][1];
131 Vplme[3][3] = de * de;
134 HepVector plmp(4 , 0);
146 std::cout <<
"TrackPool: wrong track index" <<
" "
155 m_numberone = m_numberone + 4;
164 double ptrk = trk->
energy();
165 double e = sqrt(ptrk*ptrk +
mass *
mass);
166 double the = trk->
theta();
167 double phi = trk->
phi();
168 HepLorentzVector p4( e*
sin(the) *
cos(phi),
172 double dphi = trk->
dphi();
173 double dthe = trk->
dtheta();
181 HepSymMatrix Vpe = HepSymMatrix(2,0);
183 HepSymMatrix Vclus = HepSymMatrix (3,0);
184 Vclus = (wtrk.
Ew()).sub(5,7);
185 double xpr =
x - m_BeamPosition[0];
186 double ypr = y - m_BeamPosition[1];
187 double zpr = z - m_BeamPosition[2];
188 double Rpr = sqrt(xpr*xpr + ypr*ypr);
191 J[0][0] = -ypr/(Rpr*Rpr);
192 J[0][1] = xpr/(Rpr*Rpr);
193 J[1][0] = -xpr * zpr/(Rpr*Rpr*Rpr);
194 J[1][1] = -ypr * zpr/(Rpr*Rpr*Rpr);
196 Vpe = Vclus.similarity(J) + m_VBeamPosition.similarity(J);
199 double phipre = atan(ypr/xpr);
202 phipre = atan(ypr/xpr) + 3.1415926;
204 double lambdapre = zpr/Rpr;
207 HepVector plmp(4 , 0);
214 HepSymMatrix Vplm(3,0);
215 Vplm[0][0] = Vpe[0][0];
216 Vplm[1][1] = Vpe[1][1];
222 double p0x = ptrk*
cos(phipre)/sqrt(1 + lambdapre*lambdapre);
223 double p0y = ptrk*
sin(phipre)/sqrt(1 + lambdapre*lambdapre);
224 double p0z = ptrk*lambdapre/sqrt(1 + lambdapre*lambdapre);
243 m_numberone = m_numberone + 3;
244 m_numbertwo = m_numbertwo + 1;
256 double ptrk = trk->
energy();
257 double e = sqrt(ptrk*ptrk +
mass *
mass);
258 double the = trk->
theta();
259 double phi = trk->
phi();
260 HepLorentzVector p4( e*
sin(the) *
cos(phi),
264 double dphi = trk->
dphi();
265 double dthe = trk->
dtheta();
273 HepSymMatrix Vpe = HepSymMatrix(2,0);
275 HepSymMatrix Vclus = HepSymMatrix (3,0);
276 Vclus = (wtrk.
Ew()).sub(5,7);
277 double xpr =
x - m_BeamPosition[0];
278 double ypr = y - m_BeamPosition[1];
279 double zpr = z - m_BeamPosition[2];
280 double Rpr = sqrt(xpr*xpr + ypr*ypr);
283 J[0][0] = -ypr/(Rpr*Rpr);
284 J[0][1] = xpr/(Rpr*Rpr);
285 J[1][0] = -xpr * zpr/(Rpr*Rpr*Rpr);
286 J[1][1] = -ypr * zpr/(Rpr*Rpr*Rpr);
288 Vpe = Vclus.similarity(J) + m_VBeamPosition.similarity(J);
290 double phipre = atan(ypr/xpr);
293 phipre = atan(ypr/xpr) + 3.1415926;
295 double lambdapre = zpr/Rpr;
298 HepVector plmp(4 , 0);
305 HepSymMatrix Vplm(2,0);
306 Vplm[0][0] = Vpe[0][0];
307 Vplm[1][1] = Vpe[1][1];
313 double p0x = ptrk*
cos(phipre)/sqrt(1 + lambdapre*lambdapre);
314 double p0y = ptrk*
sin(phipre)/sqrt(1 + lambdapre*lambdapre);
315 double p0z = ptrk*lambdapre/sqrt(1 + lambdapre*lambdapre);
334 m_numberone = m_numberone + 2;
335 m_numbertwo = m_numbertwo + 2;
350 HepVector plmp(4, 0);
351 double phipre = atan(p4[1]/p4[0]);
354 phipre = atan(p4[1]/p4[0]) + 3.1415926;
360 HepSymMatrix Vplm(3, 0);
370 m_numberone = m_numberone + 1;
371 m_numbertwo = m_numbertwo + 3;
382 HepSymMatrix Ew(7,0);
398 m_numberone = m_numberone + 4;
408 HepSymMatrix Ew = HepSymMatrix(7,0);
409 for (
int i = 0; i < 7; i++) {
410 for (
int j = 0; j < 7; j++) {
411 if(i==j) Ew[i][j] = 1E+6;
422 m_numbertwo = m_numbertwo + 4;
434 std::cout <<
"TrackPool: wrong track index" <<
" "
440 m_numberone = m_numberone + 4;
445 double ptrk = trk->
energy();
446 double e = sqrt(ptrk*ptrk +
mass *
mass);
447 double the = trk->
theta();
448 double phi = trk->
phi();
449 HepLorentzVector p4(ptrk *
sin(the) *
cos(phi),
450 ptrk *
sin(the) *
sin(phi),
453 double dphi = trk->
dphi();
454 double dthe = trk->
dtheta();
455 double de = trk->
dE();
465 std::cout <<
"TrackPool: wrong track index" <<
" "
476 m_numberone = m_numberone + 4;
477 m_numbertwo = m_numbertwo + 3;
484 std::vector<int> lis;
491 std::vector<int> lis;
499 std::vector<int> lis;
508 std::vector<int> lis;
518 std::vector<int> lis;
529 std::vector<int> lis;
541 std::vector<int> lis;
554 std::vector<int> lis;
569 std::vector<int> lis;
585 std::vector<int> lis;
601 int n9,
int n10,
int n11) {
602 std::vector<int> lis;
619 int n9,
int n10,
int n11,
int n12) {
620 std::vector<int> lis;
HepGeom::Point3D< double > HepPoint3D
double sin(const BesAngle a)
double cos(const BesAngle a)
const HepSymMatrix err() const
const HepVector helix() const
......
std::vector< int > AddList(int n1)
void setMappositionB(const int n)
void setVBeamPosition(const HepSymMatrix VBeamPosition)
void AddTrack(const int number, const double mass, const RecMdcTrack *trk)
void clearGammaShapeList()
void AddTrackVertex(const int number, const double mass, const RecEmcShower *trk)
void AddMissTrack(const int number, const double mass)
void setGammaShape(const int n, const GammaShape gammashape)
void setWTrackList(const int n)
void setGammaShapeList(const int n)
void setMappositionA(const int n)
void setBeamPosition(const HepPoint3D BeamPosition)
void setMapkinematic(const int n)
void setWTrackOrigin(const int n, const WTrackParameter wtrk)
void setWTrackInfit(const int n, const WTrackParameter wtrk)
void setEw(const HepSymMatrix &Ew)
void setMass(const double mass)
void setW(const HepVector &w)
void setType(const int type)
void setPlmp(const HepVector &plmp)
void setVplm(const HepSymMatrix &Vplm)