1032 {
1033 constexpr double Pi =
M_PI;
1034
1035
1036
1037
1038 f = 0;
1039
1040 using Vertices = std::vector<BeamSpot::VrtHolder>;
1041 Vertices::const_iterator vit = BeamSpot::vertexData->begin();
1042
1045 double vxx,vyy, vxy;
1046 double covXX,covYY,covXY;
1047 double det,k2;
1048
1049
1050 for ( ; vit != vertexData->end(); ++vit) {
1051 if (!vit->valid) continue;
1056 vxx = vit->vxx;
1057 vxy = vit->vxy;
1058 vyy = vit->vyy;
1059
1060
1061 k2 = par[7]*par[7];
1062
1063 covXX = k2 *vxx + par[4]*par[4];
1064 covYY = k2 *vyy + par[5]*par[5];
1065 covXY = k2 *vxy + par[6] *par[4]* par[5];
1066
1067 det = covXX * covYY - covXY*covXY;
1068 double recDet = 1./det;
1069
1070
1071 temp = 2*TMath::Log(2*
Pi);
1072 temp += TMath::Log(det);
1073
1074 covXY = -covXY * recDet;
1075 double t = covXX *recDet;
1076 covXX = covYY *recDet;
1077 covYY = t;
1078
1080 (
x - par[0] - par[2]*
z) * covXX * (
x - par[0] - par[2]*
z)
1081 + (
y - par[1] - par[3]*
z) * covYY * (
y - par[1] - par[3]*
z)
1082 + 2*(
x - par[0] - par[2]*
z) * covXY * (
y - par[1] - par[3]*
z)
1083 );
1084
1085 temp += TMath::Log( 2*
Pi * par[9]*par[9] ) + (
z - par[8]) * (
z-par[8]) / (par[9] * par[9] );
1087 }
1088
1089
1090}