Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:00:32

0001 /***********************************************************************************\
0002 * (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
0003 *                                                                                   *
0004 * This software is distributed under the terms of the Apache version 2 licence,     *
0005 * copied verbatim in the file "LICENSE".                                            *
0006 *                                                                                   *
0007 * In applying this licence, CERN does not waive the privileges and immunities       *
0008 * granted to it by virtue of its status as an Intergovernmental Organization        *
0009 * or submit itself to any jurisdiction.                                             *
0010 \***********************************************************************************/
0011 #ifndef GAUDIKERNEL_IMAGNETICFIELDSVC_H
0012 #define GAUDIKERNEL_IMAGNETICFIELDSVC_H
0013 
0014 // Include files
0015 #include "GaudiKernel/IService.h"
0016 #include "GaudiKernel/StatusCode.h"
0017 
0018 // Forward declarations
0019 namespace ROOT {
0020   namespace Math {
0021     class DefaultCoordinateSystemTag;
0022 
0023     // from Math/Point3Dfwd.h
0024     template <class CoordSystem, class Tag>
0025     class PositionVector3D;
0026     // from Math/Vector3Dfwd.h
0027     template <class CoordSystem, class Tag>
0028     class DisplacementVector3D;
0029     // from Math/Point3Dfwd.h
0030     template <typename T>
0031     class Cartesian3D;
0032     // from Math/Point3Dfwd.h
0033     typedef PositionVector3D<Cartesian3D<double>, DefaultCoordinateSystemTag> XYZPoint;
0034     // from Math/Vector3Dfwd.h
0035     typedef DisplacementVector3D<Cartesian3D<double>, DefaultCoordinateSystemTag> XYZVector;
0036   } // namespace Math
0037 } // namespace ROOT
0038 
0039 /** @class IMagneticFieldSvc IMagneticFieldSvc.h GaudiKernel/IMagneticFieldSvc.h
0040 
0041     The interface to the MagneticFieldSvc
0042 
0043     @author Iain Last
0044 */
0045 class GAUDI_API IMagneticFieldSvc : virtual public IService {
0046 
0047 public:
0048   /// InterfaceID
0049   DeclareInterfaceID( IMagneticFieldSvc, 2, 0 );
0050 
0051   // Get the magnetic field vector at a given point in space.
0052   // Input: XYZPoint - Point at which magnetic field vector is to be given.
0053   // Output: XYZVector - Magnetic field vector.
0054   // Return: StatusCode SUCCESS if calculation was performed.
0055   virtual StatusCode fieldVector( const ROOT::Math::XYZPoint& xyz, ROOT::Math::XYZVector& fvec ) const = 0;
0056 };
0057 
0058 #endif // GAUDIKERNEL_IMAGNETICFIELDSVC_H