ATLAS Offline Software
Loading...
Searching...
No Matches
FPTracker/FPTracker/Magnet.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef FPTACKER_MAGNET_H
6#define FPTACKER_MAGNET_H
7
8#include "IBeamElement.h"
9#include "Point.h"
10#include "FPTrackerConstants.h"
11#include "IBender.h"
12#include "Particle.h"
13#include <memory>
14#include <vector>
15#include <iosfwd>
16
17namespace FPTracker{
18 class IParticle;
19 class TransversePoint;
20 class Magnet:public IBeamElement{
21 public:
22 Magnet(double x,
23 double y,
24 double center,
25 double strength,
26 double length,
27 int apertype,
28 double aper_A1,
29 double aper_A2,
30 double aper_A3,
31 double aper_A4,
32 double xb,
33 Side side,
34 IBender* bender,
35 const std::string& label
36 );
37 /*
38 Magnet(const Magnet&);
39 Magnet& operator=(Magnet);
40 */
41
42 double frontFace() const;
43 double rearFace() const;
44 double zabspos() const;
45 double zsignedpos() const;
46 double centerZ() const; //magnet center
47 Point position() const;
48 Side side() const;
49
50 bool isEndElement() const;
51 std::string str() const;
52
53 std::string label() const;
54
55 void track(IParticle&) const;
56 void calibrate(IParticle&);
57
59
60
61 typedef std::shared_ptr< Magnet > Ptr_t;
62 typedef std::vector< Ptr_t > Container_t;
63
65
66
67
68
69 private:
70
73 double m_rearFace;
74 double m_strength;
76 double m_aper_A1;
77 double m_aper_A2;
78 double m_aper_A3;
79 double m_aper_A4;
80 double m_xb;
83 std::string m_label;
84
85
86 bool isOutOfAperture( IParticle& ) const;
87 double frontface() const;
88 void swap(Magnet&);
89 };
90
91
92 std::ostream& operator<<(std::ostream&, const Magnet&);
93
94}
95#endif
double length(const pvec &v)
#define y
#define x
std::shared_ptr< const IBeamElement > ConstPtr_t
void swap(Magnet &)
Magnet(double x, double y, double center, double strength, double length, int apertype, double aper_A1, double aper_A2, double aper_A3, double aper_A4, double xb, Side side, IBender *bender, const std::string &label)
std::shared_ptr< Magnet > Ptr_t
std::vector< Ptr_t > Container_t
double frontface() const
void calibrate(IParticle &)
IBeamElement::ConstPtr_t clone() const
void track(IParticle &) const
std::string str() const
std::string label() const
double centerZ() const
bool isOutOfAperture(IParticle &) const
std::ostream & operator<<(std::ostream &os, const Beamline &bl)