OPAL (Object Oriented Parallel Accelerator Library)  2024.1
OPAL
OpalMultipoleT.h
Go to the documentation of this file.
1 //
2 // Class OpalMultipoleT
3 // The Opal MultipoleT element.
4 //
5 // Copyright (c) 2017 - 2023, Titus Dascalu
6 // Chris Rogers, STFC Rutherford Appleton Laboratory, Didcot, UK
7 // All rights reserved
8 //
9 // This file is part of OPAL.
10 //
11 // OPAL is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with OPAL. If not, see <https://www.gnu.org/licenses/>.
18 //
19 #ifndef OPAL_OPALMULTIPOLET_HH
20 #define OPAL_OPALMULTIPOLET_HH
21 
22 #include "Elements/OpalElement.h"
23 
24 class OpalMultipoleT: public OpalElement {
25 
26 public:
27  // The attributes of class OpalMultipoleT
28  enum {
29  TP = COMMON, // Transverse field components
30  RFRINGE, // Length of right fringe field
31  LFRINGE, // Length of left fringe field
32  HAPERT, // Aperture horizontal dimension
33  VAPERT, // Aperture vertical dimension
34  MAXFORDER, // Maximum order in the field expansion
35  MAXXORDER, // Maximum order in x in polynomial expansions
36  ANGLE, // Bending angle of a sector magnet
37  ROTATION, // Rotation angle about central axis for skew elements
38  EANGLE, // Entrance angle
39  VARRADIUS, // Variable radius flag
40  BBLENGTH, // Distance between centre of magnet and entrance
41  SIZE // size of the enum
42  };
43 
46 
48  virtual ~OpalMultipoleT();
49 
51  virtual OpalMultipoleT* clone(const std::string& name);
52 
54  virtual void update();
55 
56  void print(std::ostream& os) const;
57 
58 private:
59  // Not implemented.
61  void operator=(const OpalMultipoleT&);
62 
63  // Clone constructor.
64  OpalMultipoleT(const std::string& name, OpalMultipoleT* parent);
65 };
66 
67 #endif // OPAL_OpalMultipoleT_HH
virtual OpalMultipoleT * clone(const std::string &name)
void operator=(const OpalMultipoleT &)
void print(std::ostream &os) const
Print the object.
virtual ~OpalMultipoleT()
virtual void update()
const std::string name