Author: [log in to unmask] Date: Fri Jan 16 17:40:59 2015 New Revision: 1954 Log: Add AIDA tuple output to beam conditions test. Modified: java/trunk/conditions/src/test/java/org/hps/conditions/beam/BeamConditionsTest.java Modified: java/trunk/conditions/src/test/java/org/hps/conditions/beam/BeamConditionsTest.java ============================================================================= --- java/trunk/conditions/src/test/java/org/hps/conditions/beam/BeamConditionsTest.java (original) +++ java/trunk/conditions/src/test/java/org/hps/conditions/beam/BeamConditionsTest.java Fri Jan 16 17:40:59 2015 @@ -1,5 +1,14 @@ package org.hps.conditions.beam; +import hep.aida.IAnalysisFactory; +import hep.aida.ITree; +import hep.aida.ITuple; + +import java.io.File; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; import java.util.logging.Level; import junit.framework.TestCase; @@ -7,6 +16,7 @@ import org.hps.conditions.beam.BeamConditions.BeamConditionsCollection; import org.hps.conditions.database.DatabaseConditionsManager; import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException; +import org.lcsim.util.test.TestUtil.TestOutputFile; /** * Load beam conditions for every run from the ECAL commissioning. @@ -38,6 +48,7 @@ DatabaseConditionsManager manager = new DatabaseConditionsManager(); manager.setLogLevel(Level.SEVERE); System.out.println("run id current position_x position_y energy"); + Map<Integer, BeamConditions> beamConditions = new LinkedHashMap<Integer, BeamConditions>(); for (int run : runs) { try { manager.setDetector("HPS-ECalCommissioning", run); @@ -54,6 +65,53 @@ System.out.print(beam.getPositionY() + " "); System.out.print(beam.getEnergy()); System.out.println(); + beamConditions.put(run, beam); } + writeBeamTuple(beamConditions); } + + static private void writeBeamTuple(Map<Integer, BeamConditions> beamConditions) { + + File dir = new TestOutputFile(BeamConditionsTest.class.getSimpleName()); + dir.mkdir(); + + IAnalysisFactory analysisFactory = IAnalysisFactory.create(); + ITree tree = null; + try { + tree = analysisFactory.createTreeFactory().create(dir.getPath() + File.separator + "BeamTuple.aida", "xml", false, true); + } catch (IllegalArgumentException | IOException e) { + throw new RuntimeException(e); + } + ITuple tuple = analysisFactory.createTupleFactory(tree).create("/Beam Tuple", "Beam Tuple", "int run, double current, position_x, position_y, energy"); + tuple.start(); + for (Entry<Integer, BeamConditions> entry : beamConditions.entrySet()) { + tuple.addRow(); + + Double current = entry.getValue().getCurrent(); + if (current == null) + current = 0.; + Double positionX = entry.getValue().getPositionX(); + if (positionX == null) + positionX = 0.; + Double positionY = entry.getValue().getPositionY(); + if (positionY == null) + positionY = 0.; + Double energy = entry.getValue().getEnergy(); + if (energy == null) + energy = 0.; + + tuple.fill(0, (int)entry.getKey()); + tuple.fill(1, (double)current); + tuple.fill(2, (double)positionX); + tuple.fill(3, (double)positionY); + tuple.fill(4, (double)energy); + tuple.next(); + } + + try { + tree.commit(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } }