ATLAS Offline Software
Public Member Functions | Public Attributes | List of all members
InDetProjHelper::Imp Class Reference
Collaboration diagram for InDetProjHelper::Imp:

Public Member Functions

void lineCircleIntersection (const Amg::Vector3D &a, const Amg::Vector3D &b, const double &r, double &u1, double &u2) const
 
void movePoint1ToZPlaneAndPoint2 (Amg::Vector3D &p1, const Amg::Vector3D &p2, const double &z) const
 
bool clipSegmentToZInterval (Amg::Vector3D &a, Amg::Vector3D &b, const double &zmin, const double &zmax) const
 
void movePoint1ToInfiniteCylinderAndPoint2 (Amg::Vector3D &p1, const Amg::Vector3D &p2, const double &r) const
 
bool clipSegmentToInfiniteHollowCylinder (Amg::Vector3D &a, Amg::Vector3D &b, const double &rmin, const double &rmax, Amg::Vector3D &seg2_a, Amg::Vector3D &seg2_b) const
 
bool clipSegmentToHollowCylinder (Amg::Vector3D &a, Amg::Vector3D &b, const double &rmin, const double &rmax, const double &zmin, const double &zmax, Amg::Vector3D &seg2_a, Amg::Vector3D &seg2_b) const
 
void clipPathToHollowCylinder (const std::vector< Amg::Vector3D > &in, Amg::SetVectorVector3D &out, const double &rmin, const double &rmax, const double &zmin, const double &zmax) const
 
bool touchesHollowCylinder (const std::vector< Amg::Vector3D > &path, const double &rmin, const double &rmax, const double &zmin, const double &zmax) const
 
void projectPathToInfiniteCylinder (const std::vector< Amg::Vector3D > &in, Amg::SetVectorVector3D &outset, const double &r) const
 
void projectPathToZPlane (const std::vector< Amg::Vector3D > &in, Amg::SetVectorVector3D &outset, const double &z) const
 
void projectPathToZPlane_specialZtoR (const std::vector< Amg::Vector3D > &in, Amg::SetVectorVector3D &outset, const double &z) const
 

Public Attributes

InDetProjHelpertheclass = nullptr
 
InDetProjFlags::InDetProjPartsFlags parts
 
double surfacethickness = 0.0
 
double data_disttosurface_epsilon = 0.0
 
double barrel_inner_radius = 0.0
 
double barrel_outer_radius = 0.0
 
double barrel_posneg_z = 0.0
 
double endcap_surface_z = 0.0
 
double endcap_surface_length = 0.0
 
double endcap_inner_radius = 0.0
 
double endcap_outer_radius = 0.0
 
double endcap_zasr_innerradius = 0.0
 
double endcap_zasr_endcapz_begin = 0.0
 
double endcap_zasr_squeezefact = 0.0
 
double covercyl_zmin = 0.0
 
double covercyl_zmax = 0.0
 
double covercyl_rmin = 0.0
 
double covercyl_rmax = 0.0
 

Detailed Description

Definition at line 86 of file InDetProjHelper.cxx.

Member Function Documentation

◆ clipPathToHollowCylinder()

void InDetProjHelper::Imp::clipPathToHollowCylinder ( const std::vector< Amg::Vector3D > &  in,
Amg::SetVectorVector3D out,
const double &  rmin,
const double &  rmax,
const double &  zmin,
const double &  zmax 
) const

Definition at line 667 of file InDetProjHelper.cxx.

