Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DMagneticFieldMapParameterized.h
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DMagneticFieldMapParameterized.h
4 // Created: Tue Oct 20 14:06:19 EDT 2009
5 // Creator: davidl (on Darwin harriet.jlab.org 9.8.0 i386)
6 //
7 
8 #ifndef _DMagneticFieldMapParameterized_
9 #define _DMagneticFieldMapParameterized_
10 
11 #include <JANA/jerror.h>
12 
13 #include <string>
14 using std::string;
15 
16 #include <JANA/JApplication.h>
17 #include <JANA/JCalibration.h>
18 
19 #include <DMatrix.h>
21 
23  public:
24  DMagneticFieldMapParameterized(jana::JApplication *japp, string namepath = "Magnets/Solenoid/solenoid_1500_poisson_20090814_01_params");
25  DMagneticFieldMapParameterized(jana::JCalibration *jcalib, string namepath = "Magnets/Solenoid/solenoid_1500_poisson_20090814_01_params");
27  void Init(jana::JCalibration *jcalib, string namepath);
28 
29  void GetField(const DVector3 &pos,DVector3 &Bout) const;
30  virtual void GetField(double x, double y, double z, double &Bx, double &By, double &Bz, int method=0) const;
31  double GetBz(double x,double y,double z) const;
32  virtual void GetFieldGradient(double x, double y, double z,
33  double &dBxdx, double &dBxdy,
34  double &dBxdz,
35  double &dBydx, double &dBydy,
36  double &dBydz,
37  double &dBzdx, double &dBzdy,
38  double &dBzdz) const;
39  virtual void GetFieldBicubic(double x,double y,double z, double &Bx,double &By,double &Bz) const;
40  virtual void GetFieldAndGradient(double x,double y,double z,
41  double &Bx,double &By,
42  double &Bz,
43  double &dBxdx,
44  double &dBxdy,
45  double &dBxdz,
46  double &dBydx,
47  double &dBydy,
48  double &dBydz,
49  double &dBzdx,
50  double &dBzdy,
51  double &dBzdz) const;
52  protected:
53  jana::JCalibration *jcalib;
54 
55  class Dsection{
56  public:
57  string namepath;
58  string Bi;
59  int section;
60  double zmin;
61  double zmax;
62  double zmid;
63  double znorm;
64  double rmid;
65  double rnorm;
66  unsigned int order1;
67  unsigned int order2;
68  vector<vector<double> > pp; // parameters from calibDB
69  DMatrix Q; // parameters matrix transformed by Chebyshev matrix
70  vector<vector<double> > cc; // parameters matrix transformed by Chebyshev matrix
71 
72  bool IsInRange(double &z) const {return z>=zmin && z<=zmax;}
73  double Eval(double &r, double &z) const;
74  };
75 
76  vector<Dsection> sections_Bx;
77  vector<Dsection> sections_Bz;
78 };
79 
80 #endif // _DMagneticFieldMapParameterized_
81 
TMatrixD DMatrix
Definition: DMatrix.h:14
TVector3 DVector3
Definition: DVector3.h:14
virtual void GetFieldAndGradient(double x, double y, double z, double &Bx, double &By, double &Bz, double &dBxdx, double &dBxdy, double &dBxdz, double &dBydx, double &dBydy, double &dBydz, double &dBzdx, double &dBzdy, double &dBzdz) const
Double_t x[NCHANNELS]
Definition: st_tw_resols.C:39
char string[256]
#define y
void GetField(const DVector3 &pos, DVector3 &Bout) const
JApplication * japp
virtual void GetFieldBicubic(double x, double y, double z, double &Bx, double &By, double &Bz) const
virtual void GetFieldGradient(double x, double y, double z, double &dBxdx, double &dBxdy, double &dBxdz, double &dBydx, double &dBydy, double &dBydz, double &dBzdx, double &dBzdy, double &dBzdz) const
double GetBz(double x, double y, double z) const
DMagneticFieldMapParameterized(jana::JApplication *japp, string namepath="Magnets/Solenoid/solenoid_1500_poisson_20090814_01_params")
void Init(jana::JCalibration *jcalib, string namepath)