BFMagnet Class Reference

This class defines magnetic field of an analysis magnet. More...

#include <BFMagnet.h>

List of all members.

Public Types

 kJGG
 kRosie
 kNMagnet
enum  { kJGG, kRosie, kNMagnet }

Public Member Functions

bool BatX (const double *pos, double *b) const
 Returns magnetic field in kG at a given point.
bool BatXrotZ (const double *pos, double *b, double ang) const
 Return field values if field is rotated by angle ang (in rad) about z-axis.
double Bydl () const
double ZMin () const
double ZMax () const
int NGridX () const
int NGridY () const
int NGridZ () const
int MinGridX () const
int MinGridY () const
int MinGridZ () const
double BfromMap (int x, int y, int z, int crd) const
 Returns the measurement from the map.
void Init ()
 Reinitializes magnet, i.e.
bool IsScaled () const
double ByAtCenter ()
 Returns By at the center of the grid, using the actual measurement point rather than interpolation.
double * CenterPos ()
void Scale (double r)
 Scale the entire field map by a factor f.
void SetByAtCenter (double by)
 Reinitializes B-field map, and scales it to get the right By at the central measurement point.
void SetCenterPos (const double *pos)
 Shifts the center of the magnet to a given position.
void SetCenterPos (double x, double y, double z)
 Shifts the center of the magnet to a given position.
void SetUniformField (const double *b)
 This function sets the grid to a uniform field.

Static Public Member Functions

static BFMagnetJGG ()
 Return the reference to JGG magnet.
static BFMagnetRosie ()
 Return the reference to Rosie magnet.

Private Member Functions

 BFMagnet (int mag)
 Constructor.
void ReadFieldMap ()

Private Attributes

int fId
 Magnet's id (kJGG or kRosie).
std::string fMapFileName
int fNGrid [3]
 Number of points in the grid in x, y, z.
int fNGridMin [3]
 Point (0, 0, 0) is at the center, minimum is adjusted accordingly.
int fNGridMax [3]
 Maximum is calculated based on fNGrid and fNGridMin.
double fGridLen [3]
 Grid spacing, in cm.
double fOffset [3]
 Magnet center in cm.
double fZMin
 Minimum z where field is non-zero.
double fZMax
 Maximum z where field is non-zero.
double **** fMap
 Array of grid measurements for each coordinate.
double fMaxB
bool fIsScaled
double fBydl
 Calculated Bdl for x=y=0;.

Static Private Attributes

static BFMagnetfsMagnet [kNMagnet] = {0, 0}


Detailed Description

This class defines magnetic field of an analysis magnet.

The field is assumed to be measured on a 3-D grid with uniformly separated points.

Definition at line 17 of file BFMagnet.h.


Member Enumeration Documentation

anonymous enum

Enumerator:
kJGG 
kRosie 
kNMagnet 

Definition at line 19 of file BFMagnet.h.

00019        {
00020     kJGG,
00021     kRosie,
00022     kNMagnet
00023   };


Constructor & Destructor Documentation

BFMagnet::BFMagnet ( int  mag  )  [private]

Constructor.

Needs to know which magnet it is.

Definition at line 52 of file BFMagnet.cxx.

References Init().

Referenced by JGG(), and Rosie().

00052                           :
00053   fId(mag),
00054   fMap(0),
00055   fIsScaled(false)
00056 {
00057   Init();
00058 }


Member Function Documentation

bool BFMagnet::BatX ( const double *  x,
double *  b 
) const

Returns magnetic field in kG at a given point.

Coordinates must be in cm.

Parameters:
pos - (x, y, z) point coordinate
b - array which will get filled with (Bx, By, Bz)
Returns:
- true if the point is inside the grid, false otherwise. In the latter case, Bx = By = Bz = 0.

Definition at line 239 of file BFMagnet.cxx.

References fGridLen, fMap, fMaxB, fNGrid, fNGridMin, and fOffset.

