ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrk::GridTripletSeedingTool Class Reference

#include <GridTripletSeedingTool.h>

Inheritance diagram for ActsTrk::GridTripletSeedingTool:
Collaboration diagram for ActsTrk::GridTripletSeedingTool:

Public Member Functions

 GridTripletSeedingTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual StatusCode initialize () override
StatusCode createSeeds (const EventContext &ctx, const std::vector< const xAOD::SpacePointContainer * > &spacePointCollections, const Eigen::Vector3f &beamSpotPos, float bFieldInZ, ActsTrk::SeedContainer &seedContainer) const override

Protected Attributes

Gaudi::Property< bool > m_seedQualitySelection
Gaudi::Property< bool > m_sphericalGrid
Gaudi::Property< float > m_minPt
Gaudi::Property< float > m_cotThetaMax
Gaudi::Property< float > m_zMin
Gaudi::Property< float > m_zMax
Gaudi::Property< float > m_etaMin
Gaudi::Property< float > m_etaMax
Gaudi::Property< float > m_deltaRMax
Gaudi::Property< float > m_impactMax
Gaudi::Property< std::vector< float > > m_zBinEdges
Gaudi::Property< std::vector< float > > m_etaBinEdges
Gaudi::Property< std::vector< float > > m_rBinEdges
Gaudi::Property< float > m_gridRMax
Gaudi::Property< float > m_gridPhiMin
Gaudi::Property< float > m_gridPhiMax
Gaudi::Property< int > m_phiBinDeflectionCoverage
Gaudi::Property< int > m_maxPhiBins
Gaudi::Property< float > m_rMax
Gaudi::Property< float > m_binSizeR
Gaudi::Property< float > m_deltaRMin
Gaudi::Property< float > m_deltaRMinTopSP
Gaudi::Property< float > m_deltaRMaxTopSP
Gaudi::Property< float > m_deltaRMinBottomSP
Gaudi::Property< float > m_deltaRMaxBottomSP
Gaudi::Property< float > m_deltaZMax
Gaudi::Property< float > m_collisionRegionMin
Gaudi::Property< float > m_collisionRegionMax
Gaudi::Property< bool > m_useHVCollisionRegion
Gaudi::Property< float > m_hvCollisionRegionTolerance
Gaudi::Property< float > m_sigmaScattering
Gaudi::Property< float > m_maxPtScattering
Gaudi::Property< float > m_radLengthPerSeed
Gaudi::Property< int > m_maxSeedsPerSpM
Gaudi::Property< bool > m_interactionPointCut
Gaudi::Property< std::vector< size_t > > m_zBinsCustomLooping
Gaudi::Property< std::vector< std::size_t > > m_rBinsCustomLooping
Gaudi::Property< bool > m_useVariableMiddleSPRange
Gaudi::Property< std::vector< std::vector< double > > > m_rRangeMiddleSP
Gaudi::Property< float > m_deltaRMiddleMinSPRange
Gaudi::Property< float > m_deltaRMiddleMaxSPRange
Gaudi::Property< bool > m_seedConfirmation
Gaudi::Property< float > m_seedConfCentralZMin
Gaudi::Property< float > m_seedConfCentralZMax
Gaudi::Property< float > m_seedConfCentralRMax
Gaudi::Property< size_t > m_seedConfCentralNTopLargeR
Gaudi::Property< size_t > m_seedConfCentralNTopSmallR
Gaudi::Property< float > m_seedConfCentralMinBottomRadius
Gaudi::Property< float > m_seedConfCentralMaxZOrigin
Gaudi::Property< float > m_seedConfCentralMinImpact
Gaudi::Property< float > m_seedConfForwardZMin
Gaudi::Property< float > m_seedConfForwardZMax
Gaudi::Property< float > m_seedConfForwardRMax
Gaudi::Property< size_t > m_seedConfForwardNTopLargeR
Gaudi::Property< size_t > m_seedConfForwardNTopSmallR
Gaudi::Property< float > m_seedConfForwardMinBottomRadius
Gaudi::Property< float > m_seedConfForwardMaxZOrigin
Gaudi::Property< float > m_seedConfForwardMinImpact
Gaudi::Property< bool > m_useDetailedDoubleMeasurementInfo
Gaudi::Property< float > m_toleranceParam
Gaudi::Property< float > m_maxStripDeltaCotTheta
Gaudi::Property< float > m_phiMin
Gaudi::Property< float > m_phiMax
Gaudi::Property< float > m_rMin {this, "rMin", 0 * Acts::UnitConstants::mm, ""}
Gaudi::Property< float > m_zAlign
Gaudi::Property< float > m_rAlign
Gaudi::Property< float > m_sigmaError {this, "sigmaError", 5, ""}
Gaudi::Property< float > m_spacePointVarianceScale
Gaudi::Property< float > m_impactWeightFactor
Gaudi::Property< float > m_zOriginWeightFactor {this, "zOriginWeightFactor", 1.}
Gaudi::Property< float > m_compatSeedWeight
Gaudi::Property< std::size_t > m_compatSeedLimit
Gaudi::Property< float > m_seedWeightIncrement
Gaudi::Property< float > m_numSeedIncrement
Gaudi::Property< bool > m_seedConfirmationInFilter
Gaudi::Property< std::size_t > m_maxSeedsPerSpMConf
Gaudi::Property< std::size_t > m_maxQualitySeedsPerSpMConf
Gaudi::Property< bool > m_useDeltaRorTopRadius
Gaudi::Property< float > m_deltaInvHelixDiameter
Gaudi::Property< float > m_absDeltaEtaWeightFactor
Gaudi::Property< float > m_absDeltaEtaMinImpact
Gaudi::Property< std::vector< std::pair< int, int > > > m_zBinNeighborsTop
Gaudi::Property< std::vector< std::pair< int, int > > > m_zBinNeighborsBottom
Gaudi::Property< int > m_numEtaNeighbors
Gaudi::Property< std::vector< std::pair< int, int > > > m_rBinNeighborsTop
Gaudi::Property< std::vector< std::pair< int, int > > > m_rBinNeighborsBottom
Gaudi::Property< int > m_numPhiNeighbors
Gaudi::Property< bool > m_useExperimentCuts
Gaudi::Property< bool > m_doubletDPhiCut
Gaudi::Property< float > m_doubletDPhiD0Max
Gaudi::Property< float > m_doubletDPhiCap
Gaudi::Property< float > m_doubletDPhiConst
Gaudi::Property< float > m_doubletDPhiSlope
Gaudi::Property< bool > m_doubletStripCalibrationCut
Gaudi::Property< float > m_doubletStripCalibrationTolerance
Gaudi::Property< float > m_stripCalibrationTolerance
Gaudi::Property< int > m_stateVectorReserveSize
Gaudi::Property< float > m_expCutrMin

Private Member Functions

const Acts::Logger & logger () const
 Private access to the logger.
bool spacePointSelectionFunction (const xAOD::SpacePoint *sp, float r) const
bool doubletSelectionFunction (const std::vector< float > &spPhi, const std::vector< float > &spAsinD0OverR, const Acts::ConstSpacePointProxy &middle, const Acts::ConstSpacePointProxy &other, float cotTheta, bool isBottomCandidate) const
 doublet selection which caches per SP phi and asin(d0/r) values for the middle and other SPs
std::pair< float, float > retrieveRadiusRangeForMiddle (const Acts::ConstSpacePointProxy &spM, const Acts::Range1D< float > &rMiddleSpRange) const
template<typename GridType>
StatusCode createSeedsImpl (const EventContext &ctx, const std::vector< const xAOD::SpacePointContainer * > &spacePointCollections, const Eigen::Vector3f &beamSpotPos, float bFieldInZ, ActsTrk::SeedContainer &seedContainer, GridType::Config gridCfg) const

Private Attributes

std::variant< Acts::CylindricalSpacePointGrid::Config, Acts::Experimental::SphericalSpacePointGrid::Config > m_gridCfg
Acts::DoubletSeedFinder::Config m_bottomDoubletFinderCfg
Acts::DoubletSeedFinder::Config m_topDoubletFinderCfg
Acts::TripletSeedFinder::Config m_tripletFinderCfg
Acts::BroadTripletSeedFilter::Config m_filterCfg
std::optional< Acts::TripletSeeder > m_finder
std::unique_ptr< const Acts::Logger > m_logger
 logging instance
std::unique_ptr< const Acts::Logger > m_loggerFilter
const PixelID * m_pixelId {nullptr}
SG::ReadHandleKey< xAOD::VertexContainer > m_inputHoughVtxKey

Detailed Description

Definition at line 32 of file GridTripletSeedingTool.h.

Constructor & Destructor Documentation

◆ GridTripletSeedingTool()

ActsTrk::GridTripletSeedingTool::GridTripletSeedingTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 19 of file GridTripletSeedingTool.cxx.

22 : base_class(type, name, parent) {}

Member Function Documentation

◆ createSeeds()

StatusCode ActsTrk::GridTripletSeedingTool::createSeeds ( const EventContext & ctx,
const std::vector< const xAOD::SpacePointContainer * > & spacePointCollections,
const Eigen::Vector3f & beamSpotPos,
float bFieldInZ,
ActsTrk::SeedContainer & seedContainer ) const
override

Definition at line 831 of file GridTripletSeedingTool.cxx.

835 {
836
837 if (m_sphericalGrid){
838 return createSeedsImpl<Acts::Experimental::SphericalSpacePointGrid>(ctx, spacePointCollections, beamSpotPos, bFieldInZ, seedContainer, std::get<Acts::Experimental::SphericalSpacePointGrid::Config>(m_gridCfg));}
839 else {
840 return createSeedsImpl<Acts::CylindricalSpacePointGrid>(ctx, spacePointCollections, beamSpotPos, bFieldInZ, seedContainer, std::get<Acts::CylindricalSpacePointGrid::Config>(m_gridCfg));
841 }
842
843}
Gaudi::Property< bool > m_sphericalGrid
std::variant< Acts::CylindricalSpacePointGrid::Config, Acts::Experimental::SphericalSpacePointGrid::Config > m_gridCfg
StatusCode createSeedsImpl(const EventContext &ctx, const std::vector< const xAOD::SpacePointContainer * > &spacePointCollections, const Eigen::Vector3f &beamSpotPos, float bFieldInZ, ActsTrk::SeedContainer &seedContainer, GridType::Config gridCfg) const

◆ createSeedsImpl()

template<typename GridType>
StatusCode ActsTrk::GridTripletSeedingTool::createSeedsImpl ( const EventContext & ctx,
const std::vector< const xAOD::SpacePointContainer * > & spacePointCollections,
const Eigen::Vector3f & beamSpotPos,
float bFieldInZ,
ActsTrk::SeedContainer & seedContainer,
GridType::Config gridCfg ) const
private

Definition at line 532 of file GridTripletSeedingTool.cxx.

536 {
537 (void)ctx;
538
539 gridCfg.bFieldInZ = bFieldInZ;
540
541 GridType grid(gridCfg, logger().cloneWithSuffix("Grid"));
542
543 std::size_t totalSpacePoints = 0;
544 for (const xAOD::SpacePointContainer* spacePoints : spacePointCollections) {
545 totalSpacePoints += spacePoints->size();
546 }
547
548 std::vector<const xAOD::SpacePoint*> selectedXAODSpacePoints;
549 std::vector<float> selectedSpacePointsR;
550 selectedXAODSpacePoints.reserve(totalSpacePoints);
551 selectedSpacePointsR.reserve(totalSpacePoints);
552 // Per-SP inputs for the doublet dPhi selection (see
553 // doubletSelectionFunction); only filled when the cut is enabled.
554 std::vector<float> selectedSpacePointsPhi;
555 std::vector<float> selectedSpacePointsAsinD0OverR;
556 const float dPhiCutD0 =
557 m_doubletDPhiD0Max < 0.f ? m_impactMax.value() : m_doubletDPhiD0Max.value();
558 if (m_doubletDPhiCut) {
559 selectedSpacePointsPhi.reserve(totalSpacePoints);
560 selectedSpacePointsAsinD0OverR.reserve(totalSpacePoints);
561 }
562
563 for (const xAOD::SpacePointContainer* spacePoints : spacePointCollections) {
564 for (const xAOD::SpacePoint* sp : *spacePoints) {
565 float x = static_cast<float>(sp->x() - beamSpotPos[0]);
566 float y = static_cast<float>(sp->y() - beamSpotPos[1]);
567 float z = static_cast<float>(sp->z());
568 float r = std::hypot(x, y);
569 float phi = std::atan2(y, x);
570
572 continue;
573 }
574
575 //This takes care of using translating z -> z/r in the spherical grid insertion
576 SPGridTraits<GridType>::insert(grid, selectedXAODSpacePoints.size(), phi, z, r);
577 selectedXAODSpacePoints.push_back(sp);
578 selectedSpacePointsR.push_back(r);
579 if (m_doubletDPhiCut) {
580 selectedSpacePointsPhi.push_back(phi);
581 selectedSpacePointsAsinD0OverR.push_back(
582 std::asin(std::min(1.f, dPhiCutD0 / std::max(r, 1.f))));
583 }
584 }
585 }
586
587 for (std::size_t i = 0; i < grid.numberOfBins(); ++i) {
588 std::ranges::sort(
589 grid.at(i), [&](Acts::SpacePointIndex a, Acts::SpacePointIndex b) {
590 return selectedSpacePointsR[a] < selectedSpacePointsR[b];
591 });
592 }
593
594 Acts::SpacePointContainer selectedSpacePoints;
595 selectedSpacePoints.createColumns(
596 Acts::SpacePointColumns::CopiedFromIndex |
597 Acts::SpacePointColumns::PackedXY | Acts::SpacePointColumns::PackedZR |
598 Acts::SpacePointColumns::VarianceZ | Acts::SpacePointColumns::VarianceR);
600 selectedSpacePoints.createColumns(
601 Acts::SpacePointColumns::StripCalibrationDetails);
602 }
603 selectedSpacePoints.reserve(grid.numberOfSpacePoints());
604 std::vector<Acts::SpacePointIndexRange> gridSpacePointRanges;
605 gridSpacePointRanges.reserve(grid.numberOfBins());
606 for (std::size_t i = 0; i < grid.numberOfBins(); ++i) {
607 std::uint32_t begin = selectedSpacePoints.size();
608 for (const Acts::SpacePointIndex spIndex : grid.at(i)) {
609 const xAOD::SpacePoint* sp = selectedXAODSpacePoints[spIndex];
610
611 auto newSp = selectedSpacePoints.createSpacePoint();
612 newSp.copiedFromIndex() = spIndex;
613 newSp.xy() =
614 std::array<float, 2>{static_cast<float>(sp->x() - beamSpotPos[0]),
615 static_cast<float>(sp->y() - beamSpotPos[1])};
616 newSp.zr() = std::array<float, 2>{static_cast<float>(sp->z()),
617 selectedSpacePointsR[spIndex]};
618 newSp.varianceZ() =
619 m_spacePointVarianceScale * static_cast<float>(sp->varianceZ());
620 newSp.varianceR() =
621 m_spacePointVarianceScale * static_cast<float>(sp->varianceR());
622
624 const Eigen::Vector3f innerStripHalfVector =
625 sp->bottomHalfStripLength() * sp->bottomStripDirection();
626 const Eigen::Vector3f outerStripCenter = sp->topStripCenter();
627 const Eigen::Vector3f outerStripHalfVector =
628 sp->topHalfStripLength() * sp->topStripDirection();
629 const Eigen::Vector3f stripSeparation = sp->stripCenterDistance();
630
631 newSp.outerStripCalibrationDetails().outerCenter = std::array<float, 3>{
632 outerStripCenter.x() - beamSpotPos[0],
633 outerStripCenter.y() - beamSpotPos[1], outerStripCenter.z()};
634 newSp.outerStripCalibrationDetails().innerToOuterSeparation =
635 std::array<float, 3>{stripSeparation.x(), stripSeparation.y(),
636 stripSeparation.z()};
637 newSp.outerStripCalibrationDetails().outerHalfVector =
638 std::array<float, 3>{outerStripHalfVector.x(),
639 outerStripHalfVector.y(),
640 outerStripHalfVector.z()};
641 newSp.outerStripCalibrationDetails().innerHalfVector =
642 std::array<float, 3>{innerStripHalfVector.x(),
643 innerStripHalfVector.y(),
644 innerStripHalfVector.z()};
645 }
646 }
647 std::uint32_t end = selectedSpacePoints.size();
648 gridSpacePointRanges.emplace_back(begin, end);
649 }
650
651 // clear temporary
652 selectedSpacePointsR = {};
653
654 ACTS_VERBOSE("Number of space points after selection "
655 << selectedSpacePoints.size() << " out of " << totalSpacePoints);
656
657 // Compute radius range. We rely on the fact the grid is storing the proxies
658 // with a sorting in the radius
659 const Acts::Range1D<float> rRange = [&]() -> Acts::Range1D<float> {
660 float minRange = std::numeric_limits<float>::max();
661 float maxRange = std::numeric_limits<float>::lowest();
662 for (const Acts::SpacePointIndexRange& range : gridSpacePointRanges) {
663 if (range.first == range.second) {
664 continue;
665 }
666 auto first = selectedSpacePoints[range.first];
667 auto last = selectedSpacePoints[range.second - 1];
668 minRange = std::min(first.zr()[1], minRange);
669 maxRange = std::max(last.zr()[1], maxRange);
670 }
671 return {minRange, maxRange};
672 }();
673
674 auto bottomDoubletFinderCfg = m_bottomDoubletFinderCfg;
675 auto topDoubletFinderCfg = m_topDoubletFinderCfg;
676
677 // set up the cache for the doublet selection function, which needs to know the per-SP phi and
678 // asin(d0/r) values for the middle and other SPs. The cache is filled in
679 // createSeeds, and the selection function is connected to the doublet finders below.
680 auto doubletSelection =
681 [this, &selectedSpacePointsPhi, &selectedSpacePointsAsinD0OverR](
682 const Acts::ConstSpacePointProxy& middle,
683 const Acts::ConstSpacePointProxy& other, float cotTheta,
684 bool isBottomCandidate) {
685 return doubletSelectionFunction(selectedSpacePointsPhi,
686 selectedSpacePointsAsinD0OverR, middle,
687 other, cotTheta, isBottomCandidate);
688 };
691 bottomDoubletFinderCfg.experimentCuts.connect(doubletSelection);
692 topDoubletFinderCfg.experimentCuts.connect(doubletSelection);
693 }
694
696 SG::ReadHandle<xAOD::VertexContainer> inputHoughVtx = SG::makeHandle(m_inputHoughVtxKey, ctx);
697 ATH_CHECK(inputHoughVtx.isValid());
698
699 for(const auto* vtx: *inputHoughVtx)
700 {
701 if(vtx->vertexType() == xAOD::VxType::PriVtx)
702 {
703 bottomDoubletFinderCfg.collisionRegionMin = vtx->z() - m_hvCollisionRegionTolerance;
704 bottomDoubletFinderCfg.collisionRegionMax = vtx->z() + m_hvCollisionRegionTolerance;
705 break;
706 }
707 }
708 // in case HoughVtx is not found and inputHoughVtx is empty, keep the original collision region
709 }
710
711 auto bottomDoubletFinder =
712 Acts::DoubletSeedFinder::create(Acts::DoubletSeedFinder::DerivedConfig(
713 bottomDoubletFinderCfg, bFieldInZ));
714 auto topDoubletFinder = Acts::DoubletSeedFinder::create(
715 Acts::DoubletSeedFinder::DerivedConfig(topDoubletFinderCfg, bFieldInZ));
716 auto tripletFinder = Acts::TripletSeedFinder::create(
717 Acts::TripletSeedFinder::DerivedConfig(m_tripletFinderCfg, bFieldInZ));
718
719 // variable middle SP radial region of interest
720 const Acts::Range1D<float> rMiddleSpRange(
721 std::floor(rRange.min() / 2) * 2 + m_deltaRMiddleMinSPRange,
722 std::floor(rRange.max() / 2) * 2 - m_deltaRMiddleMaxSPRange);
723
724 Acts::BroadTripletSeedFilter::State filterState;
725 Acts::BroadTripletSeedFilter::Cache filterCache;
726 Acts::TripletSeeder::Cache cache;
727
728 Acts::BroadTripletSeedFilter filter(m_filterCfg, filterState, filterCache,
730
731 std::vector<Acts::SpacePointContainer::ConstRange> bottomSpRanges;
732 std::optional<Acts::SpacePointContainer::ConstRange> middleSpRange;
733 std::vector<Acts::SpacePointContainer::ConstRange> topSpRanges;
734
735 Acts::SeedContainer tmpSeedContainer;
736
737 for (const auto [bottom, middle, top] : grid.binnedGroup()) {
738 ACTS_VERBOSE("Process middle bin " << middle);
739 if (middle >= gridSpacePointRanges.size()) {
740 ATH_MSG_ERROR("Grid Binned Group returned an unreasonable middle bin");
741 return StatusCode::FAILURE;
742 }
743
744 bottomSpRanges.clear();
745 topSpRanges.clear();
746
747 std::ranges::transform(
748 bottom, std::back_inserter(bottomSpRanges),
749 [&](std::size_t b) -> Acts::SpacePointContainer::ConstRange {
750 return selectedSpacePoints.range(gridSpacePointRanges[b]).asConst();
751 });
752 middleSpRange =
753 selectedSpacePoints.range(gridSpacePointRanges[middle]).asConst();
754 std::ranges::transform(
755 top, std::back_inserter(topSpRanges),
756 [&](std::size_t t) -> Acts::SpacePointContainer::ConstRange {
757 return selectedSpacePoints.range(gridSpacePointRanges[t]).asConst();
758 });
759
760 // we compute this here since all middle space point candidates belong to
761 // the same z-bin
762 auto firstMiddleSp = middleSpRange->front();
763 auto radiusRangeForMiddle =
764 retrieveRadiusRangeForMiddle(firstMiddleSp, rMiddleSpRange);
765
766 ACTS_VERBOSE("Validity range (radius) for the middle space point is ["
767 << radiusRangeForMiddle.first << ", "
768 << radiusRangeForMiddle.second << "]");
769
770 m_finder->createSeedsFromGroups(
771 cache, *bottomDoubletFinder, *topDoubletFinder, *tripletFinder, filter,
772 selectedSpacePoints, bottomSpRanges, *middleSpRange, topSpRanges,
773 radiusRangeForMiddle, tmpSeedContainer);
774 }
775
776 // Selection function - temporary implementation
777 // need change from ACTS for final implementation
778 // To be used only on PPP
779 auto selectionFunction =
780 [&filterState](const Acts::MutableSeedProxy& seed) -> bool {
781 float seedQuality = seed.quality();
782 float bottomQuality =
783 filterState.bestSeedQualityMap.at(seed.spacePointIndices()[0]);
784 float middleQuality =
785 filterState.bestSeedQualityMap.at(seed.spacePointIndices()[1]);
786 float topQuality =
787 filterState.bestSeedQualityMap.at(seed.spacePointIndices()[2]);
788
789 return bottomQuality <= seedQuality || middleQuality <= seedQuality ||
790 topQuality <= seedQuality;
791 };
792
793 seedContainer.reserve(seedContainer.size() + tmpSeedContainer.size());
794
795 // Select and convert the seeds
796 for (Acts::MutableSeedProxy seed : tmpSeedContainer) {
797 if (m_seedQualitySelection && !selectionFunction(seed)) {
798 continue;
799 }
800
801 seedContainer.push_back(
802 Acts::ConstSeedProxy(seed), [&](const Acts::SpacePointIndex spIndex) {
803 const Acts::SpacePointIndex originalIndex =
804 selectedSpacePoints.at(spIndex).copiedFromIndex();
805 return selectedXAODSpacePoints[originalIndex];
806 });
807 }
808
809 return StatusCode::SUCCESS;
810}
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x,...)
static Double_t sp
static Double_t a
#define y
#define x
#define z
bool spacePointSelectionFunction(const xAOD::SpacePoint *sp, float r) const
Gaudi::Property< float > m_spacePointVarianceScale
Acts::TripletSeedFinder::Config m_tripletFinderCfg
Gaudi::Property< bool > m_seedQualitySelection
Acts::DoubletSeedFinder::Config m_bottomDoubletFinderCfg
Acts::DoubletSeedFinder::Config m_topDoubletFinderCfg
std::optional< Acts::TripletSeeder > m_finder
Acts::BroadTripletSeedFilter::Config m_filterCfg
Gaudi::Property< bool > m_useDetailedDoubleMeasurementInfo
std::pair< float, float > retrieveRadiusRangeForMiddle(const Acts::ConstSpacePointProxy &spM, const Acts::Range1D< float > &rMiddleSpRange) const
Gaudi::Property< float > m_deltaRMiddleMaxSPRange
Gaudi::Property< bool > m_useHVCollisionRegion
Gaudi::Property< bool > m_doubletStripCalibrationCut
Gaudi::Property< float > m_hvCollisionRegionTolerance
Gaudi::Property< float > m_doubletDPhiD0Max
Gaudi::Property< float > m_deltaRMiddleMinSPRange
const Acts::Logger & logger() const
Private access to the logger.
std::unique_ptr< const Acts::Logger > m_loggerFilter
bool doubletSelectionFunction(const std::vector< float > &spPhi, const std::vector< float > &spAsinD0OverR, const Acts::ConstSpacePointProxy &middle, const Acts::ConstSpacePointProxy &other, float cotTheta, bool isBottomCandidate) const
doublet selection which caches per SP phi and asin(d0/r) values for the middle and other SPs
SG::ReadHandleKey< xAOD::VertexContainer > m_inputHoughVtxKey
Gaudi::Property< bool > m_useExperimentCuts
virtual bool isValid() override final
Can the handle be successfully dereferenced?
int r
Definition globals.cxx:22
bool first
Definition DeMoScan.py:534
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
const IIntersectionCache * cache() const
Retrieve the associated cache block, if it exists.
@ PriVtx
Primary vertex.
SpacePointContainer_v1 SpacePointContainer
Define the version of the space point container.
Seed push_back(SpacePointRange spacePoints, float quality, float vertexZ)
void reserve(std::size_t size, float averageSpacePoints=3) noexcept
std::size_t size() const noexcept

◆ doubletSelectionFunction()

bool ActsTrk::GridTripletSeedingTool::doubletSelectionFunction ( const std::vector< float > & spPhi,
const std::vector< float > & spAsinD0OverR,
const Acts::ConstSpacePointProxy & middle,
const Acts::ConstSpacePointProxy & other,
float cotTheta,
bool isBottomCandidate ) const
private

doublet selection which caches per SP phi and asin(d0/r) values for the middle and other SPs

Definition at line 416 of file GridTripletSeedingTool.cxx.

420 {
421 if (m_doubletDPhiCut) {
422 // per-pair azimuthal-swing bound: the hit azimuth of a track with impact
423 // parameter d0 swings between two radii by asin(d0/rInner) -
424 // asin(d0/rOuter) on top of the curvature rotation. The grid phi-bin
425 // widening only knows the full radial span; this applies the exact
426 // per-pair bound before the doublet enters the triplet stage.
427 // NB: this container only fills the packed coordinate columns, so the
428 // packed accessor zr() must be used here.
429 const float rM = middle.zr()[1];
430 const float rO = other.zr()[1];
431 const float rInner = std::min(rM, rO);
432 const float rOuter = std::max(rM, rO);
433
434 // phi(SP) and asin(d0/r) depend only on the SP (d0 is constant from the
435 // config), so they are computed once per SP in createSeeds and looked up
436 // via copiedFromIndex, avoiding two atan2 and two asin calls per
437 // candidate. asin(d0/r) is monotone in r, so the inner-minus-outer swing
438 // equals the absolute difference of the two per-SP terms.
439 const auto iM = middle.copiedFromIndex();
440 const auto iO = other.copiedFromIndex();
441 float dPhi = spPhi[iO] - spPhi[iM];
442 const float swing = std::abs(spAsinD0OverR[iO] - spAsinD0OverR[iM]);
443 if (dPhi > std::numbers::pi_v<float>) {
444 dPhi -= 2.f * std::numbers::pi_v<float>;
445 } else if (dPhi < -std::numbers::pi_v<float>) {
446 dPhi += 2.f * std::numbers::pi_v<float>;
447 }
448 const float bound = m_doubletDPhiConst +
449 m_doubletDPhiSlope * (rOuter - rInner) +
450 std::min(m_doubletDPhiCap.value(), swing);
451
452 if (std::abs(dPhi) > bound) {
453 return false;
454 }
455 }
456
458 // the chord length and sign do not matter
459 const auto& xyM = middle.xy();
460 const auto& zrM = middle.zr();
461 const auto& xyO = other.xy();
462 const auto& zrO = other.zr();
463 const std::array<float, 3> chord{xyO[0] - xyM[0], xyO[1] - xyM[1],
464 zrO[0] - zrM[0]};
465 std::array<float, 3> calibrated{};
466 for (const Acts::ConstSpacePointProxy* sp : {&middle, &other}) {
467 const Acts::OuterStripSpacePointCalibrationDetailsDerived derived =
468 Acts::detail::deriveOuterStripSpacePointCalibrationDetails(
469 sp->outerStripCalibrationDetails());
470 if (!Acts::detail::calibrateOuterStripSpacePoint(
471 chord, derived, calibrated,
473 return false;
474 }
475 }
476 }
477
478 if (!m_useExperimentCuts) {
479 return true;
480 }
481
482 // We remove some doublets that have the middle space point in some specific
483 // areas This should eventually be moved inside ACTS and allow a veto
484 // mechanism according to the user desire. As of now we cannot really do this
485 // since we define a range of validity of the middle candidate, and if we want
486 // to veto some sub-regions inside it, we need to do it here.
487 if (std::abs(middle.zr()[0]) > 1500 and middle.zr()[1] > 100 and
488 middle.zr()[1] < 150) {
489 return false;
490 }
491
492 // We remove here some seeds, in case the bottom space point radius is
493 // too small (i.e. < fastTrackingRMin)
494
495 // This operation is done only within a specific eta window
496 // Instead of eta we use the doublet cottheta
497 static constexpr float cotThetaEta120 = 1.5095;
498 static constexpr float cotThetaEta360 = 18.2855;
499
500 float absCotTheta = std::abs(cotTheta);
501 if (isBottomCandidate && other.zr()[1] < m_expCutrMin &&
502 absCotTheta > cotThetaEta120 && absCotTheta < cotThetaEta360) {
503 return false;
504 }
505
506 return true;
507}
Gaudi::Property< float > m_doubletDPhiSlope
Gaudi::Property< float > m_doubletDPhiCap
Gaudi::Property< float > m_doubletStripCalibrationTolerance
Gaudi::Property< float > m_doubletDPhiConst
bool dPhi(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, float &out)

◆ initialize()

StatusCode ActsTrk::GridTripletSeedingTool::initialize ( )
overridevirtual

Definition at line 24 of file GridTripletSeedingTool.cxx.

24 {
25 ATH_MSG_DEBUG("Initializing " << name() << "...");
26
27 ATH_MSG_DEBUG("Properties Summary:");
33
34 ATH_MSG_DEBUG(" * Used by space point grid config:");
35 ATH_MSG_DEBUG(" " << m_minPt);
38 ATH_MSG_DEBUG(" " << m_zMin);
39 ATH_MSG_DEBUG(" " << m_zMax);
47
48 ATH_MSG_DEBUG(" * Used by seed finder config:");
49 ATH_MSG_DEBUG(" " << m_minPt);
52 ATH_MSG_DEBUG(" " << m_zMin);
53 ATH_MSG_DEBUG(" " << m_zMax);
55 ATH_MSG_DEBUG(" " << m_rMax);
70 }
82 } else if (not m_rRangeMiddleSP.empty())
102 }
105 ATH_MSG_DEBUG(" " << m_phiMin);
106 ATH_MSG_DEBUG(" " << m_phiMax);
107 ATH_MSG_DEBUG(" " << m_rMin);
108 ATH_MSG_DEBUG(" " << m_zAlign);
109 ATH_MSG_DEBUG(" " << m_rAlign);
112
113 ATH_MSG_DEBUG(" * Used by seed filter config:");
137 }
144
145 // Make the logger && Propagate to ACTS routines
146 m_logger = makeActsAthenaLogger(this, "Acts");
147
148 // the cut needs the strip details
150 ATH_MSG_ERROR("doubletStripCalibrationCut needs "
151 "useDetailedDoubleMeasurementInfo");
152 return StatusCode::FAILURE;
153 }
155 ATH_MSG_ERROR("stripCalibrationTolerance needs "
156 "useDetailedDoubleMeasurementInfo");
157 return StatusCode::FAILURE;
158 }
159
160 // Both edge vectors define the bins of the corresponding grid axis, so n
161 // edges give n-1 bins. Guard against an empty vector before subtracting, the
162 // sizes are unsigned.
163 if (m_zBinEdges.size() < 2 || m_rBinEdges.size() < 2) {
164 ATH_MSG_ERROR("zBinEdges and rBinEdges must each contain at least two "
165 "edges, got "
166 << m_zBinEdges.size() << " and " << m_rBinEdges.size());
167 return StatusCode::FAILURE;
168 }
169 const std::size_t nZBins = m_zBinEdges.size() - 1;
170 const std::size_t nRBins = m_rBinEdges.size() - 1;
171
172 // The neighbour vectors hold one entry per bin and are indexed 0-based by
173 // Acts::GridBinFinder. An empty vector means "one neighbour on each side".
174 auto checkNeighbors = [this](std::string_view name,
175 std::span<const std::pair<int, int>> values,
176 std::size_t nBins) {
177 if (values.empty() || values.size() == nBins) {
178 return true;
179 }
180 ATH_MSG_ERROR("Inconsistent config " << name << ": got " << values.size()
181 << " entries but the grid has "
182 << nBins << " bins");
183 return false;
184 };
185
186 if (!checkNeighbors("zBinNeighborsTop", m_zBinNeighborsTop.value(), nZBins) ||
187 !checkNeighbors("zBinNeighborsBottom", m_zBinNeighborsBottom.value(),
188 nZBins) ||
189 !checkNeighbors("rBinNeighborsTop", m_rBinNeighborsTop.value(), nRBins) ||
190 !checkNeighbors("rBinNeighborsBottom", m_rBinNeighborsBottom.value(),
191 nRBins)) {
192 return StatusCode::FAILURE;
193 }
194
195 // The custom looping vectors are the Acts::BinnedGroup navigation and use
196 // the 1-based local bin numbering of the grid axis: valid entries run from 1
197 // to the number of bins. Bin 0 is the underflow bin, which never holds a
198 // space point, so listing it would silently drop an entry from the loop. A
199 // vector may list a subset of the bins in order to skip the remaining ones,
200 // but must not repeat a bin. An empty vector means all bins in their natural
201 // order.
202 auto checkLooping = [this](std::string_view name,
203 std::span<const std::size_t> bins,
204 std::size_t nBins) {
205 std::vector<bool> visited(nBins + 1, false);
206 for (std::size_t i : bins) {
207 if (i == 0 || i > nBins) {
208 ATH_MSG_ERROR("Inconsistent config "
209 << name << ": bin " << i
210 << " is out of range, the numbering is 1-based and the "
211 "grid has "
212 << nBins << " bins (valid entries are 1.." << nBins
213 << ")");
214 return false;
215 }
216 if (visited[i]) {
217 ATH_MSG_ERROR("Inconsistent config " << name << ": bin " << i
218 << " is listed more than once");
219 return false;
220 }
221 visited[i] = true;
222 }
223 return true;
224 };
225
226 if (!checkLooping("zBinsCustomLooping", m_zBinsCustomLooping.value(),
227 nZBins) ||
228 !checkLooping("rBinsCustomLooping", m_rBinsCustomLooping.value(),
229 nRBins)) {
230 return StatusCode::FAILURE;
231 }
232
233 // rRangeMiddleSP is indexed 0-based by z bin in retrieveRadiusRangeForMiddle,
234 // so it needs exactly one entry per z bin. It is only read when the variable
235 // middle range is disabled.
236 if (!m_useVariableMiddleSPRange && m_rRangeMiddleSP.size() != nZBins) {
237 ATH_MSG_ERROR("Inconsistent config rRangeMiddleSP: got "
238 << m_rRangeMiddleSP.size()
239 << " entries but the grid has " << nZBins << " z bins");
240 return StatusCode::FAILURE;
241 }
242
243 std::visit([&](auto& cfg) {
244 //common settings for spherical and cylindrical grids
245 cfg.minPt = m_minPt;
246 cfg.rMin = 0;
247 cfg.rMax = m_gridRMax;
248 cfg.deltaRMax = m_deltaRMax;
249 cfg.impactMax = m_impactMax;
250 cfg.phiMin = m_gridPhiMin;
251 cfg.phiMax = m_gridPhiMax;
252 cfg.phiBinDeflectionCoverage = m_phiBinDeflectionCoverage;
253 cfg.maxPhiBins = m_maxPhiBins;
254 cfg.rBinEdges = m_rBinEdges;
255 cfg.bFieldInZ = 0; // will be set later
256
257 if constexpr (std::is_same_v<std::decay_t<decltype(cfg)>, Acts::Experimental::SphericalSpacePointGrid::Config>){
258 cfg.etaMin = m_etaMin;
259 cfg.etaMax = m_etaMax;
260 cfg.etaBinEdges = m_etaBinEdges;
261 cfg.bottomBinFinder = Acts::GridBinFinder<3ul>(
262 m_numPhiNeighbors.value(), m_numEtaNeighbors.value(),
263 m_rBinNeighborsBottom.value());
264 cfg.topBinFinder = Acts::GridBinFinder<3ul>(m_numPhiNeighbors.value(),
265 m_numEtaNeighbors.value(),
266 m_rBinNeighborsTop.value());
267 } else {
268 cfg.zMin = m_zMin;
269 cfg.zMax = m_zMax;
270 cfg.cotThetaMax = m_cotThetaMax;
271 cfg.zBinEdges = m_zBinEdges;
272 cfg.bottomBinFinder = Acts::GridBinFinder<3ul>(
274 m_rBinNeighborsBottom.value());
275 cfg.topBinFinder = Acts::GridBinFinder<3ul>(m_numPhiNeighbors.value(),
276 m_zBinNeighborsTop.value(),
277 m_rBinNeighborsTop.value());
278 cfg.navigation[0ul] = {};
279 cfg.navigation[1ul] = m_zBinsCustomLooping;
280 cfg.navigation[2ul] = m_rBinsCustomLooping;
281 }
282 }, m_gridCfg
283 );
284
285 m_bottomDoubletFinderCfg.spacePointsSortedByRadius = true;
286 m_bottomDoubletFinderCfg.candidateDirection = Acts::Direction::Backward();
297 m_bottomDoubletFinderCfg.helixCutTolerance = 1.;
299 m_bottomDoubletFinderCfg.stripCalibrationTolerance =
301 }
302 m_topDoubletFinderCfg = m_bottomDoubletFinderCfg; // copy the bottom cuts
303 m_topDoubletFinderCfg.candidateDirection = Acts::Direction::Forward();
306
308 m_tripletFinderCfg.sortedByCotTheta = true;
310 m_tripletFinderCfg.sigmaScattering = m_sigmaScattering;
311 m_tripletFinderCfg.radLengthPerSeed = m_radLengthPerSeed;
313 m_tripletFinderCfg.helixCutTolerance = 1.;
314 m_tripletFinderCfg.toleranceParam = m_toleranceParam;
316 m_filterCfg.deltaInvHelixDiameter = m_deltaInvHelixDiameter;
317 m_filterCfg.deltaRMin = m_deltaRMin;
318 m_filterCfg.compatSeedWeight = m_compatSeedWeight;
319 m_filterCfg.impactWeightFactor = m_impactWeightFactor;
320 m_filterCfg.zOriginWeightFactor = m_zOriginWeightFactor;
321 m_filterCfg.maxSeedsPerSpM = m_maxSeedsPerSpM;
322 m_filterCfg.compatSeedLimit = m_compatSeedLimit;
323 m_filterCfg.seedWeightIncrement = m_seedWeightIncrement;
324 m_filterCfg.numSeedIncrement = m_numSeedIncrement;
325 m_filterCfg.seedConfirmation = m_seedConfirmationInFilter;
326 m_filterCfg.centralSeedConfirmationRange.zMinSeedConf = m_seedConfCentralZMin;
327 m_filterCfg.centralSeedConfirmationRange.zMaxSeedConf = m_seedConfCentralZMax;
328 m_filterCfg.centralSeedConfirmationRange.rMaxSeedConf = m_seedConfCentralRMax;
329 m_filterCfg.centralSeedConfirmationRange.nTopForLargeR =
331 m_filterCfg.centralSeedConfirmationRange.nTopForSmallR =
333 m_filterCfg.centralSeedConfirmationRange.seedConfMinBottomRadius =
335 m_filterCfg.centralSeedConfirmationRange.seedConfMaxZOrigin =
337 m_filterCfg.centralSeedConfirmationRange.minImpactSeedConf =
339 m_filterCfg.forwardSeedConfirmationRange.zMinSeedConf = m_seedConfForwardZMin;
340 m_filterCfg.forwardSeedConfirmationRange.zMaxSeedConf = m_seedConfForwardZMax;
341 m_filterCfg.forwardSeedConfirmationRange.rMaxSeedConf = m_seedConfForwardRMax;
342 m_filterCfg.forwardSeedConfirmationRange.nTopForLargeR =
344 m_filterCfg.forwardSeedConfirmationRange.nTopForSmallR =
346 m_filterCfg.forwardSeedConfirmationRange.seedConfMinBottomRadius =
348 m_filterCfg.forwardSeedConfirmationRange.seedConfMaxZOrigin =
350 m_filterCfg.forwardSeedConfirmationRange.minImpactSeedConf =
352 m_filterCfg.maxSeedsPerSpMConf = m_maxSeedsPerSpMConf;
353 m_filterCfg.maxQualitySeedsPerSpMConf = m_maxQualitySeedsPerSpMConf;
354 m_filterCfg.useDeltaRinsteadOfTopRadius = m_useDeltaRorTopRadius;
355 m_filterCfg.absDeltaEtaWeightFactor = m_absDeltaEtaWeightFactor;
356 m_filterCfg.absDeltaEtaMinImpact = m_absDeltaEtaMinImpact;
357
358 m_finder = Acts::TripletSeeder(logger().cloneWithSuffix("Finder"));
359
360 m_loggerFilter = logger().cloneWithSuffix("Filter");
361
362 ATH_CHECK(detStore()->retrieve(m_pixelId, "PixelID"));
363
364 return StatusCode::SUCCESS;
365}
#define ATH_MSG_DEBUG(x,...)
static const std::vector< std::string > bins
std::unique_ptr< const Acts::Logger > makeActsAthenaLogger(IMessageSvc *svc, const std::string &name, int level, std::optional< std::string > parent_name)
Definition Logger.cxx:64
Gaudi::Property< bool > m_useDeltaRorTopRadius
Gaudi::Property< float > m_seedConfForwardMinImpact
Gaudi::Property< std::vector< std::pair< int, int > > > m_rBinNeighborsTop
Gaudi::Property< float > m_impactWeightFactor
Gaudi::Property< float > m_collisionRegionMax
Gaudi::Property< float > m_seedConfCentralMinBottomRadius
Gaudi::Property< int > m_phiBinDeflectionCoverage
Gaudi::Property< float > m_zOriginWeightFactor
Gaudi::Property< std::size_t > m_maxSeedsPerSpMConf
Gaudi::Property< float > m_maxPtScattering
Gaudi::Property< bool > m_useVariableMiddleSPRange
Gaudi::Property< float > m_stripCalibrationTolerance
Gaudi::Property< std::vector< float > > m_etaBinEdges
Gaudi::Property< float > m_toleranceParam
Gaudi::Property< float > m_maxStripDeltaCotTheta
Gaudi::Property< float > m_deltaRMaxBottomSP
Gaudi::Property< float > m_seedConfForwardMinBottomRadius
Gaudi::Property< float > m_compatSeedWeight
Gaudi::Property< std::vector< std::vector< double > > > m_rRangeMiddleSP
Gaudi::Property< float > m_deltaRMinTopSP
Gaudi::Property< float > m_seedConfForwardZMin
Gaudi::Property< std::vector< std::pair< int, int > > > m_rBinNeighborsBottom
Gaudi::Property< std::vector< std::pair< int, int > > > m_zBinNeighborsBottom
Gaudi::Property< float > m_gridPhiMin
Gaudi::Property< bool > m_interactionPointCut
Gaudi::Property< size_t > m_seedConfCentralNTopSmallR
Gaudi::Property< std::vector< float > > m_rBinEdges
Gaudi::Property< float > m_seedConfForwardRMax
Gaudi::Property< std::vector< std::pair< int, int > > > m_zBinNeighborsTop
Gaudi::Property< float > m_deltaInvHelixDiameter
Gaudi::Property< float > m_collisionRegionMin
Gaudi::Property< float > m_seedConfCentralMaxZOrigin
Gaudi::Property< float > m_seedConfCentralMinImpact
Gaudi::Property< std::size_t > m_maxQualitySeedsPerSpMConf
Gaudi::Property< std::vector< float > > m_zBinEdges
Gaudi::Property< bool > m_seedConfirmation
Gaudi::Property< float > m_seedConfForwardMaxZOrigin
Gaudi::Property< float > m_seedWeightIncrement
Gaudi::Property< float > m_radLengthPerSeed
Gaudi::Property< float > m_absDeltaEtaMinImpact
Gaudi::Property< float > m_absDeltaEtaWeightFactor
Gaudi::Property< float > m_cotThetaMax
Gaudi::Property< float > m_deltaRMinBottomSP
Gaudi::Property< size_t > m_seedConfCentralNTopLargeR
Gaudi::Property< float > m_seedConfForwardZMax
Gaudi::Property< bool > m_seedConfirmationInFilter
Gaudi::Property< std::vector< std::size_t > > m_rBinsCustomLooping
Gaudi::Property< float > m_seedConfCentralRMax
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Gaudi::Property< float > m_sigmaScattering
Gaudi::Property< std::vector< size_t > > m_zBinsCustomLooping
Gaudi::Property< float > m_seedConfCentralZMax
Gaudi::Property< float > m_deltaRMaxTopSP
Gaudi::Property< std::size_t > m_compatSeedLimit
Gaudi::Property< size_t > m_seedConfForwardNTopSmallR
Gaudi::Property< float > m_seedConfCentralZMin
Gaudi::Property< float > m_numSeedIncrement
Gaudi::Property< size_t > m_seedConfForwardNTopLargeR
unsigned long ul

◆ logger()

const Acts::Logger & ActsTrk::GridTripletSeedingTool::logger ( ) const
inlineprivate

Private access to the logger.

Definition at line 444 of file GridTripletSeedingTool.h.

444{ return *m_logger; }

◆ retrieveRadiusRangeForMiddle()

std::pair< float, float > ActsTrk::GridTripletSeedingTool::retrieveRadiusRangeForMiddle ( const Acts::ConstSpacePointProxy & spM,
const Acts::Range1D< float > & rMiddleSpRange ) const
private

Definition at line 509 of file GridTripletSeedingTool.cxx.

511 {
513 return {rMiddleSpRange.min(), rMiddleSpRange.max()};
514 }
515 if (m_rRangeMiddleSP.empty()) {
516 throw std::runtime_error(
517 "m_rRangeMiddleSP is empty, please check the configuration.");
518 }
519
520 // get zBin position of the middle SP
521 auto pVal =
522 std::lower_bound(m_zBinEdges.begin(), m_zBinEdges.end(), spM.zr()[0]);
523 int zBin = std::distance(m_zBinEdges.begin(), pVal);
524 // protects against zM at the limit of zBinEdges
525 zBin == 0 ? zBin : --zBin;
526 return {m_rRangeMiddleSP[zBin][0], m_rRangeMiddleSP[zBin][1]};
527}

◆ spacePointSelectionFunction()

bool ActsTrk::GridTripletSeedingTool::spacePointSelectionFunction ( const xAOD::SpacePoint * sp,
float r ) const
private

Definition at line 367 of file GridTripletSeedingTool.cxx.

368 {
369 float zabs = std::abs(sp->z());
370 float absCotTheta = zabs / r;
371
372 // checking configuration to remove pixel space points
373 Identifier identifier = m_pixelId->wafer_id(sp->elementIdList().at(0));
374 if (m_pixelId->is_barrel(identifier)) {
375 if (zabs > 200 && r < 40)
376 return false;
377
378 return true;
379 }
380
381 // Inner layers
382 // Below 1.20 - accept all
383 static constexpr float cotThetaEta120 = 1.5095;
384 if (absCotTheta < cotThetaEta120)
385 return true;
386
387 // Below 3.40 - remove if too close to beamline
388 static constexpr float cotThetaEta340 = 14.9654;
389 if (absCotTheta < cotThetaEta340 && r < m_expCutrMin)
390 return false;
391
392 // Outer layers
393 // Above 2.20
394 static constexpr float cotThetaEta220 = 4.4571;
395 if (absCotTheta > cotThetaEta220 && r > 260.)
396 return false;
397
398 // Above 2.60
399 static constexpr float cotThetaEta260 = 6.6947;
400 if (absCotTheta > cotThetaEta260 && r > 200.)
401 return false;
402
403 // Above 3.20
404 static constexpr float cotThetaEta320 = 12.2459;
405 if (absCotTheta > cotThetaEta320 && r > 140.)
406 return false;
407
408 // Above 4.00
409 static constexpr float cotThetaEta400 = 27.2899;
410 if (absCotTheta > cotThetaEta400)
411 return false;
412
413 return true;
414}

Member Data Documentation

◆ m_absDeltaEtaMinImpact

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_absDeltaEtaMinImpact
protected
Initial value:
{
this, "absDeltaEtaMinImpact", 2. * Acts::UnitConstants::mm,
"minimum impact parameter to apply abs(delta-eta) weight"}

Definition at line 324 of file GridTripletSeedingTool.h.

324 {
325 this, "absDeltaEtaMinImpact", 2. * Acts::UnitConstants::mm,
326 "minimum impact parameter to apply abs(delta-eta) weight"};

◆ m_absDeltaEtaWeightFactor

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_absDeltaEtaWeightFactor
protected
Initial value:
{
this, "absDeltaEtaWeightFactor", 0.,
"weight factor for abs(delta-eta) penalty between seed direction and "
"beamspot-to-PCA direction (0 = disabled, typical LRT value: 10)"}

Definition at line 320 of file GridTripletSeedingTool.h.

320 {
321 this, "absDeltaEtaWeightFactor", 0.,
322 "weight factor for abs(delta-eta) penalty between seed direction and "
323 "beamspot-to-PCA direction (0 = disabled, typical LRT value: 10)"};

◆ m_binSizeR

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_binSizeR
protected
Initial value:
{
this, "binSizeR", 1. * Acts::UnitConstants::mm,
"defining radial bin for space point sorting"}

Definition at line 114 of file GridTripletSeedingTool.h.

114 {
115 this, "binSizeR", 1. * Acts::UnitConstants::mm,
116 "defining radial bin for space point sorting"};

◆ m_bottomDoubletFinderCfg

Acts::DoubletSeedFinder::Config ActsTrk::GridTripletSeedingTool::m_bottomDoubletFinderCfg
private

Definition at line 430 of file GridTripletSeedingTool.h.

◆ m_collisionRegionMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_collisionRegionMax
protected
Initial value:
{
this, "collisionRegionMax", 200. * Acts::UnitConstants::mm,
"limiting location of collision region in z"}

Definition at line 139 of file GridTripletSeedingTool.h.

139 {
140 this, "collisionRegionMax", 200. * Acts::UnitConstants::mm,
141 "limiting location of collision region in z"};

◆ m_collisionRegionMin

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_collisionRegionMin
protected
Initial value:
{
this, "collisionRegionMin", -200. * Acts::UnitConstants::mm,
"limiting location of collision region in z"}

Definition at line 136 of file GridTripletSeedingTool.h.

136 {
137 this, "collisionRegionMin", -200. * Acts::UnitConstants::mm,
138 "limiting location of collision region in z"};

◆ m_compatSeedLimit

Gaudi::Property<std::size_t> ActsTrk::GridTripletSeedingTool::m_compatSeedLimit
protected
Initial value:
{
this, "compatSeedLimit", 3,
"how often do you want to increase the weight of a seed for finding a "
"compatible seed"}

Definition at line 294 of file GridTripletSeedingTool.h.

294 {
295 this, "compatSeedLimit", 3,
296 "how often do you want to increase the weight of a seed for finding a "
297 "compatible seed"};

◆ m_compatSeedWeight

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_compatSeedWeight
protected
Initial value:
{
this, "compatSeedWeight", 100.,
"seed weight increased by this value if a compatible seed has been "
"found"}

Definition at line 290 of file GridTripletSeedingTool.h.

290 {
291 this, "compatSeedWeight", 100.,
292 "seed weight increased by this value if a compatible seed has been "
293 "found"};

◆ m_cotThetaMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_cotThetaMax
protected
Initial value:
{this, "cotThetaMax", 27.2899,
"cot of maximum theta angle"}

Definition at line 60 of file GridTripletSeedingTool.h.

60 {this, "cotThetaMax", 27.2899,
61 "cot of maximum theta angle"};

◆ m_deltaInvHelixDiameter

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_deltaInvHelixDiameter
protected
Initial value:
{
this, "deltaInvHelixDiameter", 0.00003 * 1. / Acts::UnitConstants::mm,
"the allowed delta between two inverted seed radii for them to be "
"considered compatible"}

Definition at line 316 of file GridTripletSeedingTool.h.

316 {
317 this, "deltaInvHelixDiameter", 0.00003 * 1. / Acts::UnitConstants::mm,
318 "the allowed delta between two inverted seed radii for them to be "
319 "considered compatible"};

◆ m_deltaRMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_deltaRMax
protected
Initial value:
{
this, "deltaRMax", 280. * Acts::UnitConstants::mm,
"maximum distance in r between two measurements within one "
"seed"}

Definition at line 72 of file GridTripletSeedingTool.h.

72 {
73 this, "deltaRMax", 280. * Acts::UnitConstants::mm,
74 "maximum distance in r between two measurements within one "
75 "seed"};

◆ m_deltaRMaxBottomSP

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_deltaRMaxBottomSP
protected
Initial value:
{
this, "deltaRMaxBottomSP", 150. * Acts::UnitConstants::mm,
"maximum distance in r between middle and top SP"}

Definition at line 130 of file GridTripletSeedingTool.h.

130 {
131 this, "deltaRMaxBottomSP", 150. * Acts::UnitConstants::mm,
132 "maximum distance in r between middle and top SP"};

◆ m_deltaRMaxTopSP

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_deltaRMaxTopSP
protected
Initial value:
{
this, "deltaRMaxTopSP", 280. * Acts::UnitConstants::mm,
"maximum distance in r between middle and top SP"}

Definition at line 124 of file GridTripletSeedingTool.h.

124 {
125 this, "deltaRMaxTopSP", 280. * Acts::UnitConstants::mm,
126 "maximum distance in r between middle and top SP"};

◆ m_deltaRMiddleMaxSPRange

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_deltaRMiddleMaxSPRange
protected
Initial value:
{
this, "deltaRMiddleMaxSPRange", 10., "delta R for middle SP range (max)"}

Definition at line 204 of file GridTripletSeedingTool.h.

204 {
205 this, "deltaRMiddleMaxSPRange", 10., "delta R for middle SP range (max)"};

◆ m_deltaRMiddleMinSPRange

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_deltaRMiddleMinSPRange
protected
Initial value:
{
this, "deltaRMiddleMinSPRange", 10., "delta R for middle SP range (min)"}

Definition at line 202 of file GridTripletSeedingTool.h.

202 {
203 this, "deltaRMiddleMinSPRange", 10., "delta R for middle SP range (min)"};

◆ m_deltaRMin

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_deltaRMin
protected
Initial value:
{
this, "deltaRMin", 20. * Acts::UnitConstants::mm,
"minimum distance in r between two measurements within one "
"seed"}

Definition at line 117 of file GridTripletSeedingTool.h.

117 {
118 this, "deltaRMin", 20. * Acts::UnitConstants::mm,
119 "minimum distance in r between two measurements within one "
120 "seed"};

◆ m_deltaRMinBottomSP

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_deltaRMinBottomSP
protected
Initial value:
{
this, "deltaRMinBottomSP", 6. * Acts::UnitConstants::mm,
"minimum distance in r between middle and top SP"}

Definition at line 127 of file GridTripletSeedingTool.h.

127 {
128 this, "deltaRMinBottomSP", 6. * Acts::UnitConstants::mm,
129 "minimum distance in r between middle and top SP"};

◆ m_deltaRMinTopSP

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_deltaRMinTopSP
protected
Initial value:
{
this, "deltaRMinTopSP", 6. * Acts::UnitConstants::mm,
"minimum distance in r between middle and top SP"}

Definition at line 121 of file GridTripletSeedingTool.h.

121 {
122 this, "deltaRMinTopSP", 6. * Acts::UnitConstants::mm,
123 "minimum distance in r between middle and top SP"};

◆ m_deltaZMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_deltaZMax
protected
Initial value:
{
this, "deltaZMax", 600,
"maximum distance in z between two measurements within one seed"}

Definition at line 133 of file GridTripletSeedingTool.h.

133 {
134 this, "deltaZMax", 600,
135 "maximum distance in z between two measurements within one seed"};

◆ m_doubletDPhiCap

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_doubletDPhiCap
protected
Initial value:
{
this, "doubletDPhiCap", 10., "cap on the displaced phi-swing term [rad]"}

Definition at line 397 of file GridTripletSeedingTool.h.

397 {
398 this, "doubletDPhiCap", 10., "cap on the displaced phi-swing term [rad]"};

◆ m_doubletDPhiConst

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_doubletDPhiConst
protected
Initial value:
{
this, "doubletDPhiConst", 0.015,
"constant term of the prompt doublet phi window [rad]"}

Definition at line 399 of file GridTripletSeedingTool.h.

399 {
400 this, "doubletDPhiConst", 0.015,
401 "constant term of the prompt doublet phi window [rad]"};

◆ m_doubletDPhiCut

Gaudi::Property<bool> ActsTrk::GridTripletSeedingTool::m_doubletDPhiCut
protected
Initial value:
{
this, "doubletDPhiCut", false,
"apply the per-pair azimuthal-swing doublet cut"}

Definition at line 390 of file GridTripletSeedingTool.h.

390 {
391 this, "doubletDPhiCut", false,
392 "apply the per-pair azimuthal-swing doublet cut"};

◆ m_doubletDPhiD0Max

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_doubletDPhiD0Max
protected
Initial value:
{
this, "doubletDPhiD0Max", -1.,
"impact parameter bounding the doublet phi swing; negative uses "
"impactMax"}

Definition at line 393 of file GridTripletSeedingTool.h.

393 {
394 this, "doubletDPhiD0Max", -1.,
395 "impact parameter bounding the doublet phi swing; negative uses "
396 "impactMax"};

◆ m_doubletDPhiSlope

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_doubletDPhiSlope
protected
Initial value:
{
this, "doubletDPhiSlope", 2.0e-4,
"curvature term of the prompt doublet phi window [rad/mm]"}

Definition at line 402 of file GridTripletSeedingTool.h.

402 {
403 this, "doubletDPhiSlope", 2.0e-4,
404 "curvature term of the prompt doublet phi window [rad/mm]"};

◆ m_doubletStripCalibrationCut

Gaudi::Property<bool> ActsTrk::GridTripletSeedingTool::m_doubletStripCalibrationCut
protected
Initial value:
{
this, "doubletStripCalibrationCut", false,
"reject strip doublets whose chord misses either strip pair"}

Definition at line 407 of file GridTripletSeedingTool.h.

407 {
408 this, "doubletStripCalibrationCut", false,
409 "reject strip doublets whose chord misses either strip pair"};

◆ m_doubletStripCalibrationTolerance

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_doubletStripCalibrationTolerance
protected
Initial value:
{
this, "doubletStripCalibrationTolerance", 2.,
"strip calibration doublet cut tolerance [half strip lengths]"}

Definition at line 410 of file GridTripletSeedingTool.h.

410 {
411 this, "doubletStripCalibrationTolerance", 2.,
412 "strip calibration doublet cut tolerance [half strip lengths]"};

◆ m_etaBinEdges

Gaudi::Property<std::vector<float> > ActsTrk::GridTripletSeedingTool::m_etaBinEdges
protected
Initial value:
{
this,
"etaBinEdges",
{-3., -1.8, -0.6, 0.6, 1.8, 3.},
"enable non equidistant binning in eta (for spherical grid only)"}

Definition at line 85 of file GridTripletSeedingTool.h.

85 {
86 this,
87 "etaBinEdges",
88 {-3., -1.8, -0.6, 0.6, 1.8, 3.},
89 "enable non equidistant binning in eta (for spherical grid only)"};

◆ m_etaMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_etaMax
protected
Initial value:
{
this, "etaMax", 3., "Eta range maximum (for spherical grid only)"}

Definition at line 69 of file GridTripletSeedingTool.h.

69 {
70 this, "etaMax", 3., "Eta range maximum (for spherical grid only)"};

◆ m_etaMin

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_etaMin
protected
Initial value:
{
this, "etaMin", -3., "Eta range minimum (for spherical grid only)"}

Definition at line 67 of file GridTripletSeedingTool.h.

67 {
68 this, "etaMin", -3., "Eta range minimum (for spherical grid only)"};

◆ m_expCutrMin

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_expCutrMin
protected
Initial value:
{this, "SpSelectionExpCutrMin",
45. * Acts::UnitConstants::mm}

Definition at line 423 of file GridTripletSeedingTool.h.

423 {this, "SpSelectionExpCutrMin",
424 45. * Acts::UnitConstants::mm};

◆ m_filterCfg

Acts::BroadTripletSeedFilter::Config ActsTrk::GridTripletSeedingTool::m_filterCfg
private

Definition at line 433 of file GridTripletSeedingTool.h.

◆ m_finder

std::optional<Acts::TripletSeeder> ActsTrk::GridTripletSeedingTool::m_finder
private

Definition at line 435 of file GridTripletSeedingTool.h.

◆ m_gridCfg

std::variant<Acts::CylindricalSpacePointGrid::Config, Acts::Experimental::SphericalSpacePointGrid::Config> ActsTrk::GridTripletSeedingTool::m_gridCfg
private

Definition at line 429 of file GridTripletSeedingTool.h.

◆ m_gridPhiMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_gridPhiMax
protected
Initial value:
{this, "gridPhiMax",
std::numbers::pi_v<float>,
"phi max for space point grid formation"}

Definition at line 101 of file GridTripletSeedingTool.h.

101 {this, "gridPhiMax",
102 std::numbers::pi_v<float>,
103 "phi max for space point grid formation"};

◆ m_gridPhiMin

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_gridPhiMin
protected
Initial value:
{this, "gridPhiMin",
-std::numbers::pi_v<float>,
"phi min for space point grid formation"}

Definition at line 98 of file GridTripletSeedingTool.h.

98 {this, "gridPhiMin",
99 -std::numbers::pi_v<float>,
100 "phi min for space point grid formation"};

◆ m_gridRMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_gridRMax
protected
Initial value:
{
this, "gridRMax", 320. * Acts::UnitConstants::mm,
"radial extension of subdetector to be used in grid building"}

Definition at line 95 of file GridTripletSeedingTool.h.

95 {
96 this, "gridRMax", 320. * Acts::UnitConstants::mm,
97 "radial extension of subdetector to be used in grid building"};

◆ m_hvCollisionRegionTolerance

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_hvCollisionRegionTolerance
protected
Initial value:
{
this, "hvCollisionRegionTolerance", 10. * Acts::UnitConstants::mm,
"size of collision region when using Hough vertex"}

Definition at line 145 of file GridTripletSeedingTool.h.

145 {
146 this, "hvCollisionRegionTolerance", 10. * Acts::UnitConstants::mm,
147 "size of collision region when using Hough vertex"};

◆ m_impactMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_impactMax
protected
Initial value:
{this, "impactMax",
2. * Acts::UnitConstants::mm,
"maximum impact parameter"}

Definition at line 76 of file GridTripletSeedingTool.h.

76 {this, "impactMax",
77 2. * Acts::UnitConstants::mm,
78 "maximum impact parameter"};

◆ m_impactWeightFactor

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_impactWeightFactor
protected
Initial value:
{
this, "impactWeightFactor", 100.,
"the impact parameters (d0) is multiplied by this factor and subtracted "
"from weight"}

Definition at line 285 of file GridTripletSeedingTool.h.

285 {
286 this, "impactWeightFactor", 100.,
287 "the impact parameters (d0) is multiplied by this factor and subtracted "
288 "from weight"};

◆ m_inputHoughVtxKey

SG::ReadHandleKey<xAOD::VertexContainer> ActsTrk::GridTripletSeedingTool::m_inputHoughVtxKey
private
Initial value:
{
this, "inputHoughVtx", "", "input vertex container"}

Definition at line 468 of file GridTripletSeedingTool.h.

468 {
469 this, "inputHoughVtx", "", "input vertex container"};

◆ m_interactionPointCut

Gaudi::Property<bool> ActsTrk::GridTripletSeedingTool::m_interactionPointCut
protected
Initial value:
{
this, "interactionPointCut", true,
"Enable cut on the compatibility between interaction point and SPs"}

Definition at line 163 of file GridTripletSeedingTool.h.

163 {
164 this, "interactionPointCut", true,
165 "Enable cut on the compatibility between interaction point and SPs"};

◆ m_logger

std::unique_ptr<const Acts::Logger> ActsTrk::GridTripletSeedingTool::m_logger
private

logging instance

Definition at line 438 of file GridTripletSeedingTool.h.

◆ m_loggerFilter

std::unique_ptr<const Acts::Logger> ActsTrk::GridTripletSeedingTool::m_loggerFilter
private

Definition at line 439 of file GridTripletSeedingTool.h.

◆ m_maxPhiBins

Gaudi::Property<int> ActsTrk::GridTripletSeedingTool::m_maxPhiBins
protected
Initial value:
{this, "maxPhiBins", 200,
"max number of bins"}

Definition at line 108 of file GridTripletSeedingTool.h.

108 {this, "maxPhiBins", 200,
109 "max number of bins"};

◆ m_maxPtScattering

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_maxPtScattering
protected
Initial value:
{
this, "maxPtScattering", 10e6,
"Upper pt limit for scattering calculation"}

Definition at line 151 of file GridTripletSeedingTool.h.

151 {
152 this, "maxPtScattering", 10e6,
153 "Upper pt limit for scattering calculation"};

◆ m_maxQualitySeedsPerSpMConf

Gaudi::Property<std::size_t> ActsTrk::GridTripletSeedingTool::m_maxQualitySeedsPerSpMConf
protected
Initial value:
{
this, "maxQualitySeedsPerSpMConf", 5,
"Maximum number of quality seeds for each middle-bottom SP-duplet in "
"seed confirmation."}

Definition at line 309 of file GridTripletSeedingTool.h.

309 {
310 this, "maxQualitySeedsPerSpMConf", 5,
311 "Maximum number of quality seeds for each middle-bottom SP-duplet in "
312 "seed confirmation."};

◆ m_maxSeedsPerSpM

Gaudi::Property<int> ActsTrk::GridTripletSeedingTool::m_maxSeedsPerSpM
protected
Initial value:
{
this, "maxSeedsPerSpM", 4,
"In dense environments many seeds may be found per middle space point. "
"Only seeds with the highest weight will be kept if this limit is "
"reached."}

Definition at line 158 of file GridTripletSeedingTool.h.

158 {
159 this, "maxSeedsPerSpM", 4,
160 "In dense environments many seeds may be found per middle space point. "
161 "Only seeds with the highest weight will be kept if this limit is "
162 "reached."};

◆ m_maxSeedsPerSpMConf

Gaudi::Property<std::size_t> ActsTrk::GridTripletSeedingTool::m_maxSeedsPerSpMConf
protected
Initial value:
{
this, "maxSeedsPerSpMConf", 5,
"Maximum number of lower quality seeds in seed confirmation."}

Definition at line 306 of file GridTripletSeedingTool.h.

306 {
307 this, "maxSeedsPerSpMConf", 5,
308 "Maximum number of lower quality seeds in seed confirmation."};

◆ m_maxStripDeltaCotTheta

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_maxStripDeltaCotTheta
protected
Initial value:
{
this, "maxStripDeltaCotTheta", 1e10f,
"maximum allowed |cotTheta_bottom - cotTheta_top| pre-filter for strip "
"triplets before expensive coordinate checks"}

Definition at line 264 of file GridTripletSeedingTool.h.

264 {
265 this, "maxStripDeltaCotTheta", 1e10f,
266 "maximum allowed |cotTheta_bottom - cotTheta_top| pre-filter for strip "
267 "triplets before expensive coordinate checks"};

◆ m_minPt

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_minPt
protected
Initial value:
{this, "minPt", 900. * Acts::UnitConstants::MeV,
"lower pT cutoff for seeds"}

Definition at line 58 of file GridTripletSeedingTool.h.

58 {this, "minPt", 900. * Acts::UnitConstants::MeV,
59 "lower pT cutoff for seeds"};

◆ m_numEtaNeighbors

Gaudi::Property<int> ActsTrk::GridTripletSeedingTool::m_numEtaNeighbors
protected
Initial value:
{
this, "numPhiNeighbors", 0,
"number of eta bin neighbors at each side of the current bin that will "
"be used to search for SPs"}

Definition at line 364 of file GridTripletSeedingTool.h.

364 {
365 this, "numPhiNeighbors", 0,
366 "number of eta bin neighbors at each side of the current bin that will "
367 "be used to search for SPs"};

◆ m_numPhiNeighbors

Gaudi::Property<int> ActsTrk::GridTripletSeedingTool::m_numPhiNeighbors
protected
Initial value:
{
this, "numPhiNeighbors", 1,
"number of phi bin neighbors at each side of the current bin that will "
"be used to search for SPs"}

Definition at line 379 of file GridTripletSeedingTool.h.

379 {
380 this, "numPhiNeighbors", 1,
381 "number of phi bin neighbors at each side of the current bin that will "
382 "be used to search for SPs"};

◆ m_numSeedIncrement

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_numSeedIncrement
protected
Initial value:
{
this, "numSeedIncrement", 10e6,
"increment in seed weight is applied if the number of compatible seeds "
"is larger than numSeedIncrement"}

Definition at line 300 of file GridTripletSeedingTool.h.

300 {
301 this, "numSeedIncrement", 10e6,
302 "increment in seed weight is applied if the number of compatible seeds "
303 "is larger than numSeedIncrement"};

◆ m_phiBinDeflectionCoverage

Gaudi::Property<int> ActsTrk::GridTripletSeedingTool::m_phiBinDeflectionCoverage
protected
Initial value:
{
this, "phiBinDeflectionCoverage", 3,
"sets of consecutive phi bins to cover full deflection of minimum pT "
"particle"}

Definition at line 104 of file GridTripletSeedingTool.h.

104 {
105 this, "phiBinDeflectionCoverage", 3,
106 "sets of consecutive phi bins to cover full deflection of minimum pT "
107 "particle"};

◆ m_phiMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_phiMax
protected
Initial value:
{this, "phiMax", std::numbers::pi_v<float>,
""}

Definition at line 271 of file GridTripletSeedingTool.h.

271 {this, "phiMax", std::numbers::pi_v<float>,
272 ""};

◆ m_phiMin

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_phiMin
protected
Initial value:
{this, "phiMin", -std::numbers::pi_v<float>,
""}

Definition at line 269 of file GridTripletSeedingTool.h.

269 {this, "phiMin", -std::numbers::pi_v<float>,
270 ""};

◆ m_pixelId

const PixelID* ActsTrk::GridTripletSeedingTool::m_pixelId {nullptr}
private

Definition at line 441 of file GridTripletSeedingTool.h.

441{nullptr};

◆ m_radLengthPerSeed

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_radLengthPerSeed
protected
Initial value:
{
this, "radLengthPerSeed", 0.098045,
"average radiation lengths of material on the length of a seed. used for "
"scattering"}

Definition at line 154 of file GridTripletSeedingTool.h.

154 {
155 this, "radLengthPerSeed", 0.098045,
156 "average radiation lengths of material on the length of a seed. used for "
157 "scattering"};

◆ m_rAlign

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_rAlign
protected
Initial value:
{this, "rAlign", 0 * Acts::UnitConstants::mm,
""}

Definition at line 276 of file GridTripletSeedingTool.h.

276 {this, "rAlign", 0 * Acts::UnitConstants::mm,
277 ""};

◆ m_rBinEdges

Gaudi::Property<std::vector<float> > ActsTrk::GridTripletSeedingTool::m_rBinEdges
protected
Initial value:
{
this,
"rBinEdges",
{0., 1100 * Acts::UnitConstants::mm},
"enable non equidistant binning in radius"}

Definition at line 90 of file GridTripletSeedingTool.h.

90 {
91 this,
92 "rBinEdges",
93 {0., 1100 * Acts::UnitConstants::mm},
94 "enable non equidistant binning in radius"};

◆ m_rBinNeighborsBottom

Gaudi::Property<std::vector<std::pair<int, int> > > ActsTrk::GridTripletSeedingTool::m_rBinNeighborsBottom
protected
Initial value:
{
this,
"rBinNeighborsBottom",
{{0, 0}},
"vector containing the map of radius bins in the bottom layers"}

Definition at line 374 of file GridTripletSeedingTool.h.

374 {
375 this,
376 "rBinNeighborsBottom",
377 {{0, 0}},
378 "vector containing the map of radius bins in the bottom layers"};

◆ m_rBinNeighborsTop

Gaudi::Property<std::vector<std::pair<int, int> > > ActsTrk::GridTripletSeedingTool::m_rBinNeighborsTop
protected
Initial value:
{
this,
"rBinNeighborsTop",
{{0, 0}},
"vector containing the map of radius bins in the top layers"}

Definition at line 369 of file GridTripletSeedingTool.h.

369 {
370 this,
371 "rBinNeighborsTop",
372 {{0, 0}},
373 "vector containing the map of radius bins in the top layers"};

◆ m_rBinsCustomLooping

Gaudi::Property<std::vector<std::size_t> > ActsTrk::GridTripletSeedingTool::m_rBinsCustomLooping
protected
Initial value:
{
this,
"rBinsCustomLooping",
{},
"defines order of r bins for looping; entries are 1-based local bin "
"indices, i.e. within 1..(rBinEdges.size()-1), and must not repeat. "
"Listing a subset skips the remaining bins, empty means all bins in "
"their natural order"}

Definition at line 174 of file GridTripletSeedingTool.h.

174 {
175 this,
176 "rBinsCustomLooping",
177 {},
178 "defines order of r bins for looping; entries are 1-based local bin "
179 "indices, i.e. within 1..(rBinEdges.size()-1), and must not repeat. "
180 "Listing a subset skips the remaining bins, empty means all bins in "
181 "their natural order"};

◆ m_rMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_rMax
protected
Initial value:
{this, "rMax", 320. * Acts::UnitConstants::mm,
"limiting location of measurements"}

Definition at line 112 of file GridTripletSeedingTool.h.

112 {this, "rMax", 320. * Acts::UnitConstants::mm,
113 "limiting location of measurements"};

◆ m_rMin

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_rMin {this, "rMin", 0 * Acts::UnitConstants::mm, ""}
protected

Definition at line 273 of file GridTripletSeedingTool.h.

273{this, "rMin", 0 * Acts::UnitConstants::mm, ""};

◆ m_rRangeMiddleSP

Gaudi::Property<std::vector<std::vector<double> > > ActsTrk::GridTripletSeedingTool::m_rRangeMiddleSP
protected
Initial value:
{
this,
"rRangeMiddleSP",
{{40.0, 90.0},
{40.0, 90.0},
{40.0, 200.0},
{46.0, 200.0},
{46.0, 200.0},
{46.0, 250.0},
{46.0, 250.0},
{46.0, 250.0},
{46.0, 200.0},
{46.0, 200.0},
{40.0, 200.0},
{40.0, 90.0},
{40.0, 90.0}},
"radial range for middle SP"}

Definition at line 185 of file GridTripletSeedingTool.h.

185 {
186 this,
187 "rRangeMiddleSP",
188 {{40.0, 90.0},
189 {40.0, 90.0},
190 {40.0, 200.0},
191 {46.0, 200.0},
192 {46.0, 200.0},
193 {46.0, 250.0},
194 {46.0, 250.0},
195 {46.0, 250.0},
196 {46.0, 200.0},
197 {46.0, 200.0},
198 {40.0, 200.0},
199 {40.0, 90.0},
200 {40.0, 90.0}},
201 "radial range for middle SP"};

◆ m_seedConfCentralMaxZOrigin

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedConfCentralMaxZOrigin
protected
Initial value:
{
this, "seedConfCentralMaxZOrigin", 150 * Acts::UnitConstants::mm,
"Maximum zOrigin in seed confirmation"}

Definition at line 226 of file GridTripletSeedingTool.h.

226 {
227 this, "seedConfCentralMaxZOrigin", 150 * Acts::UnitConstants::mm,
228 "Maximum zOrigin in seed confirmation"};

◆ m_seedConfCentralMinBottomRadius

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedConfCentralMinBottomRadius
protected
Initial value:
{
this, "seedConfCentralMinBottomRadius", 60 * Acts::UnitConstants::mm,
"Minimum radius for bottom SP in seed confirmation"}

Definition at line 223 of file GridTripletSeedingTool.h.

223 {
224 this, "seedConfCentralMinBottomRadius", 60 * Acts::UnitConstants::mm,
225 "Minimum radius for bottom SP in seed confirmation"};

◆ m_seedConfCentralMinImpact

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedConfCentralMinImpact
protected
Initial value:
{
this, "seedConfCentralMinImpact", 1. * Acts::UnitConstants::mm,
"Minimum impact parameter for seed confirmation"}

Definition at line 229 of file GridTripletSeedingTool.h.

229 {
230 this, "seedConfCentralMinImpact", 1. * Acts::UnitConstants::mm,
231 "Minimum impact parameter for seed confirmation"};

◆ m_seedConfCentralNTopLargeR

Gaudi::Property<size_t> ActsTrk::GridTripletSeedingTool::m_seedConfCentralNTopLargeR
protected
Initial value:
{
this, "seedConfCentralNTopLargeR", 1,
"nTop for large R central seed confirmation"}

Definition at line 217 of file GridTripletSeedingTool.h.

217 {
218 this, "seedConfCentralNTopLargeR", 1,
219 "nTop for large R central seed confirmation"};

◆ m_seedConfCentralNTopSmallR

Gaudi::Property<size_t> ActsTrk::GridTripletSeedingTool::m_seedConfCentralNTopSmallR
protected
Initial value:
{
this, "seedConfCentralNTopSmallR", 2,
"nTop for small R central seed confirmation"}

Definition at line 220 of file GridTripletSeedingTool.h.

220 {
221 this, "seedConfCentralNTopSmallR", 2,
222 "nTop for small R central seed confirmation"};

◆ m_seedConfCentralRMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedConfCentralRMax
protected
Initial value:
{
this, "seedConfCentralRMax", 140. * Acts::UnitConstants::mm,
"maximum r for central seed confirmation "}

Definition at line 214 of file GridTripletSeedingTool.h.

214 {
215 this, "seedConfCentralRMax", 140. * Acts::UnitConstants::mm,
216 "maximum r for central seed confirmation "};

◆ m_seedConfCentralZMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedConfCentralZMax
protected
Initial value:
{
this, "seedConfCentralZMax", 250. * Acts::UnitConstants::mm,
"maximum z for central seed confirmation "}

Definition at line 211 of file GridTripletSeedingTool.h.

211 {
212 this, "seedConfCentralZMax", 250. * Acts::UnitConstants::mm,
213 "maximum z for central seed confirmation "};

◆ m_seedConfCentralZMin

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedConfCentralZMin
protected
Initial value:
{
this, "seedConfCentralZMin", -250. * Acts::UnitConstants::mm,
"minimum z for central seed confirmation "}

Definition at line 208 of file GridTripletSeedingTool.h.

208 {
209 this, "seedConfCentralZMin", -250. * Acts::UnitConstants::mm,
210 "minimum z for central seed confirmation "};

◆ m_seedConfForwardMaxZOrigin

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedConfForwardMaxZOrigin
protected
Initial value:
{
this, "seedConfForwardMaxZOrigin", 150 * Acts::UnitConstants::mm,
"Maximum zOrigin in seed confirmation"}

Definition at line 250 of file GridTripletSeedingTool.h.

250 {
251 this, "seedConfForwardMaxZOrigin", 150 * Acts::UnitConstants::mm,
252 "Maximum zOrigin in seed confirmation"};

◆ m_seedConfForwardMinBottomRadius

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedConfForwardMinBottomRadius
protected
Initial value:
{
this, "seedConfForwardMinBottomRadius", 60 * Acts::UnitConstants::mm,
"Minimum radius for bottom SP in seed confirmation"}

Definition at line 247 of file GridTripletSeedingTool.h.

247 {
248 this, "seedConfForwardMinBottomRadius", 60 * Acts::UnitConstants::mm,
249 "Minimum radius for bottom SP in seed confirmation"};

◆ m_seedConfForwardMinImpact

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedConfForwardMinImpact
protected
Initial value:
{
this, "seedConfForwardMinImpact", 1. * Acts::UnitConstants::mm,
"Minimum impact parameter for seed confirmation"}

Definition at line 253 of file GridTripletSeedingTool.h.

253 {
254 this, "seedConfForwardMinImpact", 1. * Acts::UnitConstants::mm,
255 "Minimum impact parameter for seed confirmation"};

◆ m_seedConfForwardNTopLargeR

Gaudi::Property<size_t> ActsTrk::GridTripletSeedingTool::m_seedConfForwardNTopLargeR
protected
Initial value:
{
this, "seedConfForwardNTopLargeR", 1,
"nTop for large R forward seed confirmation"}

Definition at line 241 of file GridTripletSeedingTool.h.

241 {
242 this, "seedConfForwardNTopLargeR", 1,
243 "nTop for large R forward seed confirmation"};

◆ m_seedConfForwardNTopSmallR

Gaudi::Property<size_t> ActsTrk::GridTripletSeedingTool::m_seedConfForwardNTopSmallR
protected
Initial value:
{
this, "seedConfForwardNTopSmallR", 2,
"nTop for small R forward seed confirmation"}

Definition at line 244 of file GridTripletSeedingTool.h.

244 {
245 this, "seedConfForwardNTopSmallR", 2,
246 "nTop for small R forward seed confirmation"};

◆ m_seedConfForwardRMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedConfForwardRMax
protected
Initial value:
{
this, "seedConfForwardRMax", 140. * Acts::UnitConstants::mm,
"maximum r for forward seed confirmation "}

Definition at line 238 of file GridTripletSeedingTool.h.

238 {
239 this, "seedConfForwardRMax", 140. * Acts::UnitConstants::mm,
240 "maximum r for forward seed confirmation "};

◆ m_seedConfForwardZMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedConfForwardZMax
protected
Initial value:
{
this, "seedConfForwardZMax", 3000. * Acts::UnitConstants::mm,
"maximum z for forward seed confirmation "}

Definition at line 235 of file GridTripletSeedingTool.h.

235 {
236 this, "seedConfForwardZMax", 3000. * Acts::UnitConstants::mm,
237 "maximum z for forward seed confirmation "};

◆ m_seedConfForwardZMin

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedConfForwardZMin
protected
Initial value:
{
this, "seedConfForwardZMin", -3000. * Acts::UnitConstants::mm,
"minimum z for forward seed confirmation "}

Definition at line 232 of file GridTripletSeedingTool.h.

232 {
233 this, "seedConfForwardZMin", -3000. * Acts::UnitConstants::mm,
234 "minimum z for forward seed confirmation "};

◆ m_seedConfirmation

Gaudi::Property<bool> ActsTrk::GridTripletSeedingTool::m_seedConfirmation
protected
Initial value:
{this, "seedConfirmation", true,
"run seed confirmation"}

Definition at line 206 of file GridTripletSeedingTool.h.

206 {this, "seedConfirmation", true,
207 "run seed confirmation"};

◆ m_seedConfirmationInFilter

Gaudi::Property<bool> ActsTrk::GridTripletSeedingTool::m_seedConfirmationInFilter
protected
Initial value:
{
this, "seedConfirmationInFilter", true, "run seed confirmation"}

Definition at line 304 of file GridTripletSeedingTool.h.

304 {
305 this, "seedConfirmationInFilter", true, "run seed confirmation"};

◆ m_seedQualitySelection

Gaudi::Property<bool> ActsTrk::GridTripletSeedingTool::m_seedQualitySelection
protected
Initial value:
{
this, "doSeedQualitySelection", true,
"Select seed according to quality criteria"}

Definition at line 47 of file GridTripletSeedingTool.h.

47 {
48 this, "doSeedQualitySelection", true,
49 "Select seed according to quality criteria"};

◆ m_seedWeightIncrement

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_seedWeightIncrement
protected
Initial value:
{
this, "seedWeightIncrement", 0., "increment in seed weight if needed"}

Definition at line 298 of file GridTripletSeedingTool.h.

298 {
299 this, "seedWeightIncrement", 0., "increment in seed weight if needed"};

◆ m_sigmaError

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_sigmaError {this, "sigmaError", 5, ""}
protected

Definition at line 278 of file GridTripletSeedingTool.h.

278{this, "sigmaError", 5, ""};

◆ m_sigmaScattering

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_sigmaScattering
protected
Initial value:
{
this, "sigmaScattering", 2.,
"how many sigmas of scattering angle should be considered"}

Definition at line 148 of file GridTripletSeedingTool.h.

148 {
149 this, "sigmaScattering", 2.,
150 "how many sigmas of scattering angle should be considered"};

◆ m_spacePointVarianceScale

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_spacePointVarianceScale
protected
Initial value:
{
this, "spacePointVarianceScale", 1.,
"scale factor applied to the space point varianceR and varianceZ before "
"they enter the triplet compatibility check"}

Definition at line 279 of file GridTripletSeedingTool.h.

279 {
280 this, "spacePointVarianceScale", 1.,
281 "scale factor applied to the space point varianceR and varianceZ before "
282 "they enter the triplet compatibility check"};

◆ m_sphericalGrid

Gaudi::Property<bool> ActsTrk::GridTripletSeedingTool::m_sphericalGrid
protected
Initial value:
{
this, "sphericalGrid", false,
"Use spherical grid instead of cylindrical grid for seeding"}

Definition at line 52 of file GridTripletSeedingTool.h.

52 {
53 this, "sphericalGrid", false,
54 "Use spherical grid instead of cylindrical grid for seeding"};

◆ m_stateVectorReserveSize

Gaudi::Property<int> ActsTrk::GridTripletSeedingTool::m_stateVectorReserveSize
protected
Initial value:
{
this, "stateVectorReserveSize", 500,
"Size of the initial Seeding State internal vectors"}

Definition at line 419 of file GridTripletSeedingTool.h.

419 {
420 this, "stateVectorReserveSize", 500,
421 "Size of the initial Seeding State internal vectors"};

◆ m_stripCalibrationTolerance

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_stripCalibrationTolerance
protected
Initial value:
{
this, "stripCalibrationTolerance", -1.,
"if positive, ACTS calibrates both strip SPs of a doublet against their "
"chord with this tolerance [half strip lengths] and uses the calibrated "
"positions for the doublet. Negative values disable it"}

Definition at line 413 of file GridTripletSeedingTool.h.

413 {
414 this, "stripCalibrationTolerance", -1.,
415 "if positive, ACTS calibrates both strip SPs of a doublet against their "
416 "chord with this tolerance [half strip lengths] and uses the calibrated "
417 "positions for the doublet. Negative values disable it"};

◆ m_toleranceParam

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_toleranceParam
protected
Initial value:
{
this, "toleranceParam", 1.1 * Acts::UnitConstants::mm,
"tolerance parameter used to check the compatibility of SPs coordinates "
"in xyz"}

Definition at line 260 of file GridTripletSeedingTool.h.

260 {
261 this, "toleranceParam", 1.1 * Acts::UnitConstants::mm,
262 "tolerance parameter used to check the compatibility of SPs coordinates "
263 "in xyz"};

◆ m_topDoubletFinderCfg

Acts::DoubletSeedFinder::Config ActsTrk::GridTripletSeedingTool::m_topDoubletFinderCfg
private

Definition at line 431 of file GridTripletSeedingTool.h.

◆ m_tripletFinderCfg

Acts::TripletSeedFinder::Config ActsTrk::GridTripletSeedingTool::m_tripletFinderCfg
private

Definition at line 432 of file GridTripletSeedingTool.h.

◆ m_useDeltaRorTopRadius

Gaudi::Property<bool> ActsTrk::GridTripletSeedingTool::m_useDeltaRorTopRadius
protected
Initial value:
{
this, "useDeltaRorTopRadius", true,
"use deltaR (top radius - middle radius) instead of top radius"}

Definition at line 313 of file GridTripletSeedingTool.h.

313 {
314 this, "useDeltaRorTopRadius", true,
315 "use deltaR (top radius - middle radius) instead of top radius"};

◆ m_useDetailedDoubleMeasurementInfo

Gaudi::Property<bool> ActsTrk::GridTripletSeedingTool::m_useDetailedDoubleMeasurementInfo
protected
Initial value:
{
this, "useDetailedDoubleMeasurementInfo", false,
"enable use of double measurement details"}

Definition at line 256 of file GridTripletSeedingTool.h.

256 {
257 this, "useDetailedDoubleMeasurementInfo", false,
258 "enable use of double measurement details"};

◆ m_useExperimentCuts

Gaudi::Property<bool> ActsTrk::GridTripletSeedingTool::m_useExperimentCuts
protected
Initial value:
{this, "useExperimentCuts", false,
""}

Definition at line 384 of file GridTripletSeedingTool.h.

384 {this, "useExperimentCuts", false,
385 ""};

◆ m_useHVCollisionRegion

Gaudi::Property<bool> ActsTrk::GridTripletSeedingTool::m_useHVCollisionRegion
protected
Initial value:
{
this, "useHVCollisionRegion", false,
"restrict collision region by Hough vertex position"}

Definition at line 142 of file GridTripletSeedingTool.h.

142 {
143 this, "useHVCollisionRegion", false,
144 "restrict collision region by Hough vertex position"};

◆ m_useVariableMiddleSPRange

Gaudi::Property<bool> ActsTrk::GridTripletSeedingTool::m_useVariableMiddleSPRange
protected
Initial value:
{
this, "useVariableMiddleSPRange", true,
"Enable variable range to search for middle SPs"}

Definition at line 182 of file GridTripletSeedingTool.h.

182 {
183 this, "useVariableMiddleSPRange", true,
184 "Enable variable range to search for middle SPs"};

◆ m_zAlign

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_zAlign
protected
Initial value:
{this, "zAlign", 0 * Acts::UnitConstants::mm,
""}

Definition at line 274 of file GridTripletSeedingTool.h.

274 {this, "zAlign", 0 * Acts::UnitConstants::mm,
275 ""};

◆ m_zBinEdges

Gaudi::Property<std::vector<float> > ActsTrk::GridTripletSeedingTool::m_zBinEdges
protected
Initial value:
{
this,
"zBinEdges",
{-3000., -2700., -2500., -1400., -925., -500., -250., 250., 500., 925.,
1400., 2500., 2700, 3000.},
"enable non equidistant binning in z"}

Definition at line 79 of file GridTripletSeedingTool.h.

79 {
80 this,
81 "zBinEdges",
82 {-3000., -2700., -2500., -1400., -925., -500., -250., 250., 500., 925.,
83 1400., 2500., 2700, 3000.},
84 "enable non equidistant binning in z"};

◆ m_zBinNeighborsBottom

Gaudi::Property<std::vector<std::pair<int, int> > > ActsTrk::GridTripletSeedingTool::m_zBinNeighborsBottom
protected
Initial value:
{
this,
"zBinNeighborsBottom",
{{0, 0},
{0, 1},
{0, 1},
{0, 1},
{0, 1},
{0, 1},
{0, 0},
{-1, 0},
{-1, 0},
{-1, 0},
{-1, 0},
{-1, 0},
{0, 0}},
"vector containing the map of z bins in the top layers"}

Definition at line 346 of file GridTripletSeedingTool.h.

346 {
347 this,
348 "zBinNeighborsBottom",
349 {{0, 0},
350 {0, 1},
351 {0, 1},
352 {0, 1},
353 {0, 1},
354 {0, 1},
355 {0, 0},
356 {-1, 0},
357 {-1, 0},
358 {-1, 0},
359 {-1, 0},
360 {-1, 0},
361 {0, 0}},
362 "vector containing the map of z bins in the top layers"};

◆ m_zBinNeighborsTop

Gaudi::Property<std::vector<std::pair<int, int> > > ActsTrk::GridTripletSeedingTool::m_zBinNeighborsTop
protected
Initial value:
{
this,
"zBinNeighborsTop",
{{0, 0},
{-1, 0},
{-2, 0},
{-1, 0},
{-1, 0},
{-1, 0},
{-1, 1},
{0, 1},
{0, 1},
{0, 1},
{0, 2},
{0, 1},
{0, 0}},
"vector containing the map of z bins in the top layers"}

Definition at line 329 of file GridTripletSeedingTool.h.

329 {
330 this,
331 "zBinNeighborsTop",
332 {{0, 0},
333 {-1, 0},
334 {-2, 0},
335 {-1, 0},
336 {-1, 0},
337 {-1, 0},
338 {-1, 1},
339 {0, 1},
340 {0, 1},
341 {0, 1},
342 {0, 2},
343 {0, 1},
344 {0, 0}},
345 "vector containing the map of z bins in the top layers"};

◆ m_zBinsCustomLooping

Gaudi::Property<std::vector<size_t> > ActsTrk::GridTripletSeedingTool::m_zBinsCustomLooping
protected
Initial value:
{
this,
"zBinsCustomLooping",
{2, 3, 4, 5, 12, 11, 10, 9, 7, 6, 8},
"defines order of z bins for looping; entries are 1-based local bin "
"indices, i.e. within 1..(zBinEdges.size()-1), and must not repeat. "
"Listing a subset skips the remaining bins, empty means all bins in "
"their natural order"}

Definition at line 166 of file GridTripletSeedingTool.h.

166 {
167 this,
168 "zBinsCustomLooping",
169 {2, 3, 4, 5, 12, 11, 10, 9, 7, 6, 8},
170 "defines order of z bins for looping; entries are 1-based local bin "
171 "indices, i.e. within 1..(zBinEdges.size()-1), and must not repeat. "
172 "Listing a subset skips the remaining bins, empty means all bins in "
173 "their natural order"};

◆ m_zMax

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_zMax
protected
Initial value:
{this, "zMax", 3000. * Acts::UnitConstants::mm,
"limiting location of measurements"}

Definition at line 64 of file GridTripletSeedingTool.h.

64 {this, "zMax", 3000. * Acts::UnitConstants::mm,
65 "limiting location of measurements"};

◆ m_zMin

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_zMin
protected
Initial value:
{this, "zMin", -3000. * Acts::UnitConstants::mm,
"limiting location of measurements"}

Definition at line 62 of file GridTripletSeedingTool.h.

62 {this, "zMin", -3000. * Acts::UnitConstants::mm,
63 "limiting location of measurements"};

◆ m_zOriginWeightFactor

Gaudi::Property<float> ActsTrk::GridTripletSeedingTool::m_zOriginWeightFactor {this, "zOriginWeightFactor", 1.}
protected

Definition at line 289 of file GridTripletSeedingTool.h.

289{this, "zOriginWeightFactor", 1.};

The documentation for this class was generated from the following files: