ATLAS Offline Software
Loading...
Searching...
No Matches
ClusterTimeProjectionMMClusterBuilderTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef ClusterTimeProjectionMMClusterBuilderTool_h
5#define ClusterTimeProjectionMMClusterBuilderTool_h
6
7
14#include <array>
15
16namespace Muon {
18 public:
19 ClusterTimeProjectionMMClusterBuilderTool(const std::string&, const std::string&, const IInterface*);
20
22 StatusCode initialize() override;
23
24 StatusCode getClusters(const EventContext& ctx,
25 std::vector<Muon::MMPrepData>&& stripsVect,
26 std::vector<std::unique_ptr<Muon::MMPrepData>>& clustersVect) const override;
27
28 virtual RIO_Author getCalibratedClusterPosition(const EventContext& ctx,
29 const std::vector<NSWCalib::CalibratedStrip>& calibratedStrips,
30 const Amg::Vector3D& directionEstimate,
31 Amg::Vector2D& clusterLocalPosition,
32 Amg::MatrixX& covMatrix) const override;
33
34 private:
35 using LaySortedPrds = std::array<std::vector<Muon::MMPrepData>, 8>;
37 ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
38
39
40 SG::ReadCondHandleKey<NswErrorCalibData> m_uncertCalibKey{this, "ErrorCalibKey", "NswUncertData",
41 "Key of the parametrized NSW uncertainties"};
42
43 Gaudi::Property<bool> m_writeStripProperties{this, "writeStripProperties" , true};
44 Gaudi::Property<uint> m_maxHoleSize{this, "maxHoleSize", 1};
45
46 LaySortedPrds sortHitsToLayer(std::vector<Muon::MMPrepData>&& MMprds) const;
47
48 std::vector<std::vector<uint>> clusterLayer(const std::vector<Muon::MMPrepData>& MMPrdsPerLayer) const;
49
50 std::pair<double, double> getClusterPositionPRD(const NswErrorCalibData& errorCalibDB,
51 uint8_t author,
52 const std::vector<NSWCalib::CalibratedStrip>& features,
53 const Amg::Vector3D& thetaEstimate) const;
54
55 StatusCode writeClusterPrd(const EventContext& ctx,
56 const std::vector<Muon::MMPrepData>& constituents,
57 const double clustersPosition,
58 const double clustersPositionErrorSq,
59 std::vector<std::unique_ptr<Muon::MMPrepData>>& mergedClust) const;
60
61 uint channel(const Identifier& id) const { return m_idHelperSvc->mmIdHelper().channel(id); }
62 uint channel(const MMPrepData& strip) const { return channel(strip.identify()); }
63 }; // class ClusterTimeProjectionMMClusterBuilderTool
64
65} // namespace Muon
66#endif // ClusterTimeProjectionMMClusterBuilderTool_h
unsigned int uint
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
std::array< std::vector< Muon::MMPrepData >, 8 > LaySortedPrds
StatusCode writeClusterPrd(const EventContext &ctx, const std::vector< Muon::MMPrepData > &constituents, const double clustersPosition, const double clustersPositionErrorSq, std::vector< std::unique_ptr< Muon::MMPrepData > > &mergedClust) const
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Muon Detector Descriptor.
ClusterTimeProjectionMMClusterBuilderTool(const std::string &, const std::string &, const IInterface *)
std::vector< std::vector< uint > > clusterLayer(const std::vector< Muon::MMPrepData > &MMPrdsPerLayer) const
LaySortedPrds sortHitsToLayer(std::vector< Muon::MMPrepData > &&MMprds) const
StatusCode getClusters(const EventContext &ctx, std::vector< Muon::MMPrepData > &&stripsVect, std::vector< std::unique_ptr< Muon::MMPrepData > > &clustersVect) const override
Standard Interface to produce Micromega clusters from raw Input hits without external contstaint.
virtual RIO_Author getCalibratedClusterPosition(const EventContext &ctx, const std::vector< NSWCalib::CalibratedStrip > &calibratedStrips, const Amg::Vector3D &directionEstimate, Amg::Vector2D &clusterLocalPosition, Amg::MatrixX &covMatrix) const override
std::pair< double, double > getClusterPositionPRD(const NswErrorCalibData &errorCalibDB, uint8_t author, const std::vector< NSWCalib::CalibratedStrip > &features, const Amg::Vector3D &thetaEstimate) const
MMClusterOnTrack::Author RIO_Author
Refinement of the cluster position after the cluster calibration loop is ran with a complete external...
Class to represent MM measurements.
Definition MMPrepData.h:22
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.