FairShip
Loading...
Searching...
No Matches
ShipCompField.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2// SPDX-FileCopyrightText: Copyright CERN for the benefit of the SHiP
3// Collaboration
4
10#ifndef FIELD_SHIPCOMPFIELD_H_
11#define FIELD_SHIPCOMPFIELD_H_
12
13#include <span>
14#include <string>
15#include <vector>
16
17#include "TVirtualMagField.h"
18
19class ShipCompField : public TVirtualMagField {
20 public:
22
26 ShipCompField(const std::string& label, TVirtualMagField* firstField);
27
29
34 ShipCompField(const std::string& label, TVirtualMagField* firstField,
35 TVirtualMagField* secondField);
36
38
42 ShipCompField(const std::string& label,
43 const std::vector<TVirtualMagField*>& theFields);
44
46 virtual ~ShipCompField();
47
50
54 virtual void Field(const Double_t* position, Double_t* B);
55
57
60 size_t nComposite() const { return theFields_.size(); }
61
63
66 std::span<TVirtualMagField* const> getCompFields() const {
67 return theFields_;
68 }
69
72
73 protected:
74 private:
76 ShipCompField(const ShipCompField&) = delete;
78
80 std::vector<TVirtualMagField*> theFields_;
81};
82
83#endif // FIELD_SHIPCOMPFIELD_H_
Definition: diagrams_b.h:4
Class that defines a magnetic field composed from many fields.
Definition: ShipCompField.h:19
size_t nComposite() const
Get the number of fields in the composite.
Definition: ShipCompField.h:60
std::vector< TVirtualMagField * > theFields_
The vector of the various magnetic field pointers comprising the composite.
Definition: ShipCompField.h:80
ShipCompField(const ShipCompField &)=delete
Deleted copy and assignment operators.
ClassDef(ShipCompField, 1)
ClassDef for ROOT.
ShipCompField & operator=(const ShipCompField &)=delete
std::span< TVirtualMagField *const > getCompFields() const
Get the vector of fields.
Definition: ShipCompField.h:66
virtual void Field(const Double_t *position, Double_t *B)
virtual ~ShipCompField()
Destructor.