Referenced by b_xyz(), BatXrotZ(), config_bfield(), and main().

00240 {
00241   //
00242   // This is basically copied from rosy_magf.F in e907mc 
00243   // (which is copied from Donut/E872, which is copied from E771, which ...)
00244   // A minor improvement is how I deal with the ends of the map to get a smooth
00245   // transition from the last measured field values to the zero field assumed
00246   // outside the fieldmap region: I extend the grid by a layer and
00247   // consider any coordinate within that shell legal, i.e. increment
00248   // the field region by one grid spacing on all sides.
00249   //
00250   // Interpolation in three dimensions:
00251   // C           --B(1,2,2)-----------B(2,2,2)
00252   // C            /|                  /|
00253   // C         | / |                 / |
00254   // C         |/  |                /  |
00255   // C       --B(1,1,2)------------B(2,1,2)
00256   // C        /|   |               |   |
00257   // C       / |   |       *<------|----------BX,BY,BZ
00258   // C         |   |               |   |
00259   // C         |   |               |   |
00260   // C         |   B(1,2,1)--------|---B(2,2,1)      Z
00261   // C         |  /                |  /              ^   Y
00262   // C         | /                 | /               |  /
00263   // C         |/                  |/                | /
00264   // C       --B(1,1,1)------------B(2,1,1)          0 ----> X
00265   //          /|                  /|
00266 
00267   register int i, j, k, crd;
00268 
00269   // Reset field values to 0
00270   for (crd = 0; crd < 3; ++crd) b[crd] = 0.;
00271 
00272   // It'd be hard to track particles through mG fields...
00273   if (fMaxB < 1e-5 ) return true; 
00274 
00275   double xLoc[3];
00276   double gridPos[3]; //
00277   int gridN[3];   // grid coordinates of data surrounding (x[0],x[1],x[2])
00278   for (i = 0; i < 3; ++i) {
00279     xLoc[i] = x[i] - fOffset[i]; // Convert x[] position to grid position
00280     gridPos[i] = xLoc[i] / fGridLen[i];   // Compute grid coordinates
00281     gridPos[i] -= fNGridMin[i]; 
00282     
00283     if (gridPos[i]  <= 0.0 || gridPos[i] >= (fNGrid[i]-1)) {
00284       b[0] = b[1] = b[2] = 0.0;
00285       return false;
00286     }
00287 
00288     gridN[i] = (int) floor(gridPos[i]);
00289     gridPos[i] -= gridN[i];
00290   }
00291 
00292   // For linear interpolation, we can calculate the coefficient
00293   // for each of the 8 points surrounding the point of interest.
00294   // These coefficients are (obviously) the same for all 3
00295   // components of the B-field, so by using one set for all 3
00296   // components, we should save computational time.
00297   double xy = gridPos[0] * gridPos[1];
00298   double xz = gridPos[0] * gridPos[2];
00299   double yz = gridPos[1] * gridPos[2];
00300   double xyz = xy * gridPos[2];
00301 
00302   double coef[8] = {
00303     1 - gridPos[0] - gridPos[1] - gridPos[2] + xy + xz + yz - xyz,
00304     gridPos[2] - xz - yz + xyz,
00305     gridPos[1] - xy - yz + xyz,
00306     yz - xyz,
00307     gridPos[0] - xy - xz + xyz,
00308     xz - xyz,
00309     xy - xyz,
00310     xyz
00311   };
00312 
00313   // Loop through the 8 points of interest and add in the contribution
00314   // from each one to each of the components
00315   double* coefPtr = coef;
00316   for (i = gridN[0]; i < gridN[0]+2; ++i) {
00317     for (j = gridN[1]; j < gridN[1]+2; ++j) {
00318       for (k = gridN[2]; k < gridN[2]+2; ++k) {
00319     for (crd = 0; crd < 3; ++crd) {
00320       b[crd] += (*coefPtr) * fMap[i][j][k][crd]; 
00321     }
00322     ++coefPtr;
00323       }
00324     }
00325   }
00326 
00327   return true;
00328 }