672 {
673 // if (VP1Msg::verbose()) {
674 // theclass->messageVerbose("clipPathToHollowCylinder called");
675 // theclass->messageVerbose(" ===> rmin = "+QString::number(rmin));
676 // theclass->messageVerbose(" ===> rmax = "+QString::number(rmax));
677 // theclass->messageVerbose(" ===> zmin = "+QString::number(zmin));
678 // theclass->messageVerbose(" ===> zmax = "+QString::number(zmax));
679 // }
680 
681  out.clear();
682  if (rmin>=rmax||rmin<0||zmin>=zmax) {
683  theclass->message("clipPathToHollowCylinder Error: Non-sensical cylinder parameters!");
684  return;
685  }
686  const unsigned n=in.size();
687  if (n<2)
688  return;
689 
690  Amg::Vector3D a,b;
691  Amg::Vector3D seg2_a,seg2_b;
692  std::vector<Amg::Vector3D > v;
693  for (unsigned i = 1; i<n; ++i) {
694  // theclass->messageVerbose("clipPathToHollowCylinder -> dealing with segment "+QString::number(i-1)+"->"+QString::number(i));
695 
696  a = in.at(i-1);//fixme: .at()->[]
697  b = in.at(i);
698  if ( clipSegmentToHollowCylinder( a,b,rmin,rmax,zmin,zmax,seg2_a,seg2_b ) ) {
699  if (v.empty()) {
700  v.push_back(a);
701  v.push_back(b);
702  if (seg2_a!=seg2_b) {
703  out.insert(v);
704  v.clear();
705  v.push_back(seg2_a);
706  v.push_back(seg2_b);
707  }
708  } else {
709  //We know that previous segment was also touching. Therefore
710  //it must necessarily be true that v.back()==a.
711  if ( v.back() != a ) {
712  theclass->messageDebug("ERROR: Inconsistency found while building clip part");//Fixme: downgrade to messageDebug for now, but need to understand this!
713  out.insert(v);
714  v.clear();
715  v.push_back(a);
716  }
717  v.push_back(b);
718  if (seg2_a!=seg2_b) {
719  out.insert(v);
720  v.clear();
721  v.push_back(seg2_a);
722  v.push_back(seg2_b);
723  }
724  }
725  } else {
726 // theclass->messageVerbose("Segment does not touch");
727  //Segment doesn't touch cylinder volume - flush part currently building if any.
728  if (!v.empty()) {
729  out.insert(v);
730  v.clear();
731  }
732  }
733  }
734  if (!v.empty()) {
735 // theclass->messageDebug("v not empty");
736  out.insert(v);
737  }
738 }

◆ clipSegmentToHollowCylinder()

bool InDetProjHelper::Imp::clipSegmentToHollowCylinder ( Amg::Vector3D a,
Amg::Vector3D b,
const double &  rmin,
const double &  rmax,
const double &  zmin,
const double &  zmax,
Amg::Vector3D seg2_a,
Amg::Vector3D seg2_b 
) const

Definition at line 614 of file InDetProjHelper.cxx.

