4 added + 3 removed + 18 modified, total 25 files
hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -u -r1.3 -r1.4
--- SvtUtils.java 12 Jul 2012 20:19:37 -0000 1.3
+++ SvtUtils.java 14 Aug 2012 00:58:03 -0000 1.4
@@ -22,217 +22,222 @@
/**
*
* @author Omar Moreno
- * @version $Id: SvtUtils.java,v 1.3 2012/07/12 20:19:37 omoreno Exp $
+ * @version $Id: SvtUtils.java,v 1.4 2012/08/14 00:58:03 meeg Exp $
*/
public class SvtUtils {
-
- // Use eager Singleton initialization since an instance will always be needed
- private static final SvtUtils INSTANCE = new SvtUtils();
-
+
+ // Use eager Singleton initialization since an instance will always be needed
+ private static final SvtUtils INSTANCE = new SvtUtils();
// Set of sensors
private Set<SiSensor> sensors = new HashSet<SiSensor>();
-
// Map from Sensor to Hybrid/FPGA pair
- private Map<SiSensor /* Sensor */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> sensorToDAQPair
- = new HashMap<SiSensor, Pair<Integer, Integer>>();
-
+ private Map<SiSensor /* Sensor */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> sensorToDAQPair = new HashMap<SiSensor, Pair<Integer, Integer>>();
// Map from Hybrid/FPGA pair
- private Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, SiSensor /* Sensor*/> daqPairToSensor
- = new HashMap<Pair<Integer, Integer>, SiSensor>();
-
+ private Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, SiSensor /* Sensor*/> daqPairToSensor = new HashMap<Pair<Integer, Integer>, SiSensor>();
// Map from SVT top layer to Hybrid/FPGA pair
- private Map<Integer /* Layer # */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> topLayerToDAQ
- = new HashMap<Integer, Pair<Integer, Integer>>();
-
+ private Map<Integer /* Layer # */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> topLayerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>();
// Map from SVT bottom layer to Hybrid/FPGA pair
- private Map<Integer /* Layer # */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> bottomLayerToDAQ
- = new HashMap<Integer, Pair<Integer, Integer>>();
-
+ private Map<Integer /* Layer # */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> bottomLayerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>();
// Map sensor to an SVT top layer
- private Map<SiSensor /* Sensor */, Integer /* Layer */> sensorToTopLayer
- = new HashMap<SiSensor, Integer>();
-
+ private Map<SiSensor /* Sensor */, Integer /* Layer */> sensorToTopLayer = new HashMap<SiSensor, Integer>();
// Map sensor to an SVT bottom layer
- private Map<SiSensor /* Sensor */, Integer /* Layer */> sensorToBottomLayer
- = new HashMap<SiSensor, Integer>();
-
+ private Map<SiSensor /* Sensor */, Integer /* Layer */> sensorToBottomLayer = new HashMap<SiSensor, Integer>();
// Map sensor to descriptor
- private Map<SiSensor /* Sensor */, String /* Description */> sensorToDescriptor
- = new HashMap<SiSensor, String>();
-
+ private Map<SiSensor /* Sensor */, String /* Description */> sensorToDescriptor = new HashMap<SiSensor, String>();
private SiSensor[][] sensorArray = new SiSensor[2][10];
-
private IIdentifierHelper helper;
-
- boolean debug = true;
- String subdetectorName = "Tracker";
- ConditionsManager mgr = ConditionsManager.defaultInstance();
-
- private SvtUtils(){}
-
+ private boolean isSetup = false;
+ boolean debug = true;
+ String subdetectorName = "Tracker";
+ ConditionsManager mgr = ConditionsManager.defaultInstance();
+
+ private SvtUtils() {
+ }
+
/**
*
*/
- public static SvtUtils getInstance(){
- return INSTANCE;
+ public static SvtUtils getInstance() {
+ return INSTANCE;
}
-
+
+ public boolean isSetup() {
+ return isSetup;
+ }
+
/**
*
* @param sensor
* @return
*/
- public int getLayerNumber(SiSensor sensor){
- if(sensorToTopLayer.containsKey(sensor)) return sensorToTopLayer.get(sensor);
- else if(sensorToBottomLayer.containsKey(sensor)) return sensorToBottomLayer.get(sensor);
- else throw new RuntimeException("There is no layer associated with sensor " + sensor.getName());
+ public int getLayerNumber(SiSensor sensor) {
+ if (sensorToTopLayer.containsKey(sensor)) {
+ return sensorToTopLayer.get(sensor);
+ } else if (sensorToBottomLayer.containsKey(sensor)) {
+ return sensorToBottomLayer.get(sensor);
+ } else {
+ throw new RuntimeException("There is no layer associated with sensor " + sensor.getName());
+ }
}
-
+
/**
*
*/
- public boolean isTopLayer(SiSensor sensor){
- if(sensorToTopLayer.containsKey(sensor)) return true;
- else if(sensorToBottomLayer.containsKey(sensor)) return false;
- else throw new RuntimeException("There is no layer associated with sensor " + sensor.getName());
+ public boolean isTopLayer(SiSensor sensor) {
+ if (sensorToTopLayer.containsKey(sensor)) {
+ return true;
+ } else if (sensorToBottomLayer.containsKey(sensor)) {
+ return false;
+ } else {
+ throw new RuntimeException("There is no layer associated with sensor " + sensor.getName());
+ }
}
-
+
/**
*
*/
- public boolean isAxial(SiSensor sensor){
- if(this.isTopLayer(sensor) && this.getLayerNumber(sensor)%2 == 1) return true;
- else if(!this.isTopLayer(sensor) && this.getLayerNumber(sensor)%2 == 0) return true;
- return false;
+ public boolean isAxial(SiSensor sensor) {
+ if (this.isTopLayer(sensor) && this.getLayerNumber(sensor) % 2 == 1) {
+ return true;
+ } else if (!this.isTopLayer(sensor) && this.getLayerNumber(sensor) % 2 == 0) {
+ return true;
+ }
+ return false;
}
-
+
/**
*
*/
- public SiSensor getSensor(int module, int layer){
- if(module < 0 || module > 1)
- throw new RuntimeException("Module number " + module + " is out of range!");
- else if(layer < 0 || layer > 10)
- throw new RuntimeException("Layer number " + layer + " is out of range!");
- return sensorArray[module][layer];
+ public SiSensor getSensor(int module, int layer) {
+ if (module < 0 || module > 1) {
+ throw new RuntimeException("Module number " + module + " is out of range!");
+ } else if (layer < 0 || layer > 10) {
+ throw new RuntimeException("Layer number " + layer + " is out of range!");
+ }
+ return sensorArray[module][layer];
}
-
+
/**
*
*/
- public SiSensor getSensor(Pair<Integer, Integer> daqPair){
- return this.daqPairToSensor.get(daqPair);
+ public SiSensor getSensor(Pair<Integer, Integer> daqPair) {
+ return this.daqPairToSensor.get(daqPair);
}
-
+
/**
*
* @return
*/
- public Set<SiSensor> getSensors(){
- return sensors;
+ public Set<SiSensor> getSensors() {
+ return sensors;
}
-
+
/**
*
*/
- public int getFPGA(SiSensor sensor){
- return this.sensorToDAQPair.get(sensor).getSecondElement();
+ public int getFPGA(SiSensor sensor) {
+ return this.sensorToDAQPair.get(sensor).getSecondElement();
}
-
+
/**
*
*/
- public int getHybrid(SiSensor sensor){
- return this.sensorToDAQPair.get(sensor).getFirstElement();
+ public int getHybrid(SiSensor sensor) {
+ return this.sensorToDAQPair.get(sensor).getFirstElement();
}
-
+
/**
*
*/
- public Pair<Integer, Integer> getDaqPair(SiSensor sensor){
- return this.sensorToDAQPair.get(sensor);
+ public Pair<Integer, Integer> getDaqPair(SiSensor sensor) {
+ return this.sensorToDAQPair.get(sensor);
}
public IIdentifierHelper getHelper() {
return helper;
}
-
+
/**
*
*/
- public String getDescription(SiSensor sensor){
+ public String getDescription(SiSensor sensor) {
return this.sensorToDescriptor.get(sensor);
}
-
+
/**
*
*/
- protected void setupDaqMaps(Detector detector){
-
- if (subdetectorName == null)
+ public void setupDaqMaps(Detector detector) {
+
+ if (subdetectorName == null) {
throw new RuntimeException("The subdetector name was not set!");
-
+ }
+
// Get the SVT DAQ Maps
ConditionsSet topSvtDaqMap = mgr.getConditions("daqmap/SVTDAQMapTop");
ConditionsSet bottomSvtDaqMap = mgr.getConditions("daqmap/SVTDAQMapBottom");
String[] daqPair;
-
+
// Loop over the top layers and fill the DAQ map
for (Object topLayer : topSvtDaqMap.keySet()) {
daqPair = topSvtDaqMap.getString(topLayer.toString()).split(" ");
- if (debug)
- System.out.println("Layer: " + topLayer.toString() + " FPGA: " + daqPair[1] + " Hybrid: " + daqPair[0] );
+ if (debug) {
+ System.out.println("Layer: " + topLayer.toString() + " FPGA: " + daqPair[1] + " Hybrid: " + daqPair[0]);
+ }
topLayerToDAQ.put(Integer.parseInt(topLayer.toString()), new Pair<Integer, Integer>(Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
}
-
- // Loop over the bottom layers and fill the DAQ Map
+
+ // Loop over the bottom layers and fill the DAQ Map
for (Object bottomLayer : bottomSvtDaqMap.keySet()) {
daqPair = bottomSvtDaqMap.getString(bottomLayer.toString()).split(" ");
- if (debug)
+ if (debug) {
System.out.println("Layer: " + bottomLayer.toString() + " FPGA: " + daqPair[1] + " Hybrid: " + daqPair[0]);
+ }
bottomLayerToDAQ.put(Integer.parseInt(bottomLayer.toString()), new Pair<Integer, Integer>(Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
}
-
+
// Get the SVT
IDetectorElement detectorElement = detector.getDetectorElement().findDetectorElement(subdetectorName);
-
+
helper = detectorElement.getIdentifierHelper();
// Get all SVT sensors
- sensors.addAll(detectorElement.findDescendants(SiSensor.class));
-
+ sensors.addAll(detectorElement.findDescendants(SiSensor.class));
+
IIdentifier sensorIdent;
SiTrackerIdentifierHelper sensorHelper;
String description;
-
+
// Create the maps
- for(SiSensor sensor : sensors){
-
- // Get the sensor identifier
- sensorIdent = sensor.getIdentifier();
-
+ for (SiSensor sensor : sensors) {
+
+ // Get the sensor identifier
+ sensorIdent = sensor.getIdentifier();
+
// Get the sensor identifier helper
sensorHelper = (SiTrackerIdentifierHelper) sensor.getIdentifierHelper();
-
+
int layerNumber = sensorHelper.getLayerValue(sensorIdent);
int moduleNumber = sensorHelper.getModuleValue(sensorIdent);
- sensorArray[moduleNumber][layerNumber - 1] = sensor;
-
+ sensorArray[moduleNumber][layerNumber - 1] = sensor;
+
if (moduleNumber == 0) {
- sensorToTopLayer.put(sensor, layerNumber);
- sensorToDAQPair.put(sensor, this.topLayerToDAQ.get(layerNumber));
- daqPairToSensor.put(topLayerToDAQ.get(layerNumber), sensor);
- description = "Top Layer " + layerNumber;
- sensorToDescriptor.put(sensor, description);
- } else if(moduleNumber == 1){
+ sensorToTopLayer.put(sensor, layerNumber);
+ sensorToDAQPair.put(sensor, this.topLayerToDAQ.get(layerNumber));
+ daqPairToSensor.put(topLayerToDAQ.get(layerNumber), sensor);
+ description = "Top Layer " + layerNumber;
+ sensorToDescriptor.put(sensor, description);
+ } else if (moduleNumber == 1) {
sensorToBottomLayer.put(sensor, layerNumber);
- sensorToDAQPair.put(sensor, this.bottomLayerToDAQ.get(layerNumber));
- daqPairToSensor.put(bottomLayerToDAQ.get(layerNumber), sensor);
- description = "Bottom Layer " + layerNumber;
+ sensorToDAQPair.put(sensor, this.bottomLayerToDAQ.get(layerNumber));
+ daqPairToSensor.put(bottomLayerToDAQ.get(layerNumber), sensor);
+ description = "Bottom Layer " + layerNumber;
sensorToDescriptor.put(sensor, description);
- } else throw new RuntimeException("Invalid Module Number: " + sensorHelper.getModuleValue(sensorIdent));
+ } else {
+ throw new RuntimeException("Invalid Module Number: " + sensorHelper.getModuleValue(sensorIdent));
+ }
}
-
+
for (int module = 0; module < 2; module++) {
for (int layer = 0; layer < 10; layer++) {
if (sensorArray[module][layer] == null) {
@@ -240,6 +245,6 @@
}
}
}
+ isSetup = true;
}
-
}
hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -u -r1.8 -r1.9
--- HPSSVTSensorSetup.java 24 May 2012 17:08:18 -0000 1.8
+++ HPSSVTSensorSetup.java 14 Aug 2012 00:58:03 -0000 1.9
@@ -21,67 +21,61 @@
import org.lcsim.geometry.Detector;
import org.lcsim.util.Driver;
-import org.lcsim.hps.recon.tracking.SvtUtils;
-
/**
* Setup driver for the HPSTracker subdetector.
*
* @author Mathew Graham <[log in to unmask]>
* @author Omar Moreno <[log in to unmask]>
* @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: HPSSVTSensorSetup.java,v 1.8 2012/05/24 17:08:18 omoreno Exp $
+ * @version $Id: HPSSVTSensorSetup.java,v 1.9 2012/08/14 00:58:03 meeg Exp $
*/
public class HPSSVTSensorSetup extends Driver {
-
+
boolean debug = false;
-
String subdetectorName = "Tracker";
-
// Sensor Characteristics
private double readoutStripPitch = 0.060; // micro-m
- private double senseStripPitch = 0.030; // micro-m
-
+ private double senseStripPitch = 0.030; // micro-m
private double readoutStripCapacitanceIntercept = 0;
- private double readoutStripCapacitanceSlope = 0.16; // pf/cm
- private double senseStripCapacitanceIntercept = 0;
- private double senseStripCapacitanceSlope = 0.16; // pf/cm
-
+ private double readoutStripCapacitanceSlope = 0.16; // pf/cm
+ private double senseStripCapacitanceIntercept = 0;
+ private double senseStripCapacitanceSlope = 0.16; // pf/cm
private double readoutTransferEfficiency = 0.986;
private double senseTransferEfficiency = 0.419;
-
// Set of sensors
Set<SiSensor> sensors = new HashSet<SiSensor>();
-
- public HPSSVTSensorSetup() {}
+
+ public HPSSVTSensorSetup() {
+ }
public HPSSVTSensorSetup(String subdetectorName) {
this.subdetectorName = subdetectorName;
}
-
+
+ @Override
public void detectorChanged(Detector detector) {
- // Call the sub-Driver's detectorChanged methods.
- super.detectorChanged(detector);
-
- if(subdetectorName == null){
+ if (subdetectorName == null) {
throw new RuntimeException("The subdetector name was not set!");
}
-
+
// Get the SVT
- IDetectorElement detectorElement
- = detector.getDetectorElement().findDetectorElement(subdetectorName);
-
+ IDetectorElement detectorElement = detector.getDetectorElement().findDetectorElement(subdetectorName);
+
// Get all SVT sensors
sensors.addAll(detectorElement.findDescendants(SiSensor.class));
- if(debug)
+ if (debug) {
System.err.println(this.getClass().getName() + ": Added " + sensors.size() + " sensors");
-
+ }
+
// Configure the sensors
configureSensors(sensors);
-
+
// Create DAQ Maps
- SvtUtils.getInstance().setupDaqMaps(detector);
+ if (!SvtUtils.getInstance().isSetup()) {
+ SvtUtils.getInstance().setupDaqMaps(detector);
+ }
}
-
+
/**
* Configure the SVT sensors
*
@@ -89,58 +83,58 @@
*/
private void configureSensors(Set<SiSensor> sensors) {
// Loop through all the sensors in the set.
- for(SiSensor sensor : sensors) {
-
+ for (SiSensor sensor : sensors) {
+
if (debug) {
System.out.println(this.getClass().getSimpleName() + " - setting up sensor " + sensor.getName());
}
-
+
Box sensorSolid = (Box) sensor.getGeometry().getLogicalVolume().getSolid();
-
+
Polygon3D pSide = sensorSolid.getFacesNormalTo(new BasicHep3Vector(0, 0, 1)).get(0);
Polygon3D nSide = sensorSolid.getFacesNormalTo(new BasicHep3Vector(0, 0, -1)).get(0);
-
+
// P side collects holes.
sensor.setBiasSurface(ChargeCarrier.HOLE, pSide);
// N side collects electrons.
sensor.setBiasSurface(ChargeCarrier.ELECTRON, nSide);
-
+
// Translate to the outside of the box in order to setup electrodes.
ITranslation3D electrodesPosition = new Translation3D(VecOp.mult(-pSide.getDistance(), pSide.getNormal()));
-
+
// Align the strips with the edge of the sensor.
IRotation3D electrodesRotation = new RotationPassiveXYZ(0, 0, 0);
Transform3D electrodesTransform = new Transform3D(electrodesPosition, electrodesRotation);
-
+
// Set the number of readout and sense electrodes.
SiStrips readoutElectrodes = new SiStrips(ChargeCarrier.HOLE, readoutStripPitch, sensor, electrodesTransform);
- SiStrips senseElectrodes = new SiStrips(ChargeCarrier.HOLE, senseStripPitch, (readoutElectrodes.getNCells()*2-1), sensor, electrodesTransform);
-
+ SiStrips senseElectrodes = new SiStrips(ChargeCarrier.HOLE, senseStripPitch, (readoutElectrodes.getNCells() * 2 - 1), sensor, electrodesTransform);
+
if (debug) {
- System.out.println("The number of readout strips is " + readoutElectrodes.getNCells());
- System.out.println("The number of sense strips is " + senseElectrodes.getNCells());
+ System.out.println("The number of readout strips is " + readoutElectrodes.getNCells());
+ System.out.println("The number of sense strips is " + senseElectrodes.getNCells());
}
// Set the strip capacitance.
readoutElectrodes.setCapacitanceIntercept(readoutStripCapacitanceIntercept);
readoutElectrodes.setCapacitanceSlope(readoutStripCapacitanceSlope);
- senseElectrodes.setCapacitanceIntercept(senseStripCapacitanceIntercept);
- senseElectrodes.setCapacitanceSlope(senseStripCapacitanceSlope);
-
+ senseElectrodes.setCapacitanceIntercept(senseStripCapacitanceIntercept);
+ senseElectrodes.setCapacitanceSlope(senseStripCapacitanceSlope);
+
// Set sense and readout electrodes.
sensor.setSenseElectrodes(senseElectrodes);
sensor.setReadoutElectrodes(readoutElectrodes);
-
+
// Set the charge transfer efficiency.
double[][] transferEfficiencies = {{readoutTransferEfficiency, senseTransferEfficiency}};
sensor.setTransferEfficiencies(ChargeCarrier.HOLE, new BasicMatrix(transferEfficiencies));
-
+
if (debug) {
System.out.println("----------------------------");
}
}
}
-
+
/**
* Set the readout strip capacitance
*
@@ -151,7 +145,7 @@
readoutStripCapacitanceIntercept = intercept;
readoutStripCapacitanceSlope = slope;
}
-
+
/**
* Set the sense strip capacitance
*
@@ -162,7 +156,7 @@
senseStripCapacitanceIntercept = intercept;
senseStripCapacitanceSlope = slope;
}
-
+
/**
* Set readout strip pitch
*
@@ -180,7 +174,7 @@
public void setSenseStripPitch(double pitch) {
senseStripPitch = pitch;
}
-
+
/**
* Set readout strip transfer efficiency
*
@@ -189,7 +183,7 @@
public void setReadoutTransferEfficiency(double efficiency) {
readoutTransferEfficiency = efficiency;
}
-
+
/**
* Set sense strip transfer efficiency
*
hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -u -r1.6 -r1.7
--- HPSSVTData.java 28 Apr 2012 15:25:41 -0000 1.6
+++ HPSSVTData.java 14 Aug 2012 00:58:03 -0000 1.7
@@ -15,7 +15,7 @@
*
*
* @author Omar Moreno <[log in to unmask]>
- * @version $Id: HPSSVTData.java,v 1.6 2012/04/28 15:25:41 meeg Exp $
+ * @version $Id: HPSSVTData.java,v 1.7 2012/08/14 00:58:03 meeg Exp $
*/
public class HPSSVTData {
@@ -136,6 +136,10 @@
* @return hybrid number (0-3)
*/
public int getHybridNumber() {
+ return getHybridNumber(data);
+ }
+
+ public static int getHybridNumber(int[] data) {
return (data[0] >>> 28) & HYBRID_MASK;
}
@@ -145,6 +149,10 @@
* @return APV number (0-4)
*/
public int getAPVNumber() {
+ return getAPVNumber(data);
+ }
+
+ public static int getAPVNumber(int[] data) {
return (data[0] >>> 24) & APV_MASK;
}
@@ -154,6 +162,10 @@
* @return channel number (0-127)
*/
public int getChannelNumber() {
+ return getChannelNumber(data);
+ }
+
+ public static int getChannelNumber(int[] data) {
return (data[0] >>> 16) & CHANNEL_MASK;
}
@@ -163,6 +175,10 @@
* @return FPGA address
*/
public int getFPGAAddress() {
+ return getFPGAAddress(data);
+ }
+
+ public static int getFPGAAddress(int[] data) {
return data[0] & FPGA_MASK;
}
@@ -176,6 +192,10 @@
*
*/
public int getSample(int n) {
+ return getSample(n, data);
+ }
+
+ public static int getSample(int n, int[] data) {
switch (n) {
case 0:
@@ -201,10 +221,14 @@
* @return An array containing all SVT Shaper signal samples
*/
public short[] getAllSamples() {
+ return getAllSamples(data);
+ }
+
+ public static short[] getAllSamples(int[] data) {
short[] samples = new short[TOTAL_NUMBER_OF_SAMPLES];
// Get all SVT Samples
for (int index = 0; index < TOTAL_NUMBER_OF_SAMPLES; index++) {
- samples[index] = (short) this.getSample(index);
+ samples[index] = (short) getSample(index, data);
}
return samples;
@@ -260,7 +284,11 @@
return sensorChannel;
}
+ public static int getSensorChannel(int[] data) {
+ return getSensorChannel(getAPVNumber(data), getChannelNumber(data));
+ }
+
public int getSensorChannel() {
- return getSensorChannel(this.getAPVNumber(), this.getChannelNumber());
+ return getSensorChannel(data);
}
}
hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -N SVTDataToRawTrackerHitDriver.java
--- SVTDataToRawTrackerHitDriver.java 6 Aug 2012 21:15:21 -0000 1.13
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,119 +0,0 @@
-package org.lcsim.hps.recon.tracking;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.lcsim.detector.tracker.silicon.ChargeCarrier;
-
-import org.lcsim.detector.tracker.silicon.SiSensor;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.RawTrackerHit;
-import org.lcsim.event.base.BaseRawTrackerHit;
-import org.lcsim.hps.util.Pair;
-import org.lcsim.util.Driver;
-import org.lcsim.util.lcio.LCIOUtil;
-
-/**
- *
- * @author Jeremy McCormick <[log in to unmask]>
- * @author Omar Moreno <[log in to unmask]>
- * $Id: SVTDataToRawTrackerHitDriver.java,v 1.13 2012/08/06 21:15:21 meeg Exp $
- */
-public class SVTDataToRawTrackerHitDriver extends Driver {
-
- String svtDataCollectionName = "SVTData";
- String rawTrackerHitOutputCollectionName = "SVTRawTrackerHits";
- String readoutName = "TrackerHits";
- boolean debug = false;
-
- public SVTDataToRawTrackerHitDriver() {
- }
-
- public void setDebug(boolean debug) {
- this.debug = debug;
- }
-
- public void setReadoutName(String readoutName) {
- this.readoutName = readoutName;
- }
-
- public void setSvtDataCollectionName(String svtDataCollectionName) {
- this.svtDataCollectionName = svtDataCollectionName;
- }
-
- public void setRawTrackerHitOutputCollectionName(String rawTrackerHitOutputCollectionName) {
- this.rawTrackerHitOutputCollectionName = rawTrackerHitOutputCollectionName;
- }
-
- public void process(EventHeader event) {
-
- if (!event.hasCollection(HPSSVTData.class, svtDataCollectionName)) {
- System.out.println(svtDataCollectionName + " does not exist; skipping event");
- return;
- }
-
- List<HPSSVTData> svtDataCollection = event.get(HPSSVTData.class, svtDataCollectionName);
-// if (svtDataCollection.isEmpty()) {
-// System.out.println(svtDataCollectionName + " is empty; skipping event");
-// return;
-// }
-
- List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
- for (HPSSVTData svtData : svtDataCollection) {
- if(debug)
- System.out.println(this.getClass().getSimpleName() + ": FPGA: " + svtData.getFPGAAddress() + " Hybrid: " + svtData.getHybridNumber());
-
- Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(svtData.getHybridNumber(), svtData.getFPGAAddress());
- SiSensor sensor = SvtUtils.getInstance().getSensor(daqPair);
-
- if (sensor == null) {
- throw new RuntimeException("Unexpected DAQ address: FPGA " + svtData.getFPGAAddress() + ", hybrid " + svtData.getHybridNumber());
- }
-
- if(debug){
- if(SvtUtils.getInstance().isTopLayer(sensor)){
- System.out.println(this.getClass().getSimpleName() + ": Top Layer Number: " + SvtUtils.getInstance().getLayerNumber(sensor));
- } else {
- System.out.println(this.getClass().getSimpleName() + ": Bottom Layer Number: " + SvtUtils.getInstance().getLayerNumber(sensor));
- }
- }
-
- int sensorChannel = svtData.getSensorChannel();
-
- //strip 639 exists as an APV channel but not as a sensor strip; drop it
- // If the channel has been tagged to be bad, drop it
- if (sensorChannel >= HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR || HPSSVTCalibrationConstants.isBadChannel(sensor, sensorChannel)) {
- continue;
- }
-
- // Get all shaper signal samples associated with this hit
- short data[] = svtData.getAllSamples();
-
- // Get the hit time (is 0)
- int hitTime = svtData.getHitTime();
-
- // Find the side number (is 1)
- int sideNumber;
- if (sensor.hasElectrodesOnSide(ChargeCarrier.HOLE)) {
- sideNumber = ChargeCarrier.HOLE.charge();
- } else {
- sideNumber = ChargeCarrier.ELECTRON.charge();
- }
-
- long cell_id = sensor.makeStripId(sensorChannel, sideNumber).getValue();
- RawTrackerHit myHit = new BaseRawTrackerHit(hitTime, cell_id, data, null, sensor);
-
- if(debug)
- System.out.println(this.getClass().getSimpleName() + "Cell ID Module " + myHit.getIdentifierFieldValue("module") + "Cell ID Layer: " + myHit.getIdentifierFieldValue("layer") + "Strip Number: " + myHit.getIdentifierFieldValue("strip"));
- myHit.getDetectorElement().getReadout().addHit((myHit));
- hits.add(new BaseRawTrackerHit(hitTime, cell_id, data, null, sensor));
- }
-
- if (debug) {
- System.out.println(this.getClass().getSimpleName() + " made " + hits.size()
- + " RawTrackerHits with readoutName " + readoutName + " in collection " + rawTrackerHitOutputCollectionName);
- }
-
- int flag = LCIOUtil.bitSet(0, 31, true); // Turn on 64-bit cell ID.
- event.put(rawTrackerHitOutputCollectionName, hits, RawTrackerHit.class, flag, readoutName);
- }
-}
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.3 -r1.4
--- HPSTestRunOnlineTracking.lcsim 1 Jun 2012 22:17:10 -0000 1.3
+++ HPSTestRunOnlineTracking.lcsim 14 Aug 2012 00:58:03 -0000 1.4
@@ -5,7 +5,6 @@
<driver name="SVTSetupDriver" />
<driver name="EcalRawConverter" />
<driver name="EcalClusterer" />
- <driver name="RawTrackerHitMaker" />
<driver name="RawTrackerHitFitterDriver" />
<driver name="TrackerHitDriver" />
<driver name="TrackerReconDriver" />
@@ -24,9 +23,6 @@
<ecalName>Ecal</ecalName>
<ecalCollectionName>EcalCalHits</ecalCollectionName>
</driver>
- <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
- <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
- </driver>
<driver name="RawTrackerHitFitterDriver" type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver">
<rawHitCollectionName>SVTRawTrackerHits</rawHitCollectionName>
<fittedHitCollectionName>SVTFittedRawTrackerHits</fittedHitCollectionName>
@@ -46,4 +42,4 @@
<collectionNames>TrackerHits SVTRawTrackerHits SVTFittedRawTrackerHits</collectionNames>
</driver>
</drivers>
-</lcsim>
\ No newline at end of file
+</lcsim>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.1 -r1.2
--- SensorOccupancyPlots.lcsim 5 Jun 2012 19:23:47 -0000 1.1
+++ SensorOccupancyPlots.lcsim 14 Aug 2012 00:58:03 -0000 1.2
@@ -3,7 +3,6 @@
<execute>
<driver name="EventMarkerDriver"/>
<driver name="SVTSetupDriver"/>
- <driver name="RawTrackerHitMaker"/>
<driver name="SVTOccupancyPlots"/>
</execute>
<drivers>
@@ -11,9 +10,6 @@
<eventInterval>1</eventInterval>
</driver>
<driver name="SVTSetupDriver" type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup"/>
- <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
- <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
- </driver>
<driver name="SVTOccupancyPlots" type="org.lcsim.hps.monitoring.svt.SensorOccupancyPlotsDriver">
<eventRefreshRate>1</eventRefreshRate>
</driver>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.2 -r1.3
--- OfflineTrackingAxial.lcsim 1 Jun 2012 22:17:10 -0000 1.2
+++ OfflineTrackingAxial.lcsim 14 Aug 2012 00:58:03 -0000 1.3
@@ -5,7 +5,6 @@
<driver name="SVTSetupDriver"/>
<driver name="EcalRawConverter"/>
<driver name="EcalClusterer"/>
- <driver name="RawTrackerHitMaker"/>
<!-- <driver name="SVTEventPlots"/> -->
<!-- <driver name="SVTPulsePlots"/> -->
<driver name="RawTrackerHitFitterDriver"/>
@@ -72,10 +71,6 @@
<stripTolerance>1.0</stripTolerance>
</driver>
- <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
- <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
- </driver>
-
<driver name="TrackingReconstructionPlots" type="org.lcsim.hps.monitoring.svt.TrackingReconstructionPlots">
<outputPlots>trackingPlots.aida</outputPlots>
</driver>
@@ -92,4 +87,4 @@
</driver>
</drivers>
-</lcsim>
\ No newline at end of file
+</lcsim>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.20 -r1.21
--- TestRunMonitoring.lcsim 24 May 2012 19:48:40 -0000 1.20
+++ TestRunMonitoring.lcsim 14 Aug 2012 00:58:03 -0000 1.21
@@ -11,7 +11,6 @@
<driver name="HPSCalibrationDriver"/>
<driver name="EcalRawConverter"/>
<driver name="EcalClusterer"/>
- <driver name="RawTrackerHitMaker"/>
<driver name="RawTrackerHitFitterDriver"/>
<driver name="TrackerHitDriver"/>
<driver name="TrackerReconDriver"/>
@@ -86,6 +85,5 @@
type="org.lcsim.hps.monitoring.svt.SVTHitReconstructionPlots">
<fittedTrackerHitCollectionName>SVTFittedRawTrackerHits</fittedTrackerHitCollectionName>
</driver>
- <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
</drivers>
</lcsim>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.13 -r1.14
--- OnlineTracking.lcsim 1 Jun 2012 22:17:10 -0000 1.13
+++ OnlineTracking.lcsim 14 Aug 2012 00:58:03 -0000 1.14
@@ -10,7 +10,6 @@
<driver name="SVTSetupDriver"/>
<driver name="EcalRawConverter"/>
<driver name="EcalClusterer"/>
- <driver name="RawTrackerHitMaker"/>
<driver name="SVTOccupancyPlots"/>
<driver name="SVTEventPlots"/>
<driver name="SVTPulsePlots"/>
@@ -97,10 +96,6 @@
<stripTolerance>1.0</stripTolerance>
</driver>
- <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
- <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
- </driver>
-
<driver name="TrackingReconstructionPlots" type="org.lcsim.hps.monitoring.svt.TrackingReconstructionPlots">
<outputPlots>trackingPlots.aida</outputPlots>
</driver>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.2 -r1.3
--- HPSTestRunOfflineTracking.lcsim 1 Jun 2012 22:17:10 -0000 1.2
+++ HPSTestRunOfflineTracking.lcsim 14 Aug 2012 00:58:03 -0000 1.3
@@ -8,7 +8,6 @@
<driver name="SVTSetupDriver" />
<driver name="EcalRawConverter" />
<driver name="EcalClusterer" />
- <driver name="RawTrackerHitMaker" />
<driver name="RawTrackerHitFitterDriver" />
<driver name="TrackerHitDriver" />
<driver name="TrackerReconDriver" />
@@ -28,9 +27,6 @@
<ecalName>Ecal</ecalName>
<ecalCollectionName>EcalCalHits</ecalCollectionName>
</driver>
- <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
- <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
- </driver>
<driver name="RawTrackerHitFitterDriver" type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver">
<rawHitCollectionName>SVTRawTrackerHits</rawHitCollectionName>
<fittedHitCollectionName>SVTFittedRawTrackerHits</fittedHitCollectionName>
@@ -53,4 +49,4 @@
<outputFilePath>${outputFile}</outputFilePath>
</driver>
</drivers>
-</lcsim>
\ No newline at end of file
+</lcsim>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.6 -r1.7
--- TestRunEventDisplay.lcsim 23 May 2012 18:22:16 -0000 1.6
+++ TestRunEventDisplay.lcsim 14 Aug 2012 00:58:03 -0000 1.7
@@ -11,7 +11,6 @@
<driver name="EventMarkerDriver"/>
<driver name="EcalRawConverter"/>
<driver name="EcalClusterer"/>
- <driver name="RawTrackerHitMaker"/>
<driver name="EcalEventMonitor"/>
<driver name="RawTrackerHitFitterDriver"/>
<driver name="TrackerHitDriver"/>
@@ -61,6 +60,5 @@
<driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
<eventInterval>1</eventInterval>
</driver>
- <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
</drivers>
</lcsim>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.1 -r1.2
--- EcalGainDriverSim.lcsim 9 Aug 2012 22:27:10 -0000 1.1
+++ EcalGainDriverSim.lcsim 14 Aug 2012 00:58:03 -0000 1.2
@@ -42,8 +42,8 @@
type="org.lcsim.hps.users.phansson.ECalGainDriver">
<debug>false</debug>
<hideFrame>true</hideFrame>
- <outputPlotFileName>gaindriver.aida</outputPlotFileName>
- <ecalGainFileName>clusterlist.txt</ecalGainFileName>
+ <outputPlotFileName>gaindriver_sim.aida</outputPlotFileName>
+ <ecalGainFileName>clusterlist_sim.txt</ecalGainFileName>
<simTrigger>true</simTrigger>
</driver>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.3 -r1.4
--- MultScatAna.lcsim 24 Jul 2012 23:28:54 -0000 1.3
+++ MultScatAna.lcsim 14 Aug 2012 00:58:03 -0000 1.4
@@ -8,11 +8,9 @@
<execute>
<driver name="EventMarkerDriver"/>
<driver name="HPSCalibrationDriver"/>
- <driver name="SVTSetupDriver"/>
<driver name="EcalRawConverter"/>
<driver name="EcalClusterer"/>
- <driver name="RawTrackerHitMaker"/>
<driver name="RawTrackerHitFitterDriver"/>
<driver name="TrackerHitDriver"/>
<driver name="TrackerReconDriver"/>
@@ -111,13 +109,9 @@
<rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName>
<eventRefreshRate>1</eventRefreshRate>
</driver>
- <driver name="SVTSetupDriver"
- type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup">
- </driver>
<driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
<eventInterval>1000</eventInterval>
</driver>
- <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
<driver name="TrackerReconDriver"
type="org.lcsim.hps.recon.tracking.TrackerReconDriver">
<debug>false</debug>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.1 -r1.2
--- SVTMonitoring.lcsim 21 Jun 2012 18:59:45 -0000 1.1
+++ SVTMonitoring.lcsim 14 Aug 2012 00:58:03 -0000 1.2
@@ -3,7 +3,6 @@
<execute>
<driver name="EventMarkerDriver" />
<driver name="SVTSetupDriver" />
- <driver name="RawTrackerHitMaker" />
<driver name="SVTPulsePlots"/>
<driver name="RawTrackerHitFitterDriver" />
@@ -35,9 +34,6 @@
<ecalName>Ecal</ecalName>
<ecalCollectionName>EcalCalHits</ecalCollectionName>
</driver>
- <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
- <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
- </driver>
<driver name="RawTrackerHitFitterDriver" type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver">
<rawHitCollectionName>SVTRawTrackerHits</rawHitCollectionName>
<fittedHitCollectionName>SVTFittedRawTrackerHits</fittedHitCollectionName>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -N TestRunCnv.lcsim
--- TestRunCnv.lcsim 1 Jun 2012 22:17:10 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
- xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
- <execute>
- <driver name="EventMarkerDriver"/>
- <driver name="SVTSetupDriver"/>
- <driver name="SVTDataToRawTrackerHitDriver"/>
- </execute>
- <drivers>
- <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
- <eventInterval>1</eventInterval>
- </driver>
- <driver name="SVTSetupDriver" type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup"/>
- <driver name="SVTDataToRawTrackerHitDriver" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
- </drivers>
-</lcsim>
hps-java/src/main/resources/org/lcsim/hps/steering
diff -N FastTracking.lcsim
--- FastTracking.lcsim 27 Jun 2012 19:35:43 -0000 1.5
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,71 +0,0 @@
-<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
- xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
- <control>
- <numberOfEvents>-1</numberOfEvents>
- <printInputFiles>true</printInputFiles>
- <printDriversDetailed>true</printDriversDetailed>
- </control>
- <execute>
- <driver name="EventMarkerDriver"/>
- <driver name="SVTSetupDriver"/>
- <driver name="HPSSVTDAQMaps"/>
- <driver name="EcalRawConverter"/>
- <driver name="EcalClusterer"/>
- <driver name="RawTrackerHitMaker"/>
- <driver name="RawTrackerHitFitterDriver"/>
- <driver name="TrackerHitDriver"/>
- <driver name="EcalMonitoringPlots"/>
-<!-- <driver name="SVTOccupancyPlots"/> -->
- <driver name="FastTrackResidualDriver"/>
- <driver name="CleanupDriver"/>
-
- </execute>
- <drivers>
- <driver name="HPSSVTDAQMaps" type="org.lcsim.hps.recon.tracking.HPSSVTDAQMaps"/>
- <driver name="EcalRawConverter"
- type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver">
- <ecalCollectionName>EcalCalHits</ecalCollectionName>
- </driver>
- <driver name="EcalClusterer"
- type="org.lcsim.hps.recon.ecal.HPSEcalClusterer">
- <ecalName>Ecal</ecalName>
- <ecalCollectionName>EcalCalHits</ecalCollectionName>
- </driver>
- <driver name="RawTrackerHitFitterDriver"
- type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver">
-<!-- <fitAlgorithm>Dumb</fitAlgorithm> -->
- <fitAlgorithm>Analytic</fitAlgorithm>
- </driver>
- <driver name="FastTrackResidualDriver"
- type="org.lcsim.hps.users.phansson.FastTrackResidualDriver">
- <conversionZ>-670.0</conversionZ>
- <ecalBeamgapCorr>0.0</ecalBeamgapCorr>
- <debug>true</debug>
- <ecalClusterSel>0</ecalClusterSel>
- <outputPlotFileName></outputPlotFileName>
- </driver>
- <driver name="TrackerHitDriver"
- type="org.lcsim.hps.users.mgraham.DataTrackerHitDriver"/>
- <driver name="EcalDaqPlots" type="org.lcsim.hps.monitoring.ecal.EcalDaqPlots">
- </driver>
- <driver name="CleanupDriver"
- type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver">
- <collectionNames>TrackerHits SVTRawTrackerHits SVTFittedRawTrackerHits</collectionNames>
- </driver>
- <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots"/>
- <driver name="EcalEventMonitor" type="org.lcsim.hps.monitoring.ecal.EcalEventMonitor">
- <eventRefreshRate>1</eventRefreshRate>
- </driver>
- <driver name="SVTOccupancyPlots" type="org.lcsim.hps.monitoring.svt.SensorOccupancyPlotsDriver">
- <rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName>
- <eventRefreshRate>1</eventRefreshRate>
- </driver>
- <driver name="SVTSetupDriver"
- type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup">
- </driver>
- <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
- <eventInterval>1</eventInterval>
- </driver>
- <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
- </drivers>
-</lcsim>
hps-java/sandbox
diff -N TestRunCnv.lcsim
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TestRunCnv.lcsim 14 Aug 2012 00:58:03 -0000 1.1
@@ -0,0 +1,15 @@
+<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
+ <execute>
+ <driver name="EventMarkerDriver"/>
+ <driver name="SVTSetupDriver"/>
+ <driver name="SVTDataToRawTrackerHitDriver"/>
+ </execute>
+ <drivers>
+ <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
+ <eventInterval>1</eventInterval>
+ </driver>
+ <driver name="SVTSetupDriver" type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup"/>
+ <driver name="SVTDataToRawTrackerHitDriver" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
+ </drivers>
+</lcsim>
hps-java/sandbox
diff -N FastTracking.lcsim
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ FastTracking.lcsim 14 Aug 2012 00:58:03 -0000 1.1
@@ -0,0 +1,69 @@
+<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
+ <control>
+ <numberOfEvents>-1</numberOfEvents>
+ <printInputFiles>true</printInputFiles>
+ <printDriversDetailed>true</printDriversDetailed>
+ </control>
+ <execute>
+ <driver name="EventMarkerDriver"/>
+ <driver name="SVTSetupDriver"/>
+ <driver name="HPSSVTDAQMaps"/>
+ <driver name="EcalRawConverter"/>
+ <driver name="EcalClusterer"/>
+ <driver name="RawTrackerHitFitterDriver"/>
+ <driver name="TrackerHitDriver"/>
+ <driver name="EcalMonitoringPlots"/>
+<!-- <driver name="SVTOccupancyPlots"/> -->
+ <driver name="FastTrackResidualDriver"/>
+ <driver name="CleanupDriver"/>
+
+ </execute>
+ <drivers>
+ <driver name="HPSSVTDAQMaps" type="org.lcsim.hps.recon.tracking.HPSSVTDAQMaps"/>
+ <driver name="EcalRawConverter"
+ type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver">
+ <ecalCollectionName>EcalCalHits</ecalCollectionName>
+ </driver>
+ <driver name="EcalClusterer"
+ type="org.lcsim.hps.recon.ecal.HPSEcalClusterer">
+ <ecalName>Ecal</ecalName>
+ <ecalCollectionName>EcalCalHits</ecalCollectionName>
+ </driver>
+ <driver name="RawTrackerHitFitterDriver"
+ type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver">
+<!-- <fitAlgorithm>Dumb</fitAlgorithm> -->
+ <fitAlgorithm>Analytic</fitAlgorithm>
+ </driver>
+ <driver name="FastTrackResidualDriver"
+ type="org.lcsim.hps.users.phansson.FastTrackResidualDriver">
+ <conversionZ>-670.0</conversionZ>
+ <ecalBeamgapCorr>0.0</ecalBeamgapCorr>
+ <debug>true</debug>
+ <ecalClusterSel>0</ecalClusterSel>
+ <outputPlotFileName></outputPlotFileName>
+ </driver>
+ <driver name="TrackerHitDriver"
+ type="org.lcsim.hps.users.mgraham.DataTrackerHitDriver"/>
+ <driver name="EcalDaqPlots" type="org.lcsim.hps.monitoring.ecal.EcalDaqPlots">
+ </driver>
+ <driver name="CleanupDriver"
+ type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver">
+ <collectionNames>TrackerHits SVTRawTrackerHits SVTFittedRawTrackerHits</collectionNames>
+ </driver>
+ <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots"/>
+ <driver name="EcalEventMonitor" type="org.lcsim.hps.monitoring.ecal.EcalEventMonitor">
+ <eventRefreshRate>1</eventRefreshRate>
+ </driver>
+ <driver name="SVTOccupancyPlots" type="org.lcsim.hps.monitoring.svt.SensorOccupancyPlotsDriver">
+ <rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName>
+ <eventRefreshRate>1</eventRefreshRate>
+ </driver>
+ <driver name="SVTSetupDriver"
+ type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup">
+ </driver>
+ <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
+ <eventInterval>1</eventInterval>
+ </driver>
+ </drivers>
+</lcsim>
hps-java/sandbox
diff -N SVTDataToRawTrackerHitDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SVTDataToRawTrackerHitDriver.java 14 Aug 2012 00:58:03 -0000 1.1
@@ -0,0 +1,119 @@
+package org.lcsim.hps.recon.tracking;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.lcsim.detector.tracker.silicon.ChargeCarrier;
+
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.base.BaseRawTrackerHit;
+import org.lcsim.hps.util.Pair;
+import org.lcsim.util.Driver;
+import org.lcsim.util.lcio.LCIOUtil;
+
+/**
+ *
+ * @author Jeremy McCormick <[log in to unmask]>
+ * @author Omar Moreno <[log in to unmask]>
+ * $Id: SVTDataToRawTrackerHitDriver.java,v 1.1 2012/08/14 00:58:03 meeg Exp $
+ */
+public class SVTDataToRawTrackerHitDriver extends Driver {
+
+ String svtDataCollectionName = "SVTData";
+ String rawTrackerHitOutputCollectionName = "SVTRawTrackerHits";
+ String readoutName = "TrackerHits";
+ boolean debug = false;
+
+ public SVTDataToRawTrackerHitDriver() {
+ }
+
+ public void setDebug(boolean debug) {
+ this.debug = debug;
+ }
+
+ public void setReadoutName(String readoutName) {
+ this.readoutName = readoutName;
+ }
+
+ public void setSvtDataCollectionName(String svtDataCollectionName) {
+ this.svtDataCollectionName = svtDataCollectionName;
+ }
+
+ public void setRawTrackerHitOutputCollectionName(String rawTrackerHitOutputCollectionName) {
+ this.rawTrackerHitOutputCollectionName = rawTrackerHitOutputCollectionName;
+ }
+
+ public void process(EventHeader event) {
+
+ if (!event.hasCollection(HPSSVTData.class, svtDataCollectionName)) {
+ System.out.println(svtDataCollectionName + " does not exist; skipping event");
+ return;
+ }
+
+ List<HPSSVTData> svtDataCollection = event.get(HPSSVTData.class, svtDataCollectionName);
+// if (svtDataCollection.isEmpty()) {
+// System.out.println(svtDataCollectionName + " is empty; skipping event");
+// return;
+// }
+
+ List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
+ for (HPSSVTData svtData : svtDataCollection) {
+ if(debug)
+ System.out.println(this.getClass().getSimpleName() + ": FPGA: " + svtData.getFPGAAddress() + " Hybrid: " + svtData.getHybridNumber());
+
+ Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(svtData.getHybridNumber(), svtData.getFPGAAddress());
+ SiSensor sensor = SvtUtils.getInstance().getSensor(daqPair);
+
+ if (sensor == null) {
+ throw new RuntimeException("Unexpected DAQ address: FPGA " + svtData.getFPGAAddress() + ", hybrid " + svtData.getHybridNumber());
+ }
+
+ if(debug){
+ if(SvtUtils.getInstance().isTopLayer(sensor)){
+ System.out.println(this.getClass().getSimpleName() + ": Top Layer Number: " + SvtUtils.getInstance().getLayerNumber(sensor));
+ } else {
+ System.out.println(this.getClass().getSimpleName() + ": Bottom Layer Number: " + SvtUtils.getInstance().getLayerNumber(sensor));
+ }
+ }
+
+ int sensorChannel = svtData.getSensorChannel();
+
+ //strip 639 exists as an APV channel but not as a sensor strip; drop it
+ // If the channel has been tagged to be bad, drop it
+ if (sensorChannel >= HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR || HPSSVTCalibrationConstants.isBadChannel(sensor, sensorChannel)) {
+ continue;
+ }
+
+ // Get all shaper signal samples associated with this hit
+ short data[] = svtData.getAllSamples();
+
+ // Get the hit time (is 0)
+ int hitTime = svtData.getHitTime();
+
+ // Find the side number (is 1)
+ int sideNumber;
+ if (sensor.hasElectrodesOnSide(ChargeCarrier.HOLE)) {
+ sideNumber = ChargeCarrier.HOLE.charge();
+ } else {
+ sideNumber = ChargeCarrier.ELECTRON.charge();
+ }
+
+ long cell_id = sensor.makeStripId(sensorChannel, sideNumber).getValue();
+ RawTrackerHit myHit = new BaseRawTrackerHit(hitTime, cell_id, data, null, sensor);
+
+ if(debug)
+ System.out.println(this.getClass().getSimpleName() + "Cell ID Module " + myHit.getIdentifierFieldValue("module") + "Cell ID Layer: " + myHit.getIdentifierFieldValue("layer") + "Strip Number: " + myHit.getIdentifierFieldValue("strip"));
+ myHit.getDetectorElement().getReadout().addHit((myHit));
+ hits.add(new BaseRawTrackerHit(hitTime, cell_id, data, null, sensor));
+ }
+
+ if (debug) {
+ System.out.println(this.getClass().getSimpleName() + " made " + hits.size()
+ + " RawTrackerHits with readoutName " + readoutName + " in collection " + rawTrackerHitOutputCollectionName);
+ }
+
+ int flag = LCIOUtil.bitSet(0, 31, true); // Turn on 64-bit cell ID.
+ event.put(rawTrackerHitOutputCollectionName, hits, RawTrackerHit.class, flag, readoutName);
+ }
+}
hps-java/src/main/java/org/lcsim/hps/evio
diff -N SVTEvioReader_RTH.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SVTEvioReader_RTH.java 14 Aug 2012 00:58:03 -0000 1.1
@@ -0,0 +1,170 @@
+package org.lcsim.hps.evio;
+
+//--- java ---//
+import java.util.ArrayList;
+import java.util.List;
+
+//--- Coda ---//
+import org.jlab.coda.jevio.BaseStructure;
+import org.jlab.coda.jevio.EvioEvent;
+
+//--- org.lcsim ---//
+import org.lcsim.detector.tracker.silicon.ChargeCarrier;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
+
+//--- hps-java ---//
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.base.BaseRawTrackerHit;
+import org.lcsim.hps.recon.tracking.FpgaData;
+import org.lcsim.hps.recon.tracking.HPSSVTData;
+
+//--- Constants ---//
+import static org.lcsim.hps.evio.EventConstants.SVT_BANK_TAG;
+import org.lcsim.hps.recon.tracking.HPSSVTConstants;
+import org.lcsim.hps.recon.tracking.SvtUtils;
+import org.lcsim.hps.util.Pair;
+import org.lcsim.util.lcio.LCIOUtil;
+
+/**
+ *
+ * @author Omar Moreno <[log in to unmask]>
+ * @version $Id: SVTEvioReader_RTH.java,v 1.1 2012/08/14 00:58:03 meeg Exp $
+ */
+public class SVTEvioReader_RTH extends EvioReader {
+
+ String fpgaDataCollectionName = "FPGAData";
+ String readoutName = "TrackerHits";
+
+ /**
+ *
+ */
+ public SVTEvioReader_RTH() {
+ hitCollectionName = "SVTRawTrackerHits";
+ debug = false;
+ }
+
+ public void setReadoutName(String readoutName) {
+ this.readoutName = readoutName;
+ }
+
+ /**
+ *
+ */
+ public boolean makeHits(EvioEvent event, EventHeader lcsimEvent) {
+ // Create DAQ Maps
+ if (!SvtUtils.getInstance().isSetup()) {
+ SvtUtils.getInstance().setupDaqMaps(lcsimEvent.getDetector());
+ }
+
+ // Create a list to hold the temperatures
+ List<FpgaData> fpgaDataCollection = new ArrayList<FpgaData>();
+
+ List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
+
+ boolean foundBank = false;
+ for (BaseStructure crateBank : event.getChildren()) {
+ int crateTag = crateBank.getHeader().getTag();
+
+ // Process only events inside the SVT Bank
+ if (crateTag == SVT_BANK_TAG) {
+ foundBank = true;
+ if (crateBank.getChildCount() == 0) {
+ throw new RuntimeException("No children found in SVT bank!");
+ }
+
+ // Loop over all FPGA banks
+ for (BaseStructure fpgaBank : crateBank.getChildren()) {
+ int fpgaID = fpgaBank.getHeader().getTag();
+ if (fpgaID < 0 || fpgaID >= HPSSVTConstants.SVT_TOTAL_FPGAS) {
+ System.out.println("Unexpected FPGA bank tag " + fpgaID);
+ }
+
+ // The data contained in FPGA 7 is currently not used
+ if (fpgaBank.getHeader().getTag() == 7) {
+ continue;
+ }
+
+ // Get data
+ int[] data = fpgaBank.getIntData();
+
+ if (debug) {
+ System.out.println(this.getClass().getSimpleName() + ": The data size is " + data.length);
+ }
+
+ if (debug) {
+ for (int index = 0; index < data.length; index++) {
+ System.out.println("Data " + index + ": " + data[index]);
+ }
+ }
+
+ // Get the hybrid temperature data associated with this FPGA
+ int[] temperatureData = new int[6];
+ System.arraycopy(data, 1, temperatureData, 0, 6);
+ FpgaData fpgaData = new FpgaData(fpgaID, temperatureData, data[data.length - 1]);
+ fpgaDataCollection.add(fpgaData);
+
+
+ if (debug) {
+ System.out.println(this.getClass().getSimpleName() + ": The temperatures are: ");
+ double[] temps = HPSSVTData.getTemperature(temperatureData);
+ for (int index = 0; index < temps.length; index++) {
+ System.out.println("Temp " + index + ": " + temps[index]);
+ }
+ }
+
+ // Get all of the samples
+ int sampleLength = data.length - temperatureData.length - 2; // Tail length
+ int[] allSamples = new int[sampleLength];
+ System.arraycopy(data, 7, allSamples, 0, sampleLength);
+
+ if (debug) {
+ for (int index = 0; index < allSamples.length; index++) {
+ System.out.println("Sample " + index + ": " + allSamples[index]);
+ }
+ }
+
+ // Check whether a complete set of samples exist
+ if (allSamples.length % 4 != 0) {
+ throw new RuntimeException("Size of samples array is not divisible by 4!");
+ }
+
+ // Loop over all samples and create HPSSVTData
+ for (int index = 0; index < allSamples.length; index += 4) {
+ int[] samples = new int[4];
+ System.arraycopy(allSamples, index, samples, 0, samples.length);
+ hits.add(makeHit(samples));
+ }
+ }
+ }
+ }
+ if (debug) {
+ System.out.println("Adding RawTrackerHit Collection of Size " + hits.size());
+ }
+
+ lcsimEvent.put(fpgaDataCollectionName, fpgaDataCollection, GenericObject.class, 0);
+ int flag = LCIOUtil.bitSet(0, 31, true); // Turn on 64-bit cell ID.
+ lcsimEvent.put(hitCollectionName, hits, RawTrackerHit.class, flag, readoutName);
+
+ return foundBank;
+ }
+
+ private static RawTrackerHit makeHit(int[] data) {
+ int hitTime = 0;
+ Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(HPSSVTData.getHybridNumber(data), HPSSVTData.getFPGAAddress(data));
+ SiSensor sensor = SvtUtils.getInstance().getSensor(daqPair);
+
+ // Find the side number (is 1)
+ int sideNumber;
+ if (sensor.hasElectrodesOnSide(ChargeCarrier.HOLE)) {
+ sideNumber = ChargeCarrier.HOLE.charge();
+ } else {
+ sideNumber = ChargeCarrier.ELECTRON.charge();
+ }
+ int sensorChannel = HPSSVTData.getSensorChannel(data);
+ long cell_id = sensor.makeStripId(sensorChannel, sideNumber).getValue();
+
+ return new BaseRawTrackerHit(hitTime, cell_id, HPSSVTData.getAllSamples(data), null, sensor);
+ }
+}
hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.19 -r1.20
--- LCSimTestRunEventBuilder.java 3 Aug 2012 23:14:39 -0000 1.19
+++ LCSimTestRunEventBuilder.java 14 Aug 2012 00:58:03 -0000 1.20
@@ -28,13 +28,13 @@
// Debug flag.
private boolean debug = false;
ECalEvioReader ecalReader = null;
- SVTEvioReader svtReader = null;
+ SVTEvioReader_RTH svtReader = null;
public LCSimTestRunEventBuilder() {
LCSimConditionsManagerImplementation.register();
ecalReader = new ECalEvioReader();
- svtReader = new SVTEvioReader();
+ svtReader = new SVTEvioReader_RTH();
}
public void setDetectorName(String detectorName) {
hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.7 -r1.8
--- SVTEvioReader.java 8 May 2012 15:52:52 -0000 1.7
+++ SVTEvioReader.java 14 Aug 2012 00:58:03 -0000 1.8
@@ -15,7 +15,6 @@
//--- hps-java ---//
import org.lcsim.hps.recon.tracking.FpgaData;
import org.lcsim.hps.recon.tracking.HPSSVTData;
-import org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver;
//--- Constants ---//
import static org.lcsim.hps.evio.EventConstants.SVT_BANK_TAG;
@@ -24,11 +23,10 @@
/**
*
* @author Omar Moreno <[log in to unmask]>
- * @version $Id: SVTEvioReader.java,v 1.7 2012/05/08 15:52:52 meeg Exp $
+ * @version $Id: SVTEvioReader.java,v 1.8 2012/08/14 00:58:03 meeg Exp $
*/
public class SVTEvioReader extends EvioReader {
- SVTDataToRawTrackerHitDriver hitMaker;
String fpgaDataCollectionName = "FPGAData";
/**
hps-java/src/main/java/org/lcsim/hps/users/meeg
diff -u -r1.5 -r1.6
--- FilterMCBunches.java 9 Aug 2012 22:25:27 -0000 1.5
+++ FilterMCBunches.java 14 Aug 2012 00:58:03 -0000 1.6
@@ -23,7 +23,7 @@
* Can also be used to chain multiple LCIO files together.
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: FilterMCBunches.java,v 1.5 2012/08/09 22:25:27 meeg Exp $
+ * @version $Id: FilterMCBunches.java,v 1.6 2012/08/14 00:58:03 meeg Exp $
*/
public class FilterMCBunches {
@@ -45,12 +45,6 @@
public static void main(String[] args) {
// Set up command line parsing.
Options options = createCommandLineOptions();
- if (args.length == 0) {
- System.out.println("FilterMCBunches <input files> <output file>");
- HelpFormatter help = new HelpFormatter();
- help.printHelp(" ", options);
- System.exit(1);
- }
CommandLineParser parser = new PosixParser();
// Parse command line arguments.
@@ -62,6 +56,14 @@
}
String[] parsedArgs = cl.getArgs();
+
+ if (parsedArgs.length < 2) {
+ System.out.println("FilterMCBunches <input files> <output file>");
+ HelpFormatter help = new HelpFormatter();
+ help.printHelp(" ", options);
+ System.exit(1);
+ }
+
String outFileName = parsedArgs[parsedArgs.length - 1];
LCIOWriter writer = null;
hps-java/src/main/java/org/lcsim/hps/users/phansson
diff -u -r1.3 -r1.4
--- ECalGainDriver.java 9 Aug 2012 22:27:10 -0000 1.3
+++ ECalGainDriver.java 14 Aug 2012 00:58:04 -0000 1.4
@@ -56,6 +56,7 @@
private Integer yList[];
private JButton blankButton;
private IHistogram1D pePlots[][][] = new IHistogram1D[47][11][5];
+ private IHistogram1D peCrystalPlots[][] = new IHistogram1D[47][11];
private IHistogram2D mpePlot;
private IHistogram2D spePlot;
private IHistogram2D hitmap;
@@ -64,6 +65,12 @@
@Override
public void detectorChanged(Detector detector) {
+ try {
+ gainWriter = new PrintWriter(ecalGainFileName);
+ } catch (FileNotFoundException ex) {
+ Logger.getLogger(ECalGainDriver.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
pePlotterFrame = new AIDAFrame();
pePlotterFrame.setTitle("Gain Frame");
@@ -129,6 +136,7 @@
} else {
pePlots[icol + 23][irow + 5][iE] = aida.histogram1D("E over p x=" + icol + " y=" + irow + " iE=" + iE, 50, 0, 2);
}
+ peCrystalPlots[icol + 23][irow + 5] = aida.histogram1D("crystal E over p x=" + icol + " y=" + irow, 50, 0, 2);
}
}
}
@@ -179,12 +187,6 @@
public ECalGainDriver() {
trkMatchTool = new EcalTrackMatch(false);
-
- try {
- gainWriter = new PrintWriter(ecalGainFileName);
- } catch (FileNotFoundException ex) {
- Logger.getLogger(ECalGainDriver.class.getName()).log(Level.SEVERE, null, ex);
- }
}
public void setDebug(boolean flag) {
@@ -279,6 +281,18 @@
double Ep = E;
double Eoverp = Ep / P;
+ CalorimeterHit maxHit = null;
+ for (CalorimeterHit hit : cl.getCalorimeterHits()) {
+ if (maxHit == null || hit.getRawEnergy() > maxHit.getRawEnergy()) {
+ maxHit = hit;
+ }
+ }
+ if (maxHit.getRawEnergy()/cl.getEnergy() > 0.6) {
+ int x = maxHit.getIdentifierFieldValue("ix");
+ int y = maxHit.getIdentifierFieldValue("iy");
+ peCrystalPlots[x+23][y+5].fill(maxHit.getRawEnergy()/P);
+ }
+
if (debug) {
System.out.println("P " + P + " E " + E);
}
@@ -349,7 +363,10 @@
//displayFastTrackingPlots();
for (int x = -23; x <= 23; x++) { // slot
for (int y = -5; y <= 5; y++) { // crate
- System.out.printf("%d\t%d\t%d\t%f\t%f\n", x, y, pePlots[x + 23][y + 5][0].allEntries(), pePlots[x + 23][y + 5][0].mean(), pePlots[x + 23][y + 5][0].rms());
+ if (HPSEcalConditions.physicalToGain(HPSEcalConditions.makePhysicalID(x, y)) != null) {
+// System.out.printf("%d\t%d\t%d\t%f\t%f\n", x, y, pePlots[x + 23][y + 5][0].allEntries(), pePlots[x + 23][y + 5][0].mean(), pePlots[x + 23][y + 5][0].rms());
+ System.out.printf("%d\t%d\t%d\t%f\t%f\n", x, y, peCrystalPlots[x + 23][y + 5].allEntries(), peCrystalPlots[x + 23][y + 5].mean(), peCrystalPlots[x + 23][y + 5].rms());
+ }
}
}
hps-java/src/main/java/org/lcsim/hps/recon/ecal
diff -u -r1.2 -r1.3
--- TestRunRateAnalysis.java 30 Jul 2012 22:33:07 -0000 1.2
+++ TestRunRateAnalysis.java 14 Aug 2012 00:58:04 -0000 1.3
@@ -15,7 +15,7 @@
* Prints triggers to file if file path specified.
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: TestRunRateAnalysis.java,v 1.2 2012/07/30 22:33:07 meeg Exp $
+ * @version $Id: TestRunRateAnalysis.java,v 1.3 2012/08/14 00:58:04 meeg Exp $
*/
public class TestRunRateAnalysis extends Driver {
@@ -76,9 +76,9 @@
if (mcparticles.isEmpty()) {
return;
}
- if (mcparticles.size() != 1) {
- throw new RuntimeException("expected exactly 1 MCParticle");
- }
+// if (mcparticles.size() != 1) {
+// throw new RuntimeException("expected exactly 1 MCParticle");
+// }
// MCParticle particle = mcparticles.get(0);
// Get the list of raw ECal hits.
CVSspam 0.2.12