Commit in lcsim/src/org/lcsim on MAIN
event/base/BaseLCSimEvent.java+231.4 -> 1.5
util/lcio/LCIOReader.java+3-21.6 -> 1.7
         /LCIORunHeader.java+6-21.1 -> 1.2
         /LCIOEvent.java+27-11.6 -> 1.7
         /LCIOWriter.java+27-91.11 -> 1.12
event/EventHeader.java+11-11.18 -> 1.19
+97-15
6 modified files
Add support for reading events with parameters, in particular weights

lcsim/src/org/lcsim/event/base
BaseLCSimEvent.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- BaseLCSimEvent.java	20 Aug 2008 00:59:46 -0000	1.4
+++ BaseLCSimEvent.java	2 Sep 2008 21:38:15 -0000	1.5
@@ -3,6 +3,7 @@
 import hep.physics.event.BaseEvent;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.IdentityHashMap;
@@ -230,6 +231,28 @@
     {
         return super.keys().contains(name);
     }
+    
+    public Map<String, int[]> getIntegerParameters()
+    {
+        return Collections.<String, int[]>emptyMap();
+
+    }
+
+    public Map<String, float[]> getFloatParameters()
+    {
+        return Collections.<String, float[]>emptyMap();
+
+    }
+
+    public Map<String, String[]> getStringParameters()
+    {
+        return Collections.<String, String[]>emptyMap();
+    }
+    
+    public float getWeight()
+    {
+        return 1.0f;
+    }
 
     private class MetaData implements LCMetaData
     {

lcsim/src/org/lcsim/util/lcio
LCIOReader.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- LCIOReader.java	17 Oct 2007 02:06:23 -0000	1.6
+++ LCIOReader.java	2 Sep 2008 21:38:15 -0000	1.7
@@ -50,11 +50,12 @@
          SIOBlock block = record.getBlock();
          int major = block.getMajorVersion() ;
          int minor = block.getMinorVersion() ;
-         if (( major < 1) && ( minor < 8))
+         int version = major*1000 + minor;
+         if (version < 8)
             throw new IOException("Sorry: files created with versions older than v00-08" + " are no longer supported !");
          
          SIOInputStream in = block.getData();
-         LCIOEvent event = new LCIOEvent(in);
+         LCIOEvent event = new LCIOEvent(in, version);
          
          record = reader.readRecord();
          name = record.getRecordName();

lcsim/src/org/lcsim/util/lcio
LCIORunHeader.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- LCIORunHeader.java	3 May 2005 02:04:41 -0000	1.1
+++ LCIORunHeader.java	2 Sep 2008 21:38:15 -0000	1.2
@@ -1,11 +1,13 @@
 package org.lcsim.util.lcio;
 
+import java.util.Map;
+
 /**
  * Not yet made public pending some thought about the right way to deal
  * with run headers.
  * @author tonyj
  */
- interface LCIORunHeader
+interface LCIORunHeader
 {
     int getRunNumber();
     
@@ -24,5 +26,7 @@
 
     /** Parameters defined for this run.
      */
-    //Properties getParameters();
+    Map<String,int[]> getIntegerParameters();
+    Map<String,float[]> getFloatParameters();
+    Map<String,String[]> getStringParameters();
 }

lcsim/src/org/lcsim/util/lcio
LCIOEvent.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- LCIOEvent.java	23 May 2008 03:12:10 -0000	1.6
+++ LCIOEvent.java	2 Sep 2008 21:38:15 -0000	1.7
@@ -15,9 +15,12 @@
 class LCIOEvent extends BaseLCSimEvent
 {
    private Map<String,String> blockMap;
+   private SIOLCParameters eventParameters;
+   private static final String WEIGHT = "_weight";
+
    
    /** Creates a new instance of LCIOEvent */
-   LCIOEvent(SIOInputStream in) throws IOException
+   LCIOEvent(SIOInputStream in, int version) throws IOException
    {
       this(in.readInt(),in.readInt(),in.readLong(),in.readString());
       
@@ -30,7 +33,30 @@
          
          blockMap.put(blockName, blockType);
       }
+      eventParameters = version > 1001 ? new SIOLCParameters(in) : new SIOLCParameters();
    }
+
+   public Map<String, float[]> getFloatParameters() 
+   {
+      return eventParameters.getFloatMap();
+   }
+
+   public Map<String, int[]> getIntegerParameters() 
+   {
+      return eventParameters.getIntMap();
+   }
+
+   public Map<String, String[]> getStringParameters() 
+   {
+      return eventParameters.getStringMap();
+   }
+   
+   public float getWeight()
+   {
+      float[] weights = getFloatParameters().get(WEIGHT);
+      return weights == null || weights.length == 0 ? 1.0f : weights[0];
+   }
+   
    private LCIOEvent(int run, int event, long time, String name)
    {
       super(run,event,name,time);

lcsim/src/org/lcsim/util/lcio
LCIOWriter.java 1.11 -> 1.12
diff -u -r1.11 -r1.12
--- LCIOWriter.java	4 Jun 2008 18:19:05 -0000	1.11
+++ LCIOWriter.java	2 Sep 2008 21:38:15 -0000	1.12
@@ -182,9 +182,10 @@
             out.writeString(entry.getKey());
             out.writeString(entry.getValue());
          }
-         out.writeInt(0);
-         out.writeInt(0);
-         out.writeInt(0);
+         Map<String,int[]> intMap = event.getIntegerParameters();
+         Map<String,float[]> floatMap = event.getFloatParameters();
+         Map<String,String[]> stringMap = event.getStringParameters();
+         SIOLCParameters.write(intMap,floatMap,stringMap,out);
          out.close();
       }
       else