618 {
619  // seg2_a = seg2_b;//test
620 // if (VP1Msg::verbose()) {
621 // theclass->messageVerbose("clipSegmentToHollowCylinder called with:");
622 // theclass->messageVerbose(" rmin = "+QString::number(rmin));
623 // theclass->messageVerbose(" rmax = "+QString::number(rmax));
624 // theclass->messageVerbose(" zmin = "+QString::number(zmin));
625 // theclass->messageVerbose(" zmax = "+QString::number(zmax));
626 // theclass->messageVerbose(" a = ("+QString::number(a.x())+", "+QString::number(a.y())+", "+QString::number(a.z())+")");
627 // theclass->messageVerbose(" b = ("+QString::number(b.x())+", "+QString::number(b.y())+", "+QString::number(b.z())+")");
628 // }
630  // seg2_a = seg2_b;
631 // if (VP1Msg::verbose())
632 // theclass->messageVerbose("clipSegmentToHollowCylinder segment outside z-interval.");
633  return false;
634  }
635 // if (VP1Msg::verbose()) {
636 // theclass->messageVerbose("clipSegmentToHollowCylinder parameters after clipSegmentToZInterval:");
637 // if (a.z()<zmin||a.z()>zmax)
638 // theclass->messageVerbose("clipSegmentToHollowCylinder ERROR in clipSegmentToZInterval call (a_z wrong).");
639 // if (b.z()<zmin||b.z()>zmax)
640 // theclass->messageVerbose("clipSegmentToHollowCylinder ERROR in clipSegmentToZInterval call (b_z wrong).");
641 // theclass->messageVerbose(" a = ("+QString::number(a.x())+", "+QString::number(a.y())+", "+QString::number(a.z())+")");
642 // theclass->messageVerbose(" b = ("+QString::number(b.x())+", "+QString::number(b.y())+", "+QString::number(b.z())+")");
643 // }
644  if (!clipSegmentToInfiniteHollowCylinder(a,b,rmin,rmax,seg2_a,seg2_b)) {
645  // seg2_a = seg2_b;
646 // if (VP1Msg::verbose())
647 // theclass->messageVerbose("clipSegmentToHollowCylinder segment outside infinite hollow cylinder.");
648  return false;
649  }
650 // if (VP1Msg::verbose()) {
651 // theclass->messageVerbose("clipSegmentToHollowCylinder parameters after clipSegmentToInfiniteHollowCylinder:");
652 // theclass->messageVerbose(" a = ("+QString::number(a.x())+", "+QString::number(a.y())+", "+QString::number(a.z())+")");
653 // theclass->messageVerbose(" b = ("+QString::number(b.x())+", "+QString::number(b.y())+", "+QString::number(b.z())+")");
654 // const double ar2 = a.x()*a.x()+a.y()*a.y();
655 // const double br2 = b.x()*b.x()+b.y()*b.y();
656 // if (ar2<rmin*rmin||ar2>rmax*rmax)
657 // theclass->messageVerbose("clipSegmentToHollowCylinder ERROR in clipSegmentToInfiniteHollowCylinder call (a wrong).");
658 // if (br2<rmin*rmin||br2>rmax*rmax)
659 // theclass->messageVerbose("clipSegmentToHollowCylinder ERROR in clipSegmentToInfiniteHollowCylinder call (b wrong).");
660 // theclass->messageVerbose("clipSegmentToHollowCylinder returning.");
661 // }
662 
663  return true;
664 }

◆ clipSegmentToInfiniteHollowCylinder()

bool InDetProjHelper::Imp::clipSegmentToInfiniteHollowCylinder ( Amg::Vector3D a,
Amg::Vector3D b,
const double &  rmin,
const double &  rmax,
Amg::Vector3D seg2_a,
Amg::Vector3D seg2_b 
) const

Definition at line 481 of file InDetProjHelper.cxx.