bool BFMagnet::BatXrotZ ( const double *  pos,
double *  b,
double  ang 
) const

Return field values if field is rotated by angle ang (in rad) about z-axis.

This can be used to remove potential bleed of By into Bx

Definition at line 430 of file BFMagnet.cxx.

References BatX().

Referenced by b_xyz_rotz().

00431 {
00432   if (!BatX(pos, b)) return false;
00433 
00434   double ca = cos(ang);
00435   double sa = sin(ang);
00436   double bxp = b[0] * ca + b[1] * sa;
00437   double byp = -b[0] * sa + b[1] * ca;
00438 
00439   b[0] = bxp;
00440   b[1] = byp;
00441 
00442   return true;
00443 }

double BFMagnet::BfromMap ( int  x,
int  y,
int  z,
int  crd 
) const

Returns the measurement from the map.

Parameters:
x - grid position in x
y - grid position in y
z - grid position in z
crd - coordinate (0-2)

Definition at line 370 of file BFMagnet.cxx.

References fMap, and fNGrid.

Referenced by main().

00371 {
00372   assert(x >= 0 && x < fNGrid[0]);
00373   assert(y >= 0 && y < fNGrid[1]);
00374   assert(z >= 0 && z < fNGrid[2]);
00375   assert(crd >= 0 && crd < 3);
00376   return fMap[x][y][z][crd];
00377 }

double BFMagnet::ByAtCenter (  ) 

Returns By at the center of the grid, using the actual measurement point rather than interpolation.

Definition at line 400 of file BFMagnet.cxx.

References fMap, and fNGridMin.

Referenced by AlignChamW0::AdjustBField(), TrackBeamPart::EndRun(), AlignChamW0::EndRun(), SPTrkBuilder::FitTPCTracks(), SetByAtCenter(), KalmanRefit::SetupManager(), KalmanReco::SetupManager(), and TheEnd().

00401 {
00402   int i0 = -fNGridMin[0];
00403   int i1 = -fNGridMin[1];
00404   int i2 = -fNGridMin[2];
00405   return fMap[i0][i1][i2][1];
00406 }

double BFMagnet::Bydl (  )  const [inline]

Definition at line 31 of file BFMagnet.h.

References fBydl.

00031 {return fBydl;}

double* BFMagnet::CenterPos (  )  [inline]

Definition at line 50 of file BFMagnet.h.

References fOffset.

Referenced by AlignChamZ::EndRun(), TrkCandBuilder::MakeTrack(), and TPCRHitFind::NewRun().

00050 {return fOffset;}

void BFMagnet::Init (  ) 

Reinitializes magnet, i.e.

reads the field map again

Definition at line 64 of file BFMagnet.cxx.

References fBydl, fGridLen, fId, fMap, fMapFileName, fNGrid, fNGridMin, kJGG, kRosie, ReadFieldMap(), and SetCenterPos().

Referenced by BFMagnet(), and config_bfield().

