lcdd/src
diff -u -r1.6 -r1.7
--- G4RZFieldMap.cc 31 Aug 2005 18:56:57 -0000 1.6
+++ G4RZFieldMap.cc 31 Aug 2005 22:08:20 -0000 1.7
@@ -1,12 +1,17 @@
-// $Header: /cvs/lcd/lcdd/src/G4RZFieldMap.cc,v 1.6 2005/08/31 18:56:57 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/src/G4RZFieldMap.cc,v 1.7 2005/08/31 22:08:20 jeremy Exp $
#include "G4RZFieldMap.hh"
#include "globals.hh"
#include <cmath>
+//#define FIELD_MAP_DEBUG 1
+
+#ifdef FIELD_MAP_DEBUG
+#include <iostream>
using std::cout;
using std::endl;
+#endif
G4RZFieldMap::G4RZFieldMap(int numBinsR,
int numBinsZ,
@@ -43,6 +48,26 @@
fillArrays(fieldData);
}
+void G4RZFieldMap::initializeArrays()
+{
+ /* Make two 2D arrays of numBinsZ x numBinsR */
+ m_BrArray = new double*[m_numBinsZ];
+ m_BzArray = new double*[m_numBinsZ];
+
+ for (int i=0; i<m_numBinsZ; i++) {
+ m_BrArray[i] = new double[m_numBinsR];
+ m_BzArray[i] = new double[m_numBinsR];
+ }
+
+ /* Init arrays to all 0's */
+ for ( int i=0; i<m_numBinsZ; i++) {
+ for ( int j=0; j<m_numBinsR; j++) {
+ m_BrArray[i][j]=0;
+ m_BzArray[i][j]=0;
+ }
+ }
+}
+
void G4RZFieldMap::fillArrays(std::vector<RZBData> fieldData)
{
for ( std::vector<RZBData>::iterator iter = fieldData.begin();
@@ -55,8 +80,14 @@
int ir=(int) ((rzb.r() + 0.0001)/m_gridSizeR);
ir = ir;
- m_BzArray[iz][ir] = rzb.Br();
- m_BrArray[iz][ir] = rzb.Bz();
+ m_BzArray[iz][ir] = rzb.Bz();
+ m_BrArray[iz][ir] = rzb.Br();
+
+#ifdef FIELD_MAP_DEBUG
+ cout << "ir iz = " << ir << " " << iz << endl;
+ cout << "Br Bz = " << m_BrArray[iz][ir] << " " << m_BzArray[iz][ir] << endl;
+ cout << endl;
+#endif
}
}
@@ -67,7 +98,7 @@
void G4RZFieldMap::deleteArrays()
{
- for (int i=0; i<m_numBinsR; i++) {
+ for (int i=0; i<m_numBinsZ; i++) {
delete[] m_BrArray[i];
delete[] m_BzArray[i];
}
@@ -87,6 +118,10 @@
*/
void G4RZFieldMap::GetFieldValue( const double Point[3], double *Bfield ) const
{
+#ifdef FIELD_MAP_DEBUG
+ cout << "Point = " << Point[0] << " " << Point[1] << " " << Point[2] << endl;
+#endif
+
double r = sqrt( ( Point[0] * Point[0] ) + ( Point[1] * Point[1] ) );
double z = Point[2];
@@ -94,24 +129,27 @@
double hr = 0;
if(fabs(z)>m_maxZ || r>m_maxR) {
- hz = 0.0;
- hr = 0.0;
+#ifdef FIELD_MAP_DEBUG
+ cout << "OUT OF RANGE: z r = " << fabs(z) << " " << r << endl;
+ cout << "MAX: maxZ maxR " << m_maxZ << " " << m_maxR << endl;
+#endif
return;
}
int iz = (int) ((fabs(z)+0.001)/m_gridSizeZ);
int ir = (int) ((r+0.001)/m_gridSizeR);
+#ifdef FIELD_MAP_DEBUG
cout << "dz " << m_gridSizeZ << " dr " << m_gridSizeR << endl;
cout << "z " << z << " r " << r << endl;
cout << "iz " << iz << " ir " << ir << endl;
- iz = iz;
- ir = ir;
+#endif
// outside
if(iz<0 || ir>m_numBinsR) {
- hz = 0.0;
- hr = 0.0;
+#ifdef FIELD_MAP_DEBUG
+ cout << "BIN OVERFLOW: iz ir = " << iz << " " << ir << endl;
+#endif
return;
}
@@ -124,7 +162,9 @@
double bz0 = m_BzArray[iz][ir];
double br0 = m_BrArray[iz][ir];
+#ifdef FIELD_MAP_DEBUG
cout << "bz0 " << bz0 << " br0 " << br0 << endl;
+#endif
double delz = 0.;
double delr = 0.;
@@ -136,19 +176,25 @@
delr = r - float(ir) * m_gridSizeR;
brdz = (m_BrArray[iz+1][ir]-br0)/m_gridSizeZ;
brdr = (m_BrArray[iz][ir+1]-br0)/m_gridSizeR;
+#ifdef FIELD_MAP_DEBUG
cout << "br= " << m_BrArray[iz+1][ir] << " " << m_BrArray[iz][ir+1] << endl;
+#endif
}
delz = fabs(z) - float(iz) * m_gridSizeZ;
+#ifdef FIELD_MAP_DEBUG
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;
+#endif
double bzdz = (m_BzArray[iz+1][ir]-bz0)/m_gridSizeZ;
double bzdr = (m_BzArray[iz][ir+1]-bz0)/m_gridSizeR;
+#ifdef FIELD_MAP_DEBUG
cout << "bz= " << m_BzArray[iz+1][ir] << " " << m_BzArray[iz][ir+1] << endl;
+#endif
if(izfar==1) {
hz = bz0+bzdr*delr;
@@ -174,27 +220,8 @@
Bfield[2] = -Bfield[2];
}
+#ifdef FIELD_MAP_DEBUG
cout << "Bfield XYZ = " << Bfield[0] << " " << Bfield[1] << " " << Bfield[2] << endl;
-
cout << endl;
-}
-
-void G4RZFieldMap::initializeArrays()
-{
- /* Make two 2D arrays of numBinsR x numBinsZ */
- m_BrArray = new double*[m_numBinsR];
- m_BzArray = new double*[m_numBinsR];
-
- for (int i=0; i<m_numBinsR; i++) {
- m_BrArray[i] = new double[m_numBinsZ];
- m_BzArray[i] = new double[m_numBinsZ];
- }
-
- /* Init arrays to all 0's */
- for ( int i=0; i<m_numBinsR; i++) {
- for ( int j=0; j<m_numBinsZ; j++) {
- m_BrArray[i][j]=0;
- m_BzArray[i][j]=0;
- }
- }
+#endif
}