|
ATLAS Offline Software
|
Go to the documentation of this file.
16 ISvcLocator* pSvcLocator)
24 return StatusCode::SUCCESS;
27 template <
class ContainerType>
30 const ContainerType*& contToPush)
const {
34 <<
typeid(ContainerType).
name());
35 return StatusCode::SUCCESS;
39 contToPush = readHandle.cptr();
40 return StatusCode::SUCCESS;
51 ATH_CHECK(writeMaxima.
record(std::make_unique<EtaHoughMaxContainer>()));
64 for (
auto& [station, stationHoughBuckets] :
data.houghSetups) {
66 for (
auto& bucket : stationHoughBuckets) {
70 writeMaxima->push_back(std::make_unique<HoughMaximum>(std::move(
max)));
74 std::stable_sort(writeMaxima->begin(), writeMaxima->end(),
76 return (*a->parentBucket()) < (*b->parentBucket());
78 return StatusCode::SUCCESS;
90 std::vector<HoughSetupForBucket>& buckets =
data.houghSetups[bucket->front()->msSector()];
93 Amg::Vector3D leftSide = globToLoc.translation() - (
hs.bucket->coveredMin() * Amg::Vector3D::UnitY());
94 Amg::Vector3D rightSide = globToLoc.translation() - (
hs.bucket->coveredMax() * Amg::Vector3D::UnitY());
98 for (
const std::shared_ptr<MuonR4::SpacePoint> & sp : *bucket) {
107 hs.searchWindowTanAngle = {tanThetaLeft, tanThetaRight};
112 for (
const std::shared_ptr<MuonR4::SpacePoint> & hit : *bucket){
114 double y0l = hit->positionInChamber().y() - hit->positionInChamber().z() * tanThetaLeft;
115 double y0r = hit->positionInChamber().y() - hit->positionInChamber().z() * tanThetaRight;
124 switch (hit->
type()){
141 HoughPlaneConfig
cfg;
148 data.houghPlane = std::make_unique<HoughPlane>(
cfg);
149 data.peakFinder = std::make_unique<ActsPeakFinderForMuon>(peakFinderCfg);
179 data.currAxisRanges = Acts::HoughTransformUtils::HoughAxisRanges{
180 searchStartTanTheta, searchEndTanTheta, searchStart, searchEnd};
182 data.houghPlane->reset();
183 for (
const SpacePointBucket::value_type& hit : *(bucket.
bucket)) {
186 auto maxima =
data.peakFinder->findPeaks(*(
data.houghPlane),
data.currAxisRanges);
189 "#eta Hough accumulator");
191 if (maxima.empty()) {
193 <<
":\n Mean tanTheta was "<<tanThetaMean
194 <<
" and my intercept "<<chamberCenter
197 <<
". The bucket found a search range of ("
202 <<
") , and my final search range is ["
203 <<searchStartTanTheta<<
" - "<<searchEndTanTheta
204 <<
"] and ["<<searchStart<<
" - "<<searchEnd
209 for (
const auto&
max : maxima) {
211 std::vector<HoughHitType> hitList;
212 hitList.reserve(
max.hitIdentifiers.size());
213 unsigned int nPrec{0};
216 hitList.push_back(hit);
222 size_t nHits = hitList.size();
228 m_visionTool->visualizeSeed(ctx, seed,
"#eta-HoughSeed");
234 using namespace std::placeholders;
255 for (
const SpacePointBucket::value_type& hit : *bucket.
bucket) {
256 if (!hit->measuresEta()) {
257 hitList.push_back(hit.get());
char data[hepevt_bytes_allocation_ATLAS]
xAOD::UncalibMeasType type() const
: The muon space point bucket represents a collection of points that will bre processed together in t...
const MuonGMR4::SpectrometerSector * msSector() const
returns th associated muonChamber
double coveredMin() const
lower interval value covered by the bucket
std::pair< double, double > searchWindowIntercept
Acts::HoughTransformUtils::PeakFinders::IslandsAroundMaxConfig ActsPeakFinderForMuonCfg
#define ATH_MSG_VERBOSE(x)
std::string identString() const
Returns a string encoding the chamber index & the sector of the MS sector.
@ MdtStatusDriftTime
The tube produced a vaild measurement.
void sortByLayer(std::vector< const SpacePoint * > &spacePoints)
Sorts the space points in a vector by z.
An algorithm that can be simultaneously executed in multiple threads.
double houghWidthStrip(double tanTheta, const MuonR4::HoughHitType &strip, double targetReso)
Uncertainty parametrisation for strip measurements.
const xAOD::UncalibratedMeasurement * primaryMeasurement() const
double coveredMax() const
upper interval value covered by the bucket
double houghWidthMdt(double tanTheta, const MuonR4::HoughHitType &dc, double targetReso)
uncertainty parametrisation for drift circles
virtual xAOD::UncalibMeasType type() const =0
Returns the type of the measurement type as a simple enumeration.
const SpacePointBucket * bucket
::StatusCode StatusCode
StatusCode definition for legacy code.
Eigen::Affine3d Transform3D
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
double houghParamMdtLeft(double tanTheta, const MuonR4::HoughHitType &dc)
left-side straight line parametrisation for drift circles
Include the GeoPrimitives which need to be put first.
The muon space point is the combination of two uncalibrated measurements one of them measures the eta...
Hough transform configuration for one bucket of the search space.
Eigen::Matrix< double, 3, 1 > Vector3D
This header ties the generic definitions in this package.
Data class to represent an eta maximum in hough space.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
bool measuresEta() const
: Does the space point contain an eta measurement
std::pair< double, double > searchWindowTanAngle
Representation of a segment seed (a fully processed hough maximum) produced by the hough transform.
MdtDriftCircleStatus status() const
Returns the status of the measurement.
double houghParamMdtRight(double tanTheta, const MuonR4::HoughHitType &dc)
right-side straight line parametrisation for drift circles
double houghParamStrip(double tanTheta, const MuonR4::HoughHitType &strip)
straight line parametrisation for strip detector measurements
https://gitlab.cern.ch/atlas/athena/-/blob/master/MuonSpectrometer/MuonReconstruction/MuonRecEvent/Mu...
size_type size() const noexcept
Returns the number of elements in the collection.
Templated event data class for the phase-2 muon hough transform.