Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-17 07:46:28

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 
0009 #pragma once
0010 
0011 namespace Acts::Experimental {
0012 
0013 /// GBTS region-of-interest descriptor with eta/phi/zed bounds.
0014 class GbtsRoiDescriptor {
0015  public:
0016   /// @param eta eta of RoI
0017   /// @param etaMin eta at rear  of RoI
0018   /// @param etaMax eta at front of RoI
0019   /// @param phi phi of RoI
0020   /// @param phiMin minimum phi of RoI
0021   /// @param phiMax maximum phi of RoI
0022   /// @param z z of RoI
0023   /// @param zMin z at rear  of RoI
0024   /// @param zMax z at front of RoI
0025   GbtsRoiDescriptor(double eta, double etaMin, double etaMax, double phi,
0026                     double phiMin, double phiMax, double z = 0, double zMin = 0,
0027                     double zMax = 0);
0028 
0029   // Methods to retrieve data members
0030 
0031   /// Get phi coordinate of RoI center
0032   /// @return Phi coordinate
0033   double phi() const { return m_phi; }
0034   /// Get eta coordinate of RoI center
0035   /// @return Eta coordinate
0036   double eta() const { return m_eta; }
0037   /// Get z coordinate of RoI center
0038   /// @return Z coordinate
0039   double z() const { return m_z; }
0040 
0041   /// these quantities probably don't need to be used any more
0042   /// - they are implemented here only because we had them in
0043   ///   the original legacy interface
0044 
0045   /// Get z at the most backward end of the RoI
0046   /// @return Z at rear
0047   double zMin() const { return m_zMin; }
0048   /// Get z at the most forward end of the RoI
0049   /// @return Z at front
0050   double zMax() const { return m_zMax; }
0051 
0052   /// Gets eta at zMin
0053   /// @return Eta at rear
0054   double etaMin() const { return m_etaMin; }
0055   /// Gets eta at zMax
0056   /// @return Eta at front
0057   double etaMax() const { return m_etaMax; }
0058 
0059   /// Gets phiMinus
0060   /// @return Minimum phi
0061   double phiMin() const { return m_phiMin; }
0062   /// Gets phiPlus
0063   /// @return Maximum phi
0064   double phiMax() const { return m_phiMax; }
0065 
0066   // return the gradients
0067   /// Get dz/dr at the rear of the RoI
0068   /// @return Gradient dzdr at rear
0069   double dzdrMin() const { return m_dzdrMin; }
0070   /// Get dz/dr at the front of the RoI
0071   /// @return Gradient dzdr at front
0072   double dzdrMax() const { return m_dzdrMax; }
0073 
0074   /// Get dr/dz at the rear of the RoI
0075   /// @return Gradient drdz at rear
0076   double drdzMin() const { return m_drdzMin; }
0077   /// Get dr/dz at the front of the RoI
0078   /// @return Gradient drdz at front
0079   double drdzMax() const { return m_drdzMax; }
0080 
0081   /// Get z at the most backward end of the RoI at outer radius
0082   /// @return Z at rear outer radius
0083   double zOuterMin() const { return m_zOuterMin; }
0084   /// Get z at the most forward end of the RoI at outer radius
0085   /// @return Z at front outer radius
0086   double zOuterMax() const { return m_zOuterMax; }
0087 
0088  private:
0089   float m_phi{};  //!< phi of RoI center
0090   float m_eta{};  //!< eta of RoI center
0091   float m_z{};    //!< z of RoI center
0092 
0093   float m_phiMin{};  //!< most negative RoI in azimuthal
0094   float m_phiMax{};  //!< most positive RoI in azimuthal
0095 
0096   float m_etaMin{};  //!< eta of RoI at zMax
0097   float m_etaMax{};  //!< eta of RoI at zMin
0098 
0099   float m_zMin{};  //!< z position at most negative position along the beamline
0100   float m_zMax{};  //!< z position at most positive position along the beamline
0101 
0102   float m_dzdrMin{};  //!<  dz/dr at the rear of the RoI
0103   float m_dzdrMax{};  //!<  dz/dr at the front of the RoI
0104 
0105   float m_drdzMin{};  //!<  dr/dz at the rear of the RoI
0106   float m_drdzMax{};  //!<  dr/dz at the front of the RoI
0107 
0108   float m_zOuterMin{};  //!< z at rear of RoI at the outer radius ( = 1100 mm)
0109   float m_zOuterMax{};  //!< z at front of RoI at the outer radius ( = 1100 mm)
0110 };
0111 
0112 }  // namespace Acts::Experimental