Belle II Software development
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 {
34
35 public:
36
38 struct BFieldPoint {
40 double r;
42 double z;
43 };
44
47
49 virtual ~BFieldComponentKlm1() = default;
50
55 virtual void initialize() override;
56
63 virtual ROOT::Math::XYZVector calculate(const ROOT::Math::XYZVector& point) const override;
64
68 virtual void terminate() override;
69
74 void setMapFilename(const std::string& filename) { m_mapFilename = filename; };
75
80 void setNLayers(int b, int e) {m_nBarrelLayers = b; m_nEndcapLayers = e;}
81
87 void setBarrelRegion(double minR, double maxZ, double offset) { m_barrelRMin = minR; m_barrelZMax = maxZ; m_mapOffset = offset; }
88
93 void setEndcapRegion(double minR, double minZ) { m_endcapRMin = minR; m_endcapZMin = minZ;}
94
102 void setLayerParam(double bgapl0, double bironth, double egap, double dl)
103 {
105 m_endcapGapHeight = egap; m_dLayer = dl;
106 }
107
108 private:
110 double m_cospi8{cos(M_PI / 8)};
112 double m_cos3pi8{cos(3 * M_PI / 8)};
114 double m_cospi4{cos(M_PI / 4)};
115
117 std::string m_mapFilename{""};
119 double m_mapOffset{0};
120
122 double m_barrelRMin{0};
124 double m_barrelZMax{0};
126 double m_endcapRMin{0};
128 double m_endcapZMin{0};
129
134
140 double m_dLayer{0};
143
146 double m_barrelZBreakpoint[15] {0};
149 double m_barrelRBreakpoint[15] {0};
152 double m_barrelFieldZSlope1[15] {0};
158 double m_barrelFieldZSlope2[15] {0};
164 double m_barrelFieldRSlope1[15] {0};
170 double m_barrelFieldRSlope2[15] {0};
174
179 double m_endcapZBreakpoint[2][15][5] {{{0}}};
184 double m_endcapRBreakpoint[2][15][5] {{{0}}};
185
190 double m_endcapFieldZSlope[2][15][5] {{{0}}};
195 double m_endcapFieldZIntercept[2][15][5] {{{0}}};
200 double m_endcapFieldRSlope[2][15][5] {{{0}}};
205 double m_endcapFieldRIntercept[2][15][5] {{{0}}};
206 };
207
209} //end of namespace Belle2
The BFieldComponentAbs class.
The Bfieldcomponentklm1 class.
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.
virtual void terminate() override
Terminates the magnetic field Component.
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.
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.
virtual ~BFieldComponentKlm1()=default
The BFieldComponentklm1 destructor.
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.
double r
r coordinate of the point
double z
z coordinate of the point