28 double p = (abs(ftp.GetQp()) > 1.e-4) ? 1. / abs(ftp.GetQp()) : 1.e4;
29 double norma =
sqrt(ftp.GetTx() * ftp.GetTx() + ftp.GetTy() * ftp.GetTy() + 1);
33 double DpzByDqp = -p * p / norma;
34 double DpzByDtx = -p * ftp.GetTx() / (norma * norma * norma);
35 double DpzByDty = -p * ftp.GetTy() / (norma * norma * norma);
37 sqrt(DpzByDqp * DpzByDqp * cov[14] + DpzByDtx * DpzByDtx * cov[9] + DpzByDty * DpzByDty * cov[12]
38 + 2 * DpzByDqp * DpzByDtx * cov[11] + 2 * DpzByDqp * DpzByDty * cov[13] + 2 * DpzByDtx * DpzByDty * cov[10]);
39 double DpxByDqp = ftp.GetTx() * DpzByDqp;
40 double DpxByDtx = p * (ftp.GetTy() * ftp.GetTy() + 1) / (norma * norma * norma);
41 double DpxByDty = -p * ftp.GetTx() * ftp.GetTy() / (norma * norma * norma);
43 sqrt(DpxByDqp * DpxByDqp * cov[14] + DpxByDtx * DpxByDtx * cov[9] + DpxByDty * DpxByDty * cov[12]
44 + 2 * DpxByDqp * DpxByDtx * cov[11] + 2 * DpxByDqp * DpxByDty * cov[13] + 2 * DpxByDtx * DpxByDty * cov[10]);
45 double DpyByDqp = ftp.GetTy() * DpzByDqp;
46 double DpyByDtx = -p * ftp.GetTx() * ftp.GetTy() / (norma * norma * norma);
47 double DpyByDty = p * (ftp.GetTx() * ftp.GetTx() + 1) / (norma * norma * norma);
49 sqrt(DpyByDqp * DpyByDqp * cov[14] + DpyByDtx * DpyByDtx * cov[9] + DpyByDty * DpyByDty * cov[12]
50 + 2 * DpyByDqp * DpyByDtx * cov[11] + 2 * DpyByDqp * DpyByDty * cov[13] + 2 * DpyByDtx * DpyByDty * cov[10]);