Print

Print


Author: [log in to unmask]
Date: Thu Aug 20 06:59:58 2015
New Revision: 3376

Log:
adding reader for new style gains file

Modified:
    java/branches/ecal-branch-442/ecal-recon/src/main/java/org/hps/recon/ecal/IterateGainFactorDriver.java

Modified: java/branches/ecal-branch-442/ecal-recon/src/main/java/org/hps/recon/ecal/IterateGainFactorDriver.java
 =============================================================================
--- java/branches/ecal-branch-442/ecal-recon/src/main/java/org/hps/recon/ecal/IterateGainFactorDriver.java	(original)
+++ java/branches/ecal-branch-442/ecal-recon/src/main/java/org/hps/recon/ecal/IterateGainFactorDriver.java	Thu Aug 20 06:59:58 2015
@@ -99,7 +99,58 @@
         e.printStackTrace();
       }
     }
-    
+   
+    /**
+     * Read in a text file that has successive multiplicative factors on the
+     * original gain values.  Number of columns is 2+N, where N is the number
+     * of iterations that have been done so far.  The net multiplicative factor
+     * is the product of all columns after the first two.  If there's only
+     * two columns, the net multiplicative factor will be 1.
+     *
+     * channel_id originalGain [multiplicativeGain1 [multiplicativeGain2] ... ]
+     */
+    private Map<Integer,Double> gainFileGains2 = new HashMap<Integer,Double>();
+    public String gainFileName2 = null;
+    private void readGainFile2()
+    {
+      gainFileGains.clear();
+      System.out.println("Reading ECal Gain Factors from:  "+gainFileName);
+      File file = new File(gainFileName);
+      try {
+        FileReader reader = new FileReader(file);
+        char[] chars = new char[(int) file.length()];
+        reader.read(chars);
+        String content = new String(chars);
+        reader.close();
+        String lines[]=content.split("\n");
+        int nlines = 0;
+        for (String line : lines) {
+          String columns[] = line.split(" ");
+          if (nlines++ > 0) {
+        	if (columns.length < 2) {
+              System.err.println("Insufficient columns in ECal Gain File.");
+              System.exit(2);
+        	}
+        	double gain=1;
+        	for (int ii=2; ii<columns.length; ii++) {
+        		gain *= Double.valueOf(columns[ii]);
+        	}
+            final int channelid = Integer.valueOf(columns[0]);
+            if (gainFileGains2.containsKey(channelid)) {
+              System.err.println("Duplicate Entries in ECal Gain File.");
+              System.exit(2);
+            }
+            gainFileGains2.put(channelid,gain);
+          }
+        }
+        if (nlines != 442+1) {
+          System.err.println("Invalid Gain File.");
+          System.exit(3);
+        }
+      } catch (IOException e) {
+        e.printStackTrace();
+      }
+    }
     
     @Override
     public void detectorChanged(Detector detector) {