00065 {
00066   // Assume that the field data file lives in $SRT_PUBLIC_CONTEXT/Bfield
00067   fMapFileName = getenv("SRT_PRIVATE_CONTEXT");
00068   fMapFileName += "/Bfield/Maps/";
00069   switch (fId) {
00070   case kJGG:
00071     fMapFileName += "JGGfield.dat";
00072     break;
00073 
00074   case kRosie:
00075     fMapFileName += "Rosiefield.dat";
00076     break;
00077 
00078   default:
00079     abort();
00080   }
00081 
00082   struct stat buf;
00083   if (stat(fMapFileName.c_str(), &buf) != 0) {
00084     fMapFileName = getenv("SRT_PUBLIC_CONTEXT");
00085     fMapFileName += "/Bfield/Maps/";
00086     switch (fId) {
00087     case kJGG:
00088       fMapFileName += "JGGfield.dat";
00089       break;
00090       
00091     case kRosie:
00092       fMapFileName += "Rosiefield.dat";
00093       break;
00094       
00095     default:
00096       abort();
00097     }
00098     if (stat(fMapFileName.c_str(), &buf) != 0) {
00099       cout << "Couldn't find " << fMapFileName << endl;
00100       exit(-1);
00101     }
00102   }
00103 
00104   cout << "Loading field map from " << fMapFileName << endl;
00105   ReadFieldMap();
00106 
00107   SetCenterPos(0, 0, 0);
00108 
00109   // Calculate Bydl
00110   fBydl = 0;
00111   
00112   int ix = -fNGridMin[0];
00113   int iy = -fNGridMin[1];
00114   for (int i = 1; i < fNGrid[2] - 1; ++i) {
00115     fBydl += fGridLen[2] * fMap[ix][iy][i][1];
00116   }
00117   cout << "Bydl = " << fBydl << " kG*cm" << endl;
00118 }

bool BFMagnet::IsScaled (  )  const [inline]

Definition at line 47 of file BFMagnet.h.

References fIsScaled.

Referenced by config_bfield().

00047 { return fIsScaled; }

BFMagnet & BFMagnet::JGG (  )  [static]

Return the reference to JGG magnet.

Definition at line 30 of file BFMagnet.cxx.

References BFMagnet(), fsMagnet, and kJGG.

Referenced by AlignChamW0::AdjustBField(), b_xyz(), b_xyz_rotz(), config_bfield(), TrackBeamPart::EndRun(), AlignChamZ::EndRun(), AlignChamW0::EndRun(), SPTrk::Fit(), SPTrkBuilder::FitTPCTracks(), gsFCN(), InitZslices(), main(), TPCRHitFind::NewRun(), AlignChamW0::NewRun(), KalmanRefit::SetupManager(), KalmanReco::SetupManager(), and TheEnd().

00031 {
00032   
00033   if (!fsMagnet[kJGG]) fsMagnet[kJGG] = new BFMagnet(kJGG);
00034   return *fsMagnet[kJGG];
00035 }

int BFMagnet::MinGridX (  )  const [inline]

Definition at line 40 of file BFMagnet.h.

References fNGridMin.

Referenced by main().

00040 {return fNGridMin[0];}

int BFMagnet::MinGridY (  )  const [inline]

Definition at line 41 of file BFMagnet.h.

References fNGridMin.

Referenced by main().

00041 {return fNGridMin[1];}

int BFMagnet::MinGridZ (  )  const [inline]

Definition at line 42 of file BFMagnet.h.

References fNGridMin.

Referenced by main().

00042 {return fNGridMin[2];}

int BFMagnet::NGridX (  )  const [inline]

Definition at line 36 of file BFMagnet.h.

References fNGrid.

Referenced by main().

00036 {return fNGrid[0];}

int BFMagnet::NGridY (  )  const [inline]

Definition at line 37 of file BFMagnet.h.

References fNGrid.

Referenced by main().

00037 {return fNGrid[1];}

int BFMagnet::NGridZ (  )  const [inline]

Definition at line 38 of file BFMagnet.h.

References fNGrid.

Referenced by main().

00038 {return fNGrid[2];}

void BFMagnet::ReadFieldMap (  )  [private]

Definition at line 122 of file BFMagnet.cxx.

References fGridLen, fMap, fMapFileName, fMaxB, fNGrid, fNGridMax, fNGridMin, and getline().

Referenced by Init(), and SetByAtCenter().

