ATLAS Offline Software
Loading...
Searching...
No Matches
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
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}
static Double_t a
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
InDetProjHelper * theclass
Eigen::Matrix< double, 3, 1 > Vector3D

◆ 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// }
629 if (!clipSegmentToZInterval(a,b,zmin,zmax)) {
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}
bool clipSegmentToInfiniteHollowCylinder(Amg::Vector3D &a, Amg::Vector3D &b, const double &rmin, const double &rmax, Amg::Vector3D &seg2_a, Amg::Vector3D &seg2_b) const
bool clipSegmentToZInterval(Amg::Vector3D &a, Amg::Vector3D &b, const double &zmin, const double &zmax) const

◆ 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}
void lineCircleIntersection(const Amg::Vector3D &a, const Amg::Vector3D &b, const double &r, double &u1, double &u2) const
@ u
Enums for curvilinear frames.
Definition ParamDefs.h:77

◆ 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}
void movePoint1ToZPlaneAndPoint2(Amg::Vector3D &p1, const Amg::Vector3D &p2, const double &z) const

◆ 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}
int r
Definition globals.cxx:22
struct color C

◆ 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}
void setVector3DCartesian(Amg::Vector3D &v1, double x1, double y1, double z1)
Sets components in cartesian coordinate system.
double rVector3D(const Amg::Vector3D &v1)
Gets r-component in spherical coordinate system.

◆ 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}
#define z

◆ 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);
745 std::vector<Amg::Vector3D >::iterator it(out.begin()), itE(out.end());
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);
770 std::vector<Amg::Vector3D >::iterator it(out.begin()), itE(out.end());
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);
808 std::vector<Amg::Vector3D >::iterator it(out.begin()), itE(out.end());
809 for (;it!=itE;++it)
811 z,
815 outset.insert(out);
816}
static void transformECPointToZPlane_specialZtoR(Amg::Vector3D &p, const double &planeZ, const double &planeRBegin, const double &endcapZBegin, const double &squeezeFactor)

◆ 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}
path
python interpreter configuration --------------------------------------—
Definition athena.py:128

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: