ATLAS Offline Software
IMagFieldSvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // IMagFieldSvc.h, (c) ATLAS Detector software
8 #ifndef MAGFIELDINTERFACES_IMAGFIELDSVC_H
9 #define MAGFIELDINTERFACES_IMAGFIELDSVC_H
10 
11 #include <cmath>
12 #include <iostream>
13 
14 // Framework includes
15 #include "GaudiKernel/IInterface.h"
16 
17 // Amg classes
19 
20 namespace MagField {
21 
26  class IMagFieldSvc: virtual public IInterface {
27 
29  // Public methods:
31  public:
32 
35 
38 
42  virtual void getField(const double *xyz, double *bxyz, double *deriv = nullptr) const = 0;
43 
45  void getField(const Amg::Vector3D *xyz, Amg::Vector3D *bxyz) const {
46  getField( xyz->data(), bxyz->data(), nullptr );
47  }
48  void getField(const Amg::Vector3D *xyz, Amg::Vector3D *bxyz, Amg::RotationMatrix3D *deriv) const {
49  // cppcheck-suppress nullPointer; false positive
50  getField( xyz->data(), bxyz->data(), deriv->data() );
51  }
52 
57  virtual void getFieldZR(const double *xyz, double *bxyz, double *deriv = nullptr) const = 0;
58 
60  bool solenoidOn() const { return solenoidCurrent() > 0.0; }
61  bool toroidOn() const { return toroidCurrent() > 0.0; }
62  float solenoidCurrent() const { return m_solenoidCurrent; }
63  float toroidCurrent() const { return m_toroidCurrent; }
64 
65  protected:
68 
69  private:
70  float m_solenoidCurrent; // solenoid current in ampere
71  float m_toroidCurrent; // toroid current in ampere
72  };
73 }
74 
75 #endif //> !MAGFIELDINTERFACES_IMAGFIELDSVC_H
MagField::IMagFieldSvc::getField
void getField(const Amg::Vector3D *xyz, Amg::Vector3D *bxyz, Amg::RotationMatrix3D *deriv) const
Definition: IMagFieldSvc.h:48
fillPileUpNoiseLumi.current
current
Definition: fillPileUpNoiseLumi.py:52
MagField::IMagFieldSvc::getField
void getField(const Amg::Vector3D *xyz, Amg::Vector3D *bxyz) const
a getField() wrapper for Amg classes
Definition: IMagFieldSvc.h:45
xyz
#define xyz
MagField::IMagFieldSvc::solenoidOn
bool solenoidOn() const
status of the magnets
Definition: IMagFieldSvc.h:60
MagField::IMagFieldSvc::setToroidCurrent
void setToroidCurrent(float current)
Definition: IMagFieldSvc.h:67
MagField::IMagFieldSvc::m_solenoidCurrent
float m_solenoidCurrent
Definition: IMagFieldSvc.h:70
MagField::IMagFieldSvc::m_toroidCurrent
float m_toroidCurrent
Definition: IMagFieldSvc.h:71
GeoPrimitives.h
MagField::IMagFieldSvc::toroidCurrent
float toroidCurrent() const
Definition: IMagFieldSvc.h:63
MagField::IMagFieldSvc::toroidOn
bool toroidOn() const
Definition: IMagFieldSvc.h:61
MagField
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Definition: ForwardRegionFieldSvc.h:27
MagField::IMagFieldSvc::IMagFieldSvc
IMagFieldSvc()
constructor
Definition: IMagFieldSvc.h:37
MagField::IMagFieldSvc::getFieldZR
virtual void getFieldZR(const double *xyz, double *bxyz, double *deriv=nullptr) const =0
get B field value on the z-r plane at given position
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MagField::IMagFieldSvc::DeclareInterfaceID
DeclareInterfaceID(IMagFieldSvc, 1, 0)
Creates the InterfaceID and interfaceID() method.
MagField::IMagFieldSvc::setSolenoidCurrent
void setSolenoidCurrent(float current)
Definition: IMagFieldSvc.h:66
MagField::IMagFieldSvc::getField
virtual void getField(const double *xyz, double *bxyz, double *deriv=nullptr) const =0
get B field value at given position
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
MagField::IMagFieldSvc::solenoidCurrent
float solenoidCurrent() const
Definition: IMagFieldSvc.h:62
MagField::IMagFieldSvc
@ class IMagFieldSvc
Definition: IMagFieldSvc.h:26