lcsim/src/org/lcsim/digisim
diff -N CalorimeterHitsDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ CalorimeterHitsDriver.java 20 Jul 2005 21:14:49 -0000 1.1
@@ -0,0 +1,60 @@
+package org.lcsim.digisim;
+
+import java.util.List;
+import java.util.ArrayList;
+import org.lcsim.util.Driver;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.RawCalorimeterHit;
+import org.lcsim.util.lcio.LCIOConstants;
+
+/**
+ * A driver to build calorimeter hit collections from raw hit collections.
+ *
+ * @author Guilherme Lima
+ * @version $Id: CalorimeterHitsDriver.java,v 1.1 2005/07/20 21:14:49 lima Exp $
+ */
+public class CalorimeterHitsDriver extends Driver {
+
+ /** constructor */
+ public CalorimeterHitsDriver() {
+ }
+
+ /** Called at the begin of job before anything is read.
+ * Used to initialize the driver, e.g. book histograms.
+ */
+ public void init() {
+ }
+
+// /** Called for every run.
+// */
+// public void processRunHeader( LCRunHeader run ) {};
+
+ /** Called for every event - the working horse.
+ */
+ protected void process( EventHeader event ) {
+ // get all raw hits in event
+ List<List<RawCalorimeterHit>> rawHitCollections
+ = event.get(RawCalorimeterHit.class);
+
+ for( List<RawCalorimeterHit> collection : rawHitCollections ) {
+ List<CalorimeterHit> calhitColl = new ArrayList<CalorimeterHit>();
+ for( RawCalorimeterHit rawhit : collection ) {
+ CalorimeterHit calhit = new MyCalorimeterHit(rawhit);
+ calhitColl.add(calhit);
+ }
+
+ // append collection to event
+ String rawName = event.getMetaData(collection).getName();
+ String newName = rawName.replace("Raw", "Digi");
+ int flag = 1 << LCIOConstants.CHBIT_ID1;
+ event.put( newName, calhitColl, CalorimeterHit.class, flag );
+ }
+ }
+
+ /** Called after data processing for clean up.
+ */
+ public void end() { }
+
+ //*** FIELDS ***
+}
lcsim/src/org/lcsim/digisim
diff -N MyCalorimeterHit.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ MyCalorimeterHit.java 20 Jul 2005 21:14:49 -0000 1.1
@@ -0,0 +1,49 @@
+package org.lcsim.digisim;
+
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.RawCalorimeterHit;
+
+/**
+ * Implements a calorimeter hit, to be created from unpacking DigiSim output.
+ *
+ * @author Guilherme Lima
+ * @version $Id: MyCalorimeterHit.java,v 1.1 2005/07/20 21:14:49 lima Exp $
+ */
+public class MyCalorimeterHit implements CalorimeterHit
+{
+ /** Full constructor */
+ MyCalorimeterHit(RawCalorimeterHit rawhit) {
+ _cellid = rawhit.getCellID();
+ _energy = ((double)rawhit.getAmplitude())/1000000;
+ _timeStamp = (double)rawhit.getTimeStamp()/1000000;
+ }
+
+ /** Channel ID for this raw hit */
+ public long getCellID() {
+ return _cellid;
+ }
+
+ /** Total energy in this raw hit */
+ public double getEnergy() {
+ return _energy;
+ }
+
+ /** Time stamp */
+ public double getTime() {
+ return _timeStamp;
+ }
+
+ public double[] getPosition() {
+ double[] pos = new double[3];
+ return pos;
+ }
+
+ //=== FIELDS ===
+
+ /** Cell ID */
+ private long _cellid;
+ /** Amplitude */
+ private double _energy;
+ /** Time stamp */
+ private double _timeStamp;
+}
lcsim/src/org/lcsim/digisim
diff -u -r1.6 -r1.7
--- DigiSimMain.java 18 Jul 2005 19:18:25 -0000 1.6
+++ DigiSimMain.java 20 Jul 2005 21:14:48 -0000 1.7
@@ -21,7 +21,7 @@
* The main driver for digitization simulation.
*
* @author Guilherme Lima
- * @version $Id: DigiSimMain.java,v 1.6 2005/07/18 19:18:25 tonyj Exp $
+ * @version $Id: DigiSimMain.java,v 1.7 2005/07/20 21:14:48 lima Exp $
*/
public class DigiSimMain extends Driver {
@@ -31,11 +31,13 @@
String name = "SDJan03";
_hitmgr = new CalHitMapDriver();
_digi = new DigiSimDriver(name);
+ _calhit = new CalorimeterHitsDriver();
_nevt = 0;
// initialize data provider and digitizers
_hitmgr.init();
_digi.init();
+ _calhit.init();
}
//
@@ -46,6 +48,7 @@
// subdrivers processing
_hitmgr.process(event);
_digi.process(event);
+ _calhit.process(event);
//.. test calhitmapmgr
CalHitMapMgr hitmgr = CalHitMapMgr.getInstance();
@@ -164,6 +167,7 @@
// subdrivers
private CalHitMapDriver _hitmgr;
private DigiSimDriver _digi;
+ private CalorimeterHitsDriver _calhit;
// static registration globals
private static boolean _gaindisc = GainDiscrimination.registerMe();
@@ -198,7 +202,7 @@
digidriver.setDebug();
// event loop
- loop.loop(-1); // -1 for all
+ loop.loop(10); // -1 for all
loop.dispose();
org.lcsim.util.aida.AIDA.defaultInstance().saveAs("myhistos.aida");