ATLAS Offline Software
Loading...
Searching...
No Matches
ForwardDetectors
ForwardTracker
src
MagnetFactory.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
ForwardTracker/MagnetFactory.h
"
6
#include "
ForwardTracker/IBender.h
"
7
#include "
ForwardTracker/BenderDipole.h
"
8
#include "
ForwardTracker/BenderQuadrupole.h
"
9
10
#include <string>
11
#include <stdexcept>
12
13
namespace
ForwardTracker
{
14
15
std::string
label
(
Magnet::Type
type
) {
16
17
if
(
type
==
Magnet::hbDipole
)
return
"hbDipole"
;
18
if
(
type
==
Magnet::vbDipole
)
return
"vbDipole"
;
19
if
(
type
==
Magnet::hfQuadrupole
)
return
"hfQuadrupole"
;
20
if
(
type
==
Magnet::vfQuadrupole
)
return
"vfQuadrupole"
;
21
22
return
"NONE"
;
23
}
24
25
IBender::ConstPtr_t
benderFactory
(
Magnet::Type
type
,
26
Side
side,
27
double
length
,
28
double
strength,
29
double
beamEnergy) {
30
31
if
(
type
==
Magnet::hbDipole
)
return
IBender::ConstPtr_t
(
new
BenderDipole
(side,
length
, strength, beamEnergy,
hBendplane
));
32
if
(
type
==
Magnet::vbDipole
)
return
IBender::ConstPtr_t
(
new
BenderDipole
(side,
length
, strength, beamEnergy,
vBendplane
));
33
if
(
type
==
Magnet::hfQuadrupole
)
return
IBender::ConstPtr_t
(
new
BenderQuadrupole
(side,
length
, strength, beamEnergy,
hBendplane
));
34
if
(
type
==
Magnet::vfQuadrupole
)
return
IBender::ConstPtr_t
(
new
BenderQuadrupole
(side,
length
, strength, beamEnergy,
vBendplane
));
35
36
throw
std::logic_error(
"unknown magnet type"
);
37
}
38
39
Magnet::ConstPtr_t
MagnetFactory
(
double
x
,
40
double
y
,
41
double
z
,
42
double
strength,
43
double
length
,
44
const
std::string& aperType,
45
double
aper1,
46
double
aper2,
47
double
aper3,
48
double
aper4,
49
double
beamEnergy,
50
Side
side,
51
Magnet::Type
type
) {
52
53
IBender::ConstPtr_t
bender(
benderFactory
(
type
, side,
length
, strength, beamEnergy));
54
55
return
Magnet::ConstPtr_t
(
new
Magnet
(
x
,
y
,
z
,
length
, aperType, aper1, aper2, aper3, aper4, side, bender.get(),
label
(
type
)));
56
}
57
}
BenderDipole.h
BenderQuadrupole.h
length
double length(const pvec &v)
Definition
FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
IBender.h
MagnetFactory.h
y
#define y
x
#define x
z
#define z
ForwardTracker::BenderDipole
Definition
BenderDipole.h:15
ForwardTracker::BenderQuadrupole
Definition
BenderQuadrupole.h:15
ForwardTracker::IBender::ConstPtr_t
std::shared_ptr< IBender > ConstPtr_t
Definition
ForwardTracker/ForwardTracker/IBender.h:21
ForwardTracker::Magnet
Definition
ForwardTracker/ForwardTracker/Magnet.h:19
ForwardTracker::Magnet::ConstPtr_t
std::shared_ptr< const Magnet > ConstPtr_t
Definition
ForwardTracker/ForwardTracker/Magnet.h:38
ForwardTracker::Magnet::Type
Type
Definition
ForwardTracker/ForwardTracker/Magnet.h:36
ForwardTracker::Magnet::hfQuadrupole
@ hfQuadrupole
Definition
ForwardTracker/ForwardTracker/Magnet.h:36
ForwardTracker::Magnet::vbDipole
@ vbDipole
Definition
ForwardTracker/ForwardTracker/Magnet.h:36
ForwardTracker::Magnet::vfQuadrupole
@ vfQuadrupole
Definition
ForwardTracker/ForwardTracker/Magnet.h:36
ForwardTracker::Magnet::hbDipole
@ hbDipole
Definition
ForwardTracker/ForwardTracker/Magnet.h:36
ForwardTracker
Definition
ForwardTracker/ForwardTracker/Beamline.h:12
ForwardTracker::MagnetFactory
Magnet::ConstPtr_t MagnetFactory(double x, double y, double z, double strength, double length, const std::string &aperType, double A1, double A2, double A3, double A4, double beamEnergy, Side side, Magnet::Type type)
Definition
MagnetFactory.cxx:39
ForwardTracker::benderFactory
IBender::ConstPtr_t benderFactory(Magnet::Type type, Side side, double length, double strength, double beamEnergy)
Definition
MagnetFactory.cxx:25
ForwardTracker::vBendplane
@ vBendplane
Definition
ForwardTrackerConstants.h:12
ForwardTracker::hBendplane
@ hBendplane
Definition
ForwardTrackerConstants.h:12
ForwardTracker::Side
Side
Definition
ForwardTrackerConstants.h:13
ForwardTracker::label
std::string label(Magnet::Type type)
Definition
MagnetFactory.cxx:15
type
Generated on
for ATLAS Offline Software by
1.14.0