Commit in hps-java/src/main/java/org/lcsim/hps/recon/tracking on MAIN
HPSSVTCalibrationConstants.java+64-61.16 -> 1.17
Gain and offset are now loaded from the conditions database

hps-java/src/main/java/org/lcsim/hps/recon/tracking
HPSSVTCalibrationConstants.java 1.16 -> 1.17
diff -u -r1.16 -r1.17
--- HPSSVTCalibrationConstants.java	15 Aug 2012 02:54:33 -0000	1.16
+++ HPSSVTCalibrationConstants.java	28 Aug 2012 07:11:08 -0000	1.17
@@ -15,21 +15,26 @@
 /**
  *
  * @author Mathew Graham <[log in to unmask]>
- * $Id: HPSSVTCalibrationConstants.java,v 1.16 2012/08/15 02:54:33 omoreno Exp $
+ * $Id: HPSSVTCalibrationConstants.java,v 1.17 2012/08/28 07:11:08 omoreno Exp $
  */
 public class HPSSVTCalibrationConstants {
 
 	// TODO: Change all pairs such that FPGA is the fist value
 	// TODO: Change all map keys to type SiSensor?
 	
-    public static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, double[] /* constants */> noiseMap 
+    private static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, double[] /* constants */> noiseMap 
     	= new HashMap<Pair<Integer, Integer>, double[]>();
-    public static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, double[] /* constants */> pedestalMap 
+    private static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, double[] /* constants */> pedestalMap 
     	= new HashMap<Pair<Integer, Integer>, double[]>();
-    public static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, double[] /* constants */> tpMap 
+    private static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, double[] /* constants */> tpMap 
     	= new HashMap<Pair<Integer, Integer>, double[]>();
-    public static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, Set<Integer> /* Bad channels */> badChannelMap
+    private static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, Set<Integer> /* Bad channels */> badChannelMap
     	= new HashMap<Pair<Integer, Integer>, Set<Integer>>();
+    private static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, List<Double> /* channels */> gainMap 
+    	= new HashMap<Pair<Integer, Integer>, List<Double>>();
+    private static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, List<Double> /* channels */> offsetMap 
+    	= new HashMap<Pair<Integer, Integer>, List<Double>>();
+
     private static boolean pedestalLoaded = false;
     private static boolean tpLoaded = false;
     private static int totalBadChannels = 0;
@@ -47,6 +52,7 @@
     public static void loadCalibrationConstants(Date date, int runNumber){
     	loadCalibrationConstants(date);
     	loadBadChannels(runNumber);
+        loadGain();
     }
 
     public static void loadCalibrationConstants(Date date) {
@@ -235,7 +241,7 @@
      * 
      * @param reader : character stream of type Reader
      */
-    public static void loadBadChannels(Reader reader){
+    private static void loadBadChannels(Reader reader){
     	BufferedReader badChannelReader = new BufferedReader(reader);
     	
     	String line = null;
@@ -260,6 +266,44 @@
     	}
     }
 
+    /**
+     *
+     */
+    private static void loadGain(){
+        
+            System.out.println("Loading SVT gains ...");
+
+            ConditionsManager conditions = ConditionsManager.defaultInstance();
+            BufferedReader gainReader;
+        
+            String filePath = "calibSVT/svt_default.gain";
+            String line = null;
+            try{
+                gainReader = new BufferedReader(conditions.getRawConditions(filePath).getReader());
+                while((line = gainReader.readLine()) != null){
+                    // If the line is a comment, skip it
+                    if(line.indexOf("#") != -1) continue;
+                    StringTokenizer stringTok = new StringTokenizer(line);
+                    while(stringTok.hasMoreTokens()){
+                        int fpga = Integer.valueOf(stringTok.nextToken());
+                        int hybrid = Integer.valueOf(stringTok.nextToken());
+                        int channel = Integer.valueOf(stringTok.nextToken());
+                        double gain = Double.valueOf(stringTok.nextToken());
+                        double offset = Double.valueOf(stringTok.nextToken());
+                        Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(hybrid, fpga);
+                        if(!gainMap.containsKey(daqPair))
+                            gainMap.put(daqPair, new ArrayList<Double>());
+                        gainMap.get(daqPair).add(channel, gain);
+                        if(!offsetMap.containsKey(daqPair))
+                            offsetMap.put(daqPair, new ArrayList<Double>());
+                        offsetMap.get(daqPair).add(channel, offset);                     
+                   }    
+                }
+            } catch(IOException exception){
+                throw new RuntimeException("Unable to load gains!", exception);
+            }
+    }
+
     public static Double getNoise(SiSensor sensor, int channel) {
         Pair<Integer, Integer> daqPair = SvtUtils.getInstance().getDaqPair(sensor);
         double[] noises = noiseMap.get(daqPair);
@@ -290,6 +334,20 @@
         }
     }
 
+    public static Double getGain(SiSensor sensor, int channel){
+        Pair<Integer, Integer> daqPair = SvtUtils.getInstance().getDaqPair(sensor);
+        List<Double> gain = gainMap.get(daqPair);
+        if(gain == null) return null;
+        else return gain.get(channel);
+    }
+
+    public static Double getOffset(SiSensor sensor, int channel){
+        Pair<Integer, Integer> daqPair = SvtUtils.getInstance().getDaqPair(sensor);
+        List<Double> offset = offsetMap.get(daqPair);
+        if(offset == null) return null;
+        else return offset.get(channel);
+    }
+
     public static ChannelConstants getChannelConstants(SiSensor sensor, int channel) {
         ChannelConstants constants = new ChannelConstants();
 
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1