1#include "VertexFit/KinematicFit.h"
3#include "VertexFit/HTrackParameter.h"
4#include "VertexFit/KinematicConstraints.h"
6const int KinematicFit::NTRKPAR = 3;
8const int KinematicFit::Resonance = 1;
9const int KinematicFit::TotalEnergy = 2;
10const int KinematicFit::TotalMomentum = 4;
11const int KinematicFit::Position = 8;
12const int KinematicFit::ThreeMomentum = 16;
13const int KinematicFit::FourMomentum = 32;
14const int KinematicFit::EqualMass = 64;
19 if ( m_pointer )
return m_pointer;
20 m_pointer =
new KinematicFit();
24KinematicFit::KinematicFit() { ; }
55 m_collideangle = 11e-3;
59 m_cpu = HepVector( 10, 0 );
60 m_massvector = HepVector( 12, 0 );
61 m_virtual_wtrk.clear();
90 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5 );
96 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6 );
101 int n5,
int n6,
int n7 ) {
102 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7 );
107 int n5,
int n6,
int n7,
int n8 ) {
108 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8 );
113 int n5,
int n6,
int n7,
int n8,
int n9 ) {
114 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8, n9 );
119 int n5,
int n6,
int n7,
int n8,
int n9,
int n10 ) {
120 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8, n9, n10 );
125 int n5,
int n6,
int n7,
int n8,
int n9,
int n10,
int n11 ) {
126 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8, n9, n10, n11 );
131 int n5,
int n6,
int n7,
int n8,
int n9,
int n10,
int n11,
133 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12 );
139 HepSymMatrix Vre = HepSymMatrix( 1, 0 );
141 m_kc.push_back( kc );
142 if ( (
unsigned int)number != m_kc.size() - 1 )
143 std::cout <<
"wrong kinematic constraints index" << std::endl;
172 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5 );
178 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6 );
183 int n5,
int n6,
int n7 ) {
184 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7 );
189 int n5,
int n6,
int n7,
int n8 ) {
190 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8 );
195 int n5,
int n6,
int n7,
int n8,
int n9 ) {
196 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8, n9 );
201 int n5,
int n6,
int n7,
int n8,
int n9,
int n10 ) {
202 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8, n9, n10 );
207 int n5,
int n6,
int n7,
int n8,
int n9,
int n10,
209 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8, n9, n10, n11 );
214 int n5,
int n6,
int n7,
int n8,
int n9,
int n10,
int n11,
216 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12 );
223 m_kc.push_back( kc );
224 if ( (
unsigned int)number != m_kc.size() - 1 )
225 std::cout <<
"wrong kinematic constraints index" << std::endl;
253 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5 );
259 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6 );
264 int n5,
int n6,
int n7 ) {
265 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7 );
270 int n5,
int n6,
int n7,
int n8 ) {
271 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8 );
276 int n5,
int n6,
int n7,
int n8,
int n9 ) {
277 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8, n9 );
282 int n5,
int n6,
int n7,
int n8,
int n9,
int n10 ) {
283 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8, n9, n10 );
288 int n5,
int n6,
int n7,
int n8,
int n9,
int n10,
int n11 ) {
289 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8, n9, n10, n11 );
294 int n5,
int n6,
int n7,
int n8,
int n9,
int n10,
int n11,
296 std::vector<int> tlis =
AddList(
n1,
n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12 );
303 m_kc.push_back( kc );
304 if ( (
unsigned int)number != m_kc.size() - 1 )
305 std::cout <<
"wrong kinematic constraints index" << std::endl;
313 HepSymMatrix Vne = HepSymMatrix( 1, 0 );
315 m_kc.push_back( kc );
316 if ( (
unsigned int)number != m_kc.size() - 1 )
317 std::cout <<
"wrong kinematic constraints index" << std::endl;
325 std::vector<int> tlis;
330 for (
int i = 0; i <
numberWTrack(); i++ ) { tlis.push_back( i ); }
332 m_kc.push_back( kc );
333 if ( (
unsigned int)number != m_kc.size() - 1 )
334 std::cout <<
"wrong kinematic constraints index" << std::endl;
343 std::vector<int> tlis;
347 for (
int i = 0; i <
numberWTrack(); i++ ) { tlis.push_back( i ); }
352 HepSymMatrix Vme = HepSymMatrix( 4, 0 );
353 Vme[0][0] = 2 * m_espread * m_espread *
sin( m_collideangle ) *
sin( m_collideangle );
354 Vme[0][3] = 2 * m_espread * m_espread *
sin( m_collideangle );
355 Vme[3][3] = 2 * m_espread * m_espread;
359 m_kc.push_back( kc );
360 if ( (
unsigned int)number != m_kc.size() - 1 )
361 std::cout <<
"wrong kinematic constraints index" << std::endl;
366 HepLorentzVector p4( 0.0, 0.0, 0.0,
etot );
367 std::vector<int> tlis;
371 for (
int i = 0; i <
numberWTrack(); i++ ) { tlis.push_back( i ); }
372 HepSymMatrix Vme = HepSymMatrix( 4, 0 );
373 Vme[3][3] = 2 * m_espread * m_espread;
376 m_kc.push_back( kc );
377 if ( (
unsigned int)number != m_kc.size() - 1 )
378 std::cout <<
"wrong kinematic constraints index" << std::endl;
403void KinematicFit::fit() {
412 m_VD = HepSymMatrix( m_nc, 0 );
413 m_VD = m_covOrigin.similarity( m_D );
415 m_cpu[1] += timer.CpuTime();
419 m_VD.invert( ifail );
422 m_cpu[2] += timer.CpuTime();
425 HepVector G( m_nc, 0 );
426 G = m_D * ( m_pOrigin - m_pInfit ) + m_d;
428 m_KP = HepMatrix(
NTRKPAR * m_nktrk, m_nc, 0 );
429 m_KP = m_covOrigin * m_DT * m_VD;
430 m_chi = ( m_VD.similarity( G.T() ) )[0][0];
433 m_cpu[3] += timer.CpuTime();
436 m_pInfit = m_pOrigin - m_KP * G;
441 m_cpu[4] += timer.CpuTime();
444 if ( m_dynamicerror == 1 ) gda();
447 m_cpu[6] += timer.CpuTime();
450void KinematicFit::upCovmtx() {
453 HepSymMatrix
I( NTRKPAR * m_nktrk, 1 );
454 m_covInfit = m_covOrigin.similarity(
I - m_KP * m_D );
455 for (
int i = 0; i < m_nktrk; i++ )
457 HepSymMatrix ew3( 3, 0 );
458 HepSymMatrix ew6( 6, 0 );
459 HepSymMatrix Ew1( 7, 0 );
460 ew3 = m_covInfit.sub( i * NTRKPAR + 1, ( i + 1 ) * NTRKPAR );
461 for (
int j = 0; j < NTRKPAR; j++ )
463 for (
int k = 0; k < NTRKPAR; k++ ) { ew6[j][k] = ew3[j][k]; }
465 for (
int m = NTRKPAR; m < 6; m++ )
467 for (
int n = NTRKPAR;
n < 6;
n++ )
472 double px = p4Infit( i ).px();
473 double py = p4Infit( i ).py();
474 double pz = p4Infit( i ).pz();
475 double m = p4Infit( i ).m();
476 double e = p4Infit( i ).e();
478 HepMatrix J( 7, 6, 0 );
488 Ew1 = ew6.similarity( J );
491 for (
int j = 0; j < 4; j++ ) { W[j] = p4Infit( i )[j]; }
503void KinematicFit::fit(
int n ) {
505 if ( m_chisq.size() == 0 )
507 for (
unsigned int i = 0; i < m_kc.size(); i++ ) m_chisq.push_back( 9999.0 );
509 KinematicConstraints kc;
513 m_VD = HepSymMatrix( m_nc, 0 );
514 m_VD = m_covOrigin.similarity( m_D );
516 m_VD.invert( ifail );
517 HepVector G( m_nc, 0 );
518 G = m_D * ( m_pOrigin - m_pInfit ) + m_d;
519 m_KP = HepMatrix( NTRKPAR * m_nktrk, m_nc, 0 );
520 m_KP = m_covOrigin * m_DT * m_VD;
521 m_chisq[
n] = ( m_VD.similarity( G.T() ) )[0][0];
522 m_pInfit = m_pOrigin - m_KP * G;
525void KinematicFit::covMatrix(
int n ) {
526 KinematicConstraints kc = m_kc[
n];
528 int ntrk = ( kc.
Ltrk() ).size();
529 HepSymMatrix Va0( 7 * ntrk, 0 );
530 for (
int i = 0; i < ntrk; i++ )
532 int itk = ( kc.
Ltrk() )[i];
533 for (
int j = 0; j < 7; j++ )
534 for (
int k = 0; k < 7; k++ )
535 Va0[7 * i + j][7 * i + k] = (
wTrackOrigin( itk ).Ew() )[j][k];
537 HepMatrix D( nc, 7 * ntrk, 0 );
539 for (
int j = 0; j < kc.
nc(); j++ )
541 for (
int l = 0; l < ntrk; l++ )
543 for (
int k = 0; k < 7; k++ ) D[ncc][7 * l + k] = ( kc.
Dc()[l] )[j][k];
548 HepSymMatrix VD( nc, 0 );
550 HepSymMatrix Va( 7 * ntrk, 0 );
551 Va = Va0 - ( VD.similarity( D.T() ) ).similarity( Va0 );
552 for (
int i = 0; i < ntrk; i++ )
554 int itk = ( kc.
Ltrk() )[i];
556 HepSymMatrix Ew( 7, 0 );
557 for (
int j = 0; j < 7; j++ )
559 for (
int k = 0; k < 7; k++ ) Ew[j][k] = Va[7 * i + j][7 * i + k];
572 m_pOrigin = HepVector( m_nktrk * NTRKPAR, 0 );
573 m_pInfit = HepVector( m_nktrk * NTRKPAR, 0 );
574 m_covOrigin = HepSymMatrix( m_nktrk * NTRKPAR, 0 );
575 m_covInfit = HepSymMatrix( m_nktrk * NTRKPAR, 0 );
576 m_massvector = HepVector( m_nktrk, 0 );
580 setPOrigin( i, (
wTrackOrigin( i ).
w() ).sub( 1, NTRKPAR ) );
582 setCovOrigin( i, (
wTrackOrigin( i ).Ew() ).sub( 1, NTRKPAR ) );
593 std::vector<double>
chisq;
596 for (
int i = 0; i < m_kc.size(); i++ ) nc += m_kc[i].nc();
598 m_D = HepMatrix( nc, m_nktrk * NTRKPAR, 0 );
599 m_DT = HepMatrix( m_nktrk * NTRKPAR, nc, 0 );
600 m_d = HepVector( nc, 0 );
602 for (
int it = 0; it < m_niter; it++ )
607 for (
unsigned int i = 0; i < m_kc.size(); i++ )
628 updateConstraints( kc );
632 m_cpu[0] += timer.CpuTime();
635 chisq.push_back( m_chi );
639 if ( fabs( delchi ) < m_chiter )
break;
642 if ( m_chi >= m_chicut ) {
return okfit; }
649 m_cpu[5] += timer.CpuTime();
706 if (
n < 0 || (
unsigned int)
n >= m_kc.size() )
return okfit;
709 m_pOrigin = HepVector( m_nktrk * NTRKPAR, 0 );
710 m_pInfit = HepVector( m_nktrk * NTRKPAR, 0 );
711 m_covOrigin = HepSymMatrix( m_nktrk * NTRKPAR, 0 );
712 m_covInfit = HepSymMatrix( m_nktrk * NTRKPAR, 0 );
713 m_massvector = HepVector( m_nktrk * NTRKPAR, 0 );
717 setPOrigin( i, (
wTrackOrigin( i ).
w() ).sub( 1, NTRKPAR ) );
719 setCovOrigin( i, (
wTrackOrigin( i ).Ew() ).sub( 1, NTRKPAR ) );
727 std::vector<double>
chisq;
730 m_D = HepMatrix( m_kc[
n].nc(), m_nktrk * NTRKPAR, 0 );
731 m_DT = HepMatrix( m_nktrk * NTRKPAR, m_kc[
n].nc(), 0 );
732 m_d = HepVector( m_kc[
n].nc(), 0 );
734 for (
int it = 0; it < m_niter; it++ )
738 updateConstraints( kc );
742 chisq.push_back( m_chisq[
n] );
746 if ( fabs( delchi ) < m_chiter )
break;
750 if ( m_chisq[
n] >= m_chicut )
return okfit;
763 int ntrk = ( kc.
Ltrk() ).size();
766 HepSymMatrix ew( 7, 0 );
767 HepMatrix dwdp( 7, 7, 0 );
775 for (
int i = 0; i < ntrk; i++ )
777 int itk = ( kc.
Ltrk() )[i];
792 double m = sqrt(
w[3] *
w[3] -
w[0] *
w[0] -
w[1] *
w[1] -
w[2] *
w[2] );
798 m_virtual_wtrk.push_back( vwtrk );
801void KinematicFit::gda() {
812 HepSymMatrix Ew( NTRKPAR, 0 );
813 HepLorentzVector
p1 = p4Infit( i );
814 double eorigin = pOrigin( i )[3];
816 HepMatrix dwda1( NTRKPAR, 3, 0 );
817 dwda1[0][0] = -
p1.py();
818 dwda1[1][0] =
p1.px();
819 dwda1[0][1] =
p1.px() *
p1.pz() /
p1.perp();
820 dwda1[1][1] =
p1.py() *
p1.pz() /
p1.perp();
821 dwda1[2][1] = -
p1.perp();
822 dwda1[0][2] =
p1.px() /
p1.rho();
823 dwda1[1][2] =
p1.py() /
p1.rho();
824 dwda1[2][2] =
p1.pz() /
p1.rho();
825 dwda1[3][2] =
p1.rho() /
p1.e();
826 HepSymMatrix emcmea1( 3, 0 );
832 Ew = emcmea1.similarity( dwda1 );
835 setCovOrigin( i, Ew );
846 HepSymMatrix Ew( 6, 0 );
847 HepVector W1( 7, 0 );
848 HepSymMatrix Ew1( 7, 0 );
855 for (
int i = 0; i < 3; i++ ) { W[i] = pInfit(
n )[i]; }
859 for (
int j = 0; j < 3; j++ )
861 for (
int k = 0; k < 3; k++ ) { Ew[j][k] = covInfit(
n )[j][k]; }
864 for (
int j = 3; j < 6; j++ )
866 for (
int k = 3; k < 6; k++ ) { Ew[j][k] =
wTrackOrigin(
n ).Ew()[j + 1][k + 1]; }
871 double px = p4Infit(
n ).px();
872 double py = p4Infit(
n ).py();
873 double pz = p4Infit(
n ).pz();
874 double e = p4Infit(
n ).e();
875 HepMatrix J( 7, 6, 0 );
886 Ew1 = Ew.similarity( J );
901 HepVector
a0 = horigin.
hel();
902 HepVector a1 = hinfit.
hel();
903 HepSymMatrix v0 = horigin.
eHel();
904 HepSymMatrix v1 = hinfit.
eHel();
905 HepVector
pull( 11, 0 );
906 for (
int k = 0; k < 5; k++ )
908 pull[k] = (
a0[k] - a1[k] ) / sqrt(
abs( v0[k][k] - v1[k][k] ) );
911 for (
int l = 5; l < 9; l++ )
926 HepVector
pull( 3, 0 );
927 for (
int m = 0; m < 3; m++ )
963 double mres = kc.
mres();
964 HepLorentzVector pmis;
965 for (
unsigned int j = 0; j < ( kc.
Ltrk() ).size(); j++ )
967 int n = ( kc.
Ltrk() )[j];
969 pmis = pmis + p4Infit(
n );
973 for (
unsigned int j = 0; j < ( kc.
Ltrk() ).size(); j++ )
975 int n = ( kc.
Ltrk() )[j];
976 HepMatrix Dc( 1, NTRKPAR, 0 );
977 Dc[0][0] = -2 * pmis.px() + 2 * pmis.e() * p4Infit(
n ).px() / p4Infit(
n ).e();
978 Dc[0][1] = -2 * pmis.py() + 2 * pmis.e() * p4Infit(
n ).py() / p4Infit(
n ).e();
979 Dc[0][2] = -2 * pmis.pz() + 2 * pmis.e() * p4Infit(
n ).pz() / p4Infit(
n ).e();
982 setDT(
n, m_nc, Dc.T() );
994 HepVector
dc( 1, 0 );
995 dc[0] = pmis.m2() - mres * mres;
1014 HepLorentzVector pmis;
1015 for (
unsigned int j = 0; j < ( kc.
Ltrk() ).size(); j++ )
1017 int n = ( kc.
Ltrk() )[j];
1018 pmis = pmis + p4Infit(
n );
1022 for (
unsigned int j = 0; j < ( kc.
Ltrk() ).size(); j++ )
1024 int n = ( kc.
Ltrk() )[j];
1025 HepMatrix Dc( 1, NTRKPAR, 0 );
1026 Dc[0][0] = p4Infit(
n ).px() / p4Infit(
n ).e();
1027 Dc[0][1] = p4Infit(
n ).py() / p4Infit(
n ).e();
1028 Dc[0][2] = p4Infit(
n ).pz() / p4Infit(
n ).e();
1030 setD( m_nc,
n, Dc );
1031 setDT(
n, m_nc, Dc.T() );
1033 HepVector
dc( 1, 0 );
1044 case TotalMomentum: {
1048 double ptot = kc.
ptot();
1049 HepLorentzVector pmis;
1050 for (
unsigned int j = 0; j < ( kc.
Ltrk() ).size(); j++ )
1052 int n = ( kc.
Ltrk() )[j];
1053 pmis = pmis + p4Infit(
n );
1058 for (
unsigned int j = 0; j < ( kc.
Ltrk() ).size(); j++ )
1060 int n = ( kc.
Ltrk() )[j];
1061 HepMatrix Dc( 1, NTRKPAR, 0 );
1062 Dc[0][0] = pmis.px() / pmis.rho();
1063 Dc[0][1] = pmis.py() / pmis.rho();
1064 Dc[0][2] = pmis.pz() / pmis.rho();
1065 setD( m_nc,
n, Dc );
1066 setDT(
n, m_nc, Dc.T() );
1069 HepVector
dc( 1, 0 );
1070 dc[0] = pmis.rho() - ptot;
1150 case ThreeMomentum: {
1156 Hep3Vector p3 = kc.
p3();
1157 HepLorentzVector pmis;
1158 for (
unsigned int j = 0; j < ( kc.
Ltrk() ).size(); j++ )
1160 int n = ( kc.
Ltrk() )[j];
1161 pmis = pmis + p4Infit(
n );
1165 for (
unsigned int j = 0; j < ( kc.
Ltrk() ).size(); j++ )
1167 int n = ( kc.
Ltrk() )[j];
1169 HepMatrix Dc( kc.
nc(), NTRKPAR, 0 );
1173 HepVector
dc( kc.
nc(), 0 );
1174 dc[0] = pmis.px() - p3.x();
1175 dc[1] = pmis.py() - p3.y();
1176 dc[2] = pmis.pz() - p3.z();
1177 for (
int i = 0; i < kc.
nc(); i++ )
1179 setD( m_nc + i,
n, Dc.sub( i + 1, i + 1, 1, NTRKPAR ) );
1180 setDT(
n, m_nc + i, ( Dc.sub( i + 1, i + 1, 1, NTRKPAR ) ).T() );
1181 m_d[m_nc + i] =
dc[i];
1204 HepLorentzVector pmis1, pmis2;
1205 for (
int n = 0;
n < isiz;
n++ )
1208 pmis1 = pmis1 + p4Infit(
n1 );
1211 for (
int n = 0;
n < jsiz;
n++ )
1213 int n2 = ( kc.
Ltrk() )[
n + isiz];
1214 pmis2 = pmis2 + p4Infit(
n2 );
1216 for (
int i = 0; i < isiz; i++ )
1218 int n1 = ( kc.
Ltrk() )[i];
1219 HepMatrix Dc( 1, NTRKPAR, 0 );
1220 Dc[0][0] = -2 * pmis1.px() + 2 * pmis1.e() * p4Infit(
n1 ).px() / p4Infit(
n1 ).e();
1221 Dc[0][1] = -2 * pmis1.py() + 2 * pmis1.e() * p4Infit(
n1 ).py() / p4Infit(
n1 ).e();
1222 Dc[0][2] = -2 * pmis1.pz() + 2 * pmis1.e() * p4Infit(
n1 ).pz() / p4Infit(
n1 ).e();
1224 setD( m_nc,
n1, Dc );
1225 setDT(
n1, m_nc, Dc.T() );
1227 for (
int i = 0; i < jsiz; i++ )
1229 int n2 = ( kc.
Ltrk() )[i + isiz];
1230 HepMatrix Dc( 1, NTRKPAR, 0 );
1231 Dc[0][0] = 2 * pmis2.px() - 2 * pmis2.e() * p4Infit(
n2 ).px() / p4Infit(
n2 ).e();
1232 Dc[0][1] = 2 * pmis2.py() - 2 * pmis2.e() * p4Infit(
n2 ).py() / p4Infit(
n2 ).e();
1233 Dc[0][2] = 2 * pmis2.pz() - 2 * pmis2.e() * p4Infit(
n2 ).pz() / p4Infit(
n2 ).e();
1234 Dc[0][3] = -2 * pmis2.e();
1235 setD( m_nc,
n2, Dc );
1236 setDT(
n2, m_nc, Dc.T() );
1267 HepVector
dc( 1, 0 );
1268 dc[0] = pmis1.m2() - pmis2.m2();
1290 HepLorentzVector p4 = kc.
p4();
1291 HepLorentzVector pmis;
1292 for (
unsigned int j = 0; j < ( kc.
Ltrk() ).size(); j++ )
1294 int n = ( kc.
Ltrk() )[j];
1295 pmis = pmis + p4Infit(
n );
1298 for (
unsigned int j = 0; j < ( kc.
Ltrk() ).size(); j++ )
1300 int n = ( kc.
Ltrk() )[j];
1301 HepMatrix Dc( kc.
nc(), NTRKPAR, 0 );
1305 Dc[3][0] = p4Infit(
n ).px() / p4Infit(
n ).e();
1306 Dc[3][1] = p4Infit(
n ).py() / p4Infit(
n ).e();
1307 Dc[3][2] = p4Infit(
n ).pz() / p4Infit(
n ).e();
1311 HepVector
dc( kc.
nc(), 0 );
1312 dc[0] = pmis.px() - p4.px();
1313 dc[1] = pmis.py() - p4.py();
1314 dc[2] = pmis.pz() - p4.pz();
1315 dc[3] = pmis.e() - p4.e();
1316 for (
int i = 0; i < kc.
nc(); i++ )
1318 setD( m_nc + i,
n, Dc.sub( i + 1, i + 1, 1, NTRKPAR ) );
1319 setDT(
n, m_nc + i, ( Dc.sub( i + 1, i + 1, 1, NTRKPAR ) ).T() );
1320 m_d[m_nc + i] =
dc[i];
HepGeom::Point3D< double > HepPoint3D
character *LEPTONflag integer iresonances real zeta5 real a0
double sin(const BesAngle a)
HepSymMatrix eHel() const
std::vector< HepSymMatrix > VD()
void FourMomentumConstraints(const HepLorentzVector p4, std::vector< int > tlis, HepSymMatrix Vme)
std::vector< int > Ltrk()
void ResonanceConstraints(const double mres, std::vector< int > tlis, HepSymMatrix Vre)
void ThreeMomentumConstraints(const Hep3Vector p3, std::vector< int > tlis)
void TotalEnergyConstraints(const double etot, std::vector< int > tlis)
std::vector< int > numEqual()
HepLorentzVector p4() const
std::vector< HepMatrix > Dc()
void TotalMomentumConstraints(const double ptot, std::vector< int > tlis)
void EqualMassConstraints(std::vector< int > tlis1, std::vector< int > tlis2, HepSymMatrix Vne)
static KinematicFit * instance()
void BuildVirtualParticle(int number)
void AddResonance(int number, double mres, std::vector< int > tlis)
void AddEqualMass(int number, std::vector< int > tlis1, std::vector< int > tlis2)
void AddThreeMomentum(int number, Hep3Vector p3)
void AddFourMomentum(int number, HepLorentzVector p4)
void AddTotalEnergy(int number, double etot, std::vector< int > lis)
void AddTotalMomentum(int number, double ptot, std::vector< int > lis)
std::vector< int > AddList(int n1)
std::vector< WTrackParameter > wTrackInfit() const
void setVBeamPosition(const HepSymMatrix VBeamPosition)
void clearGammaShapeList()
int numberGammaShape() const
std::vector< GammaShape > GammaShapeValue() const
std::vector< WTrackParameter > wTrackOrigin() const
std::vector< int > GammaShapeList() const
void setBeamPosition(const HepPoint3D BeamPosition)
void setWTrackInfit(const int n, const WTrackParameter wtrk)
void setEw(const HepSymMatrix &Ew)
void setMass(const double mass)
void setCharge(const int charge)
void setW(const HepVector &w)