@@ -214,9 +215,10 @@
       String[] active = header.getActiveSubdetectors();
       out.writeInt(active.length);
       for (int i=0; i<active.length; i++) out.writeString(active[i]);
-      out.writeInt(0);
-      out.writeInt(0);
-      out.writeInt(0);
+      Map<String,int[]> intMap = header.getIntegerParameters();
+      Map<String,float[]> floatMap = header.getFloatParameters();
+      Map<String,String[]> stringMap = header.getStringParameters();
+      SIOLCParameters.write(intMap,floatMap,stringMap,out);
       out.close();
    }
    public void write(EventHeader event) throws IOException
@@ -226,7 +228,7 @@
          lastRunNumber = event.getRunNumber();
          lastDetectorName = event.getDetectorName();
          if (lastDetectorName == null) lastDetectorName = "";
-         write(new DefaultRunHeader(lastRunNumber,lastDetectorName));
+         write(new DefaultRunHeader(lastRunNumber,lastDetectorName,new SIOLCParameters()));
       }
       writer.createRecord(LCIOConstants.eventHeaderRecordName,true);
       writeData(event,true);
@@ -243,10 +245,12 @@
       private final int run;
       private final String name;
       private final static String[] noDetectors = new String[0];
-      DefaultRunHeader(int run, String name)
+      private SIOLCParameters runParameters;
+      DefaultRunHeader(int run, String name, SIOLCParameters runParameters)
       {
          this.run = run;
          this.name = name;
+         this.runParameters = runParameters;
       }
       
       public String[] getActiveSubdetectors()
@@ -268,7 +272,21 @@
       {
          return run;
       }
-      
+
+      public Map<String, float[]> getFloatParameters() 
+      {
+         return runParameters.getFloatMap();
+      }
+
+      public Map<String, int[]> getIntegerParameters() 
+      {
+         return runParameters.getIntMap();
+      }
+
+      public Map<String, String[]> getStringParameters() 
+      {
+         return runParameters.getStringMap();
+      } 
    }
    private boolean isValidCollectionName(String name)
    {

lcsim/src/org/lcsim/event
EventHeader.java 1.18 -> 1.19
diff -u -r1.18 -r1.19
--- EventHeader.java	23 May 2008 09:54:15 -0000	1.18
+++ EventHeader.java	2 Sep 2008 21:38:15 -0000	1.19
@@ -10,7 +10,7 @@
  * The event header from which information about the rest of the event
  * can be obtained.
  * @author Tony Johnson
- * @version $Id: EventHeader.java,v 1.18 2008/05/23 09:54:15 jeremy Exp $
+ * @version $Id: EventHeader.java,v 1.19 2008/09/02 21:38:15 tonyj Exp $
  */
 public interface EventHeader extends MCEvent
 {
@@ -104,6 +104,16 @@
    boolean hasItem(String name);
    
    /**
+    * Get the event weight
+    * @return The weight
+    */
+   float getWeight();
+   
+   Map<String,int[]> getIntegerParameters();
+   Map<String,float[]> getFloatParameters();
+   Map<String,String[]> getStringParameters();
+   
+   /**
     * List of elements stored in the event may have meta-data associated with
     * them. This interface allows this meta-data to be extracted.
     * LCIO allows arbitrary maps of int, float or strings to be stored 
CVSspam 0.2.8