Commit in hps-java on MAIN | |||
src/main/java/org/lcsim/hps/recon/tracking/SvtUtils.java | +117 | -112 | 1.3 -> 1.4 |
/HPSSVTSensorSetup.java | +45 | -51 | 1.8 -> 1.9 |
/HPSSVTData.java | +31 | -3 | 1.6 -> 1.7 |
/SVTDataToRawTrackerHitDriver.java | -119 | 1.13 removed | |
src/main/resources/org/lcsim/hps/steering/HPSTestRunOnlineTracking.lcsim | +1 | -5 | 1.3 -> 1.4 |
/SensorOccupancyPlots.lcsim | -4 | 1.1 -> 1.2 | |
/OfflineTrackingAxial.lcsim | +1 | -6 | 1.2 -> 1.3 |
/TestRunMonitoring.lcsim | -2 | 1.20 -> 1.21 | |
/OnlineTracking.lcsim | -5 | 1.13 -> 1.14 | |
/HPSTestRunOfflineTracking.lcsim | +1 | -5 | 1.2 -> 1.3 |
/TestRunEventDisplay.lcsim | -2 | 1.6 -> 1.7 | |
/EcalGainDriverSim.lcsim | +2 | -2 | 1.1 -> 1.2 |
/MultScatAna.lcsim | -6 | 1.3 -> 1.4 | |
/SVTMonitoring.lcsim | -4 | 1.1 -> 1.2 | |
/TestRunCnv.lcsim | -15 | 1.2 removed | |
/FastTracking.lcsim | -71 | 1.5 removed | |
sandbox/TestRunCnv.lcsim | +15 | added 1.1 | |
/FastTracking.lcsim | +69 | added 1.1 | |
/SVTDataToRawTrackerHitDriver.java | +119 | added 1.1 | |
src/main/java/org/lcsim/hps/evio/SVTEvioReader_RTH.java | +170 | added 1.1 | |
/LCSimTestRunEventBuilder.java | +2 | -2 | 1.19 -> 1.20 |
/SVTEvioReader.java | +1 | -3 | 1.7 -> 1.8 |
src/main/java/org/lcsim/hps/users/meeg/FilterMCBunches.java | +9 | -7 | 1.5 -> 1.6 |
src/main/java/org/lcsim/hps/users/phansson/ECalGainDriver.java | +24 | -7 | 1.3 -> 1.4 |
src/main/java/org/lcsim/hps/recon/ecal/TestRunRateAnalysis.java | +4 | -4 | 1.2 -> 1.3 |
+611 | -435 |
read RawTrackerHits directly from EVIO or LCIO
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;
}
-
}
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 *
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);
} }
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); - } -}
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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); + } +}
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); + } +}
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) {
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"; /**
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;
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()); + }
} }
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.
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1