6 modified files
lcsim/src/org/lcsim/event/base
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
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
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
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
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
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