SHiP Field Service
Framework-agnostic C++20 library exposing SHiP magnetic field maps.
Loading...
Searching...
No Matches
CovfieFieldSource.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 CERN for the benefit of the SHiP Collaboration
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4#pragma once
5
7
8#include <memory>
9#include <string>
10#include <vector>
11
12namespace ship {
13
17[[nodiscard]] std::shared_ptr<IFieldEvaluator> loadCovfieField(std::string const& cvf_path);
18
20class CovfieFieldSource final : public IFieldSource {
21 public:
22 struct MagnetConfig {
23 std::string name;
24 std::string volume_pattern;
25 std::string cvf_file;
26 };
27
28 explicit CovfieFieldSource(std::vector<MagnetConfig> magnets);
29 ~CovfieFieldSource() override = default;
30
35
36 [[nodiscard]] std::vector<FieldRegion> const& regions() const override { return regions_; }
37
38 private:
39 std::vector<FieldRegion> regions_;
40};
41
42} // namespace ship
Concrete IFieldSource aggregating one covfie-backed evaluator per magnet.
Definition CovfieFieldSource.h:20
~CovfieFieldSource() override=default
CovfieFieldSource & operator=(CovfieFieldSource &&)=default
CovfieFieldSource(CovfieFieldSource &&)=default
CovfieFieldSource & operator=(CovfieFieldSource const &)=delete
CovfieFieldSource(CovfieFieldSource const &)=delete
std::vector< FieldRegion > const & regions() const override
Idempotent. Ownership of the evaluators stays with the source.
Definition CovfieFieldSource.h:36
Source of one or more named field regions.
Definition IFieldSource.h:45
Definition CovfieFieldSource.h:12
std::shared_ptr< IFieldEvaluator > loadCovfieField(std::string const &cvf_path)
Build an IFieldEvaluator backed by a covfie .cvf file (CPU backend, trilinear interpolation,...
Definition CovfieFieldSource.cpp:66
Definition CovfieFieldSource.h:22
std::string volume_pattern
Definition CovfieFieldSource.h:24
std::string cvf_file
Definition CovfieFieldSource.h:25
std::string name
Definition CovfieFieldSource.h:23