Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-14 08:12:15

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/Geometry/GeometryContext.hpp"
0012 #include "Acts/MagneticField/MagneticFieldContext.hpp"
0013 #include "Acts/Vertexing/Vertex.hpp"
0014 
0015 namespace Acts {
0016 
0017 /// @brief Vertex Finder Options
0018 ///
0019 struct VertexingOptions {
0020   /// Default constructor is deleted
0021   VertexingOptions() = delete;
0022 
0023   /// VertexingOptions with context and vertex constraint
0024   ///
0025   /// @param gctx Geometry context
0026   /// @param mctx Magnetic field context
0027   /// @param constr Vertex constraint
0028   /// @param useConstr Boolean indicating whether vertex constraint should be used during the vertex fit
0029   VertexingOptions(const GeometryContext& gctx,
0030                    const MagneticFieldContext& mctx, const Vertex& constr,
0031                    const bool useConstr = true)
0032       : geoContext(gctx),
0033         magFieldContext(mctx),
0034         constraint(constr),
0035         useConstraintInFit(useConstr) {
0036     if (useConstraintInFit && constraint.covariance().determinant() == 0.) {
0037       throw std::invalid_argument(
0038           "Vertex constraint covariance matrix must be invertible.");
0039     }
0040   }
0041 
0042   /// VertexingOptions with context and without vertex constraint
0043   ///
0044   /// @param gctx Geometry context
0045   /// @param mctx Magnetic field context
0046   VertexingOptions(const GeometryContext& gctx,
0047                    const MagneticFieldContext& mctx)
0048       : geoContext(gctx), magFieldContext(mctx) {
0049     constraint = Vertex();
0050     useConstraintInFit = false;
0051   }
0052 
0053   /// Context object for the geometry
0054   std::reference_wrapper<const GeometryContext> geoContext;
0055   /// Context object for the magnetic field
0056   std::reference_wrapper<const MagneticFieldContext> magFieldContext;
0057   /// Vertex constraint. Important note: While this variable is not used during
0058   /// the vertex fit if useConstraintInFit is set to false, it is always used
0059   /// during vertex finding.
0060   Vertex constraint;
0061   /// Boolean indicating whether we use the constraint information during
0062   /// the vertex fit. If set to true, the covariance matrix of constraint must
0063   /// be invertible.
0064   bool useConstraintInFit;
0065 };
0066 
0067 }  // namespace Acts