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

InDetProjHelper * theclass = 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 666 of file InDetProjHelper.cxx.

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

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

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

392{
393 if (a.z()<zmin) {
394 if (b.z()<zmin)//both <zmin
395 return false;
396 //a<zmin, b>=zmin:
398 if (b.z()>zmax)
400 return true;
401 } else {
402 if (b.z()<zmin) {
403 //a>=zmin, b<zmin
405 if (a.z()>zmax)
407 return true;
408 } else {
409 //Both are > zmin
410 if (a.z()>zmax) {
411 if (b.z()>zmax)
412 return false;
414 return true;
415 } else {
416 //zmin<=a<=zmax, b>=zmin
417 if (b.z()>zmax)
419 return true;
420 }
421 }
422 }
423}
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 449 of file InDetProjHelper.cxx.

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

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

◆ 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 = Amg::Vector3D{p1.x()+dx*s, p1.y()+dy*s, z};
387}
#define z

◆ projectPathToInfiniteCylinder()

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

Definition at line 740 of file InDetProjHelper.cxx.

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

◆ projectPathToZPlane()

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

Definition at line 765 of file InDetProjHelper.cxx.

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

◆ projectPathToZPlane_specialZtoR()

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

Definition at line 802 of file InDetProjHelper.cxx.

805{
806 std::vector<Amg::Vector3D > out(in);
807 std::vector<Amg::Vector3D >::iterator it(out.begin()), itE(out.end());
808 for (;it!=itE;++it)
810 z,
814 outset.insert(out);
815}
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 944 of file InDetProjHelper.cxx.

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

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: