ATLAS Offline Software
Loading...
Searching...
No Matches
CoreStripSpacePointFormationTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ACTSTRK_DATAPREPARATION_CORESTRIPSPACEPOINTFORMATIONTOOL_H
6#define ACTSTRK_DATAPREPARATION_CORESTRIPSPACEPOINTFORMATIONTOOL_H
7
9
11
18#include "Acts/SpacePointFormation/SpacePointBuilder.hpp"
21
22#include <string>
23
24namespace ActsTrk {
36
37 class CoreStripSpacePointFormationTool: public extends<AthAlgTool, ActsTrk::IStripSpacePointFormationTool> {
38 public:
39 using base_class::base_class;
41
42 virtual StatusCode initialize() override;
43
44 virtual StatusCode produceSpacePoints( const EventContext& ctx,
45 const xAOD::StripClusterContainer& clusterContainer,
46 const InDet::SiElementPropertiesTable& properties,
48 const Amg::Vector3D& beamSpotVertex,
49 std::vector<StripSP>& spacePoints,
50 std::vector<StripSP>& overlapSpacePoints,
51 bool processOverlaps,
52 const std::vector<IdentifierHash>& hashesToProcess,
53 const ContainerAccessor<xAOD::StripCluster, IdentifierHash, 1>& stripAccessor ) const override;
54
55 private:
56
57 StatusCode fillSpacePoints(const EventContext& ctx,
58 std::shared_ptr<Acts::SpacePointBuilder<StripSP>> spBuilder,
59 const std::array<const InDetDD::SiDetectorElement*,nNeighbours>& neighbourElements,
60 const std::array<std::vector<std::pair<ATLASUncalibSourceLink, size_t>>,nNeighbours>& neighbourSourceLinks,
61 const std::array<double, 14>& overlapExtents,
62 const Amg::Vector3D& beamSpotVertex,
63 std::vector<StripSP>& spacePoints,
64 std::vector<StripSP>& overlapSpacePoints ) const;
65
66 StatusCode makeSpacePoint(const EventContext& ctx,
67 std::vector<StripSP>& collection,
68 std::shared_ptr<Acts::SpacePointBuilder<StripSP>> spBuilder,
69 const ATLASUncalibSourceLink& currentSlink,
70 const ATLASUncalibSourceLink& anotherSlink,
71 const InDetDD::SiDetectorElement* currentElement,
72 const InDetDD::SiDetectorElement* anotherElement,
73 const double limit,
74 const double slimit,
75 const Acts::Vector3& vertex) const;
76
77 void updateRange(const InDetDD::SiDetectorElement& element1,
78 const InDetDD::SiDetectorElement& element2,
79 double& stripLengthGapTolerance, double& min, double& max) const;
80
81 double computeOffset(const InDetDD::SiDetectorElement& element1,
82 const InDetDD::SiDetectorElement& element2,
83 double& stripLengthGapTolerance) const;
84
86 double& min, double& max,
87 size_t& minStrip, size_t& maxStrip) const;
88
89 std::pair<Amg::Vector3D, Amg::Vector3D > getStripEnds(const xAOD::StripCluster* cluster,
90 const InDetDD::SiDetectorElement* element,
91 size_t& stripIndex) const;
92 std::pair<Amg::Vector3D, Amg::Vector3D > getStripEnds(const ATLASUncalibSourceLink &sourceLink,
93 const InDetDD::SiDetectorElement* element,
94 size_t& stripIndex) const;
95 const SCT_ID* m_stripId{};
96
97 ToolHandle<ISiLorentzAngleTool> m_lorentzAngleTool{this, "LorentzAngleTool", "", "Tool to retreive Lorentz angle of SCT"};
98 PublicToolHandle<ActsTrk::ITrackingGeometryTool> m_trackingGeometryTool{this, "TrackingGeometryTool", ""};
99
100 Gaudi::Property<bool> m_allClusters{this, "AllClusters", false, "Process all clusters without limits."};
101 Gaudi::Property<float> m_overlapLimitOpposite{this, "OverlapLimitOpposite", 2.8, "Overlap limit for opposite-neighbour."};
102 Gaudi::Property<float> m_overlapLimitPhi{this, "OverlapLimitPhi", 5.64, "Overlap limit for phi-neighbours."};
103 Gaudi::Property<float> m_overlapLimitEtaMin{this, "OverlapLimitEtaMin", 1.68, "Low overlap limit for eta-neighbours."};
104 Gaudi::Property<float> m_overlapLimitEtaMax{this, "OverlapLimitEtaMax", 3.0, "High overlap limit for eta-neighbours."};
105 Gaudi::Property<float> m_stripLengthTolerance{this, "StripLengthTolerance", 0.01};
106 Gaudi::Property<float> m_stripGapParameter{this, "StripGapParameter", 0.0015, "Recommend 0.001 - 0.0015 for ITK geometry"};
107 Gaudi::Property< bool > m_useSCTLayerDep_OverlapCuts{this,"useSCTLayerDep_OverlapCuts", true};
108 };
109
110}
111
112#endif
This is an Identifier helper class for the SCT subdetector.
#define min(a, b)
Definition cfImp.cxx:40
#define max(a, b)
Definition cfImp.cxx:41
Tool to produce strip space points using ACTS SP builder.
virtual StatusCode produceSpacePoints(const EventContext &ctx, const xAOD::StripClusterContainer &clusterContainer, const InDet::SiElementPropertiesTable &properties, const InDetDD::SiDetectorElementCollection &elements, const Amg::Vector3D &beamSpotVertex, std::vector< StripSP > &spacePoints, std::vector< StripSP > &overlapSpacePoints, bool processOverlaps, const std::vector< IdentifierHash > &hashesToProcess, const ContainerAccessor< xAOD::StripCluster, IdentifierHash, 1 > &stripAccessor) const override
virtual ~CoreStripSpacePointFormationTool()=default
StatusCode fillSpacePoints(const EventContext &ctx, std::shared_ptr< Acts::SpacePointBuilder< StripSP > > spBuilder, const std::array< const InDetDD::SiDetectorElement *, nNeighbours > &neighbourElements, const std::array< std::vector< std::pair< ATLASUncalibSourceLink, size_t > >, nNeighbours > &neighbourSourceLinks, const std::array< double, 14 > &overlapExtents, const Amg::Vector3D &beamSpotVertex, std::vector< StripSP > &spacePoints, std::vector< StripSP > &overlapSpacePoints) const
void updateRange(const InDetDD::SiDetectorElement &element1, const InDetDD::SiDetectorElement &element2, double &stripLengthGapTolerance, double &min, double &max) const
std::pair< Amg::Vector3D, Amg::Vector3D > getStripEnds(const xAOD::StripCluster *cluster, const InDetDD::SiDetectorElement *element, size_t &stripIndex) const
StatusCode makeSpacePoint(const EventContext &ctx, std::vector< StripSP > &collection, std::shared_ptr< Acts::SpacePointBuilder< StripSP > > spBuilder, const ATLASUncalibSourceLink &currentSlink, const ATLASUncalibSourceLink &anotherSlink, const InDetDD::SiDetectorElement *currentElement, const InDetDD::SiDetectorElement *anotherElement, const double limit, const double slimit, const Acts::Vector3 &vertex) const
void correctPolarRange(const InDetDD::SiDetectorElement *element, double &min, double &max, size_t &minStrip, size_t &maxStrip) const
double computeOffset(const InDetDD::SiDetectorElement &element1, const InDetDD::SiDetectorElement &element2, double &stripLengthGapTolerance) const
PublicToolHandle< ActsTrk::ITrackingGeometryTool > m_trackingGeometryTool
Class implementing how to access a container.
Class to hold the SiDetectorElement objects to be put in the detector store.
Class to hold geometrical description of a silicon detector element.
This is an Identifier helper class for the SCT subdetector.
Definition SCT_ID.h:68
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
const xAOD::UncalibratedMeasurement * ATLASUncalibSourceLink
Eigen::Matrix< double, 3, 1 > Vector3D
StripCluster_v1 StripCluster
Define the version of the strip cluster class.
StripClusterContainer_v1 StripClusterContainer
Define the version of the strip cluster container.