Print

Print


Commit in lcdd on MAIN
include/G4RZFieldMap.hh+6-11.4 -> 1.5
src/G4RZFieldMap.cc+40-151.5 -> 1.6
+46-16
2 modified files
Derived min and max values from count and bin size.

lcdd/include
G4RZFieldMap.hh 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- G4RZFieldMap.hh	31 Aug 2005 18:29:59 -0000	1.4
+++ G4RZFieldMap.hh	31 Aug 2005 18:56:57 -0000	1.5
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/lcdd/include/G4RZFieldMap.hh,v 1.4 2005/08/31 18:29:59 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/include/G4RZFieldMap.hh,v 1.5 2005/08/31 18:56:57 jeremy Exp $
 
 #ifndef G4RZFieldMap_hh
 #define G4RZFieldMap_hh 1
@@ -19,11 +19,13 @@
 {
 
 public:
+
   G4RZFieldMap(int numBinsR,
 	       int numBinsZ,
 	       double gridSizeR,
 	       double gridSizeZ,
 	       std::vector<RZBData> fieldData);
+
   virtual ~G4RZFieldMap();
 
 public:
@@ -46,6 +48,9 @@
   double m_gridSizeR;
   double m_gridSizeZ;
 
+  double m_maxR;
+  double m_maxZ;
+
   double** m_BrArray;
   double** m_BzArray;
 };

lcdd/src
G4RZFieldMap.cc 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- G4RZFieldMap.cc	31 Aug 2005 18:30:01 -0000	1.5
+++ G4RZFieldMap.cc	31 Aug 2005 18:56:57 -0000	1.6
@@ -1,10 +1,13 @@
-// $Header: /cvs/lcd/lcdd/src/G4RZFieldMap.cc,v 1.5 2005/08/31 18:30:01 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/src/G4RZFieldMap.cc,v 1.6 2005/08/31 18:56:57 jeremy Exp $
 #include "G4RZFieldMap.hh"
 
 #include "globals.hh"
 
 #include <cmath>
 
+using std::cout;
+using std::endl;
+
 G4RZFieldMap::G4RZFieldMap(int numBinsR,
 			   int numBinsZ,
 			   double gridSizeR,
@@ -17,6 +20,25 @@
     m_BrArray(0),
     m_BzArray(0)
 {
+  if ( numBinsR < 2 ) {
+    G4Exception("numBinsR must be >= 2");
+  }
+
+  if ( numBinsZ < 2 ) {
+    G4Exception("numBinsZ must be >= 2");
+  }
+
+  if ( gridSizeR <= 0 ) {
+    G4Exception("gridSizeR must be >= 0");
+  }
+
+  if ( gridSizeZ <= 0 ) {
+    G4Exception("gridSizeZ must be >= 0");
+  }
+
+  m_maxR = ( numBinsR - 1 ) * m_gridSizeR;
+  m_maxZ = ( numBinsZ - 1 ) * m_gridSizeZ;
+
   initializeArrays();
   fillArrays(fieldData);
 }
@@ -53,14 +75,14 @@
   delete[] m_BzArray;
 }
 
-/*
+/**
  * Compute B field at given point using the arrays of Br and Bz field strengths.
  *
  * This function is based on Takashi's FORTRAN code at
  *
  * /afs/slac/www/accel/nlc/local/systems/beamdelivery/geant/SDNEW/solenoid.f
  *
- * via RZBFieldProvider.cpp test code provided by Norman.
+ * via the RZBFieldProvider.cpp test code provided by Norman.
  *
  */
 void G4RZFieldMap::GetFieldValue( const double Point[3], double *Bfield ) const
@@ -71,8 +93,7 @@
   double hz = 0;
   double hr = 0;
 
-  /* hard-coded max values??? */
-  if(fabs(z)>630.0 || r>660.0) {
+  if(fabs(z)>m_maxZ || r>m_maxR) {
     hz = 0.0;
     hr = 0.0;
     return;
@@ -81,9 +102,9 @@
   int iz = (int) ((fabs(z)+0.001)/m_gridSizeZ);
   int ir = (int) ((r+0.001)/m_gridSizeR);
 
-  std::cout << "dz " << m_gridSizeZ << " dr " << m_gridSizeR << std::endl;
-  std::cout << "z " << z << " r " << r << std::endl;
-  std::cout << "iz " << iz << " ir " << ir << std::endl;
+  cout << "dz " << m_gridSizeZ << " dr " << m_gridSizeR << endl;
+  cout << "z " << z << " r " << r << endl;
+  cout << "iz " << iz << " ir " << ir << endl;
   iz = iz;
   ir = ir;
 
@@ -103,7 +124,7 @@
   double bz0 = m_BzArray[iz][ir];
   double br0 = m_BrArray[iz][ir];
 
-  //cout << "bz0 " << bz0 << " br0 " << br0 << endl;
+  cout << "bz0 " << bz0 << " br0 " << br0 << endl;
 
   double delz = 0.;
   double delr = 0.;
@@ -115,19 +136,19 @@
     delr = r - float(ir) * m_gridSizeR;
     brdz = (m_BrArray[iz+1][ir]-br0)/m_gridSizeZ;
     brdr = (m_BrArray[iz][ir+1]-br0)/m_gridSizeR;
-    std::cout << "br= " << m_BrArray[iz+1][ir] << " " << m_BrArray[iz][ir+1] << std::endl;
+    cout << "br= " << m_BrArray[iz+1][ir] << " " << m_BrArray[iz][ir+1] << endl;
   }
 
   delz = fabs(z) - float(iz) * m_gridSizeZ;
 
-  //cout << " z " << z << " abs(z) " << abs(z) << " iz " << iz << endl;
-  //cout << " float(iz-1) " << float(iz-1) << " dz " << dz << endl;
-  //cout << " delz " << delz << endl;
+  cout << " z " << z << " abs(z) " << fabs(z) << " iz " << iz << endl;
+  cout << " float(iz-1) " << float(iz-1) << " dz " << m_gridSizeZ << endl;
+  cout << " delz " << delz << endl;
 
   double bzdz = (m_BzArray[iz+1][ir]-bz0)/m_gridSizeZ;
   double bzdr = (m_BzArray[iz][ir+1]-bz0)/m_gridSizeR;
 
-  //cout << "bz= " << bz[iz+1][ir] << " " << bz[iz][ir+1] << endl;
+  cout << "bz= " << m_BzArray[iz+1][ir] << " " << m_BzArray[iz][ir+1] << endl;
 
   if(izfar==1) {
     hz = bz0+bzdr*delr;
@@ -149,9 +170,13 @@
   Bfield[2] = hz;
 
   /* flip sign for negative z */
-  if ( Point[2] < 0. ) {
+  if ( z < 0. ) {
     Bfield[2] = -Bfield[2];
   }
+
+  cout << "Bfield XYZ = " << Bfield[0] << " " << Bfield[1] << " " << Bfield[2] << endl;
+
+  cout << endl;
 }
 
 void G4RZFieldMap::initializeArrays()
CVSspam 0.2.8