7 modified files
java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/PlotUtils.java 2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/PlotUtils.java 2014-10-15 06:28:19 UTC (rev 1199)
@@ -3,16 +3,21 @@
import hep.aida.ICloud2D;
import hep.aida.IFitResult;
import hep.aida.IFitter;
-//--- hep ---//
import hep.aida.IHistogram1D;
import hep.aida.IHistogram2D;
import hep.aida.IPlotter;
import hep.aida.IPlotterStyle;
-import org.hps.conditions.deprecated.SvtUtils;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.util.aida.AIDA;
+/**
+ * A set of plotting utilities.
+ *
+ * @author Omar Moreno <[log in to unmask]>
+ *
+ */
public class PlotUtils {
// Default ctor
@@ -87,13 +92,13 @@
*/
public static int getPlotterRegion(SiSensor sensor) {
- int layer = SvtUtils.getInstance().getLayerNumber(sensor);
+ int layer = ((HpsSiSensor) sensor).getLayerNumber();
// Compute the sensor's x and y grid coordinates and then translate to region number.
int ix = (layer - 1) / 2;
int iy = 0;
- if (!SvtUtils.getInstance().isTopLayer(sensor)) {
- iy += 2;
+ if (!((HpsSiSensor) sensor).isTopLayer()){
+ iy += 2;
}
if (layer % 2 == 0) {
iy += 1;
java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SimpleSvtTrigger.java 2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SimpleSvtTrigger.java 2014-10-15 06:28:19 UTC (rev 1199)
@@ -5,10 +5,8 @@
import java.util.List;
import java.util.Set;
-import org.hps.conditions.deprecated.SvtUtils;
import org.hps.recon.tracking.FindableTrack;
import org.hps.recon.tracking.apv25.Apv25Full;
-import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.MCParticle;
import org.lcsim.event.SimTrackerHit;
@@ -16,6 +14,7 @@
import org.lcsim.util.Driver;
//--- hps-java ---//
+// TODO: Sandbox this class
public class SimpleSvtTrigger extends Driver {
FindableTrack findable = null;
@@ -133,10 +132,10 @@
*/
private boolean isSameSvtVolume(Set<SimTrackerHit> simTrackerHits){
int volumeIndex = 0;
- for(SimTrackerHit simTrackerHit : simTrackerHits){
+ /*for(SimTrackerHit simTrackerHit : simTrackerHits){
if(SvtUtils.getInstance().isTopLayer((SiSensor) simTrackerHit.getDetectorElement())) volumeIndex++;
else volumeIndex--;
- }
+ }*/
return Math.abs(volumeIndex) == simTrackerHits.size();
}
java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtHitCorrelations.java 2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtHitCorrelations.java 2014-10-15 06:28:19 UTC (rev 1199)
@@ -1,26 +1,21 @@
package org.hps.users.omoreno;
-//--- java ---//
-//--- aida ---//
import hep.aida.IPlotter;
import java.util.ArrayList;
import java.util.List;
-import org.hps.conditions.deprecated.SvtUtils;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.geometry.Detector;
-//--- org.lcsim ---//
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
-//--- hps-java ---//
/**
- *
- * @author Omar Moreno
- * @version $Id: SvtHitCorrelations.java,v 1.2 2013/10/25 19:45:01 jeremy Exp $
+ * Driver to find the correlations between stereo hits.
+ *
+ * @author Omar Moreno <[log in to unmask]>
*
*/
public class SvtHitCorrelations extends Driver {
@@ -143,29 +138,29 @@
for(RawTrackerHit rawHit1 : rawHits){
- SiSensor sensor1 = (SiSensor) rawHit1.getDetectorElement();
- int layer1 = (int) Math.ceil(((double) SvtUtils.getInstance().getLayerNumber(sensor1))/2);
+ HpsSiSensor sensor1 = (HpsSiSensor) rawHit1.getDetectorElement();
+ int layer1 = (int) Math.ceil(((double) sensor1.getLayerNumber())/2);
int channel1 = rawHit1.getIdentifierFieldValue("strip");
for(RawTrackerHit rawHit2 : rawHits){
- SiSensor sensor2 = (SiSensor) rawHit2.getDetectorElement();
- int layer2 = (int) Math.ceil(((double) SvtUtils.getInstance().getLayerNumber(sensor2))/2);
+ HpsSiSensor sensor2 = (HpsSiSensor) rawHit2.getDetectorElement();
+ int layer2 = (int) Math.ceil(((double) sensor2.getLayerNumber())/2);
int channel2 = rawHit2.getIdentifierFieldValue("strip");
- if(SvtUtils.getInstance().isTopLayer(sensor1) && SvtUtils.getInstance().isTopLayer(sensor2)){
- if(SvtUtils.getInstance().isAxial(sensor1) && SvtUtils.getInstance().isAxial(sensor2) && taa){
+ if(sensor1.isTopLayer() && sensor2.isTopLayer()){
+ if(sensor1.isAxial() && sensor2.isAxial() && taa){
String plotName = "Top Channel Correlation: Axial Layer " + layer1 + " vs Axial Layer " + layer2;
aida.histogram2D(plotName).fill(channel1, channel2);
- } else if(SvtUtils.getInstance().isAxial(sensor1) && !SvtUtils.getInstance().isAxial(sensor2) && tas){
+ } else if(sensor1.isAxial() && !sensor2.isAxial() && tas){
String plotName = "Top Channel Correlation: Axial Layer " + layer1 + " vs Stereo Layer " + layer2;
aida.histogram2D(plotName).fill(channel1, channel2);
}
- } else if(!SvtUtils.getInstance().isTopLayer(sensor1) && !SvtUtils.getInstance().isTopLayer(sensor2) && baa){
- if(SvtUtils.getInstance().isAxial(sensor1) && SvtUtils.getInstance().isAxial(sensor2)){
+ } else if(!sensor1.isTopLayer() && !sensor2.isTopLayer() && baa){
+ if(sensor1.isAxial() && sensor2.isAxial()){
String plotName = "Bottom Channel Correlation: Axial Layer " + layer1 + " vs Axial Layer " + layer2;
aida.histogram2D(plotName).fill(channel1, channel2);
- } else if(SvtUtils.getInstance().isAxial(sensor1) && !SvtUtils.getInstance().isAxial(sensor2) && bas){
+ } else if(sensor1.isAxial() && !sensor2.isAxial() && bas){
String plotName = "Bottom Channel Correlation: Axial Layer " + layer1 + " vs Stereo Layer " + layer2;
aida.histogram2D(plotName).fill(channel1, channel2);
}
java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java 2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java 2014-10-15 06:28:19 UTC (rev 1199)
@@ -1,7 +1,6 @@
package org.hps.users.omoreno;
-//--- java ---//
import hep.aida.ICloud2D;
import hep.aida.IHistogram1D;
import hep.aida.IHistogram2D;
@@ -16,16 +15,12 @@
import java.util.List;
import java.util.Map;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
-import org.hps.recon.tracking.TrackUtils;
-import org.hps.recon.tracking.TrackerHitUtils;
import org.lcsim.detector.ITransform3D;
import org.lcsim.detector.solids.Box;
import org.lcsim.detector.solids.Point3D;
import org.lcsim.detector.solids.Polygon3D;
import org.lcsim.detector.tracker.silicon.ChargeCarrier;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.detector.tracker.silicon.SiStrips;
import org.lcsim.event.EventHeader;
@@ -33,11 +28,19 @@
import org.lcsim.event.TrackerHit;
import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.geometry.Detector;
-//--- lcsim ---//
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
-//--- hps-java ---//
+import org.hps.recon.ecal.HPSEcalCluster;
+import org.hps.recon.tracking.TrackUtils;
+import org.hps.recon.tracking.TrackerHitUtils;
+
+/**
+ * Analysis driver used to calculate the hit efficiency of the SVT.
+ *
+ * @author Omar Moreno <[log in to unmask]>
+ *
+ */
public class SvtHitEfficiency extends Driver {
private AIDA aida;
@@ -45,6 +48,7 @@
private List<IHistogram2D> histos2D = new ArrayList<IHistogram2D>();
private List<IPlotter> plotters = new ArrayList<IPlotter>();
private Map<SiSensor, Map<Integer, Hep3Vector>> stripPositions = new HashMap<SiSensor, Map<Integer, Hep3Vector>>();
+ private List<HpsSiSensor> sensors = null;
TrackerHitUtils trackerHitUtils = new TrackerHitUtils();
boolean debug = false;
@@ -79,6 +83,7 @@
// Constants
public static final double SENSOR_LENGTH = 98.33; // mm
public static final double SENSOR_WIDTH = 38.3399; // mm
+ private static final String SUBDETECTOR_NAME = "Tracker";
/**
* Default Ctor
@@ -102,6 +107,9 @@
public void detectorChanged(Detector detector){
+ // Get the list of sensors
+ sensors = detector.getSubdetector(SUBDETECTOR_NAME).getDetectorElement().findDescendants(HpsSiSensor.class);
+
// setup AIDA
aida = AIDA.defaultInstance();
aida.tree().cd("/");
@@ -114,7 +122,7 @@
// Create a Map from sensor to bad channels and from bad channels to
// strip position
for(ChargeCarrier carrier : ChargeCarrier.values()){
- for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
+ for(SiSensor sensor : sensors){
if(sensor.hasElectrodesOnSide(carrier)){
stripPositions.put(sensor, new HashMap<Integer, Hep3Vector>());
SiStrips strips = (SiStrips) sensor.getReadoutElectrodes(carrier);
@@ -182,24 +190,24 @@
title = "Track Position - Layer " + index + " - Difference";
cloud2D = aida.cloud2D(title);
PlotUtils.setup2DRegion(plotters.get(plotterIndex), title, 1, "x [mm]", "y [mm]", cloud2D, style);
- sensor = SvtUtils.getInstance().getBottomSensor(layerNumber, 0);
- title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+ //sensor = SvtUtils.getInstance().getBottomSensor(layerNumber, 0);
+ //title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
histo1D = aida.histogram1D(title, 640, 0, 639);
histos1D.add(histo1D);
PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 2, "Channel #", histo1D);
- sensor = SvtUtils.getInstance().getTopSensor(layerNumber, 0);
- title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+ //sensor = SvtUtils.getInstance().getTopSensor(layerNumber, 0);
+ //title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
histo1D = aida.histogram1D(title, 640, 0, 639);
histos1D.add(histo1D);
PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 4, "Channel #", histo1D);
layerNumber++;
- sensor = SvtUtils.getInstance().getBottomSensor(layerNumber, 0);
- title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+ //sensor = SvtUtils.getInstance().getBottomSensor(layerNumber, 0);
+ //title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
histo1D = aida.histogram1D(title, 640, 0, 639);
histos1D.add(histo1D);
PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 3, "Channel #", histo1D);
- sensor = SvtUtils.getInstance().getTopSensor(layerNumber, 0);
- title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+ //sensor = SvtUtils.getInstance().getTopSensor(layerNumber, 0);
+ //title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
histo1D = aida.histogram1D(title, 640, 0, 639);
histos1D.add(histo1D);
PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 5, "Channel #", histo1D);
@@ -338,14 +346,14 @@
List<SiSensor> sensors = new ArrayList<SiSensor>();
if(TrackUtils.getZ0(track) > 0){
- sensors.add(SvtUtils.getInstance().getTopSensor(layer, 0));
- sensors.add(SvtUtils.getInstance().getTopSensor(layer+1, 0));
+ //sensors.add(SvtUtils.getInstance().getTopSensor(layer, 0));
+ //sensors.add(SvtUtils.getInstance().getTopSensor(layer+1, 0));
} else {
- sensors.add(SvtUtils.getInstance().getBottomSensor(layer, 0));
- sensors.add(SvtUtils.getInstance().getBottomSensor(layer+1, 0));
+ //sensors.add(SvtUtils.getInstance().getBottomSensor(layer, 0));
+ //sensors.add(SvtUtils.getInstance().getBottomSensor(layer+1, 0));
}
- aida.histogram1D(SvtUtils.getInstance().getDescription(sensors.get(0)) + " - Occupancy").fill(this.findIntersectingChannel(frontTrackPos, sensors.get(0)));
- aida.histogram1D(SvtUtils.getInstance().getDescription(sensors.get(1)) + " - Occupancy").fill(this.findIntersectingChannel(rearTrackPos, sensors.get(1)));
+ //aida.histogram1D(SvtUtils.getInstance().getDescription(sensors.get(0)) + " - Occupancy").fill(this.findIntersectingChannel(frontTrackPos, sensors.get(0)));
+ //aida.histogram1D(SvtUtils.getInstance().getDescription(sensors.get(1)) + " - Occupancy").fill(this.findIntersectingChannel(rearTrackPos, sensors.get(1)));
if(debug)
System.out.println(this.getClass().getSimpleName() + ": Stereo hit was not found.");
@@ -371,13 +379,13 @@
- List<SiSensor> sensors = new ArrayList<SiSensor>();
+ List<HpsSiSensor> sensors = new ArrayList<HpsSiSensor>();
if(TrackUtils.getZ0(track) > 0){
- sensors.add(SvtUtils.getInstance().getTopSensor(layer, 0));
- sensors.add(SvtUtils.getInstance().getTopSensor(layer + 1, 0));
+ //sensors.add(SvtUtils.getInstance().getTopSensor(layer, 0));
+ //sensors.add(SvtUtils.getInstance().getTopSensor(layer + 1, 0));
} else {
- sensors.add(SvtUtils.getInstance().getBottomSensor(layer, 0));
- sensors.add(SvtUtils.getInstance().getBottomSensor(layer + 1, 0));
+ //sensors.add(SvtUtils.getInstance().getBottomSensor(layer, 0));
+ //sensors.add(SvtUtils.getInstance().getBottomSensor(layer + 1, 0));
}
Hep3Vector frontSensorPos = sensors.get(0).getGeometry().getPosition();
@@ -432,7 +440,6 @@
}
}
- this.printDebug(SvtUtils.getInstance().getDescription(sensor) + ": Track intersects physical channel " + intersectingChannel);
return intersectingChannel;
}
@@ -440,16 +447,16 @@
/**
*
*/
- public boolean sensorContainsTrack(Hep3Vector trackPosition, SiSensor sensor){
+ public boolean sensorContainsTrack(Hep3Vector trackPosition, HpsSiSensor sensor){
if(maskBadChannels){
int intersectingChannel = this.findIntersectingChannel(trackPosition, sensor);
if(intersectingChannel == 0 || intersectingChannel == 638) return false;
- if(HPSSVTCalibrationConstants.isBadChannel(sensor, intersectingChannel)
- || HPSSVTCalibrationConstants.isBadChannel(sensor, intersectingChannel+1)
- || HPSSVTCalibrationConstants.isBadChannel(sensor, intersectingChannel-1)){
+ if(sensor.isBadChannel(intersectingChannel)
+ || sensor.isBadChannel(intersectingChannel+1)
+ || sensor.isBadChannel(intersectingChannel-1)){
this.printDebug("Track intersects a bad channel!");
return false;
}
@@ -460,10 +467,6 @@
Hep3Vector sensorPos = sensor.getGeometry().getPosition();
Box sensorSolid = (Box) sensor.getGeometry().getLogicalVolume().getSolid();
Polygon3D sensorFace = sensorSolid.getFacesNormalTo(new BasicHep3Vector(0, 0, 1)).get(0);
- if(debug){
- System.out.println(this.getClass().getSimpleName() + ": Sensor: " + SvtUtils.getInstance().getDescription(sensor));
- System.out.println(this.getClass().getSimpleName() + ": Track Position: " + trackPosition.toString());
- }
List<Point3D> vertices = new ArrayList<Point3D>();
for(int index = 0; index < 4; index++){
java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtPerformance.java 2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtPerformance.java 2014-10-15 06:28:19 UTC (rev 1199)
@@ -11,10 +11,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
-import org.hps.recon.tracking.ShapeFitParameters;
-import org.hps.recon.tracking.ShaperAnalyticFitAlgorithm;
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
@@ -26,11 +22,13 @@
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
+import org.hps.recon.tracking.ShapeFitParameters;
+import org.hps.recon.tracking.ShaperAnalyticFitAlgorithm;
+
/**
* Driver that looks at the performance of the SVT.
*
* @author Omar Moreno <[log in to unmask]>
- * @version $Id:$
*/
public class SvtPerformance extends Driver {
@@ -307,7 +305,6 @@
int channel, bad_channel;
int maxClusterChannel = 0;
int hitsPerCluster = 0;
- ChannelConstants constants = null;
double clusterAmplitude, maxClusterAmplitude;
double noise = 0;
double trkChiSquared = 0;
@@ -358,8 +355,8 @@
RawTrackerHit rawHit = (RawTrackerHit) rh;
channel = rawHit.getIdentifierFieldValue("strip");
// Check if the channel neighbors a channel that has been tagged as bad
- if (HPSSVTCalibrationConstants.isBadChannel(sensor, channel + 1)
- || HPSSVTCalibrationConstants.isBadChannel(sensor, channel - 1)) {
+ if (sensor.isBadChannel(channel + 1)
+ || sensor.isBadChannel(channel - 1)) {
bad_channel = 1;
}
@@ -380,7 +377,6 @@
}
}
- constants = HPSSVTCalibrationConstants.getChannelConstants(sensor, channel);
for (ShapeFitParameters fit : shaperFitter.fitShape(rawHit)) {
if (fit.getAmp() > maxClusterAmplitude) {
maxClusterChannel = channel;
java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtQA.java 2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtQA.java 2014-10-15 06:28:19 UTC (rev 1199)
@@ -1,33 +1,19 @@
package org.hps.users.omoreno;
-//--- HEP ---//
import static org.hps.conditions.deprecated.HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR;
-//--- hps-java ---//
-//--- Constants ---//
import hep.aida.IHistogram1D;
import hep.aida.IHistogram2D;
import hep.aida.IPlotter;
import java.io.BufferedWriter;
import java.io.FileWriter;
-//--- Java ---//
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
-import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.recon.tracking.FittedRawTrackerHit;
-import org.hps.recon.tracking.ShapeFitParameters;
-import org.hps.recon.tracking.ShaperAnalyticFitAlgorithm;
-import org.hps.recon.tracking.TrackUtils;
-import org.hps.recon.tracking.apv25.SvtReadout;
-//--- lcsim ---//
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.event.Track;
@@ -40,12 +26,19 @@
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
+import org.hps.recon.tracking.FittedRawTrackerHit;
+import org.hps.recon.tracking.ShapeFitParameters;
+import org.hps.recon.tracking.ShaperAnalyticFitAlgorithm;
+import org.hps.recon.tracking.TrackUtils;
+import org.hps.recon.tracking.apv25.SvtReadout;
+
+
/**
* SVT Quality Assurance Driver
*
* @author Omar Moreno <[log in to unmask]>
- * @version $Id: SvtQA.java,v 1.7 2013/10/25 19:45:01 jeremy Exp $
*/
+// TODO: Split this driver up.
public class SvtQA extends Driver {
private AIDA aida;
@@ -55,6 +48,7 @@
private List<IPlotter> plotters = new ArrayList<IPlotter>();
private Map<String, double[]> sensorToOccupancy = new HashMap<String, double[]>();
private Map<String, double[]> sensorToStereoOccupancy = new HashMap<String, double[]>();
+ List<HpsSiSensor> sensors = null;
BufferedWriter output = null;
String outputFile = null;
@@ -238,7 +232,7 @@
aida.tree().cd("/");
//
- Set<SiSensor> sensors = SvtUtils.getInstance().getSensors();
+ sensors = detector.getSubdetector("Tracker").getDetectorElement().findDescendants(HpsSiSensor.class);
int plotterIndex = 0;
IHistogram1D histo1D = null;
IHistogram2D histo2D = null;
@@ -248,9 +242,9 @@
//-----------------//
if(enableOccupancy){
plotters.add(PlotUtils.setupPlotter("Occupancy", 5, 4));
- for(SiSensor sensor : sensors){
- sensorToOccupancy.put(SvtUtils.getInstance().getDescription(sensor), new double[640]);
- title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+ for(HpsSiSensor sensor : sensors){
+ sensorToOccupancy.put(sensor.getName(), new double[640]);
+ title = sensor.getName() + " - Occupancy";
histo1D = aida.histogram1D(title, 640, 0, 639);
histos1D.add(histo1D);
PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, PlotUtils.getPlotterRegion(sensor), "Channel #", histo1D);
@@ -262,9 +256,9 @@
//----------------------------//
if(enableStereoHitOccupancy){
plotters.add(PlotUtils.setupPlotter("Stereo Hit Occupancy", 5, 4));
- for(SiSensor sensor : sensors){
- sensorToStereoOccupancy.put(SvtUtils.getInstance().getDescription(sensor), new double[640]);
- title = SvtUtils.getInstance().getDescription(sensor) + " - Stereo Hit Occupancy";
+ for(HpsSiSensor sensor : sensors){
+ sensorToStereoOccupancy.put(sensor.getName(), new double[640]);
+ title = sensor.getName() + " - Stereo Hit Occupancy";
histo1D = aida.histogram1D(title, 640, 0, 639);
histos1D.add(histo1D);
PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, PlotUtils.getPlotterRegion(sensor), "Channel #", histo1D);
@@ -277,8 +271,8 @@
if(enableADCvsChannel){
if(sensorName.equals("all")){
plotters.add(PlotUtils.setupPlotter("ADC Counts vs Channel #", 5, 4));
- for(SiSensor sensor : sensors){
- title = SvtUtils.getInstance().getDescription(sensor) + " - ADC Counts vs Channel #";
+ for(HpsSiSensor sensor : sensors){
+ title = sensor.getName() + " - ADC Counts vs Channel #";
histo2D = aida.histogram2D(title, 640, 0, 639, 300, 0, 10000);
histos2D.add(histo2D);
PlotUtils.setup2DRegion(plotters.get(plotterIndex), title, PlotUtils.getPlotterRegion(sensor), "Channel #", "ADC Counts", histo2D);
@@ -377,8 +371,8 @@
if(sensorName.equals("all")){
plotters.add(PlotUtils.setupPlotter("t0 Resolution vs Channel #", 5, 4));
plotters.get(plotterIndex).style().zAxisStyle().setParameter("scale", "log");
- for(SiSensor sensor : sensors){
- title = SvtUtils.getInstance().getDescription(sensor) + " - t0 Resolution vs Channel #";
+ for(HpsSiSensor sensor : sensors){
+ title = sensor.getName() + " - t0 Resolution vs Channel #";
histo2D = aida.histogram2D(title, 640, 0, 639, 40, -20, 20);
histos2D.add(histo2D);
PlotUtils.setup2DRegion(plotters.get(plotterIndex), title, PlotUtils.getPlotterRegion(sensor), "Channel #", "t0 Resolution [ns]", histo2D);
@@ -448,13 +442,12 @@
aida.histogram1D("Total Number of RawTrackerHits").fill(rawHits.size());
}
- SiSensor sensor = null;
- ChannelConstants constants = null;
+ HpsSiSensor sensor = null;
ShapeFitParameters fit = null;
for(RawTrackerHit rawHit : rawHits){
// Get the sensor on which this hit occurred
- sensor = (SiSensor) rawHit.getDetectorElement();
+ sensor = (HpsSiSensor) rawHit.getDetectorElement();
// Get the shaper signal samples
short[] samples = rawHit.getADCValues();
@@ -473,17 +466,17 @@
// Fill the occupancy plots
if(enableOccupancy){
- title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+ title = sensor.getName() + " - Occupancy";
aida.histogram1D(title).fill(channel, 1);
}
// Fill ADC vs Channel # plots
if(enableADCvsChannel && sensorName.equals("all")){
- title = SvtUtils.getInstance().getDescription(sensor) + " - ADC Counts vs Channel #";
+ title = sensor.getName() + " - ADC Counts vs Channel #";
for(short sample : samples){
aida.histogram2D(title).fill(channel, sample);
}
- } else if(enableADCvsChannel && SvtUtils.getInstance().getDescription(sensor).equals(sensorName)){
+ } else if(enableADCvsChannel && sensor.getName().equals(sensorName)){
title = sensorName + " - ADC Counts vs Channel #";
for(short sample : samples){
aida.histogram2D(title).fill(channel, sample);
@@ -491,7 +484,7 @@
}
//
- if(enableChannelPlots && SvtUtils.getInstance().getDescription(sensor).equals(sensorName) && channel == channelNumber){
+ if(enableChannelPlots && sensor.getName().equals(sensorName) && channel == channelNumber){
title = "ADC Counts";
for(short sample : samples){
aida.histogram1D(title).fill(sample);
@@ -504,7 +497,7 @@
System.out.println("t0 " + fit.getT0());
}
- if(enableAPVPlots && SvtUtils.getInstance().getDescription(sensor).equals(sensorName) && apv == apvNumber ){
+ if(enableAPVPlots && sensor.getName().equals(sensorName) && apv == apvNumber ){
title = "APV " + apvNumber + " - ADC Counts";
for(short sample : samples){
aida.histogram1D(title).fill(sample);
@@ -520,12 +513,12 @@
/*
if(enableOccupancy){
- for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
- title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+ for(HpsSiSensor sensor : sensors){
+ title = sensor.getName() + " - Occupancy";
aida.histogram1D(title).reset();
int nEvents = simulation ? SvtReadout.getNumberOfTriggers() : totalNumberEvents;
for(int index = 0; index < 640; index++){
- aida.histogram1D(title).fill(index, sensorToOccupancy.get(SvtUtils.getInstance().getDescription(sensor))[index]/nEvents);
+ aida.histogram1D(title).fill(index, sensorToOccupancy.get(sensor.getName())[index]/nEvents);
}
}
}*/
@@ -548,10 +541,10 @@
int channel = fittedHit.getRawTrackerHit().getIdentifierFieldValue("strip");
// Get the sensor number
- sensor = (SiSensor) fittedHit.getRawTrackerHit().getDetectorElement();
+ sensor = (HpsSiSensor) fittedHit.getRawTrackerHit().getDetectorElement();
// Fill Chi Squared vs Channel # plots
- if(enableChiSquaredvsChannel && SvtUtils.getInstance().getDescription(sensor).equals(sensorName)){
+ if(enableChiSquaredvsChannel && sensor.getName().equals(sensorName)){
title = sensorName + " - Chi Squared vs Channel #";
//aida.histogram2D(title).fill(channel, fittedHit.getShapeFitParameters().getChiSq());
}
@@ -574,7 +567,7 @@
RawTrackerHit rawHit = (RawTrackerHit) hit;
- sensor = (SiSensor) rawHit.getDetectorElement();
+ sensor = (HpsSiSensor) rawHit.getDetectorElement();
// Get the channel number
int channel = rawHit.getIdentifierFieldValue("strip");
@@ -589,8 +582,8 @@
short[] samples = rawHit.getADCValues();
if(enableStereoHitOccupancy){
- title = SvtUtils.getInstance().getDescription(sensor) + " - Stereo Hit Occupancy";
- sensorToStereoOccupancy.get(SvtUtils.getInstance().getDescription(sensor))[channel] += 1;
+ title = sensor.getName() + " - Stereo Hit Occupancy";
+ sensorToStereoOccupancy.get(sensor.getName())[channel] += 1;
}
// Fill Sample Plots
@@ -598,15 +591,15 @@
if(fit.getAmp() > 2000 && fit.getAmp() < 6000){
for(int sampleN = 1; sampleN <= samples.length; sampleN++){
if((sampleN == 1 && totalNumberEvents%5 != 0) || (sampleN == 2 && totalNumberEvents%5 != 0)/* || (sampleN == 3 && totalNumberEvents%3 != 0) */) continue;
- if(SvtUtils.getInstance().isTopLayer(sensor)){
- aida.histogram2D("APV Sample Number vs Sample Amplitude - Top").fill(sampleN, samples[sampleN-1] - constants.getPedestal());
+ if(sensor.isTopLayer()){
+ aida.histogram2D("APV Sample Number vs Sample Amplitude - Top").fill(sampleN, samples[sampleN-1] - sensor.getPedestal(channel, sampleN-1));
totalTopSamples[sampleN-1]++;
- topSamples[sampleN-1] += samples[sampleN-1] - constants.getPedestal();
+ topSamples[sampleN-1] += samples[sampleN-1] - sensor.getPedestal(channel, sampleN-1);
}
else{
- aida.histogram2D("APV Sample Number vs Sample Amplitude - Bottom").fill(sampleN, samples[sampleN-1] - constants.getPedestal());
+ aida.histogram2D("APV Sample Number vs Sample Amplitude - Bottom").fill(sampleN, samples[sampleN-1] - sensor.getPedestal(channel, sampleN-1));
totalBottomSamples[sampleN-1]++;
- bottomSamples[sampleN-1] += samples[sampleN - 1] - constants.getPedestal();
+ bottomSamples[sampleN-1] += samples[sampleN - 1] - sensor.getPedestal(channel, sampleN-1);
}
}
}
@@ -616,11 +609,11 @@
/*
if(enableStereoHitOccupancy){
- for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
- title = SvtUtils.getInstance().getDescription(sensor) + " - Stereo Hit Occupancy";
+ for(HpsSiSensor sensor : sensors){
+ title = sensor.getName() + " - Stereo Hit Occupancy";
aida.histogram1D(title).reset();
for(int index = 0; index < 640; index++){
- aida.histogram1D(title).fill(index, sensorToStereoOccupancy.get(SvtUtils.getInstance().getDescription(sensor))[index]/event.getEventNumber());
+ aida.histogram1D(title).fill(index, sensorToStereoOccupancy.get(sensor.getName())[index]/event.getEventNumber());
}
}
}*/
@@ -658,19 +651,19 @@
for(HelicalTrackStrip hts : htc.getStrips()){
- //SiSensor sensor = null;
+ //HpsSiSensor sensor = null;
if(TrackUtils.getZ0(track) > 0){
- sensor = SvtUtils.getInstance().getSensor(0, hts.layer() - 1);
+ //sensor = SvtUtils.getInstance().getSensor(0, hts.layer() - 1);
} else if(TrackUtils.getZ0(track) < 0){
- sensor = SvtUtils.getInstance().getSensor(1, hts.layer() - 1);
+ //sensor = SvtUtils.getInstance().getSensor(1, hts.layer() - 1);
}
int channel = ((RawTrackerHit) hts.rawhits().get(0)).getIdentifierFieldValue("strip");
if(sensorName.equals("all")){
- aida.histogram2D(SvtUtils.getInstance().getDescription(sensor) + " - t0 Resolution vs Channel #").fill(channel, meanT0 - hts.time());
+ aida.histogram2D(sensor.getName() + " - t0 Resolution vs Channel #").fill(channel, meanT0 - hts.time());
} else {
- if(SvtUtils.getInstance().getDescription(sensor).equals(sensorName)){
+ if(sensor.getName().equals(sensorName)){
aida.histogram1D(sensorName + " - Hit Time Resolution").fill(meanT0 - hts.time());
}
@@ -690,22 +683,22 @@
String plotName;
if(enableOccupancy){
- for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
- title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+ for(HpsSiSensor sensor : sensors){
+ title = sensor.getName() + " - Occupancy";
// Scale the hits per channel by the number of events
aida.histogram1D(title).scale(1/totalNumberEvents);
// Write the occupancies to a file
- if(SvtUtils.getInstance().isTopLayer(sensor)){
+ if(sensor.isTopLayer()){
plotName = outputFile + "_top_";
} else {
plotName = outputFile + "_bottom_";
}
- if(SvtUtils.getInstance().getLayerNumber(sensor) < 10){
- plotName += "0" + SvtUtils.getInstance().getLayerNumber(sensor) + ".dat";
+ if(sensor.getLayerNumber() < 10){
+ plotName += "0" + sensor.getLayerNumber() + ".dat";
} else {
- plotName += SvtUtils.getInstance().getLayerNumber(sensor) + ".dat";
+ plotName += sensor.getLayerNumber() + ".dat";
}
// Open the output files stream
@@ -730,11 +723,10 @@
}
}
- System.out.println("Total Bad Channels: " + HPSSVTCalibrationConstants.getTotalBadChannels() + "\n");
/*
- for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
- if(outputFile != null && sensorName.equals(SvtUtils.getInstance().getDescription(sensor))){
+ for(HpsSiSensor sensor : sensors){
+ if(outputFile != null && sensorName.equals(sensor.getName())){
try{
for(int channel = 0; channel < 639; channel++){
output.write(channel + " " + this.getOccupancy(sensor, channel) + "\n");
@@ -746,7 +738,7 @@
}
System.out.println("%===================================================================%");
- System.out.println(SvtUtils.getInstance().getDescription(sensor) + " Bad Channels");
+ System.out.println(sensor.getName() + " Bad Channels");
System.out.println("%===================================================================%");
for(int index = 0; index < 640; index++){
@@ -758,9 +750,9 @@
}*/
if(enableStereoHitOccupancy){
- for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
+ for(HpsSiSensor sensor : sensors){
System.out.println("%===================================================================% \n");
- System.out.println(SvtUtils.getInstance().getDescription(sensor) + " Bad Channels");
+ System.out.println(sensor.getName() + " Bad Channels");
System.out.println("%===================================================================% \n");
for(int index = 0; index < 640; index++){
// Check is the channel can be considered bad
@@ -798,16 +790,16 @@
}
}
- public double getOccupancy(SiSensor sensor, int channel){
+ public double getOccupancy(HpsSiSensor sensor, int channel){
if(!enableOccupancy) throw new RuntimeException("Occupancy calculation was not enabled!");
double nEvents = simulation ? SvtReadout.getNumberOfTriggers() : totalNumberEvents;
- return sensorToOccupancy.get(SvtUtils.getInstance().getDescription(sensor))[channel]/nEvents;
+ return sensorToOccupancy.get(sensor.getName())[channel]/nEvents;
}
- public void checkChannel(SiSensor sensor, int channel){
+ public void checkChannel(HpsSiSensor sensor, int channel){
if(!enableOccupancy) throw new RuntimeException("Occupancy calculation was not enabled!");
- if(HPSSVTCalibrationConstants.isBadChannel(sensor, channel)) return;
+ if(sensor.isBadChannel(channel)) return;
// Find the occupancy of the current channel
double currentChannelOccu = this.getOccupancy(sensor, channel);
@@ -821,13 +813,13 @@
// Find the occupancy of the neighboring channels
if(channel == 0){
double rNeighborOccu = this.getOccupancy(sensor, channel+1);
- if(rNeighborOccu == 0 || HPSSVTCalibrationConstants.isBadChannel(sensor, channel+1)) return;
+ if(rNeighborOccu == 0 || sensor.isBadChannel(channel+1)) return;
double rOccuDiff = Math.abs(rNeighborOccu - currentChannelOccu)/rNeighborOccu;
if(rOccuDiff >= maxOccupancyVariation)
System.out.println("Channel " + channel + ": Channel Variation exceeds maximum -- RVar: " + rOccuDiff);
} else if(channel == 638){
double lNeighborOccu = this.getOccupancy(sensor, channel-1);
- if(lNeighborOccu == 0 || HPSSVTCalibrationConstants.isBadChannel(sensor, channel-1)) return;
+ if(lNeighborOccu == 0 || sensor.isBadChannel(channel-1)) return;
double lOccuDiff = Math.abs(lNeighborOccu - currentChannelOccu)/lNeighborOccu;
if(lOccuDiff >= maxOccupancyVariation)
System.out.println("Channel " + channel + ": Channel Variation exceeds maximum -- LVar: " + lOccuDiff);
@@ -837,8 +829,8 @@
else {
double rNeighborOccu = this.getOccupancy(sensor, channel+1);
double lNeighborOccu = this.getOccupancy(sensor, channel-1);
- if(rNeighborOccu == 0 || HPSSVTCalibrationConstants.isBadChannel(sensor, channel+1)
- || lNeighborOccu == 0 || HPSSVTCalibrationConstants.isBadChannel(sensor, channel-1)) return;
+ if(rNeighborOccu == 0 || sensor.isBadChannel(channel+1)
+ || lNeighborOccu == 0 || sensor.isBadChannel(channel-1)) return;
double rOccuDiff = Math.abs(rNeighborOccu - currentChannelOccu)/rNeighborOccu;
double lOccuDiff = Math.abs(lNeighborOccu - currentChannelOccu)/lNeighborOccu;
if(rOccuDiff >= maxOccupancyVariation && lOccuDiff >= maxOccupancyVariation){
java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtTrackRecoEfficiency.java 2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtTrackRecoEfficiency.java 2014-10-15 06:28:19 UTC (rev 1199)
@@ -1,12 +1,9 @@
package org.hps.users.omoreno;
-//--- java ---//
-//--- aida ---//
import hep.aida.IHistogram1D;
import hep.aida.IHistogram2D;
import hep.aida.IPlotter;
import hep.physics.vec.BasicHep3Vector;
-//--- hep ---//
import hep.physics.vec.Hep3Vector;
import hep.physics.vec.VecOp;
@@ -20,10 +17,8 @@
import java.util.Map;
import java.util.Set;
-import org.hps.analysis.examples.TrackAnalysis;
-import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.recon.tracking.FindableTrack;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.MCParticle;
import org.lcsim.event.RawTrackerHit;
@@ -38,11 +33,12 @@
import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHit;
import org.lcsim.recon.tracking.seedtracker.SeedStrategy;
import org.lcsim.recon.tracking.seedtracker.StrategyXMLUtils;
-//--- lcsim ---//
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
-//--- hps-java ---//
+import org.hps.analysis.examples.TrackAnalysis;
+import org.hps.recon.tracking.FindableTrack;
+
/**
*
* @author Omar Moreno <[log in to unmask]>
@@ -56,6 +52,7 @@
private List<IHistogram2D> histo2D = new ArrayList<IHistogram2D>();
private Map<Integer, List<SimTrackerHit>> topSimTrackerHitsList = new HashMap<Integer, List<SimTrackerHit>>();
private Map<Integer, List<SimTrackerHit>> bottomSimTrackerHitsList = new HashMap<Integer, List<SimTrackerHit>>();
+ private List<HpsSiSensor> sensors = null;
FindableTrack findable = null;
TrackAnalysis trkAnalysis = null;
@@ -138,6 +135,8 @@
protected void detectorChanged(Detector detector){
super.detectorChanged(detector);
+ sensors = detector.getSubdetector("Tracker").getDetectorElement().findDescendants(HpsSiSensor.class);
+
// setup AIDA
aida = AIDA.defaultInstance();
aida.tree().cd("/");
@@ -154,7 +153,7 @@
// Get the total number of SVT layers
// TODO: Get the total number of Si planes from the SVT geometry
- totalSvtLayers = SvtUtils.getInstance().getSensors().size()/2;
+ totalSvtLayers = sensors.size()/2;
System.out.println("The SVT has a total of " + totalSvtLayers + " layers");
@@ -215,20 +214,20 @@
List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
String volume;
for(RawTrackerHit rawHit : rawHits){
- if(SvtUtils.getInstance().isTopLayer((SiSensor)rawHit.getDetectorElement())){
+ HpsSiSensor sensor = (HpsSiSensor) rawHit.getDetectorElement();
+ if(sensor.isTopLayer()){
volume = "Top Volume ";
} else {
volume = "Bottom Volume ";
}
this.printDebug(volume + "RawTrackerHit Channel #: " + rawHit.getIdentifierFieldValue("strip") + " Layer Number: " + rawHit.getLayerNumber()
+ " Samples: " + samplesToString(rawHit.getADCValues()));
- ((SiSensor) rawHit.getDetectorElement()).getReadout().addHit(rawHit);
+ ((HpsSiSensor) rawHit.getDetectorElement()).getReadout().addHit(rawHit);
}
if(event.hasCollection(SiTrackerHit.class, siTrackerHitCollectionName)){
List<SiTrackerHit> hitlist = event.get(SiTrackerHit.class, siTrackerHitCollectionName);
for(SiTrackerHit siTrackerHit : hitlist){
- this.printDebug("Cluster layer: " + SvtUtils.getInstance().getLayerNumber(siTrackerHit.getSensor()));
this.printDebug("Cluster is comprised by the following raw hits:");
for(RawTrackerHit rawHit : siTrackerHit.getRawHits()){
this.printDebug("RawTrackerHit Channel #: " + rawHit.getIdentifierFieldValue("strip") + " Layer Number: " + rawHit.getLayerNumber());
@@ -314,9 +313,9 @@
boolean[] planesHit = new boolean[totalSvtLayers];
// Clear the sensor readout's and then add the SimTrackerHits from the MC particles to them
- for(SiSensor sensor : SvtUtils.getInstance().getSensors()) sensor.getReadout().clear();
+ for(HpsSiSensor sensor : sensors) sensor.getReadout().clear();
for(SimTrackerHit simHitTrackerHit : simHits){
- ((SiSensor) simHitTrackerHit.getDetectorElement()).getReadout().addHit(simHitTrackerHit);
+ ((HpsSiSensor) simHitTrackerHit.getDetectorElement()).getReadout().addHit(simHitTrackerHit);
}
// Clear all previously stored simTrackerHits
@@ -327,7 +326,8 @@
// Determine if the MC particle passed through the top or bottom SVT volume
for(SimTrackerHit simHit : simHits){
- if(SvtUtils.getInstance().isTopLayer((SiSensor) simHit.getDetectorElement())){
+ HpsSiSensor sensor = (HpsSiSensor) simHit.getDetectorElement();
+ if(sensor.isTopLayer()){
this.printDebug("MC Particle passed through the top layer");
isTopTrack = true;
break;
@@ -376,7 +376,8 @@
{
int volumeIndex = 0;
for(SimTrackerHit simTrackerHit : simTrackerHits){
- if(SvtUtils.getInstance().isTopLayer((SiSensor) simTrackerHit.getDetectorElement())) volumeIndex++;
+ HpsSiSensor sensor = (HpsSiSensor) simTrackerHit.getDetectorElement();
+ if(sensor.isTopLayer()) volumeIndex++;
else volumeIndex--;
}
return Math.abs(volumeIndex) == simTrackerHits.size();
SVNspam 0.1