36 double parV0[5], covParV0[15];
40 double ptot[3]= {0.,0.,0.};
42 for ( it=0; it<NTRK; it++) {
51 long int Charge = 0;
for ( it=0; it<NTRK; it++) Charge += vk->
TrackList[it]->Charge;
56 double lPhi = atan2(ptot[1], ptot[0]);
57 double lTheta = acos(ptot[2] / sqrt(ptot[0]*ptot[0]+ptot[1]*ptot[1]+ptot[2]*ptot[2]));
62 double DummyErr[21] = { 1.e-20,
66 0., 0., 0., 0., 1.e-18,
67 0., 0., 0., 0., 0., 1.e-18};
68 combinedTrack( Charge, ptot, DummyErr, effectiveField, parV0, covParV0);
73 double nPar[5],nCov[15];
74 long int TrkID = -999;
79 cnv[0][0] = -sin(nPar[3]);
80 cnv[0][1] = cos(nPar[3]);
82 cnv[1][0] = sin(nPar[3])/tan(nPar[2]);
83 cnv[1][1] = cos(nPar[3])/tan(nPar[2]);
86 double covImp[3]={0.,0.,0.};
89 if(i>=j){ ij=i*(i+1)/2+j; }
else{ ij=j*(j+1)/2+i;}
90 covImp[0] += cnv[0][i]*vk->
FVC.
covvrt[ij]*cnv[0][j];
91 covImp[1] += cnv[0][i]*vk->
FVC.
covvrt[ij]*cnv[1][j];
92 covImp[2] += cnv[1][i]*vk->
FVC.
covvrt[ij]*cnv[1][j];
95 if ( UseTrkErr){ covImp[0] += nCov[0]; covImp[1] += nCov[1]; covImp[2] += nCov[2];}
98 int IERR=
cfdinv(covImp, dwgt, -2);
if(IERR){ IERR=
cfdinv(covImp, dwgt, 2);
if(IERR){dwgt[0]=dwgt[2]=1.e6; dwgt[1]=0.;}}
99 Signif = sqrt(dwgt[0] * nPar[0] * nPar[0] + 2. * dwgt[1] * nPar[0] * nPar[1] +
100 dwgt[2] * nPar[1] * nPar[1]);
static void getMagFld(const double, const double, const double, double &, double &, double &, const VKalVrtControlBase *)
static void Propagate(long int TrkID, long int Charge, double *ParOld, double *CovOld, double *RefStart, double *RefEnd, double *ParNew, double *CovNew, VKalVrtControlBase *FitControl=0)
void combinedTrack(long int ICH, double *pv0, double *covi, double effectiveBMAG, double *par, double *covo)