ATLAS Offline Software
ForwardTracker/ForwardTracker/Magnet.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef FORWARDTRACKER_MAGNET_H
6 #define FORWARDTRACKER_MAGNET_H
7 
9 #include "IBeamElement.h"
10 #include "IBender.h"
11 #include "Particle.h"
12 #include "Point.h"
13 
14 namespace ForwardTracker {
15 
16  class IParticle;
17  class TransversePoint;
18 
19  class Magnet: public IBeamElement {
20 
21  public:
22 
23  Magnet(double x,
24  double y,
25  double z,
26  double length,
27  const std::string& aperType,
28  double A1,
29  double A2,
30  double A3,
31  double A4,
32  Side side,
33  IBender::ConstPtr_t bender,
34  const std::string& label);
35 
37 
38  typedef std::shared_ptr<const Magnet> ConstPtr_t;
39  typedef std::vector<ConstPtr_t> Container_t;
40 
41  std::string label() const { return m_label; }
42  Side side() const { return m_side; }
43  double frontFace() const { return m_frontFace; }
44  double rearFace() const { return m_rearFace; }
45  Point position() const { return m_position; }
46  bool isEndElement() const { return false; }
47 
48  IBeamElement::ConstPtr_t clone() const { IBeamElement::ConstPtr_t pm(new Magnet(*this)); return pm; }
49 
50  void track(IParticle&) const;
51 
52  std::string str() const;
53 
54  private:
55 
56  std::string m_label;
58  double m_frontFace;
59  double m_rearFace;
61  std::string m_aperType;
62  double m_A1;
63  double m_A2;
64  double m_A3;
65  double m_A4;
67 
68  bool isOutOfAperture(IParticle&) const;
69  };
70 
71  std::ostream& operator<<(std::ostream&, const Magnet&);
72 
73 }
74 #endif
ForwardTracker::Magnet::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::ConstPtr_t bender, const std::string &label)
Definition: ForwardTracker/src/Magnet.cxx:12
ForwardTracker::Magnet::m_frontFace
double m_frontFace
Definition: ForwardTracker/ForwardTracker/Magnet.h:58
ForwardTracker::Magnet::m_A2
double m_A2
Definition: ForwardTracker/ForwardTracker/Magnet.h:63
ForwardTracker::Magnet::vfQuadrupole
@ vfQuadrupole
Definition: ForwardTracker/ForwardTracker/Magnet.h:36
ForwardTracker::IBeamElement::ConstPtr_t
std::shared_ptr< const IBeamElement > ConstPtr_t
Definition: ForwardTracker/ForwardTracker/IBeamElement.h:39
ForwardTracker::Magnet::position
Point position() const
Definition: ForwardTracker/ForwardTracker/Magnet.h:45
Point.h
ForwardTracker::Magnet::m_rearFace
double m_rearFace
Definition: ForwardTracker/ForwardTracker/Magnet.h:59
ForwardTracker::Magnet::clone
IBeamElement::ConstPtr_t clone() const
Definition: ForwardTracker/ForwardTracker/Magnet.h:48
x
#define x
ForwardTracker::Magnet::m_A1
double m_A1
Definition: ForwardTracker/ForwardTracker/Magnet.h:62
ForwardTracker::Point
Definition: ForwardTracker/ForwardTracker/Point.h:15
ForwardTracker::Magnet::side
Side side() const
Definition: ForwardTracker/ForwardTracker/Magnet.h:42
ForwardTracker::operator<<
std::ostream & operator<<(std::ostream &, const Beamline &)
Definition: ForwardTracker/src/Beamline.cxx:105
ForwardTracker::Magnet::hbDipole
@ hbDipole
Definition: ForwardTracker/ForwardTracker/Magnet.h:36
ForwardTracker::Magnet::isEndElement
bool isEndElement() const
Definition: ForwardTracker/ForwardTracker/Magnet.h:46
IBender.h
ForwardTracker::Magnet::Container_t
std::vector< ConstPtr_t > Container_t
Definition: ForwardTracker/ForwardTracker/Magnet.h:39
ForwardTracker::Magnet::frontFace
double frontFace() const
Definition: ForwardTracker/ForwardTracker/Magnet.h:43
z
#define z
ForwardTracker::Magnet::notAMagnet
@ notAMagnet
Definition: ForwardTracker/ForwardTracker/Magnet.h:36
ForwardTracker::Magnet
Definition: ForwardTracker/ForwardTracker/Magnet.h:19
ForwardTracker::Magnet::m_aperType
std::string m_aperType
Definition: ForwardTracker/ForwardTracker/Magnet.h:61
ForwardTracker::Magnet::m_A4
double m_A4
Definition: ForwardTracker/ForwardTracker/Magnet.h:65
Side
Definition: WaferTree.h:36
ForwardTracker::Magnet::m_bender
IBender::ConstPtr_t m_bender
Definition: ForwardTracker/ForwardTracker/Magnet.h:66
ForwardTracker::IParticle
Definition: ForwardDetectors/ForwardTracker/ForwardTracker/IParticle.h:16
ForwardTracker::Magnet::hfQuadrupole
@ hfQuadrupole
Definition: ForwardTracker/ForwardTracker/Magnet.h:36
xAODType
Definition: ObjectType.h:13
ForwardTracker::Magnet::m_label
std::string m_label
Definition: ForwardTracker/ForwardTracker/Magnet.h:56
ForwardTracker::Magnet::m_position
Point m_position
Definition: ForwardTracker/ForwardTracker/Magnet.h:60
ForwardTracker::Magnet::m_side
Side m_side
Definition: ForwardTracker/ForwardTracker/Magnet.h:57
ForwardTracker::Magnet::vbDipole
@ vbDipole
Definition: ForwardTracker/ForwardTracker/Magnet.h:36
IBeamElement.h
y
#define y
ForwardTracker::Magnet::rearFace
double rearFace() const
Definition: ForwardTracker/ForwardTracker/Magnet.h:44
ForwardTrackerConstants.h
ForwardTracker::Magnet::m_A3
double m_A3
Definition: ForwardTracker/ForwardTracker/Magnet.h:64
Particle.h
ForwardTracker::IBender::ConstPtr_t
std::shared_ptr< IBender > ConstPtr_t
Definition: ForwardTracker/ForwardTracker/IBender.h:21
ForwardTracker::Magnet::isOutOfAperture
bool isOutOfAperture(IParticle &) const
Definition: ForwardTracker/src/Magnet.cxx:50
ForwardTracker::IBeamElement
Definition: ForwardTracker/ForwardTracker/IBeamElement.h:22
IParticle
Definition: Event/EventKernel/EventKernel/IParticle.h:43
ForwardTracker::Magnet::ConstPtr_t
std::shared_ptr< const Magnet > ConstPtr_t
Definition: ForwardTracker/ForwardTracker/Magnet.h:38
ForwardTracker
Definition: ForwardTracker/ForwardTracker/Beamline.h:12
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
ForwardTracker::Magnet::label
std::string label() const
Definition: ForwardTracker/ForwardTracker/Magnet.h:41
ForwardTracker::Magnet::str
std::string str() const
Definition: ForwardTracker/src/Magnet.cxx:163
ForwardTracker::Magnet::track
void track(IParticle &) const
Definition: ForwardTracker/src/Magnet.cxx:37