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