484 {
485  //* if returns false: segment does not intersect hollow cylinder - do
486  // NOT use returned points for anything.
487  //* if returns true and seg2_a==seg2_b: Use "a" and "b" for the clipped segment.
488  //* if returns true and seg2_a!=seg2_b: The clip resulting in TWO new segments
489  // (it was cut in two by the inner wall).
490 
491  //Fixme: Stuff like the following!:
492  // if (VP1SanityCheck::enabled()) {
493  // VP1SanityCheck::beginGroup("InDetProjHelper::Imp::clipSegmentToInfiniteHollowCylinder");
494  // VP1SanityCheck::positiveParameter("rmin",rmin);
495  // VP1SanityCheck::positiveParameter("rmax",rmax);
496  // VP1SanityCheck::parameter("point a",a);
497  // VP1SanityCheck::parameter("point b",b);
498  // VP1SanityCheck::endGroup();
499  // }
500  const double ar2 = a.x()*a.x()+a.y()*a.y();
501  const double br2 = b.x()*b.x()+b.y()*b.y();
502  const double rmin2 = rmin*rmin;
503  //We might be inside inner wall:
504  if (ar2 <= rmin2 && br2 <= rmin2 ) {
505  // seg2_a=seg2_b;
506 // if (VP1Msg::verbose())
507 // theclass->messageVerbose("clipSegmentToInfiniteHollowCylinder Segment entirely inside rmin.");
508  return false;
509  }
510  //Some fast checks for being outside:
511  if ( (a.x()<=-rmax&&b.x()<=-rmax) || (a.x()>=rmax&&b.x()>=rmax) || (a.y()<=-rmax&&b.y()<=-rmax)|| (a.y()>=rmax&&b.y()>=rmax) ) {
512 // if (VP1Msg::verbose())
513 // theclass->messageVerbose("clipSegmentToInfiniteHollowCylinder Segment clearly entirely outside outside rmax.");
514 // seg2_a=seg2_b;
515  return false;
516  }
517 
518  //If a==b (apart from perhaps z coord), the check is simple:
519  const double dx = b.x()-a.x();
520  const double dy = b.y()-a.y();
521  const double rmax2 = rmax*rmax;
522  if (dx==0.0&&dy==0.0) {
523  //Apparently a==b (apart from perhaps z coord).
524 // if (VP1Msg::verbose())
525 // theclass->messageVerbose("clipSegmentToInfiniteHollowCylinder a==b.");
526  return ar2<=rmax2;
527  }
528  //Find point which is closest to the z-axis and on the segment:
529  const double u = - (a.y()*dy+a.x()*dx)/(dx*dx+dy*dy);
530  const double px = ( u <= 0 ? a.x() : ( u >= 1 ? b.x() : a.x()+u*dx ) );
531  const double py = ( u <= 0 ? a.y() : ( u >= 1 ? b.y() : a.y()+u*dy ) );
532  const double pr2 = px*px+py*py;
533  if (pr2>=rmax2) {
534 // if (VP1Msg::verbose())
535 // theclass->messageVerbose("clipSegmentToInfiniteHollowCylinder segment entirely outside rmax.");
536 // seg2_a=seg2_b;
537  return false;
538 
539 
540  }
541  //We now know that the segment does indeed intersect the clip volume.
542  seg2_a=seg2_b;//signature of just one segment:
543 
544  if (pr2>=rmin2&&ar2<=rmax2&&br2<=rmax2) {
545  //We are actually already entirely inside the clip volume.
546 // if (VP1Msg::verbose())
547 // theclass->messageVerbose("clipSegmentToInfiniteHollowCylinder segment entirely inside clip volume."
548 // " (pr="+QString::number(sqrt(pr2))+", ar="+QString::number(sqrt(ar2))
549 // +", br="+QString::number(sqrt(br2))+")");
550  return true;
551  }
552 
553  //First we simply clip to the outer cylinder:
554  if (ar2>rmax2||br2>rmax2) {
555  //We need to clip a-b to be inside the outer cylinder.
556  //Find intersections:
557  double u1, u2;
558  lineCircleIntersection(a,b,rmax,u1,u2);//u1<=u2 !
559  if (u1==u2) {
560  //We are just touching - but we already tested against this!
561  theclass->message("This should never happen(1).");
562  // seg2_a=seg2_b;
563  return false;
564  }
565  Amg::Vector3D asave(a);
566  if (u1>0&&u1<1) {
567  //move a to a+u1*(b-a)
568  a = a+u1*(b-a);
569 // if (VP1Msg::verbose())
570 // theclass->messageVerbose("clipSegmentToInfiniteHollowCylinder sliding a towards b, at the rmax circle.");
571  }
572  if (u2>0&&u2<1) {
573  //move b to a+u2*(b-a)
574  b = asave+u2*(b-asave);
575 // if (VP1Msg::verbose())
576 // theclass->messageVerbose("clipSegmentToInfiniteHollowCylinder sliding b towards a, at the rmax circle.");
577  }
578  }
579 
580  if (pr2>=rmin2) {
581 // if (VP1Msg::verbose())
582 // theclass->messageVerbose("clipSegmentToInfiniteHollowCylinder remaining segment is now entirely inside.");
583  return true;
584  }
585  //Ok, we know that we intersect the inner cylinder
586  double u1, u2;
587  lineCircleIntersection(a,b,rmin,u1,u2);//u1<=u2 !
588 
589  if (u1>0&&u1<1) {
590  if (u2>0&&u2<1) {
591  //We intersect twice. Thus, two line segments:
592  //a to "a+u1*(b-a)" and "a+u2*(b-a)" to b
593  //a=a;
594  seg2_b = b;
595  b = a+u1*(seg2_b-a);
596  seg2_a=a+u2*(seg2_b-a);
597 // if (VP1Msg::verbose())
598 // theclass->messageVerbose("clipSegmentToInfiniteHollowCylinder Two resulting segments!.");
599  return true;
600  }
601  b = a+u1*(b-a);
602 // theclass->messageVerbose("clipSegmentToInfiniteHollowCylinder One resulting segment (b->a)!.");
603  return true;
604  }
605  if (u2>0&&u2<1)
606  a = a+u2*(b-a);
607 // theclass->messageVerbose("clipSegmentToInfiniteHollowCylinder One resulting segment (a->b)!.");
608  return true;
609 }