00123 {
00124   std::ifstream fin(fMapFileName.c_str());
00125   if (!fin) {
00126     cout << "The file " << fMapFileName << " could not be opened. \n"
00127      << "Magnetic field not read!" << endl;
00128     exit(-1);
00129   }
00130 
00131   string tmpStr;
00132   // Discard two comment lines (mandatory)
00133   getline(fin,tmpStr); 
00134   getline(fin,tmpStr);
00135 
00136   // Read grid size -- 3 numbers
00137   for (int i = 0; i < 3; ++i) fin >> fNGrid[i];
00138 
00139   // Read grid min point position, and initialize max point
00140   for (int i = 0; i < 3; ++i) {
00141     fin >> fNGridMin[i];
00142     fNGridMin[i]--;
00143     fNGrid[i] += 2;
00144     fNGridMax[i] = fNGridMin[i]  + fNGrid[i] - 1;
00145   }
00146 
00147   // Read grid cell spacing
00148   for (int i = 0; i < 3; ++i) {
00149     fin >> fGridLen[i];
00150     fGridLen[i] /= 10.0;  //convert mm to cm
00151   }
00152 
00153   double tmpVal;
00154   fin >> tmpVal;
00155   getline(fin, tmpStr); // Ignore line with nominal field
00156   getline(fin, tmpStr); // Ignore comment line 
00157 
00158   // Allocate memory for arrays to hold grid points
00159   bool reMakeMap = false;
00160   if (!fMap) {
00161     fMap = new double***[fNGrid[0]];
00162     reMakeMap = true;
00163   }
00164 
00165   // Now loop through all grid points, allocate memory
00166   // and read in field value
00167   fMaxB = 0;
00168   for (int i = 0; i < fNGrid[0]; ++i) {
00169     if (reMakeMap) fMap[i] = new double**[fNGrid[1]];
00170     for (int j = 0; j < fNGrid[1]; ++j) {
00171       if (reMakeMap) fMap[i][j] = new double*[fNGrid[2]];
00172       for (int k = 0; k < fNGrid[2]; ++k) {
00173     if (reMakeMap) fMap[i][j][k] = new double[3];
00174     for (int crd = 0; crd < 3; ++crd) {
00175       if ((i == 0) || i == (fNGrid[0] - 1) ||
00176           (j == 0) || j == (fNGrid[1] - 1) ||
00177           (k == 0) || k == (fNGrid[2] - 1)) {
00178         fMap[i][j][k][crd] = 0.0;
00179         continue;
00180       }
00181 
00182       if (!(fin >> tmpVal)) {
00183         cout << "Couldn't read values at (" 
00184          << i << ", " << j << ", " << k << ", " << crd 
00185          << ") from " << fMapFileName << endl;
00186         exit(-1);
00187       }
00188       tmpVal *= 10.0;  // Convert from T to kG
00189       if (fabs(tmpVal) > fMaxB) fMaxB = fabs(tmpVal);
00190       fMap[i][j][k][crd] = tmpVal;
00191     }
00192       }
00193     }
00194   }
00195 
00196   getline(fin, tmpStr);
00197   getline(fin, tmpStr);
00198   assert(tmpStr.find(" all done...") != string::npos);
00199   fin.close();
00200 }

BFMagnet & BFMagnet::Rosie (  )  [static]

Return the reference to Rosie magnet.

Definition at line 41 of file BFMagnet.cxx.

References BFMagnet(), fsMagnet, and kRosie.

Referenced by b_xyz(), b_xyz_rotz(), config_bfield(), AlignChamZ::EndRun(), gsFCN(), InitZslices(), main(), TrkCandBuilder::MakeTrack(), AlignChamW0::NewRun(), RosieFCN(), SPTrack::ROSYBdL(), and TheEnd().

00042 {
00043   
00044   if (!fsMagnet[kRosie]) fsMagnet[kRosie] = new BFMagnet(kRosie);
00045   return *fsMagnet[kRosie];
00046 }

void BFMagnet::Scale ( double  r  ) 

Scale the entire field map by a factor f.

Definition at line 334 of file BFMagnet.cxx.

References fBydl, fGridLen, fIsScaled, fMap, fMaxB, fNGrid, and fNGridMin.

