#include <Magnet.h>
|
| | Magnet (double x, double y, double z, double length, const std::string &aperType, double A1, double A2, double A3, double A4, Side side, IBender *bender, const std::string &label) |
| std::string | label () const |
| Side | side () const |
| double | frontFace () const |
| double | rearFace () const |
| Point | position () const |
| bool | isEndElement () const |
| IBeamElement::ConstPtr_t | clone () const |
| void | track (IParticle &) const |
| std::string | str () const |
◆ ConstIter_t
◆ ConstListIter_t
◆ ConstPtr_t
◆ Container_t
◆ Iter_t
◆ List_t
◆ ListIter_t
◆ Type
◆ Magnet()
| ForwardTracker::Magnet::Magnet |
( |
double | x, |
|
|
double | y, |
|
|
double | z, |
|
|
double | length, |
|
|
const std::string & | aperType, |
|
|
double | A1, |
|
|
double | A2, |
|
|
double | A3, |
|
|
double | A4, |
|
|
Side | side, |
|
|
IBender * | bender, |
|
|
const std::string & | label ) |
◆ clone()
Implements ForwardTracker::IBeamElement.
Definition at line 48 of file ForwardTracker/ForwardTracker/Magnet.h.
std::shared_ptr< const IBeamElement > ConstPtr_t
Magnet(double x, double y, double z, double length, const std::string &aperType, double A1, double A2, double A3, double A4, Side side, IBender *bender, const std::string &label)
◆ frontFace()
| double ForwardTracker::Magnet::frontFace |
( |
| ) |
const |
|
inlinevirtual |
◆ isEndElement()
| bool ForwardTracker::Magnet::isEndElement |
( |
| ) |
const |
|
inlinevirtual |
◆ isOutOfAperture()
| bool ForwardTracker::Magnet::isOutOfAperture |
( |
IParticle & | particle | ) |
const |
|
private |
Definition at line 50 of file ForwardTracker/src/Magnet.cxx.
50 {
51
52 TransversePoint offCenter =
particle.displacement();
53
56
57 if (
m_A1 == 0)
return false;
58
60
61 std::ostringstream
ost;
ost <<
m_label <<
" isOutOfAperture ";
62
63 ost <<
"radius: " << offCenter.mag2() <<
" > A1*A1: " <<
m_A1*
m_A1;
65
66 return true;
67 }
68
69 return false;
70 }
72
73 double xx = (
m_A3) ? offCenter.x()/
m_A3 :
throw std::runtime_error(
"ERROR: m_A3 == 0");
74 double yy = (
m_A4) ? offCenter.y()/
m_A4 :
throw std::runtime_error(
"ERROR: m_A4 == 0");
76
78
79 std::ostringstream
ost;
ost <<
m_label <<
" isOutOfAperture ";
80
81 ost <<
" x/A3: " <<
xx <<
" y/A4: " <<
yy <<
" (Squared sum: " <<
rr <<
" > 1)";
83
84 return true;
85 }
86
88
89 if (std::fabs(offCenter.x()) >
m_A1) {
90
91 std::ostringstream
ost;
ost <<
m_label <<
" isOutOfAperture ";
92
93 ost <<
" |x|: " << std::fabs(offCenter.x()) <<
" > A1: " <<
m_A1;
95
96 return true;
97 }
98 }
99
101
102 if (std::fabs(offCenter.y()) >
m_A2) {
103
104 std::ostringstream
ost;
ost <<
m_label <<
" isOutOfAperture ";
105
106 ost <<
" |y|: " << std::fabs(offCenter.y()) <<
" > A2: " <<
m_A2;
108
109 return true;
110 }
111 }
112
113 return false;
114 }
116
118 if( std::fabs(offCenter.x())>
m_A1 ) {
119
120 std::ostringstream
ost;
ost <<
m_label <<
" isOutOfAperture ";
121
122 ost <<
" |x|: " << std::fabs(offCenter.x()) <<
" > A1: " <<
m_A1;
124 return true;
125 }
126 }
128 if( std::fabs(offCenter.y())>
m_A2) {
129
130 std::ostringstream
ost;
ost <<
m_label <<
" isOutOfAperture ";
131
132 ost <<
" |y|: " << std::fabs(offCenter.y()) <<
" > A2: " <<
m_A2;
134 return true;
135 }
136 }
138
141 float d=(
m_A1-std::fabs(offCenter.x()))/(
m_A1-B4)+(
m_A2-std::fabs(offCenter.y()))/(
m_A2-B3);
142
143 if(d<1.) {
144 std::ostringstream
ost;
ost <<
m_label <<
" isOutOfAperture ";
145
146 ost<<
" x: "<<offCenter.x()<<
" y: "<<offCenter.y()<<
" m_A1 "<<
m_A1<<
" m_A2 "<<
m_A2<<
" m_A3 "<<
m_A3<<
" m_A4 "<<
m_A4<<
" d: "<<
d;
148 return true;
149 }
150 }
151
152 return false;
153 }
154 else {
155
156 std::stringstream sstr; sstr <<
" Unknown magnet aperture type " <<
m_aperType <<
"\n";
157 throw std::runtime_error(sstr.str().c_str());
158 }
159
160 return false;
161 }
const boost::regex rr(r_r)
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
◆ label()
| std::string ForwardTracker::Magnet::label |
( |
| ) |
const |
|
inlinevirtual |
◆ position()
| Point ForwardTracker::Magnet::position |
( |
| ) |
const |
|
inlinevirtual |
◆ rearFace()
| double ForwardTracker::Magnet::rearFace |
( |
| ) |
const |
|
inlinevirtual |
◆ side()
| Side ForwardTracker::Magnet::side |
( |
| ) |
const |
|
inlinevirtual |
◆ str()
| std::string ForwardTracker::Magnet::str |
( |
| ) |
const |
|
virtual |
◆ track()
| void ForwardTracker::Magnet::track |
( |
IParticle & | particle | ) |
const |
|
virtual |
◆ m_A1
| double ForwardTracker::Magnet::m_A1 |
|
private |
◆ m_A2
| double ForwardTracker::Magnet::m_A2 |
|
private |
◆ m_A3
| double ForwardTracker::Magnet::m_A3 |
|
private |
◆ m_A4
| double ForwardTracker::Magnet::m_A4 |
|
private |
◆ m_aperType
| std::string ForwardTracker::Magnet::m_aperType |
|
private |
◆ m_bender
| IBender* ForwardTracker::Magnet::m_bender |
|
private |
◆ m_frontFace
| double ForwardTracker::Magnet::m_frontFace |
|
private |
◆ m_label
| std::string ForwardTracker::Magnet::m_label |
|
private |
◆ m_position
| Point ForwardTracker::Magnet::m_position |
|
private |
◆ m_rearFace
| double ForwardTracker::Magnet::m_rearFace |
|
private |
◆ m_side
| Side ForwardTracker::Magnet::m_side |
|
private |
The documentation for this class was generated from the following files: