Print

Print


Author: [log in to unmask]
Date: Thu Mar  5 21:16:27 2015
New Revision: 2293

Log:
Add class that maps between EcalCrystal and EcalChannel objects.

Added:
    java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalChannelMap.java

Added: java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalChannelMap.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalChannelMap.java	(added)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalChannelMap.java	Thu Mar  5 21:16:27 2015
@@ -0,0 +1,45 @@
+package org.hps.conditions.ecal;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.hps.conditions.ecal.EcalChannel.EcalChannelCollection;
+import org.lcsim.detector.converter.compact.EcalCrystal;
+import org.lcsim.detector.converter.compact.HPSEcalAPI;
+
+/**
+ * This is a convenience utility for associating the geometric crystal
+ * objects with the conditions system channel information.  
+ * 
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+final class EcalCrystalChannelMap {
+    
+    Map<EcalCrystal, EcalChannel> crystalMap = new HashMap<EcalCrystal, EcalChannel>();
+    
+    /**
+     * Creates the map between crystals and channels.
+     * @param api The ECAL API.
+     * @param channels The list of channels.
+     */
+    EcalCrystalChannelMap(HPSEcalAPI api, EcalChannelCollection channels) {
+        List<EcalCrystal> crystals = api.getCrystals();        
+        for (EcalCrystal crystal : crystals) {
+            EcalChannel channel = channels.findGeometric(crystal.getIdentifier().getValue());
+            if (channel == null) {
+                throw new RuntimeException("ECAL channel was not found for ID: " + crystal.getExpandedIdentifier());
+            }
+            crystalMap.put(crystal, channel);
+        }
+    }
+    
+    /**
+     * Get a channel from a crystal.
+     * @param crystal The geometry object.
+     * @return The channel information or null if does not exist.
+     */
+    EcalChannel getEcalChannel(EcalCrystal crystal) {
+        return crystalMap.get(crystal);
+    }    
+}