Referenced by config_bfield(), main(), TPCRHitFind::NewRun(), and SetByAtCenter().

00335 {  
00336   fIsScaled = true;
00337   fMaxB = 0;
00338 
00339   for (int i = 1; i < fNGrid[0] - 1; ++i) {
00340     for (int j = 1; j < fNGrid[1] - 1; ++j) {
00341       for (int k = 1; k < fNGrid[2] - 1; ++k) {
00342     for (int crd = 0; crd < 3; ++crd) {
00343       fMap[i][j][k][crd] *= f;
00344       if (fabs(fMap[i][j][k][crd]) > fMaxB) {
00345         fMaxB = fabs(fMap[i][j][k][crd]);
00346       }
00347     }
00348       }
00349     }
00350   }
00351   // Calculate Bydl
00352   fBydl = 0;
00353   
00354   int ix = -fNGridMin[0];
00355   int iy = -fNGridMin[1];
00356   for (int i = 1; i < fNGrid[2] - 1; ++i) {
00357     fBydl += fGridLen[2] * fMap[ix][iy][i][1];
00358   }
00359   cout << "Bydl = " << fBydl << " kG*cm" << endl;
00360 }

void BFMagnet::SetByAtCenter ( double  by  ) 

Reinitializes B-field map, and scales it to get the right By at the central measurement point.

The reason for re-initializing the map is to avoid round-off errors, as this procedure will be used in fitting

Definition at line 414 of file BFMagnet.cxx.

References ByAtCenter(), ReadFieldMap(), and Scale().

Referenced by AlignChamW0::AdjustBField(), and gsFCN().

00415 {
00416   //ReadFieldMap();
00417   double byNow = ByAtCenter();
00418   if (fabs(byNow) < 0.1) {
00419     ReadFieldMap();
00420     byNow = ByAtCenter();
00421   }
00422   if (fabs((by - byNow) / byNow) > 1e-8) Scale(by / byNow);
00423 }

void BFMagnet::SetCenterPos ( double  x,
double  y,
double  z 
)

Shifts the center of the magnet to a given position.

Parameters:
x,y,z,: (x, y, z) coordinates of the magnet center

Definition at line 221 of file BFMagnet.cxx.

References fGridLen, fNGridMax, fNGridMin, fOffset, fZMax, and fZMin.

00222 {
00223   fOffset[0] = x;
00224   fOffset[1] = y;
00225   fOffset[2] = z;
00226   fZMin = fOffset[2] + ((double) fNGridMin[2]) * fGridLen[2];
00227   fZMax = fOffset[2] + ((double) fNGridMax[2]) * fGridLen[2];
00228 }

void BFMagnet::SetCenterPos ( const double *  pos  ) 

Shifts the center of the magnet to a given position.

Parameters:
pos - array of 3 doubles containing (x, y, z) of the magnet center

Definition at line 208 of file BFMagnet.cxx.

References fGridLen, fNGridMax, fNGridMin, fOffset, fZMax, and fZMin.

Referenced by config_bfield(), gsFCN(), Init(), TPCRHitFind::NewRun(), and RosieFCN().

00209 {
00210   for (int i = 0; i < 3; ++i) {
00211     fOffset[i] = pos[i];
00212   }
00213   fZMin = fOffset[2] + ((double) fNGridMin[2]) * fGridLen[2];
00214   fZMax = fOffset[2] + ((double) fNGridMax[2]) * fGridLen[2];
00215 }

void BFMagnet::SetUniformField ( const double *  b  ) 

This function sets the grid to a uniform field.

The feature may be useful for testing.

Parameters:
b - 3 components of the field in the region of the grid in kG

Definition at line 384 of file BFMagnet.cxx.

References fMap, and fNGrid.

Referenced by main().

