lcsim/src/org/lcsim/mc/fast/tracking
diff -u -r1.1 -r1.2
--- LookupTable.java 1 Feb 2005 19:42:47 -0000 1.1
+++ LookupTable.java 26 Aug 2005 05:26:19 -0000 1.2
@@ -9,28 +9,49 @@
class LookupTable
{
+ // cosine theta
private double[] m_key1;
+ // momentum
private double[] m_key2;
private double[][] m_matrix;
private int m_numBins1;
private int m_numBins2;
- LookupTable(BufferedReader in) throws IOException
+ // vector units
+ // 1 dr [ cm ] 10.
+ // 2 dphi [ ] 1.
+ // 3 domega [ cm-1 ] .1
+ // 4 dz [ cm ] 10.
+ // 5 dlambda [ ] 1.
+ //
+ double[] conversionFromCmToMm = {10.0, 1.0, 0.1, 10.0, 1.0};
+
+ double[][] conversionFromCmToMmMatrix = { {100.00, 10.00, 1.00, 100.00, 10.00},
+ { 10.00, 1.00, 0.10, 10.00, 1.00},
+ { 1.00, 0.10, 0.01, 1.00, 0.10},
+ {100.00, 10.00, 1.00, 100.00, 10.00},
+ { 10.00, 1.00, 0.10, 10.00, 1.00} };
+
+ LookupTable(BufferedReader in, int iTerm, int jTerm) throws IOException
{
+ // read in the number of cosine theta points
int m_numBins1 = Integer.parseInt(in.readLine());
+
+ // read in the number of momentum points
int m_numBins2 = Integer.parseInt(in.readLine());
+
m_matrix = new double[m_numBins1][m_numBins2];
m_key1 = new double[m_numBins1];
m_key2 = new double[m_numBins2];
- for (int i = 0; i < m_numBins1; i++)
+ for (int i = 0; i < m_numBins1; i++) // i is # of cosine theta bin
{
- m_key1[i] = Double.valueOf(in.readLine()).doubleValue();
- for (int j = 0; j < m_numBins2; j++)
+ m_key1[i] = Double.valueOf(in.readLine()).doubleValue(); // cosine theta
+ for (int j = 0; j < m_numBins2; j++) // j is # of momentum bin
{
StringTokenizer t = new StringTokenizer(in.readLine());
m_key2[j] = Double.valueOf(t.nextToken()).doubleValue();
- m_matrix[i][j] = Double.valueOf(t.nextToken()).doubleValue();
+ m_matrix[i][j] = Double.valueOf(t.nextToken()).doubleValue()*conversionFromCmToMmMatrix[iTerm][jTerm]; // momentum
}
}
if (!in.readLine().equals("end"))