ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
Acts
ActsGeometry
ActsGeometry
ATLASMagneticFieldWrapper.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef ACTSGEOMETRY_ATLASMAGNETICFIELDWRAPPER_H
6
#define ACTSGEOMETRY_ATLASMAGNETICFIELDWRAPPER_H
7
8
#include "
StoreGate/ReadCondHandleKey.h
"
9
#include "
MagFieldConditions/AtlasFieldCacheCondObj.h
"
10
#include "Acts/Definitions/Algebra.hpp"
11
#include "Acts/Definitions/Units.hpp"
12
#include "Acts/MagneticField/MagneticFieldContext.hpp"
13
#include "Acts/MagneticField/MagneticFieldProvider.hpp"
14
15
class
ATLASMagneticFieldWrapper
final :
public
Acts::MagneticFieldProvider {
16
17
public
:
18
19
struct
Cache
{
20
21
Cache
(
const
Acts::MagneticFieldContext mctx) {
22
const
auto
* atlasField = mctx.get<
const
AtlasFieldCacheCondObj
*>();
23
atlasField->
getInitializedCache
(
fieldCache
);
24
25
}
26
27
MagField::AtlasFieldCache
fieldCache
;
28
};
29
30
ATLASMagneticFieldWrapper
() =
default
;
31
32
33
MagneticFieldProvider::Cache
34
makeCache
(
const
Acts::MagneticFieldContext& mctx)
const override
{
35
return
Acts::MagneticFieldProvider::Cache(std::in_place_type<Cache>, mctx);
36
}
37
38
Acts::Result<Acts::Vector3>
39
getField
(
const
Acts::Vector3& position, Acts::MagneticFieldProvider::Cache& gcache)
const override
{
40
Cache
& cache = gcache.as<
Cache
>();
41
double
posXYZ[3];
42
posXYZ[0] = position.x();
43
posXYZ[1] = position.y();
44
posXYZ[2] = position.z();
45
double
BField[3];
46
47
cache.fieldCache.getField(posXYZ, BField);
48
49
// Magnetic field
50
Acts::Vector3 bfield{BField[0],BField[1],BField[2]};
51
52
bfield *=
m_bFieldUnit
;
// kT -> T;
53
54
return
Acts::Result<Acts::Vector3>::success(bfield);
55
}
56
57
private
:
58
const
double
m_bFieldUnit
= 1000.*Acts::UnitConstants::T;
59
};
60
61
62
#endif
AtlasFieldCacheCondObj.h
ReadCondHandleKey.h
ATLASMagneticFieldWrapper::getField
Acts::Result< Acts::Vector3 > getField(const Acts::Vector3 &position, Acts::MagneticFieldProvider::Cache &gcache) const override
Definition
ATLASMagneticFieldWrapper.h:39
ATLASMagneticFieldWrapper::m_bFieldUnit
const double m_bFieldUnit
Definition
ATLASMagneticFieldWrapper.h:58
ATLASMagneticFieldWrapper::ATLASMagneticFieldWrapper
ATLASMagneticFieldWrapper()=default
ATLASMagneticFieldWrapper::makeCache
MagneticFieldProvider::Cache makeCache(const Acts::MagneticFieldContext &mctx) const override
Definition
ATLASMagneticFieldWrapper.h:34
AtlasFieldCacheCondObj
Definition
AtlasFieldCacheCondObj.h:19
AtlasFieldCacheCondObj::getInitializedCache
void getInitializedCache(MagField::AtlasFieldCache &cache) const
get B field cache for evaluation as a function of 2-d or 3-d position.
Definition
AtlasFieldCacheCondObj.h:32
MagField::AtlasFieldCache
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h).
Definition
AtlasFieldCache.h:43
ATLASMagneticFieldWrapper::Cache
Definition
ATLASMagneticFieldWrapper.h:19
ATLASMagneticFieldWrapper::Cache::fieldCache
MagField::AtlasFieldCache fieldCache
Definition
ATLASMagneticFieldWrapper.h:27
ATLASMagneticFieldWrapper::Cache::Cache
Cache(const Acts::MagneticFieldContext mctx)
Definition
ATLASMagneticFieldWrapper.h:21
Generated on
for ATLAS Offline Software by
1.17.0