◆ clipSegmentToZInterval()

bool InDetProjHelper::Imp::clipSegmentToZInterval ( Amg::Vector3D a,
Amg::Vector3D b,
const double &  zmin,
const double &  zmax 
) const

Definition at line 391 of file InDetProjHelper.cxx.

393 {
394  if (a.z()<zmin) {
395  if (b.z()<zmin)//both <zmin
396  return false;
397  //a<zmin, b>=zmin:
399  if (b.z()>zmax)
401  return true;
402  } else {
403  if (b.z()<zmin) {
404  //a>=zmin, b<zmin
406  if (a.z()>zmax)
408  return true;
409  } else {
410  //Both are > zmin
411  if (a.z()>zmax) {
412  if (b.z()>zmax)
413  return false;
415  return true;
416  } else {
417  //zmin<=a<=zmax, b>=zmin
418  if (b.z()>zmax)
420  return true;
421  }
422  }
423  }
424 }

◆ lineCircleIntersection()

void InDetProjHelper::Imp::lineCircleIntersection ( const Amg::Vector3D a,
const Amg::Vector3D b,
const double &  r,
double &  u1,
double &  u2 
) const

Definition at line 450 of file InDetProjHelper.cxx.

452 {
453  const double dx = b.x()-a.x();
454  const double dy = b.y()-a.y();
455  double A = dx*dx+dy*dy;
456  if (A==0.0) {
457  //That's not a line => no intersections unless points are exactly on circumference!
458  u1 = u2 = ( a.x()*a.x()+a.y()*a.y() == r*r ? 0.0 : 1.0e99 );
459  return;
460  }
461  double B = 2.0*( a.x()*dx + a.y()*dy );
462  double C = a.x()*a.x()+a.y()*a.y() - r*r;
463  double D = B*B-4*A*C;
464 
465  if (D>0.0) {
466  //Intersections
467  double sqrtD = sqrt(D);
468  u1 = 0.5 * ( -B - sqrtD) / A;
469  u2 = 0.5 * ( -B + sqrtD) / A;
470  } else if (D<0.0) {
471  //No intersections:
472  u1 = u2 = -1.0e99;
473  } else {
474  //intersection in one point
475  u1 = u2 = -0.5*B/A;
476  }
477 
478 }

◆ movePoint1ToInfiniteCylinderAndPoint2()

void InDetProjHelper::Imp::movePoint1ToInfiniteCylinderAndPoint2 ( Amg::Vector3D p1,
const Amg::Vector3D p2,
const double &  r 
) const

Definition at line 427 of file InDetProjHelper.cxx.

