Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-05-14 07:56:51

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 #pragma once
0009 
0010 #include "ActsExamples/EventData/MuonSpacePoint.hpp"
0011 
0012 namespace ActsExamples {
0013 /** @brief EDM class to store the result from the HoughTransform pattern finding step. The class takes the
0014  *         local line parameters of the transform in the precision direction
0015  * (tanAlpha, interceptY) if the transform, is performed to find an parameter
0016  * estimate in the bending direction or (tanAlpha, interceptY, tanBeta,
0017  * interceptX) if a second hough transform is performed on top of the first
0018  * transform to find the parameters in the complementary direction. Further, the
0019  * MuonHoughMaximum stores the list of all hits associated with the maximum. */
0020 class MuonHoughMaximum {
0021  public:
0022   using HitVec = std::vector<const MuonSpacePoint*>;
0023   /** @brief Constructor taking the estimated hough parameters and the associated hits
0024    *  @param tanBeta: Slope of the estimated line in precision direction
0025    *  @param interceptY: Intercept of the line along the precision direction
0026    *  @param assocHits: List of hits associated with these parameters */
0027   MuonHoughMaximum(const double tanBeta, const double interceptY,
0028                    const HitVec& assocHits)
0029       : m_tanBeta{tanBeta}, m_interceptY{interceptY}, m_hits{assocHits} {}
0030   /** @brief Constructor taking the estimated hough parameters from a complementary hough transform
0031    *        & the associated hits.
0032    *  @param tanAlpha: Slope of the estimate line in the non-bending direction
0033    *  @param interceptX: Intercept of the line along the non-bending direction
0034    *  @param tanBeta: Slope of the estimated line in precision direction
0035    *  @param interceptY: Intercept of the line along the precision direction
0036    *  @param assocHits: List of hits associated with these parameters */
0037   MuonHoughMaximum(const double tanAlpha, const double interceptX,
0038                    const double tanBeta, const double interceptY,
0039                    const HitVec& assocHits)
0040       : m_tanAlpha{tanAlpha},
0041         m_interceptX{interceptX},
0042         m_tanBeta{tanBeta},
0043         m_interceptY{interceptY},
0044         m_hits{assocHits} {}
0045   /** @brief Return the slope along the non-bending direction */
0046   double tanAlpha() const { return m_tanAlpha; }
0047   /** @brief Return slope along the bending direction */
0048   double tanBeta() const { return m_tanBeta; }
0049   /** @brief Return the intercept in the non-precision plane */
0050   double interceptX() const { return m_interceptX; }
0051   /** @brief Return the intercept in the precision plane */
0052   double interceptY() const { return m_interceptY; }
0053   /** @brief Return the associated hits */
0054   const HitVec& hits() const { return m_hits; }
0055 
0056  private:
0057   double m_tanAlpha{0.};
0058   double m_interceptX{0.};
0059   double m_tanBeta{0.};
0060   double m_interceptY{0.};
0061   HitVec m_hits{};
0062 };
0063 
0064 using MuonHoughMaxContainer = std::vector<MuonHoughMaximum>;
0065 }  // namespace ActsExamples