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(); + } + } +}