428 {
429  //Fixme: what happens here if we don't cross? And how can we be sure
430  //that we don't move FURTHER than the other point? (i.e. if the
431  //infinite line with p1 and p2 crosses, but the segment p1p2 does
432  //not!?
433 
434 // double p1r(p1.r());
435 // double dr(p2.r()-p1r);
436  double p1r( Amg::rVector3D(p1) );
437  double dr( Amg::rVector3D(p2)-p1r );
438 
439  if (dr==0.0) {
440  theclass->message("movePoint1ToInfiniteCylinderAndPoint2 Error: Points have same r!!");
441  return;
442  }
443  double s((r-p1r)/dr);
444  double t(1.0-s);
445  Amg::setVector3DCartesian( p1, p1.x()*t + p2.x()*s, p1.y()*t + p2.y()*s, p1.z()*t + p2.z()*s );
446 
447 }

◆ movePoint1ToZPlaneAndPoint2()

void InDetProjHelper::Imp::movePoint1ToZPlaneAndPoint2 ( Amg::Vector3D p1,
const Amg::Vector3D p2,
const double &  z 
) const

Definition at line 378 of file InDetProjHelper.cxx.

379 {
380  double dx(p2.x()-p1.x()), dy(p2.y()-p1.y()), dz(p2.z()-p1.z());
381  if (dz==0.0) {
382  theclass->message("movePoint1ToZPlaneAndPoint2 Error: Points have same z!!");
383  return;
384  }
385  double s( (z-p1.z())/dz );
386 // p1.set( p1.x()+dx*s, p1.y()+dy*s, z );
387  Amg::setVector3DCartesian( p1, p1.x()+dx*s, p1.y()+dy*s, z );
388 }

◆ projectPathToInfiniteCylinder()

void InDetProjHelper::Imp::projectPathToInfiniteCylinder ( const std::vector< Amg::Vector3D > &  in,
Amg::SetVectorVector3D outset,
const double &  r 
) const

Definition at line 741 of file InDetProjHelper.cxx.

743 {
744  std::vector<Amg::Vector3D > out(in);
746  double s;
747  for (;it!=itE;++it) {
748  if ( it->x()==0.0 && it->y()==0.0 ) {
749  theclass->message("ERROR: Point has x==0 and y==0. Ambiguous projection of point.");
750 
751 // it->setX(1.0);
752  it->x() = 1.0;
753  }
754  s = r / sqrt( it->x()*it->x()+it->y()*it->y() );
755 
756 // it->setX(it->x()*s);
757 // it->setY(it->y()*s);
758  it->x() = it->x()*s;
759  it->y() = it->y()*s;
760 
761  }
762  outset.insert(out);
763 }

◆ projectPathToZPlane()

void InDetProjHelper::Imp::projectPathToZPlane ( const std::vector< Amg::Vector3D > &  in,
Amg::SetVectorVector3D outset,
const double &  z 
) const

Definition at line 766 of file InDetProjHelper.cxx.

768 {
769  std::vector<Amg::Vector3D > out(in);
771  for (;it!=itE;++it) {
772 // it->setZ(z);
773  it->z() = z;
774  }
775  outset.insert(out);
776 }

◆ projectPathToZPlane_specialZtoR()

void InDetProjHelper::Imp::projectPathToZPlane_specialZtoR ( const std::vector< Amg::Vector3D > &  in,
Amg::SetVectorVector3D outset,
const double &  z 
) const

Definition at line 803 of file InDetProjHelper.cxx.

806 {
807  std::vector<Amg::Vector3D > out(in);
809  for (;it!=itE;++it)
811  z,
815  outset.insert(out);
816 }

◆ touchesHollowCylinder()

bool InDetProjHelper::Imp::touchesHollowCylinder ( const std::vector< Amg::Vector3D > &  path,
const double &  rmin,
const double &  rmax,
const double &  zmin,
const double &  zmax 
) const

Definition at line 945 of file InDetProjHelper.cxx.

948 {
949  const double rmin2(rmin*rmin), rmax2(rmax*rmax);
950  double r2;
951  std::vector<Amg::Vector3D >::const_iterator it(path.begin()), itE(path.end());
952  for (;it!=itE;++it) {
953  if (it->z()<zmin)
954  continue;
955  if (it->z()>zmax)
956  continue;
957  r2 = it->x()*it->x()+it->y()*it->y();
958  if (r2<rmin2)
959  continue;
960  if (r2<=rmax2)
961  return true;
962  }
963  return false;
964 }

