ATLAS Offline Software
Loading...
Searching...
No Matches
IMuonPatternCalibration.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 MUONSEGMENTMAKETOOLINTERFACES_MUON_IMUONPATTERNCALIBRATION_H
6#define MUONSEGMENTMAKETOOLINTERFACES_MUON_IMUONPATTERNCALIBRATION_H
7
8#include <vector>
9
10#include "GaudiKernel/IAlgTool.h"
11#include "Identifier/Identifier.h"
17//
18
19namespace Muon {
22
24 class IMuonPatternCalibration : virtual public IAlgTool {
25 public:
26 using ClusterVec = std::vector<const MuonClusterOnTrack*>;
27 using MdtVec = std::vector<const MdtDriftCircleOnTrack*>;
28 using MdtVecVec = std::vector<MdtVec>;
29
30 struct ROTRegion {
31 int regionId{0};
32 Amg::Vector3D regionPos{Amg::Vector3D::Zero()};
33 Amg::Vector3D regionDir{Amg::Vector3D::Zero()};
34
35 const ClusterVec& clusters() const {return m_clusters;}
36 const MdtVecVec& mdts() const {return m_mdts;}
37
38 void push_back(std::unique_ptr<const MuonClusterOnTrack> cl){
39 // cppcheck-suppress danglingLifetime
40 m_clusters.push_back(cl.get());
41 m_garbage.push_back(std::move(cl));
42 }
44 std::transform(vec.begin(), vec.end(),std::back_inserter(m_garbage),
45 [](const MdtDriftCircleOnTrack* mdt) {return std::unique_ptr<const Trk::MeasurementBase>{mdt};
46 });
47 m_mdts.push_back(std::move(vec));
48 }
49 private:
52 std::vector<std::unique_ptr<const Trk::MeasurementBase>> m_garbage{};
53 };
54
55 using ROTsPerRegion = std::vector<ROTRegion>;
56
58 static const InterfaceID& interfaceID() {
59 static const InterfaceID IID_IMuonPatternCalibration("Muon::IMuonPatternCalibration", 1, 0);
60 return IID_IMuonPatternCalibration;
61 }
62
63 virtual StatusCode calibrate(const EventContext& ctx, const MuonPatternCombination& pat, ROTsPerRegion& hitsPerRegion) const = 0;
64 virtual int getRegionId(const Identifier& id) const = 0;
65 virtual bool checkForPhiMeasurements(const MuonPatternCombination& pat) const = 0;
66
67 virtual ~IMuonPatternCalibration() = default;
68 };
69
70} // namespace Muon
71
72#endif
std::vector< size_t > vec
The IMuonCalibration is a pure virtual interface for tools to calibrate PRD hits.
std::vector< const MdtDriftCircleOnTrack * > MdtVec
static const InterfaceID & interfaceID()
access to tool interface
virtual ~IMuonPatternCalibration()=default
std::vector< const MuonClusterOnTrack * > ClusterVec
std::vector< ROTRegion > ROTsPerRegion
virtual StatusCode calibrate(const EventContext &ctx, const MuonPatternCombination &pat, ROTsPerRegion &hitsPerRegion) const =0
virtual int getRegionId(const Identifier &id) const =0
virtual bool checkForPhiMeasurements(const MuonPatternCombination &pat) const =0
This class represents the corrected MDT measurements, where the corrections include the effects of wi...
Base class for Muon cluster RIO_OnTracks.
The MuonPatternCombination class provides the means to store the output of the initial global pattern...
Eigen::Matrix< double, 3, 1 > Vector3D
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
void push_back(std::unique_ptr< const MuonClusterOnTrack > cl)
std::vector< std::unique_ptr< const Trk::MeasurementBase > > m_garbage