Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DMagneticFieldMapCalibDB.h
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DMagneticFieldMapCalibDB.h
4 // Created: Thu Jul 19 13:58:21 EDT 2007
5 // Creator: davidl (on Darwin fwing-dhcp61.jlab.org 8.10.1 i386)
6 //
7 
8 #ifndef _DMagneticFieldMapCalibDB_
9 #define _DMagneticFieldMapCalibDB_
10 
11 #include <JANA/jerror.h>
12 
14 
15 #include <vector>
16 #include <string>
17 using std::vector;
18 using std::string;
19 
20 #include <JANA/JApplication.h>
21 #include <JANA/JCalibration.h>
22 using namespace jana;
23 
25  public:
26  DMagneticFieldMapCalibDB(JApplication *japp, int32_t runnumber=1, string namepath = "Magnets/Solenoid/solenoid_1500_poisson_20090814_01");
27  DMagneticFieldMapCalibDB(JCalibration *jcalib, string namepath = "Magnets/Solenoid/solenoid_1500_poisson_20090814_01");
28  virtual ~DMagneticFieldMapCalibDB();
29 
30  int ReadMap(string namepath, int32_t runnumber=1, string context="");
31  void GetField(const DVector3 &pos,DVector3 &Bout) const;
32  void GetField(double x, double y, double z, double &Bx, double &By, double &Bz, int method=0) const;
33  double GetBz(double x,double y, double z) 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  typedef struct{
54  float x,y,z,Bx,By,Bz;
55  double dBxdx, dBxdy, dBxdz;
56  double dBydx, dBydy, dBydz;
57  double dBzdx, dBzdy, dBzdz;
58  double dBxdxdy,dBxdxdz,dBxdydz;
59  double dBydxdy,dBydxdz,dBydydz;
60  double dBzdxdy,dBzdxdz,dBzdydz;
62 
63  protected:
64 
65  JCalibration *jcalib;
66  vector< vector< vector<DBfieldPoint_t> > > Btable;
67 
68  float xmin, xmax, ymin, ymax, zmin, zmax;
69  int Nx, Ny, Nz;
70  double dx, dy,dz;
71 };
72 
73 #endif // _DMagneticFieldMapCalibDB_
74 
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
vector< vector< vector< DBfieldPoint_t > > > Btable
Double_t ymin
Definition: bcal_hist_eff.C:89
Double_t ymax
Definition: bcal_hist_eff.C:91