package hep.physics.event;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* A simple implementation of HEPEvent
* @author Tony Johnson
*/
public class BaseEvent implements HEPEvent
{
private int run;
private int event;
private long timestamp;
private Map keyMap = new HashMap();
private Map tagMap;
/**
*
* @param run The run number
* @param event Create a new event. The timestamp will be set
* to the current time.
*/
public BaseEvent(int run, int event)
{
this(run,event,System.currentTimeMillis()*1000000);
}
/**
* Create a new event with an explicit timestamp
* @param run Teh run number
* @param event The event number
* @param timestamp The timestamp. By convention this is measured in nS since
* 1-jan-1970 GMT.
*/
public BaseEvent(int run, int event, long timestamp)
{
this.run = run;
this.event = event;
this.timestamp = timestamp;
}
public Object get(String key)
{
Object result = keyMap.get(key);
if (result == null) throw new IllegalArgumentException("Unknown event component "+key);
return result;
}
public int getEventNumber()
{
return event;
}
public int getRunNumber()
{
return run;
}
public Map getTags()
{
return tagMap == null ? Collections.EMPTY_MAP : tagMap;
}
public Set keys()
{
return keyMap.keySet();
}
public void put(String key, Object component)
{
keyMap.put(key,component);
}
public long getTimeStamp()
{
return timestamp;
}
}