ATLAS Offline Software
StripSpacePointFormationTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ACTSTRK_DATAPREPARATION_STRIPSPACEPOINTFORMATIONTOOL_H
6 #define ACTSTRK_DATAPREPARATION_STRIPSPACEPOINTFORMATIONTOOL_H
7 
10 #include "StripInformationHelper.h"
16 
17 #include <string>
18 
19 class SCT_ID;
20 
21 namespace ActsTrk {
22 
33 
34  class StripSpacePointFormationTool: public extends<AthAlgTool, ActsTrk::IStripSpacePointFormationTool> {
35  public:
37 
38  StripSpacePointFormationTool(const std::string& type,
39  const std::string& name,
40  const IInterface* parent);
41  virtual ~StripSpacePointFormationTool() = default;
42  virtual StatusCode initialize() override;
44 
46 
47  virtual StatusCode produceSpacePoints(const EventContext& ctx,
48  const xAOD::StripClusterContainer& clusterContainer,
51  const Amg::Vector3D& beamSpotVertex,
52  std::vector<StripSP>& spacePoints,
53  std::vector<StripSP>& overlapSpacePoints,
54  bool processOverlaps,
55  const std::vector<IdentifierHash>& hashesToProcess,
56  const ContainerAccessor<xAOD::StripCluster, IdentifierHash, 1>& stripAccessor ) const override;
58 
59  private:
60 
62 
64  fillStripSpacePoints(const std::array<const InDetDD::SiDetectorElement*,nNeighbours>& neighbourElements,
65  const std::array<std::vector<std::pair<const xAOD::StripCluster*, size_t>>,nNeighbours>& neighbourClusters,
66  const std::array<double, 14>& overlapExtents,
67  const Amg::Vector3D& beamSpotVertex,
68  std::vector<StripSP>& spacePoints,
69  std::vector<StripSP>& overlapSpacePoints ) const;
70 
71  StatusCode makeStripSpacePoint(std::vector<StripSP>&,
72  const StripInformationHelper& firstInfo,
73  const StripInformationHelper& secondInfo,
74  bool isEndcap,
75  double limit,
76  double slimit) const;
77 
78  void updateRange(const InDetDD::SiDetectorElement* element1,
79  const InDetDD::SiDetectorElement* element2,
80  double& stripLengthGapTolerance, double& min, double& max) const;
81 
82  double offset(const InDetDD::SiDetectorElement* element1,
83  const InDetDD::SiDetectorElement* element2,
84  double& stripLengthGapTolerance) const;
85 
87  double& min, double& max,
88  size_t& minStrip, size_t& maxStrip) const;
89 
90  std::pair<Amg::Vector3D, Amg::Vector3D > getStripEnds(const xAOD::StripCluster* cluster,
91  const InDetDD::SiDetectorElement* element,
92  size_t& stripIndex) const;
94 
96 
97  const SCT_ID* m_stripId{};
99 
101 
102  ToolHandle<ISiLorentzAngleTool> m_lorentzAngleTool{this, "LorentzAngleTool", "",
104  "Tool to retreive Lorentz angle of SCT"};
106 
108 
109  Gaudi::Property< bool > m_allClusters{this, "AllClusters", false, "Process all clusters without limits."};
111 
117 
118  Gaudi::Property< float > m_overlapLimitOpposite{this, "OverlapLimitOpposite", 2.8, "Overlap limit for opposite-neighbour."};
119  Gaudi::Property< float > m_overlapLimitPhi{this, "OverlapLimitPhi", 5.64, "Overlap limit for phi-neighbours."};
120  Gaudi::Property< float > m_overlapLimitEtaMin{this, "OverlapLimitEtaMin", 1.68, "Low overlap limit for eta-neighbours."};
121  Gaudi::Property< float > m_overlapLimitEtaMax{this, "OverlapLimitEtaMax", 3.0, "High overlap limit for eta-neighbours."};
123  Gaudi::Property< float > m_stripLengthTolerance{this, "StripLengthTolerance", 0.01};
124  Gaudi::Property< float > m_stripGapParameter{this, "StripGapParameter", 0.0015, "Recommend 0.001 - 0.0015 for ITK geometry"};
126 
127  };
128 
129 }
130 
131 #endif
SiElementPropertiesTable.h
max
#define max(a, b)
Definition: cfImp.cxx:41
ContainerAccessor
Definition: ContainerAccessor.h:25
InDetDD::SiDetectorElementCollection
Definition: SiDetectorElementCollection.h:30
ActsTrk::StripSpacePointFormationTool::correctPolarRange
void correctPolarRange(const InDetDD::SiDetectorElement *element, double &min, double &max, size_t &minStrip, size_t &maxStrip) const
Definition: StripSpacePointFormationTool.cxx:550
ActsTrk::StripSpacePointFormationTool::m_lorentzAngleTool
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
Using Lorentz angle tool.
Definition: StripSpacePointFormationTool.h:103
ActsTrk::StripSpacePointFormationTool
Definition: StripSpacePointFormationTool.h:34
ActsTrk::StripSpacePointFormationTool::updateRange
void updateRange(const InDetDD::SiDetectorElement *element1, const InDetDD::SiDetectorElement *element2, double &stripLengthGapTolerance, double &min, double &max) const
Definition: StripSpacePointFormationTool.cxx:540
ActsTrk::StripSpacePointFormationTool::StripSpacePointFormationTool
StripSpacePointFormationTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: StripSpacePointFormationTool.cxx:16
ActsTrk::StripSpacePointFormationTool::m_overlapLimitEtaMin
Gaudi::Property< float > m_overlapLimitEtaMin
Definition: StripSpacePointFormationTool.h:120
ActsTrk::StripInformationHelper
Definition: StripInformationHelper.h:15
ActsTrk::StripSpacePointFormationTool::produceSpacePoints
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
Definition: StripSpacePointFormationTool.cxx:31
StripInformationHelper.h
ActsTrk::StripSpacePointFormationTool::m_stripGapParameter
Gaudi::Property< float > m_stripGapParameter
Definition: StripSpacePointFormationTool.h:124
ActsTrk::StripSpacePointFormationTool::m_overlapLimitPhi
Gaudi::Property< float > m_overlapLimitPhi
Definition: StripSpacePointFormationTool.h:119
ActsTrk::StripSpacePointFormationTool::~StripSpacePointFormationTool
virtual ~StripSpacePointFormationTool()=default
ActsTrk::StripSpacePointFormationTool::m_overlapLimitOpposite
Gaudi::Property< float > m_overlapLimitOpposite
Definition: StripSpacePointFormationTool.h:118
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
xAOD::StripCluster_v1
Definition: StripCluster_v1.h:17
ActsTrk::StripSpacePointFormationTool::m_stripLengthTolerance
Gaudi::Property< float > m_stripLengthTolerance
The following are parameters to build the space points.
Definition: StripSpacePointFormationTool.h:123
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
python.JsonUtils.properties
properties
Definition: JsonUtils.py:96
min
#define min(a, b)
Definition: cfImp.cxx:40
lumiFormat.array
array
Definition: lumiFormat.py:98
ActsTrk::StripSpacePointFormationTool::fillStripSpacePoints
StatusCode fillStripSpacePoints(const std::array< const InDetDD::SiDetectorElement *, nNeighbours > &neighbourElements, const std::array< std::vector< std::pair< const xAOD::StripCluster *, size_t >>, nNeighbours > &neighbourClusters, const std::array< double, 14 > &overlapExtents, const Amg::Vector3D &beamSpotVertex, std::vector< StripSP > &spacePoints, std::vector< StripSP > &overlapSpacePoints) const
Definition: StripSpacePointFormationTool.cxx:213
SpacePointAuxContainer.h
ActsTrk::StripSpacePointFormationTool::makeStripSpacePoint
StatusCode makeStripSpacePoint(std::vector< StripSP > &, const StripInformationHelper &firstInfo, const StripInformationHelper &secondInfo, bool isEndcap, double limit, double slimit) const
Definition: StripSpacePointFormationTool.cxx:425
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
dumpNswErrorDb.maxStrip
tuple maxStrip
Definition: dumpNswErrorDb.py:27
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
InDet::SiElementPropertiesTable
Definition: SiElementPropertiesTable.h:30
ActsTrk::StripSpacePointFormationTool::offset
double offset(const InDetDD::SiDetectorElement *element1, const InDetDD::SiDetectorElement *element2, double &stripLengthGapTolerance) const
Definition: StripSpacePointFormationTool.cxx:517
SiDetectorElementCollection.h
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
ActsTrk::StripSpacePointFormationTool::initialize
virtual StatusCode initialize() override
Definition: StripSpacePointFormationTool.cxx:22
SpacePointContainer.h
SCT_ID
Definition: SCT_ID.h:68
StripClusterContainer.h
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
dumpNswErrorDb.minStrip
int minStrip
Definition: dumpNswErrorDb.py:26
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MuonDetectorBuilderTool.cxx:34
ActsTrk::StripSpacePointFormationTool::m_allClusters
Gaudi::Property< bool > m_allClusters
Definition: StripSpacePointFormationTool.h:109
ActsTrk::StripSpacePointFormationTool::m_overlapLimitEtaMax
Gaudi::Property< float > m_overlapLimitEtaMax
Definition: StripSpacePointFormationTool.h:121
updateCoolNtuple.limit
int limit
Definition: updateCoolNtuple.py:45
ActsTrk::nNeighbours
@ nNeighbours
Definition: StripInformationHelper.h:13
ActsTrk::StripSpacePointFormationTool::getStripEnds
std::pair< Amg::Vector3D, Amg::Vector3D > getStripEnds(const xAOD::StripCluster *cluster, const InDetDD::SiDetectorElement *element, size_t &stripIndex) const
Definition: StripSpacePointFormationTool.cxx:593
ActsTrk::StripSpacePointFormationTool::m_stripId
const SCT_ID * m_stripId
Definition: StripSpacePointFormationTool.h:97
IStripSpacePointFormationTool.h