Belle II Software light-2607-kasei
BFieldComponentKlm1.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#pragma once
10
11#include <geometry/bfieldmap/BFieldComponentAbs.h>
12
13#include <string>
14
15namespace Belle2 {
20
34
35 public:
36
38 struct BFieldPoint {
40 double r;
42 double z;
43 };
44
47
49 virtual ~BFieldComponentKlm1() override = default;
50
55 virtual void initialize() override;
56
63 virtual ROOT::Math::XYZVector calculate(const ROOT::Math::XYZVector& point) const override;
68 void setMapFilename(const std::string& filename) { m_mapFilename = filename; };
69
74 void setNLayers(int b, int e) {m_nBarrelLayers = b; m_nEndcapLayers = e;}
75
81 void setBarrelRegion(double minR, double maxZ, double offset) { m_barrelRMin = minR; m_barrelZMax = maxZ; m_mapOffset = offset; }
82
87 void setEndcapRegion(double minR, double minZ) { m_endcapRMin = minR; m_endcapZMin = minZ;}
88
96 void setLayerParam(double bgapl0, double bironth, double egap, double dl)
97 {
99 m_endcapGapHeight = egap; m_dLayer = dl;
100 }
101
102 private:
104 double m_cospi8{cos(M_PI / 8)};
106 double m_cos3pi8{cos(3 * M_PI / 8)};
108 double m_cospi4{cos(M_PI / 4)};
109
111 std::string m_mapFilename{""};
113 double m_mapOffset{0};
114
116 double m_barrelRMin{0};
118 double m_barrelZMax{0};
120 double m_endcapRMin{0};
122 double m_endcapZMin{0};
123
128
134 double m_dLayer{0};
137
140 double m_barrelZBreakpoint[15] {0};
143 double m_barrelRBreakpoint[15] {0};
146 double m_barrelFieldZSlope1[15] {0};
152 double m_barrelFieldZSlope2[15] {0};
158 double m_barrelFieldRSlope1[15] {0};
164 double m_barrelFieldRSlope2[15] {0};
168
173 double m_endcapZBreakpoint[2][15][5] {{{0}}};
178 double m_endcapRBreakpoint[2][15][5] {{{0}}};
179
184 double m_endcapFieldZSlope[2][15][5] {{{0}}};
189 double m_endcapFieldZIntercept[2][15][5] {{{0}}};
194 double m_endcapFieldRSlope[2][15][5] {{{0}}};
199 double m_endcapFieldRIntercept[2][15][5] {{{0}}};
200 };
201
203} //end of namespace Belle2
BFieldComponentAbs()=default
The BFieldComponentAbs constructor.
double m_endcapFieldZSlope[2][15][5]
Slopes of the linear approximation of Bz in the endcap.
double m_endcapGapHeight
Gap height of BKLM layer1-14.
double m_barrelFieldRIntercept1[15]
Intercept of Br before the beackpoint in the barrel.
int m_nBarrelLayers
The number of layers per 1 sector for BKLM.
virtual void initialize() override
Initializes the magnetic field Component.
double m_barrelFieldZSlope1[15]
Slope of Bz before the breakpoint in the barrel.
double m_endcapFieldRIntercept[2][15][5]
Intercepts of the linear approximation of Br in the endcap.
double m_barrelZMax
The maximum boundaries of BKLM region in r.
double m_barrelIronThickness
Thickness of Barrel iron plate.
double m_barrelFieldZIntercept1[15]
Intercept of Bz before the beackpoint in the barrel.
std::string m_mapFilename
The filename of the magnetic field map.
void setNLayers(int b, int e)
Sets the number of barrel and endcap layers.
double m_mapOffset
Offset required because the accelerator group defines the Belle center as zero.
double m_endcapRMin
The minimum boundaries of EKLM region in r.
virtual ROOT::Math::XYZVector calculate(const ROOT::Math::XYZVector &point) const override
Calculates the magnetic field vector at the specified space point.
void setLayerParam(double bgapl0, double bironth, double egap, double dl)
Set the layer parameters.
void setMapFilename(const std::string &filename)
Sets the filename of the magnetic field map.
double m_barrelFieldRSlope2[15]
Slope of Br after the breakpoint in the barrel.
double m_endcapRBreakpoint[2][15][5]
r position of breakpoints between linear functions in the endcap First index indicates whether or not...
double m_barrelRBreakpoint[15]
z position of breakpoints between the two linear approximations of Br in the barrel.
BFieldComponentKlm1()=default
The BFieldComponentklm1 constructor.
double m_barrelGapHeightLayer0
Gap height of BKLM layer0.
void setBarrelRegion(double minR, double maxZ, double offset)
Sets the dimensions of the barrel region.
double m_barrelRMin
The minimum boundaries of BKLM region in r.
virtual ~BFieldComponentKlm1() override=default
The BFieldComponentklm1 destructor.
double m_endcapFieldRSlope[2][15][5]
Slopes of the linear approximation of Br in the endcap.
int m_nEndcapLayers
The number of layers per 1 sector for EKLM.
void setEndcapRegion(double minR, double minZ)
Set the dimensions of the endcap region.
double m_barrelFieldZIntercept2[15]
Intercept of Bz after the breakpoint in the barrel.
double m_barrelZBreakpoint[15]
z position of breakpoints between the two linear approximations of Bz in the barrel.
double m_barrelFieldZSlope2[15]
Slope of Bz after the breakpoint in the barrel.
double m_barrelFieldRSlope1[15]
Slope of Br before the breakpoint in the barrel.
double m_endcapZBreakpoint[2][15][5]
z position of breakpoints between linear functions in the endcap.
double m_endcapFieldZIntercept[2][15][5]
Intercepts of the linear approximation of Bz in the endcap.
double m_endcapZMin
The minimum boundaries of EKLM region in z.
double m_barrelFieldRIntercept2[15]
Intercept of Br after the beackpoint in the barrel.
double m_dLayer
depth of BKLM module?
Abstract base class for different kinds of events.
Trivial struct representing rz coordinate.