CMS 3D CMS Logo

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:
31  double *r_pow;
32  double *z_pow;
33  bool *is_off;
34 
35  public:
36  rz_poly() : data(), max_nr(0), max_nz(0), n_active(0), r_pow(nullptr), z_pow(nullptr), is_off(nullptr){};
37 
38  rz_poly(int N);
39  rz_poly(const rz_poly &S);
40  ~rz_poly();
41 
42  void SetOFF(int npoly);
43  void SetON(int npoly);
44  void SetAllON(int npoly) {
45  if (is_off)
46  std::fill(is_off, is_off + data.size(), false);
47  }
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 = nullptr);
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 } // namespace magfieldparam
68 
69 #endif
magfieldparam::rz_poly::GetVVal
double * GetVVal(double r, double z, double *rez_out=nullptr)
Definition: rz_poly.cc:288
magfieldparam::rz_poly::SetAllON
void SetAllON(int npoly)
Definition: rz_poly.h:44
magfieldparam::rz_poly::SetOFF
void SetOFF(int npoly)
Definition: rz_poly.cc:92
magfieldparam::rz_poly::~rz_poly
~rz_poly()
Definition: rz_poly.cc:82
magfieldparam::rz_poly::data
poly_arr data
Definition: rz_poly.h:29
magfieldparam::poly_vect
std::vector< poly_term > poly_vect
Definition: rz_poly.h:21
magfieldparam::poly_arr
std::vector< poly_vect > poly_arr
Definition: rz_poly.h:23
magfieldparam::rz_poly::GetNActive
int GetNActive() const
Definition: rz_poly.h:61
magfieldparam::rz_poly::Expand
double * Expand(double *C)
Definition: rz_poly.cc:330
magfieldparam::rz_poly::operator*=
rz_poly & operator*=(double C)
Definition: rz_poly.cc:228
magfieldparam::rz_poly::GetSVal
double GetSVal(double r, double z, const double *C) const
Definition: rz_poly.cc:257
magfieldparam::rz_poly::Diff
rz_poly Diff(int nvar, bool keep_empty=false)
Definition: rz_poly.cc:132
magfieldparam::rz_poly::Int
rz_poly Int(int nvar)
Definition: rz_poly.cc:191
N
#define N
Definition: blowfish.cc:9
magfieldparam
Definition: BCyl.h:23
ntuplemaker.fill
fill
Definition: ntuplemaker.py:304
magfieldparam::rz_poly
Definition: rz_poly.h:26
magfieldparam::poly_term
Definition: rz_poly.h:15
magfieldparam::rz_poly::r_pow
double * r_pow
Definition: rz_poly.h:31
magfieldparam::rz_poly::GetLength
int GetLength() const
Definition: rz_poly.h:60
magfieldparam::rz_poly::max_nz
int max_nz
Definition: rz_poly.h:30
alignCSCRings.r
r
Definition: alignCSCRings.py:93
magfieldparam::rz_poly::n_active
int n_active
Definition: rz_poly.h:30
magfieldparam::rz_poly::GetMaxZPow
int GetMaxZPow() const
Definition: rz_poly.h:59
magfieldparam::poly_term::np
int np[2]
Definition: rz_poly.h:17
gen::C
C
Definition: PomwigHadronizer.cc:78
magfieldparam::rz_poly::max_nr
int max_nr
Definition: rz_poly.h:30
magfieldparam::rz_poly::GetMaxRPow
int GetMaxRPow() const
Definition: rz_poly.h:58
magfieldparam::rz_poly::rz_poly
rz_poly()
Definition: rz_poly.h:36
S
Definition: CSCDBL1TPParametersExtended.h:16
magfieldparam::poly_term::coeff
double coeff
Definition: rz_poly.h:16
magfieldparam::rz_poly::is_off
bool * is_off
Definition: rz_poly.h:33
magfieldparam::rz_poly::z_pow
double * z_pow
Definition: rz_poly.h:32
magfieldparam::rz_poly::Print
void Print()
Definition: rz_poly.cc:112
magfieldparam::rz_poly::SetON
void SetON(int npoly)
Definition: rz_poly.cc:102