Member Data Documentation

◆ barrel_inner_radius

double InDetProjHelper::Imp::barrel_inner_radius = 0.0

Definition at line 96 of file InDetProjHelper.cxx.

◆ barrel_outer_radius

double InDetProjHelper::Imp::barrel_outer_radius = 0.0

Definition at line 97 of file InDetProjHelper.cxx.

◆ barrel_posneg_z

double InDetProjHelper::Imp::barrel_posneg_z = 0.0

Definition at line 98 of file InDetProjHelper.cxx.

◆ covercyl_rmax

double InDetProjHelper::Imp::covercyl_rmax = 0.0

Definition at line 112 of file InDetProjHelper.cxx.

◆ covercyl_rmin

double InDetProjHelper::Imp::covercyl_rmin = 0.0

Definition at line 111 of file InDetProjHelper.cxx.

◆ covercyl_zmax

double InDetProjHelper::Imp::covercyl_zmax = 0.0

Definition at line 110 of file InDetProjHelper.cxx.

◆ covercyl_zmin

double InDetProjHelper::Imp::covercyl_zmin = 0.0

Definition at line 109 of file InDetProjHelper.cxx.

◆ data_disttosurface_epsilon

double InDetProjHelper::Imp::data_disttosurface_epsilon = 0.0

Definition at line 95 of file InDetProjHelper.cxx.

◆ endcap_inner_radius

double InDetProjHelper::Imp::endcap_inner_radius = 0.0

Definition at line 101 of file InDetProjHelper.cxx.

◆ endcap_outer_radius

double InDetProjHelper::Imp::endcap_outer_radius = 0.0

Definition at line 102 of file InDetProjHelper.cxx.

◆ endcap_surface_length

double InDetProjHelper::Imp::endcap_surface_length = 0.0

Definition at line 100 of file InDetProjHelper.cxx.

◆ endcap_surface_z

double InDetProjHelper::Imp::endcap_surface_z = 0.0

Definition at line 99 of file InDetProjHelper.cxx.

◆ endcap_zasr_endcapz_begin

double InDetProjHelper::Imp::endcap_zasr_endcapz_begin = 0.0

Definition at line 104 of file InDetProjHelper.cxx.

◆ endcap_zasr_innerradius

double InDetProjHelper::Imp::endcap_zasr_innerradius = 0.0

Definition at line 103 of file InDetProjHelper.cxx.

◆ endcap_zasr_squeezefact

double InDetProjHelper::Imp::endcap_zasr_squeezefact = 0.0

Definition at line 105 of file InDetProjHelper.cxx.

◆ parts

InDetProjFlags::InDetProjPartsFlags InDetProjHelper::Imp::parts

Definition at line 91 of file InDetProjHelper.cxx.

◆ surfacethickness

double InDetProjHelper::Imp::surfacethickness = 0.0

Definition at line 94 of file InDetProjHelper.cxx.

◆ theclass

InDetProjHelper* InDetProjHelper::Imp::theclass = nullptr

Definition at line 88 of file InDetProjHelper.cxx.


