OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
OpalQuadrupole.h
Go to the documentation of this file.
1//
2// Class OpalQuadrupole
3// The QUADRUPOLE element.
4//
5// A convenience wrapper around MULTIPOLE that accepts a single
6// quadrupole strength K1 instead of the full KN vector.
7// Internally the element is represented as a MultipoleRep with
8// KN = {0, K1}.
9//
10// Copyright (c) 2024 – 2026, Paul Scherrer Institut, Villigen PSI, Switzerland
11// All rights reserved
12//
13// This file is part of OPAL.
14//
15// OPAL is free software: you can redistribute it and/or modify
16// it under the terms of the GNU General Public License as published by
17// the Free Software Foundation, either version 3 of the License, or
18// (at your option) any later version.
19//
20// You should have received a copy of the GNU General Public License
21// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
22//
23#ifndef OPAL_OpalQuadrupole_HH
24#define OPAL_OpalQuadrupole_HH
25
27
29public:
31 enum {
32 K1 = COMMON, // Normalised quadrupole strength in m^(-2).
33 DK1, // Normalised quadrupole strength error in m^(-2).
34 K1S, // Normalised skew quadrupole strength in m^(-2).
35 DK1S, // Normalised skew quadrupole strength error in m^(-2).
36 SIZE
37 };
38
41
42 virtual ~OpalQuadrupole();
43
45 virtual OpalQuadrupole* clone(const std::string& name);
46
48 virtual void print(std::ostream&) const;
49
51 virtual void update();
52
53private:
54 // Not implemented.
57
58 // Clone constructor.
59 OpalQuadrupole(const std::string& name, OpalQuadrupole* parent);
60};
61
62#endif // OPAL_OpalQuadrupole_HH
virtual void print(std::ostream &) const
Print the object.
virtual ~OpalQuadrupole()
virtual OpalQuadrupole * clone(const std::string &name)
Make clone.
void operator=(const OpalQuadrupole &)
OpalQuadrupole(const OpalQuadrupole &)
OpalQuadrupole()
Exemplar constructor.
virtual void update()
Update the embedded OPALX multipole.