5#ifndef G4ATLASSERVICES_StandardFieldSvc_H
6#define G4ATLASSERVICES_StandardFieldSvc_H
12#include "G4MagneticField.hh"
15#include "GaudiKernel/ServiceHandle.h"
36 : m_fieldCache (
MagField::AtlasFieldCache( scaleSolenoid, scaleToroid, fieldMap))
51 else m_fieldCache.getField(point, field);
81 G4MagneticField*
makeField() override final;
96 "UseMagFieldSvc",
false,
"Use magnetic field service - Should ONLY be used for ForwardRegionFieldSvc"};
109 "FullMapFile",
"MagneticFieldMaps/bfieldmap_7730_20400_14m.root",
110 "File storing the full magnetic field map"};
112 "SoleMapFile",
"MagneticFieldMaps/bfieldmap_7730_0_14m.root",
113 "File storing the solenoid-only magnetic field map"};
115 "ToroMapFile",
"MagneticFieldMaps/bfieldmap_0_20400_14m.root",
116 "File storing the toroid-only magnetic field map"};
119 "MapSoleCurrent", 7730.,
"Nominal solenoid current (A)"};
121 "MapToroCurrent", 20400.,
"Nominal toroid current (A)"};
124 "UseSoleCurrent", 7730.,
"Configured solenoid current (A)"};
126 "UseToroCurrent", 20400.,
"Configured toroid current (A)"};
AtlasField(MagField::IMagFieldSvc *m)
Construct the field object from the IMagFieldSvc.
AtlasField(double scaleSolenoid, double scaleToroid, const MagField::AtlasFieldMap *fieldMap)
Construct the field object from conditions object.
MagField::AtlasFieldCache & fieldCache()
MagField::IMagFieldSvc * m_magFieldSvc
Pointer to the magnetic field service.
MagField::AtlasFieldCache m_fieldCache ATLAS_THREAD_SAFE
Field cache - mutable because getField modifies the cache.
void GetFieldValue(const double *point, double *field) const
Implementation of G4 method to retrieve field value.
G4MagFieldSvcBase(const std::string &name, ISvcLocator *pSvcLocator)
Standard constructor.
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Support class for PropertyMgr.
StandardFieldSvc(const std::string &name, ISvcLocator *pSvcLocator)
Standard constructor.
Gaudi::Property< double > m_useSoleCurrent
configurable current for map scaling
~StandardFieldSvc()=default
Empty destructor.
Gaudi::Property< double > m_mapSoleCurrent
nominal current for the maps
Gaudi::Property< std::string > m_fullMapFilename
map file names
std::unique_ptr< MagField::AtlasFieldMap > m_fieldMap
Gaudi::Property< double > m_useToroCurrent
StatusCode initialize() override final
Athena method. called at initialization time, being customized here.
ServiceHandle< MagField::IMagFieldSvc > m_magFieldSvc
Handle to the the Forward ATLAS magnetic field service.
Gaudi::Property< std::string > m_toroMapFilename
Gaudi::Property< std::string > m_soleMapFilename
StatusCode createFieldMap()
Gaudi::Property< double > m_mapToroCurrent
G4MagneticField * makeField() override final
Create/retrieve the AtlasField object.
Gaudi::Property< bool > m_useMagFieldSvc
=============================================================================
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)