CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
rz_poly.h
Go to the documentation of this file.
1 #ifndef rz_poly_h
2 #define rz_poly_h
3 
10 #include <vector>
11 
12 namespace magfieldparam {
13 
14 //_______________________________________________________________________________
15 struct poly_term {
16  double coeff;
17  int np[2];
18 };
19 
20 //_______________________________________________________________________________
21 typedef std::vector<poly_term> poly_vect;
22 //_______________________________________________________________________________
23 typedef std::vector<poly_vect> poly_arr;
24 
25 //_______________________________________________________________________________
26 class rz_poly { // represent a set of homogeneous polynomials
27 
28 private:
29 
32  double *r_pow;
33  double *z_pow;
34  bool *is_off;
35 
36 public:
37 
38  rz_poly() : data(), max_nr(0), max_nz(0), n_active(0),
39  r_pow(0), z_pow(0), is_off(0) {};
40 
41  rz_poly(int N);
42  rz_poly(const rz_poly& S);
43  ~rz_poly();
44 
45  void SetOFF (int npoly);
46  void SetON (int npoly);
47  void SetAllON(int npoly) {if (is_off) std::fill(is_off, is_off+data.size(), false);}
48 
49  rz_poly Diff(int nvar, bool keep_empty = false);
50  rz_poly Int (int nvar);
51 
52  rz_poly& operator*=(double C);
53  rz_poly& operator*=(double *C);
54 
55  double GetSVal(double r, double z, const double *C) const;
56  double *GetVVal(double r, double z, double *rez_out = 0);
57 
58  int GetMaxRPow() const {return max_nr-1;}
59  int GetMaxZPow() const {return max_nz-1;}
60  int GetLength() const {return (int)data.size();}
61  int GetNActive() const {return n_active;}
62 
63  double *Expand(double *C);
64 
65  void Print();
66 
67 };
68 }
69 
70 #endif
std::vector< poly_term > poly_vect
Definition: rz_poly.h:21
string fill
Definition: lumiContext.py:319
int GetNActive() const
Definition: rz_poly.h:61
float float float z
void SetAllON(int npoly)
Definition: rz_poly.h:47
std::vector< poly_vect > poly_arr
Definition: rz_poly.h:23
void SetOFF(int npoly)
Definition: rz_poly.cc:88
void SetON(int npoly)
Definition: rz_poly.cc:97
rz_poly & operator*=(double C)
Definition: rz_poly.cc:217
double GetSVal(double r, double z, const double *C) const
Definition: rz_poly.cc:246
int GetMaxZPow() const
Definition: rz_poly.h:59
#define N
Definition: blowfish.cc:9
double * GetVVal(double r, double z, double *rez_out=0)
Definition: rz_poly.cc:274
int GetMaxRPow() const
Definition: rz_poly.h:58
rz_poly Diff(int nvar, bool keep_empty=false)
Definition: rz_poly.cc:128
double * Expand(double *C)
Definition: rz_poly.cc:311
rz_poly Int(int nvar)
Definition: rz_poly.cc:184
int GetLength() const
Definition: rz_poly.h:60