Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DMagneticFieldMapPS2DMap.h
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DMagneticFieldMapPS2DMap.h
4 
5 #ifndef _DMagneticFieldMapPS2DMap_
6 #define _DMagneticFieldMapPS2DMap_
7 
8 #include <JANA/jerror.h>
9 
11 
12 #include <vector>
13 #include <string>
14 using std::vector;
15 using std::string;
16 
17 #include <JANA/JApplication.h>
18 #include <JANA/JCalibration.h>
19 using namespace jana;
20 
21 class DGeometry;
22 
23 
25  public:
26  DMagneticFieldMapPS2DMap(JApplication *japp, int32_t runnumber=1, string namepath = "Magnets/PairSpectrometer/PS_1.8T_20150513_test");
27  DMagneticFieldMapPS2DMap(JCalibration *jcalib, string namepath = "Magnets/PairSpectrometer/PS_1.8T_20150513_test");
28  virtual ~DMagneticFieldMapPS2DMap();
29 
30  int ReadMap(string namepath, int32_t runnumber=1, string context="");
31 
32  void GetField(const DVector3 &pos,DVector3 &Bout) const;
33  void GetField(double x, double y, double z, double &Bx, double &By, double &Bz, int method=0) const;
34  void GetFieldGradient(double x, double y, double z,
35  double &dBxdx, double &dBxdy,
36  double &dBxdz,
37  double &dBydx, double &dBydy,
38  double &dBydz,
39  double &dBzdx, double &dBzdy,
40  double &dBzdz) const;
41  void GetFieldBicubic(double x,double y,double z,
42  double &Bx,double &By,double &Bz) const;
43  void GetFieldAndGradient(double x,double y,double z,
44  double &Bx,double &By,
45  double &Bz,
46  double &dBxdx, double &dBxdy,
47  double &dBxdz,
48  double &dBydx, double &dBydy,
49  double &dBydz,
50  double &dBzdx, double &dBzdy,
51  double &dBzdz) const;
52 
53 
54  typedef struct{
55  float x,y,z,Bx,By,Bz;
56  double dBxdx, dBxdy, dBxdz;
57  double dBydx, dBydy, dBydz;
58  double dBzdx, dBzdy, dBzdz;
59  double dBxdxdy,dBxdxdz,dBxdydz;
60  double dBydxdy,dBydxdz,dBydydz;
61  double dBzdxdy,dBzdxdz,dBzdydz;
63 
64  protected:
65 
66  JCalibration *jcalib;
67  JResourceManager *jresman;
69 
70  vector< vector< vector<DBfieldPoint_t> > > Btable;
71 
72  float xmin, xmax, ymin, ymax, zmin, zmax;
73  int Nx, Ny, Nz;
74  double dx, dy,dz;
75  double one_over_dx,one_over_dz;
76 
77  double z_shift;
78 
79  private:
80  void InterpolateField(double r,double z,double &Br,double &Bz,double &dBrdr,
81  double &dBrdz,double &dBzdr,double &dBzdz) const;
82 };
83 
84 #endif // _DMagneticFieldMapPS2DMap_
85 
vector< vector< vector< DBfieldPoint_t > > > Btable
TVector3 DVector3
Definition: DVector3.h:14
Double_t x[NCHANNELS]
Definition: st_tw_resols.C:39
char string[256]
#define y
double zmax
JApplication * japp
Double_t ymin
Definition: bcal_hist_eff.C:89
Double_t ymax
Definition: bcal_hist_eff.C:91