255 {
256 HepVector cen1( lp1.
center() );
257 HepVector cen2( lp2.
center() );
258 double dx = cen1( 1 ) - cen2( 1 );
259 double dy = cen1( 2 ) - cen2( 2 );
260 double dc = sqrt( dx * dx + dy * dy );
261 if (
dc < fabs( 0.5 / lp1.
kappa() ) + fabs( 0.5 / lp2.
kappa() ) )
262 {
263 double a1 = std::sqrt( lp1.alpha() ) + std::sqrt( lp1.beta() );
264 double a2 = std::sqrt( lp2.alpha() ) + std::sqrt( lp2.beta() );
265 double a3 = lp1.alpha() * lp2.alpha() + lp1.beta() * lp2.beta();
266 double det = lp1.alpha() * lp2.beta() - lp1.beta() * lp2.alpha();
267 if ( fabs( det ) > 1e-12 )
268 {
269 double c1 = a2 * std::sqrt( lp1.
kappa() ) + a1 * std::sqrt( lp2.
kappa() ) -
271 if ( c1 != 0 )
272 {
273 double cinv = 1.0 / c1;
274 double c2 = std::sqrt( a3 ) - 0.5 * ( a1 + a2 ) -
275 2.0 * a3 * ( lp1.gamma() * lp2.
kappa() + lp2.gamma() * lp1.
kappa() );
276 double c3 = a2 * std::sqrt( lp1.gamma() ) + a1 * std::sqrt( lp2.gamma() ) -
277 2.0 * a3 * lp1.gamma() * lp2.gamma();
278 double root = std::sqrt( c2 ) - 4.0 * c1 * c3;
280 {
282 double rad2[2];
283 rad2[0] = 0.5 * cinv * ( -c2 -
root );
284 rad2[1] = 0.5 * cinv * ( -c2 +
root );
285 double ab1 = -( lp2.beta() * lp1.gamma() - lp1.beta() * lp2.gamma() );
286 double ab2 = ( lp2.alpha() * lp1.gamma() - lp1.alpha() * lp2.gamma() );
287 double ac1 = -( lp2.beta() * lp1.
kappa() - lp1.beta() * lp2.
kappa() );
288 double ac2 = ( lp2.alpha() * lp1.
kappa() - lp1.alpha() * lp2.
kappa() );
289 double dinv = 1.0 / det;
290 v1( 1 ) = dinv * ( ab1 + ac1 * rad2[0] );
291 v1( 2 ) = dinv * ( ab2 + ac2 * rad2[0] );
292 v1( 3 ) = 0;
293 v2( 1 ) = dinv * ( ab1 + ac1 * rad2[1] );
294 v2( 2 ) = dinv * ( ab2 + ac2 * rad2[1] );
295 v2( 3 ) = 0;
296 double d1 = lp1.
d( v1( 1 ), v1( 2 ) );
297 double d2 = lp2.
d( v1( 1 ), v1( 2 ) );
298 double d3 = lp1.
d( v2( 1 ), v2( 2 ) );
299 double d4 = lp2.
d( v2( 1 ), v2( 2 ) );
300 double r = sqrt( rad2[0] );
301 Lpar::Cpar cp1( lp1 );
302 Lpar::Cpar cp2( lp2 );
303 for ( int j = 0; j < 2; j++ )
304 {
305 double s1, s2;
306 if ( j == 0 )
307 {
308 s1 = lp1.
s( v1( 1 ), v1( 2 ) );
309 s2 = lp2.
s( v1( 1 ), v1( 2 ) );
310 }
311 else
312 {
313 s1 = lp1.
s( v2( 1 ), v2( 2 ) );
314 s2 = lp2.
s( v2( 1 ), v2( 2 ) );
315 }
316 double phi1 = cp1.fi() + 2 * cp1.cu() * s1;
317 double phi2 = cp2.fi() + 2 * cp2.cu() * s2;
318 double f = ( 1 + 2 * cp1.cu() * cp1.da() ) * ( 1 + 2 * cp2.cu() * cp2.da() ) *
319 cos( cp1.fi() - cp2.fi() );
320 f -= 2 * ( lp1.gamma() * lp2.
kappa() + lp2.gamma() * lp1.
kappa() );
322 }
323 return 2;
324 }
325 }
326 }
327 }
328 return 0;
329}
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
double cos(const BesAngle a)
double d(double x, double y) const
double s(double x, double y) const