Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:11:02

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 #include "Acts/EventData/SpacePointMutableData.hpp"
0012 #include "Acts/Seeding/SeedFinderConfig.hpp"
0013 
0014 namespace Acts {
0015 /// @brief A partial description of a circle in u-v space.
0016 struct LinCircle {
0017   LinCircle() = default;
0018   LinCircle(float ct, float idr, float er, float u, float v, float X, float Y)
0019       : cotTheta(ct), iDeltaR(idr), Er(er), U(u), V(v), x(X), y(Y) {}
0020 
0021   float cotTheta{0.};
0022   float iDeltaR{0.};
0023   float Er{0.};
0024   float U{0.};
0025   float V{0.};
0026   float x{0.};
0027   float y{0.};
0028 };
0029 
0030 template <typename external_spacepoint_t, typename callable_t>
0031 LinCircle transformCoordinates(Acts::SpacePointMutableData& mutableData,
0032                                const external_spacepoint_t& sp,
0033                                const external_spacepoint_t& spM, bool bottom,
0034                                callable_t&& extractFunction);
0035 
0036 /// @brief Transform a vector of spacepoints to u-v space circles with respect
0037 /// to a given middle spacepoint.
0038 ///
0039 /// @tparam external_spacepoint_t The external spacepoint type.
0040 ///
0041 /// @param mutableData Container for mutable variables used in the seeding
0042 /// @param[in] vec The list of bottom or top spacepoints
0043 /// @param[in] spM The middle spacepoint.
0044 /// @param[in] bottom Should be true if vec are bottom spacepoints.
0045 /// @param[out] linCircleVec The output vector to write to.
0046 template <typename external_spacepoint_t>
0047 void transformCoordinates(Acts::SpacePointMutableData& mutableData,
0048                           const std::vector<const external_spacepoint_t*>& vec,
0049                           const external_spacepoint_t& spM, bool bottom,
0050                           std::vector<LinCircle>& linCircleVec);
0051 
0052 /// @brief Check the compatibility of spacepoint coordinates in xyz assuming the Bottom-Middle direction with the strip meassument details
0053 ///
0054 /// @tparam external_spacepoint_t The external spacepoint type.
0055 ///
0056 /// @param[in] config SeedFinder config containing the delegates to the strip measurement details.
0057 /// @param[in] sp Input space point used in the check.
0058 /// @param[in] spacepointPosition Spacepoint coordinates in xyz plane.
0059 /// @param[out] outputCoordinates The output vector to write to.
0060 /// @returns Boolean that says if spacepoint is compatible with being inside the detector element.
0061 template <typename external_spacepoint_t>
0062 bool xyzCoordinateCheck(
0063     const Acts::SeedFinderConfig<external_spacepoint_t>& config,
0064     const external_spacepoint_t& sp, const double* spacepointPosition,
0065     double* outputCoordinates);
0066 
0067 }  // namespace Acts
0068 
0069 #include "Acts/Seeding/SeedFinderUtils.ipp"