The documentation for this class was generated from the following file:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
beamspotman.r
def r
Definition: beamspotman.py:676
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
test_pyathena.px
px
Definition: test_pyathena.py:18
athena.path
path
python interpreter configuration --------------------------------------—
Definition: athena.py:128
PixelAthClusterMonAlgCfg.zmin
zmin
Definition: PixelAthClusterMonAlgCfg.py:169
DMTest::C
C_v1 C
Definition: C.h:26
TRTCalib_cfilter.p1
p1
Definition: TRTCalib_cfilter.py:130
skel.it
it
Definition: skel.GENtoEVGEN.py:396
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
InDetProjHelper::Imp::theclass
InDetProjHelper * theclass
Definition: InDetProjHelper.cxx:88
MCP::ScaleSmearParam::r2
@ r2
VP1HelperClassBase::messageDebug
void messageDebug(const QString &) const
Definition: VP1HelperClassBase.cxx:65
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
TruthTest.itE
itE
Definition: TruthTest.py:25
InDetProjHelper::Imp::movePoint1ToZPlaneAndPoint2
void movePoint1ToZPlaneAndPoint2(Amg::Vector3D &p1, const Amg::Vector3D &p2, const double &z) const
Definition: InDetProjHelper.cxx:378
dqt_zlumi_alleff_HIST.A
A
Definition: dqt_zlumi_alleff_HIST.py:110
Amg::rVector3D
double rVector3D(const Amg::Vector3D &v1)
Gets r-component in spherical coordinate system.
Definition: GeoPrimitivesHelpers.h:148
InDetProjHelper::Imp::endcap_zasr_innerradius
double endcap_zasr_innerradius
Definition: InDetProjHelper.cxx:103
TRTCalib_cfilter.p2
p2
Definition: TRTCalib_cfilter.py:131
InDetProjHelper::Imp::endcap_zasr_squeezefact
double endcap_zasr_squeezefact
Definition: InDetProjHelper.cxx:105
A
InDetProjHelper::Imp::clipSegmentToInfiniteHollowCylinder
bool clipSegmentToInfiniteHollowCylinder(Amg::Vector3D &a, Amg::Vector3D &b, const double &rmin, const double &rmax, Amg::Vector3D &seg2_a, Amg::Vector3D &seg2_b) const
Definition: InDetProjHelper.cxx:481
lumiFormat.i
int i
Definition: lumiFormat.py:85
z
#define z
beamspotman.n
n
Definition: beamspotman.py:731
InDetProjHelper::transformECPointToZPlane_specialZtoR
static void transformECPointToZPlane_specialZtoR(Amg::Vector3D &p, const double &planeZ, const double &planeRBegin, const double &endcapZBegin, const double &squeezeFactor)
Definition: InDetProjHelper.cxx:780
InDetProjHelper::Imp::clipSegmentToHollowCylinder
bool clipSegmentToHollowCylinder(Amg::Vector3D &a, Amg::Vector3D &b, const double &rmin, const double &rmax, const double &zmin, const double &zmax, Amg::Vector3D &seg2_a, Amg::Vector3D &seg2_b) const
Definition: InDetProjHelper.cxx:614
Amg::setVector3DCartesian
void setVector3DCartesian(Amg::Vector3D &v1, double x1, double y1, double z1)
Sets components in cartesian coordinate system.
Definition: GeoPrimitivesHelpers.h:136
PixelAthClusterMonAlgCfg.zmax
zmax
Definition: PixelAthClusterMonAlgCfg.py:169
Amg::py
@ py
Definition: GeoPrimitives.h:39
InDetProjHelper::Imp::endcap_zasr_endcapz_begin
double endcap_zasr_endcapz_begin
Definition: InDetProjHelper.cxx:104
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
dqt_zlumi_alleff_HIST.B
B
Definition: dqt_zlumi_alleff_HIST.py:110
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
python.PyAthena.v
v
Definition: PyAthena.py:154
makeTRTBarrelCans.dy
tuple dy
Definition: makeTRTBarrelCans.py:21
a
TList * a
Definition: liststreamerinfos.cxx:10
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
VP1HelperClassBase::message
void message(const QString &) const
Definition: VP1HelperClassBase.cxx:49
InDetProjHelper::Imp::lineCircleIntersection
void lineCircleIntersection(const Amg::Vector3D &a, const Amg::Vector3D &b, const double &r, double &u1, double &u2) const
Definition: InDetProjHelper.cxx:450
InDetProjHelper::Imp::clipSegmentToZInterval
bool clipSegmentToZInterval(Amg::Vector3D &a, Amg::Vector3D &b, const double &zmin, const double &zmax) const
Definition: InDetProjHelper.cxx:391