Print

Print


Author: [log in to unmask]
Date: Wed Apr 27 12:24:38 2016
New Revision: 4349

Log:
Add ecal crystal positions to database and provide simple conditions API class for accessing them.

Added:
    java/branches/HPSJAVA-409/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalPosition.java
    java/branches/HPSJAVA-409/detector-model/src/test/java/org/hps/detector/ecal/EcalCrystalPositionTest.java
Modified:
    java/branches/HPSJAVA-409/detector-model/pom.xml

Added: java/branches/HPSJAVA-409/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalPosition.java
 =============================================================================
--- java/branches/HPSJAVA-409/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalPosition.java	(added)
+++ java/branches/HPSJAVA-409/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalPosition.java	Wed Apr 27 12:24:38 2016
@@ -0,0 +1,53 @@
+package org.hps.conditions.ecal;
+
+import org.hps.conditions.api.BaseConditionsObject;
+import org.hps.conditions.api.BaseConditionsObjectCollection;
+import org.hps.conditions.database.Field;
+import org.hps.conditions.database.Table;
+
+/**
+ * Stores information about front and back ECal crystal positions relative to the target.
+ * 
+ * @author jeremym
+ */
+@Table(names = {"ecal_crystal_positions"})
+public class EcalCrystalPosition extends BaseConditionsObject {
+
+    public static class EcalCrystalPositionCollection extends BaseConditionsObjectCollection<EcalCrystalPosition> {
+    }
+
+    @Field(names = {"ecal_channel_id"})
+    public int getChannelId() {       
+        return this.getFieldValue("ecal_channel_id");
+    }
+
+    @Field(names = {"front_x"})
+    public double getFrontX() {
+        return this.getFieldValue("front_x");
+    }
+
+    @Field(names = {"front_y"})
+    public double getFrontY() {
+        return this.getFieldValue("front_y");
+    }
+
+    @Field(names = {"front_z"})
+    public double getFrontZ() {
+        return this.getFieldValue("front_z");
+    }
+
+    @Field(names = {"back_x"})
+    public double getBackX() {
+        return this.getFieldValue("back_x");
+    }
+
+    @Field(names = {"back_y"})
+    public double getBackY() {
+        return this.getFieldValue("back_y");
+    }
+
+    @Field(names = {"back_z"})
+    public double getBackZ() {
+        return this.getFieldValue("back_z");
+    }
+}

Modified: java/branches/HPSJAVA-409/detector-model/pom.xml
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/pom.xml	(original)
+++ java/branches/HPSJAVA-409/detector-model/pom.xml	Wed Apr 27 12:24:38 2016
@@ -46,6 +46,7 @@
                     <excludes>
                         <exclude>org/hps/detector/svt/TestRunSvtDetectorSetupTest.java</exclude>
                         <exclude>org/hps/detector/SvtAlignmentTest.java</exclude>
+                        <exclude>org/hps/detector/ecal/EcalCrystalPositionTest.java</exclude>
                     </excludes>
                 </configuration>
             </plugin>

Added: java/branches/HPSJAVA-409/detector-model/src/test/java/org/hps/detector/ecal/EcalCrystalPositionTest.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/test/java/org/hps/detector/ecal/EcalCrystalPositionTest.java	(added)
+++ java/branches/HPSJAVA-409/detector-model/src/test/java/org/hps/detector/ecal/EcalCrystalPositionTest.java	Wed Apr 27 12:24:38 2016
@@ -0,0 +1,40 @@
+package org.hps.detector.ecal;
+
+import junit.framework.TestCase;
+
+import org.hps.conditions.database.DatabaseConditionsManager;
+import org.hps.conditions.ecal.EcalChannel;
+import org.hps.conditions.ecal.EcalCrystalPosition;
+import org.hps.conditions.ecal.EcalChannel.EcalChannelCollection;
+import org.hps.conditions.ecal.EcalCrystalPosition.EcalCrystalPositionCollection;
+
+
+/**
+ * Simplistic test of loading ECal crystal positions from the conditions database
+ * and associating to an ecal channel object.
+ * <p>
+ * This test must go into the <i>detector-model</i> module because the detector
+ * converters are not available in the <i>conditions</i> package. 
+ * 
+ * @author jeremym
+ */
+public class EcalCrystalPositionTest extends TestCase {
+    
+    public void testEcalCrystalPositions() throws Exception {
+        DatabaseConditionsManager mgr = DatabaseConditionsManager.getInstance();
+        mgr.setDetector("HPS-PhysicsRun2016-Nominal-v4-4", 0); /* any run number and detector will work here */
+        
+        EcalCrystalPositionCollection positions = 
+                mgr.getCachedConditions(EcalCrystalPositionCollection.class, "ecal_crystal_positions").getCachedData();
+        EcalChannelCollection channels = 
+                mgr.getCachedConditions(EcalChannelCollection.class, "ecal_channels").getCachedData();
+        
+        for (EcalCrystalPosition position : positions) {
+            int channelId = position.getChannelId();
+            EcalChannel channel = channels.findChannel(channelId);
+            System.out.println(channel);
+            System.out.println(position);
+            System.out.println();
+        }
+    }
+}