130 TMatrixT<Double_t> rawCov =
hit->getRawHitCov();
133 std::vector <double> tmpRawCov;
134 tmpRawCov.push_back(rawCov[0][0]);
135 tmpRawCov.push_back(rawCov[1][1]);
136 tmpRawCov.push_back(rawCov[2][2]);
137 tmpRawCov.push_back(rawCov[2][1]);
139 static std::vector <double> oldRawCov(tmpRawCov);
140 static std::vector <double> oldOldRawCov(tmpRawCov);
141 static GFDetPlane planePrevPrev(planePrev);
142 rawCov.ResizeTo(7,7);
145 rawCov[0][0] = tmpRawCov[0];
146 rawCov[1][1] = tmpRawCov[1];
147 rawCov[2][2] = tmpRawCov[2];
148 rawCov[1][2] = tmpRawCov[3];
149 rawCov[2][1] = tmpRawCov[3];
153 TMatrixT<Double_t> jac(7,5);
163 Double_t mom = fabs(1.0/
state[0][0]);
164 Double_t beta = mom/sqrt(
mass*
mass+mom*mom);
165 dist = (plane.getO()-planePrev.getO()).Mag();
166 C = 0.0136/beta*sqrt(
dist/14.0)*(1+0.038*log(
dist/14.0));
167 TVector3 _D (plane.getNormal());
174 rawCov[3][3] = (oldRawCov[0]+tmpRawCov[0])/pow(
dist,4.) *
176 pow((plane.getO()-planePrev.getO()).Y(),2.) +
177 pow((plane.getO()-planePrev.getO()).Z(),2.)
180 pow((plane.getO()-planePrev.getO()).
X(),2.) *
182 pow((plane.getO()-planePrev.getO()).Y(),2.) * (oldRawCov[1]+tmpRawCov[1]) +
183 pow((plane.getO()-planePrev.getO()).Z(),2.) * (oldRawCov[2]+tmpRawCov[2])
187 3.0* (plane.getO()-planePrev.getO()).
X() * (plane.getO()-planePrev.getO()).Y() * (plane.getO()-planePrev.getO()).Z() / pow(
dist,5.) * (tmpRawCov[3] + oldRawCov[3])
190 rawCov[4][4] = (oldRawCov[1]+tmpRawCov[1])/pow(
dist,4.) *
192 pow((plane.getO()-planePrev.getO()).
X(),2.) +
193 pow((plane.getO()-planePrev.getO()).Z(),2.)
196 pow((plane.getO()-planePrev.getO()).Y(),2.) *
198 pow((plane.getO()-planePrev.getO()).
X(),2.) * (oldRawCov[0]+tmpRawCov[0]) +
199 pow((plane.getO()-planePrev.getO()).Z(),2.) * (oldRawCov[2]+tmpRawCov[2])
203 3.0* ( (plane.getO()-planePrev.getO()).
X() * (plane.getO()-planePrev.getO()).Y() * (plane.getO()-planePrev.getO()).Z() / pow(
dist,5.) + (plane.getO()-planePrev.getO()).Z() / pow(
dist,3.) ) * ( tmpRawCov[3] + oldRawCov[3] )
206 rawCov[5][5] = (oldRawCov[2]+tmpRawCov[2])/pow(
dist,4.) *
208 pow((plane.getO()-planePrev.getO()).
X(),2.) +
209 pow((plane.getO()-planePrev.getO()).Y(),2.)
212 pow((plane.getO()-planePrev.getO()).Z(),2.) *
214 pow((plane.getO()-planePrev.getO()).Y(),2.) * (oldRawCov[0]+tmpRawCov[0])+
215 pow((plane.getO()-planePrev.getO()).
X(),2.) * (oldRawCov[1]+tmpRawCov[1])
219 3.0* ( (plane.getO()-planePrev.getO()).
X() * (plane.getO()-planePrev.getO()).Y() * (plane.getO()-planePrev.getO()).Z() / pow(
dist,5.) + (plane.getO()-planePrev.getO()).Y() / pow(
dist,3.) ) * ( tmpRawCov[3] + oldRawCov[3] )
223 Double_t num = (plane.getO()-planePrev.getO())*(planePrev.getO()-planePrevPrev.getO());
224 Double_t d1 = (plane.getO()-planePrev.getO()).Mag();
225 Double_t d2 = (planePrev.getO()-planePrevPrev.getO()).Mag();
232 pow(((planePrev.getO()-planePrevPrev.getO()).
X()*d1*d2 -
233 num * (plane.getO()-planePrev.getO()).
X() *d2/d1) /
234 pow(d1,2.0)/pow(d2,2.0),2.0) * tmpRawCov[0] +
235 pow(((planePrev.getO()-planePrevPrev.getO()).Y()*d1*d2 +
236 num * (plane.getO()-planePrev.getO()).Y() *d2/d1) /
237 pow(d1,2.0)/pow(d2,2.0),2.0) * tmpRawCov[1] +
238 pow(((planePrev.getO()-planePrevPrev.getO()).Z()*d1*d2 +
239 num * (plane.getO()-planePrev.getO()).Z() *d2/d1) /
240 pow(d1,2.0)/pow(d2,2.0),2.0) * tmpRawCov[2] +
242 pow(((plane.getO()-planePrev.getO()).
X()*d1*d2 -
243 num * (planePrev.getO()-planePrevPrev.getO()).
X() *d1/d2) /
244 pow(d1,2.0)/pow(d2,2.0),2.0) * oldOldRawCov[0] +
245 pow(((plane.getO()-planePrev.getO()).Y()*d1*d2 -
246 num * (planePrev.getO()-planePrevPrev.getO()).Y() *d1/d2) /
247 pow(d1,2.0)/pow(d2,2.0),2.0) * oldOldRawCov[1] +
248 pow(((plane.getO()-planePrev.getO()).Z()*d1*d2 -
249 num * (planePrev.getO()-planePrevPrev.getO()).Z() *d1/d2) /
250 pow(d1,2.0)/pow(d2,2.0),2.0) * oldOldRawCov[2] +
252 pow(((plane.getO()-planePrevPrev.getO()).
X()*d1*d2 -
253 num * (plane.getO()-planePrev.getO()).
X() *d2/d1 +
254 num * (planePrev.getO()-planePrevPrev.getO()).
X() *d1/d2
256 pow(d1,2.0)/pow(d2,2.0),2.0) * oldRawCov[0] +
257 pow(((plane.getO()-planePrevPrev.getO()).Y()*d1*d2 -
258 num * (plane.getO()-planePrev.getO()).Y() *d2/d1 +
259 num * (planePrev.getO()-planePrevPrev.getO()).Y() *d1/d2
261 pow(d1,2.0)/pow(d2,2.0),2.0) * oldRawCov[1] +
262 pow(((plane.getO()-planePrevPrev.getO()).Z()*d1*d2 -
263 num * (plane.getO()-planePrev.getO()).Z() *d2/d1 +
264 num * (planePrev.getO()-planePrevPrev.getO()).Z() *d1/d2
266 pow(d1,2.0)/pow(d2,2.0),2.0) * oldRawCov[2]
271 (plane.getO()-planePrev.getO()).Z() * (planePrev.getO()-planePrevPrev.getO()).Y() / pow(d1,3.)/d2
273 (plane.getO()-planePrev.getO()).Y() * (planePrev.getO()-planePrevPrev.getO()).Z() / pow(d1,3.)/d2
275 3.*(plane.getO()-planePrev.getO()).Y() * (plane.getO()-planePrev.getO()).Z() * num / pow(d1,5.)/d2
280 (planePrevPrev.getO()-planePrev.getO()).Z() * (planePrev.getO()-plane.getO()).Y() / pow(d1,3.)/d2
282 (planePrevPrev.getO()-planePrev.getO()).Y() * (planePrev.getO()-plane.getO()).Z() / pow(d1,3.)/d2
284 3.*(planePrevPrev.getO()-planePrev.getO()).Y() * (planePrevPrev.getO()-planePrev.getO()).Z() * num / pow(d1,5.)/d2
289 ( (plane.getO()-planePrev.getO()).Y() - (planePrev.getO()-planePrevPrev.getO()).Y() ) *
290 (-(plane.getO()-planePrev.getO()).Z()/pow(d1,3.)/d2 +
291 (planePrev.getO()-planePrevPrev.getO()).Z()/pow(d2,3.)/d1
293 + (plane.getO()-planePrev.getO()).Y() *
295 (-(planePrev.getO()-planePrevPrev.getO()).Z() +
296 (plane.getO()-planePrev.getO()).Z()
299 ( -3.* (plane.getO()-planePrev.getO()).Z()*d1*d2 +
300 (planePrev.getO()-planePrevPrev.getO()).Z()*pow(d1,3.)/d2
302 ) / pow(d1,6.) / pow(d2,2.)
304 (planePrev.getO()-planePrevPrev.getO()).Y()*
306 (-(planePrev.getO()-planePrevPrev.getO()).Z() +
307 (plane.getO()-planePrev.getO()).Z()
310 ( 3.* (planePrev.getO()-planePrevPrev.getO()).Z()*d1*d2 -
311 (plane.getO()-planePrev.getO()).Z()*pow(d2,3.)/d1
313 ) / pow(d1,2.) / pow(d2,6.)
318 Double_t theta(TMath::ACos((plane.getO()-planePrev.getO()).Unit() * (planePrev.getO()-planePrevPrev.getO()).Unit()));
319 rawCov[6][6] =
TMath::Min(pow(dcosTh,2.)/pow(TMath::Sin(theta),2.),pow(TMath::Pi()/2.0,2.));
323 if (d1 == 0 || d2 == 0)
325 rawCov[3][3] = pow(0.2,2.0);
326 rawCov[4][4] = pow(0.2,2.0);
327 rawCov[5][5] = pow(0.2,2.0);
328 rawCov[6][6] = pow(0.1,2.0);
330 C = 0.0136/beta*sqrt(
dist/14.0)*(1+0.038*log(
dist/14.0));
336 TVector3 u=plane.getU();
337 TVector3 v=plane.getV();
338 TVector3
w=u.Cross(v);
344 double pTildeMag = pTilde.Mag();
359 jac[3][1] = 1.0/pTildeMag*(u.X()-pTilde.X()/(pTildeMag*pTildeMag)*u*pTilde);
360 jac[4][1] = 1.0/pTildeMag*(u.Y()-pTilde.Y()/(pTildeMag*pTildeMag)*u*pTilde);
361 jac[5][1] = 1.0/pTildeMag*(u.Z()-pTilde.Z()/(pTildeMag*pTildeMag)*u*pTilde);
363 jac[3][2] = 1.0/pTildeMag*(v.X()-pTilde.X()/(pTildeMag*pTildeMag)*v*pTilde);
364 jac[4][2] = 1.0/pTildeMag*(v.Y()-pTilde.Y()/(pTildeMag*pTildeMag)*v*pTilde);
365 jac[5][2] = 1.0/pTildeMag*(v.Z()-pTilde.Z()/(pTildeMag*pTildeMag)*v*pTilde);
367 TMatrixT<Double_t> jac_orig = jac;
368 TMatrixT<Double_t> jac_t = jac.T();
370 TMatrixT<Double_t> result=jac_t * (rawCov * jac_orig);
375 oldOldRawCov = oldRawCov;
376 oldRawCov = tmpRawCov;
377 planePrevPrev = planePrev;
then echo echo For and will not be changed by echo further linking echo echo B echo The symbol is in the uninitialized data multiple common symbols may appear with the echo same name If the symbol is defined the common echo symbols are treated as undefined references For more echo details on common see the discussion of warn common echo in *Note Linker see the discussion of warn common echo in *Note Linker such as a global int variable echo as opposed to a large global array echo echo I echo The symbol is an indirect reference to another symbol This echo is a GNU extension to the a out object file format which is echo rarely used echo echo N echo The symbol is a debugging symbol echo echo R echo The symbol is in a read only data section echo echo S echo The symbol is in an uninitialized data section for small echo objects echo echo T echo The symbol is in the the normal defined echo symbol is used with no error When a weak undefined symbol echo is linked and the symbol is not the value of the echo weak symbol becomes zero with no error echo echo W echo The symbol is a weak symbol that has not been specifically echo tagged as a weak object symbol When a weak defined symbol echo is linked with a normal defined the normal defined echo symbol is used with no error When a weak undefined symbol echo is linked and the symbol is not the value of the echo weak symbol becomes zero with no error echo echo echo The symbol is a stabs symbol in an a out object file In echo this the next values printed are the stabs other echo the stabs desc and the stab type Stabs symbols are echo used to hold debugging information For more echo see *Note or object file format specific echo echo For Mac OS X
constexpr double dist(const TReal *x, const TReal *y, const unsigned int dimension)