00385 {
00386   for (int i = 0; i < fNGrid[0]; ++i) {
00387     for (int j = 0 ; j < fNGrid[1]; ++j) {
00388       for (int k = 0; k < fNGrid[2]; ++k) {
00389     for (int crd = 0; crd < 3; ++crd) {
00390       fMap[i][j][k][crd] = b[crd];
00391     }
00392       }
00393     }
00394   }
00395 }

double BFMagnet::ZMax (  )  const [inline]

Definition at line 34 of file BFMagnet.h.

References fZMax.

Referenced by config_bfield(), InitZslices(), main(), and SPTrack::ROSYBdL().

00034 {return fZMax;}

double BFMagnet::ZMin (  )  const [inline]

Definition at line 33 of file BFMagnet.h.

References fZMin.

Referenced by config_bfield(), InitZslices(), main(), and SPTrack::ROSYBdL().

00033 {return fZMin;}


Member Data Documentation

double BFMagnet::fBydl [private]

Calculated Bdl for x=y=0;.

Definition at line 85 of file BFMagnet.h.

Referenced by Bydl(), Init(), and Scale().

double BFMagnet::fGridLen[3] [private]

Grid spacing, in cm.

Definition at line 75 of file BFMagnet.h.

Referenced by BatX(), Init(), ReadFieldMap(), Scale(), and SetCenterPos().

int BFMagnet::fId [private]

Magnet's id (kJGG or kRosie).

Definition at line 67 of file BFMagnet.h.

Referenced by Init().

bool BFMagnet::fIsScaled [private]

Definition at line 83 of file BFMagnet.h.

Referenced by IsScaled(), and Scale().

double**** BFMagnet::fMap [private]

Array of grid measurements for each coordinate.

Definition at line 81 of file BFMagnet.h.

Referenced by BatX(), BfromMap(), ByAtCenter(), Init(), ReadFieldMap(), Scale(), and SetUniformField().

std::string BFMagnet::fMapFileName [private]

Definition at line 68 of file BFMagnet.h.

Referenced by Init(), and ReadFieldMap().

double BFMagnet::fMaxB [private]

Definition at line 82 of file BFMagnet.h.

Referenced by BatX(), ReadFieldMap(), and Scale().

int BFMagnet::fNGrid[3] [private]

Number of points in the grid in x, y, z.

Definition at line 70 of file BFMagnet.h.

Referenced by BatX(), BfromMap(), Init(), NGridX(), NGridY(), NGridZ(), ReadFieldMap(), Scale(), and SetUniformField().

int BFMagnet::fNGridMax[3] [private]

Maximum is calculated based on fNGrid and fNGridMin.

Definition at line 73 of file BFMagnet.h.

Referenced by ReadFieldMap(), and SetCenterPos().

int BFMagnet::fNGridMin[3] [private]

Point (0, 0, 0) is at the center, minimum is adjusted accordingly.

Definition at line 72 of file BFMagnet.h.

Referenced by BatX(), ByAtCenter(), Init(), MinGridX(), MinGridY(), MinGridZ(), ReadFieldMap(), Scale(), and SetCenterPos().

double BFMagnet::fOffset[3] [private]

Magnet center in cm.

Definition at line 76 of file BFMagnet.h.

Referenced by BatX(), CenterPos(), and SetCenterPos().

BFMagnet * BFMagnet::fsMagnet = {0, 0} [static, private]

Definition at line 65 of file BFMagnet.h.

Referenced by JGG(), and Rosie().

double BFMagnet::fZMax [private]

Maximum z where field is non-zero.

Definition at line 79 of file BFMagnet.h.

Referenced by SetCenterPos(), and ZMax().

double BFMagnet::fZMin [private]

Minimum z where field is non-zero.

Definition at line 78 of file BFMagnet.h.

Referenced by SetCenterPos(), and ZMin().


The documentation for this class was generated from the following files:
Generated on Mon Nov 23 08:03:59 2009 for MIPP(E907) by  doxygen 1.4.7