401{
402 const double C=0.029997;
403 const double B=20.84;
404
409 bool linFailed=false;
410 double* Rk = pV->getParametersVector();
411
413 for(i=0;
i<3;
i++)
P[i]=0.0;
414
415 int nSize=3+3*pV->getTracks()->size();
416
417 for(std::list<const TrigVertexFitInputTrack*>::iterator it=
m_trackList.begin();it!=
m_trackList.end();++it)
418 {
419 offset=3+3*(*it)->getIndex();
420 double mass=(*it)->getMass()/1000.0;
421 double pT=fabs(Rk[offset+2]);
422 double p=
pT/
sin(Rk[offset+1]);
423
424 double psi=-asin(alpha*(Rk[0]*
cos(Rk[offset])+Rk[1]*
sin(Rk[offset]))/Rk[offset+2]);
425 double phiV=Rk[
offset]+psi;
428 P[2]+=
pT*
cos(Rk[offset+1])/
sin(Rk[offset+1]);
429 E+=sqrt(mass*mass+p*p);
430 }
432
434 m_D[0][0]=0.0;
m_D[0][1]=0.0;
m_D[0][2]=0.0;
435
436 for(std::list<const TrigVertexFitInputTrack*>::iterator it=
m_trackList.begin();it!=
m_trackList.end();++it)
437 {
438 offset=3+3*(*it)->getIndex();
439
440 double mass=(*it)->getMass()/1000.0;
441 double Ck=(Rk[
offset+2]<0.0)?-1.0:1.0;
442 double sinT=
sin(Rk[offset+1]);
443 double cosT=
cos(Rk[offset+1]);
444 double pT=fabs(Rk[offset+2]);
446 double e=sqrt(p*p+mass*mass);
447 double sinF=
sin(Rk[offset]);
448 double cosF=
cos(Rk[offset]);
449
450 double sinPsi=-
alpha*(Rk[0]*cosF+Rk[1]*sinF)/Rk[offset+2];
451 if(fabs(sinPsi)>1.0)
452 {
453 linFailed=true;
454 break;
455 }
456 double psi=asin(sinPsi);
457 double cosPsi=sqrt(1.0-sinPsi*sinPsi);
458 double phiV=Rk[
offset]+psi;
459
460 double aCos=
alpha*Ck/cosPsi;
461 double dP=
P[1]*
cos(phiV)-
P[0]*
sin(phiV);
463
464 m_D[0][0]+=dP*cosF*aCos;
465 m_D[0][1]+=dP*sinF*aCos;
468 m_D[0][
offset+2]=eE/sinT-Ck*(
P[0]*
cos(phiV)+
P[1]*
sin(phiV)+
P[2]*cosT/sinT)+dP*Ck*sinPsi/cosPsi;
469 }
470 for(i=0;
i<nSize;
i++)
m_D[0][i]/=invMass;
471 if(linFailed) return -999.9;
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
495
497 {
499 {
500 double dCov=pV->m_Gk[
i][
j]*
m_D[0][
i]*
m_D[0][
j];
501 if(i!=j) dCov*=2.0;
502 covM+=dCov;
503 }
504 }
507}
double m_D[2][MAX_SIZE_VERT_COVM]
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)