1026 {
1027 constexpr double Pi =
M_PI;
1028
1029
1030
1031
1032 f = 0;
1033
1034 using Vertices = std::vector<BeamSpot::VrtHolder>;
1035 Vertices::const_iterator vit = BeamSpot::vertexData->begin();
1036
1039 double vxx,vyy, vxy;
1040 double covXX,covYY,covXY;
1041 double det,k2;
1042
1043
1044 for ( ; vit != vertexData->end(); ++vit) {
1045 if (!vit->valid) continue;
1050 vxx = vit->vxx;
1051 vxy = vit->vxy;
1052 vyy = vit->vyy;
1053
1054
1055 k2 = par[7]*par[7];
1056
1057 covXX = k2 *vxx + par[4]*par[4];
1058 covYY = k2 *vyy + par[5]*par[5];
1059 covXY = k2 *vxy + par[6] *par[4]* par[5];
1060
1061 det = covXX * covYY - covXY*covXY;
1062 double recDet = 1./det;
1063
1064
1065 temp = 2*TMath::Log(2*
Pi);
1066 temp += TMath::Log(det);
1067
1068 covXY = -covXY * recDet;
1069 double t = covXX *recDet;
1070 covXX = covYY *recDet;
1071 covYY = t;
1072
1074 (
x - par[0] - par[2]*
z) * covXX * (
x - par[0] - par[2]*
z)
1075 + (
y - par[1] - par[3]*
z) * covYY * (
y - par[1] - par[3]*
z)
1076 + 2*(
x - par[0] - par[2]*
z) * covXY * (
y - par[1] - par[3]*
z)
1077 );
1078
1079 temp += TMath::Log( 2*
Pi * par[9]*par[9] ) + (
z - par[8]) * (
z-par[8]) / (par[9] * par[9] );
1081 }
1082
1083
1084}