58 modified files
java/branches/hps_java_trunk_HPSJAVA-255/analysis/src/main/java/org/hps/analysis/dataquality
--- java/branches/hps_java_trunk_HPSJAVA-255/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -7,6 +7,7 @@
import hep.aida.IHistogram1D;
import hep.aida.IPlotter;
import hep.aida.IPlotterStyle;
+
import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;
@@ -14,9 +15,9 @@
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.hps.conditions.deprecated.SvtUtils;
+
import org.hps.recon.tracking.ShapeFitParameters;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.GenericObject;
import org.lcsim.event.LCRelation;
@@ -40,7 +41,7 @@
private Detector detector = null;
private IPlotter plotter;
private final String trackerName = "Tracker";
- private List<SiSensor> sensors;
+ private List<HpsSiSensor> sensors;
private Map<String, int[]> occupancyMap;
private Map<String, Double> avgOccupancyMap;
private Map<String, String> avgOccupancyNames;
@@ -74,14 +75,14 @@
aida.tree().cd("/");
// Make a list of SiSensors in the SVT.
- sensors = this.detector.getSubdetector(trackerName).getDetectorElement().findDescendants(SiSensor.class);
+ sensors = this.detector.getSubdetector(trackerName).getDetectorElement().findDescendants(HpsSiSensor.class);
// Reset the data structure that keeps track of strip occupancies.
resetOccupancyMap();
// Setup the occupancy plots.
aida.tree().cd("/");
- for (SiSensor sensor : sensors) {
+ for (HpsSiSensor sensor : sensors) {
//IHistogram1D occupancyPlot = aida.histogram1D(sensor.getName().replaceAll("Tracker_TestRunModule_", ""), 640, 0, 639);
IHistogram1D occupancyPlot = createSensorPlot(plotDir + "occupancy_", sensor, maxChannels, 0, maxChannels - 1);
IHistogram1D t0Plot = createSensorPlot(plotDir + "t0Hit_", sensor, 50, -50., 50.);
@@ -114,7 +115,7 @@
for (LCRelation hit : fittedTrackerHits) {
RawTrackerHit rth = (RawTrackerHit) hit.getFrom();
GenericObject pars = (GenericObject) hit.getTo();
- String sensorName = getNiceSensorName((SiSensor) rth.getDetectorElement());
+ String sensorName = getNiceSensorName((HpsSiSensor) rth.getDetectorElement());
//this is a clever way to get the parameters we want from the generic object
double t0 = ShapeFitParameters.getT0(pars);
double amp = ShapeFitParameters.getAmp(pars);
@@ -130,7 +131,7 @@
// System.out.println("Found a Si cluster collection");
List<TrackerHit> siClusters = (List<TrackerHit>) event.get(trackerHitCollectionName);
for (TrackerHit cluster : siClusters) {
- String sensorName = getNiceSensorName((SiSensor) ((RawTrackerHit) cluster.getRawHits().get(0)).getDetectorElement());
+ String sensorName = getNiceSensorName((HpsSiSensor) ((RawTrackerHit) cluster.getRawHits().get(0)).getDetectorElement());
double t0 = cluster.getTime();
double dedx = cluster.getdEdx() * 1e6;
// System.out.println("dedx = "+dedx);
@@ -140,7 +141,7 @@
}
}
- private IHistogram1D getSensorPlot(String prefix, SiSensor sensor) {
+ private IHistogram1D getSensorPlot(String prefix, HpsSiSensor sensor) {
String hname = prefix + getNiceSensorName(sensor);
return aida.histogram1D(hname);
}
@@ -149,7 +150,7 @@
return aida.histogram1D(prefix + sensorName);
}
- private IHistogram1D createSensorPlot(String prefix, SiSensor sensor, int nchan, double min, double max) {
+ private IHistogram1D createSensorPlot(String prefix, HpsSiSensor sensor, int nchan, double min, double max) {
String hname = prefix + getNiceSensorName(sensor);
IHistogram1D hist = aida.histogram1D(hname, nchan, min, max);
hist.setTitle(sensor.getName().replaceAll(nameStrip, "")
@@ -168,7 +169,7 @@
sigt0Names = new HashMap<String, String>();
avgt0Map = new HashMap<String, Double>();
sigt0Map = new HashMap<String, Double>();
- for (SiSensor sensor : sensors) {
+ for (HpsSiSensor sensor : sensors) {
occupancyMap.put(sensor.getName(), new int[640]);
avgOccupancyMap.put(sensor.getName(), -999.);
String occName = "avgOcc_" + getNiceSensorName(sensor);
@@ -181,7 +182,7 @@
}
}
- private String getNiceSensorName(SiSensor sensor) {
+ private String getNiceSensorName(HpsSiSensor sensor) {
return sensor.getName().replaceAll(nameStrip, "")
.replace("module", "mod")
.replace("layer", "lyr")
@@ -199,7 +200,7 @@
public void fillEndOfRunPlots() {
// Plot strip occupancies.
System.out.println("SvtMonitoring::endOfData filling occupancy plots");
- for (SiSensor sensor : sensors) {
+ for (HpsSiSensor sensor : sensors) {
Double avg = 0.0;
//IHistogram1D sensorHist = aida.histogram1D(sensor.getName());
IHistogram1D sensorHist = getSensorPlot(plotDir + "occupancy_", sensor);
@@ -236,10 +237,11 @@
int irTop = 0;
int irBot = 0;
- for (SiSensor sensor : sensors) {
+ for (HpsSiSensor sensor : sensors) {
IHistogram1D sensPlot = getSensorPlot(plotDir + "t0Hit_", sensor);
IFitResult result = fitGaussian(sensPlot, fitter, "range=\"(-8.0,8.0)\"");
- boolean isTop = SvtUtils.getInstance().isTopLayer(sensor);
+
+ boolean isTop = sensor.isTopLayer();
if (isTop) {
plotterTop.region(irTop).plot(sensPlot);
plotterTop.region(irTop).plot(result.fittedFunction());
@@ -266,7 +268,7 @@
@Override
public void dumpDQMData() {
- for (SiSensor sensor : sensors) {
+ for (HpsSiSensor sensor : sensors) {
String name = avgOccupancyNames.get(sensor.getName());
double occ = avgOccupancyMap.get(sensor.getName());
checkAndUpdate(name, occ);
@@ -281,7 +283,7 @@
@Override
public void printDQMData() {
- for (SiSensor sensor : sensors) {
+ for (HpsSiSensor sensor : sensors) {
System.out.println(avgOccupancyNames.get(sensor.getName()) + ": " + avgOccupancyMap.get(sensor.getName()));
System.out.println(avgt0Names.get(sensor.getName()) + ": " + avgt0Map.get(sensor.getName()));
System.out.println(sigt0Names.get(sensor.getName()) + ": " + sigt0Map.get(sensor.getName()));
@@ -290,7 +292,7 @@
@Override
public void printDQMStrings() {
- for (SiSensor sensor : sensors) {
+ for (HpsSiSensor sensor : sensors) {
System.out.println("ALTER TABLE dqm ADD " + avgOccupancyNames.get(sensor.getName()) + " double;");
System.out.println("ALTER TABLE dqm ADD " + avgt0Names.get(sensor.getName()) + " double;");
System.out.println("ALTER TABLE dqm ADD " + sigt0Names.get(sensor.getName()) + " double;");
java/branches/hps_java_trunk_HPSJAVA-255/analysis/src/main/java/org/hps/analysis/examples
--- java/branches/hps_java_trunk_HPSJAVA-255/analysis/src/main/java/org/hps/analysis/examples/LCIOTrackAnalysis.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/analysis/src/main/java/org/hps/analysis/examples/LCIOTrackAnalysis.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -8,7 +8,8 @@
import java.util.Map;
import java.util.Set;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.identifier.IIdentifier;
import org.lcsim.detector.identifier.Identifier;
import org.lcsim.event.MCParticle;
@@ -20,7 +21,6 @@
/**
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: LCIOTrackAnalysis.java,v 1.3 2013/10/24 18:11:43 meeg Exp $
*/
public class LCIOTrackAnalysis {
@@ -73,15 +73,19 @@
int module = -1;
List<RawTrackerHit> rawHits = cl.getRawHits();
// System.out.println("RawHits: " + rawHits.size());
+ HpsSiSensor sensor = null;
for (RawTrackerHit rawHit : rawHits) {
// System.out.println(rawHit.getCellID());
IIdentifier id = new Identifier(rawHit.getCellID());
- int newLayer = SvtUtils.getInstance().getHelper().getValue(id, "layer");
+ //===> int newLayer = SvtUtils.getInstance().getHelper().getValue(id, "layer");
+ sensor = ((HpsSiSensor) rawHit.getDetectorElement());
+ int newLayer = sensor.getLayerNumber();
if (layer != -1 && layer != newLayer) {
System.out.format("TrackerHit has hits from multiple layers: %d and %d\n", layer, newLayer);
}
layer = newLayer;
- int newModule = SvtUtils.getInstance().getHelper().getValue(id, "module");
+ //===> int newModule = SvtUtils.getInstance().getHelper().getValue(id, "module");
+ int newModule = sensor.getModuleNumber();
if (module != -1 && module != newModule) {
System.out.format("TrackerHit has hits from multiple modules: %d and %d\n", module, newModule);
}
@@ -98,7 +102,8 @@
_hitLocationPerLayer.put(layer, new BasicHep3Vector(cl.getPosition()));
_nhitsNew++;
- boolean isAxial = SvtUtils.getInstance().isAxial(SvtUtils.getInstance().getSensor(module, layer - 1));
+ //===> boolean isAxial = SvtUtils.getInstance().isAxial(SvtUtils.getInstance().getSensor(module, layer - 1));
+ boolean isAxial = sensor.isAxial();
if (isAxial) {
_nAxialhits++;
} else {
java/branches/hps_java_trunk_HPSJAVA-255/analysis/src/main/java/org/hps/analysis/examples
--- java/branches/hps_java_trunk_HPSJAVA-255/analysis/src/main/java/org/hps/analysis/examples/TrackAnalysis.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/analysis/src/main/java/org/hps/analysis/examples/TrackAnalysis.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -1,17 +1,5 @@
-/*
- * TrackAnalysis.java
- *
- * Created on October 16, 2008, 6:09 PM
- *
- */
package org.hps.analysis.examples;
-import hep.physics.matrix.BasicMatrix;
-import hep.physics.matrix.SymmetricMatrix;
-import hep.physics.vec.BasicHep3Matrix;
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.VecOp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -19,13 +7,20 @@
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
+
+import hep.physics.matrix.BasicMatrix;
+import hep.physics.matrix.SymmetricMatrix;
+import hep.physics.vec.BasicHep3Matrix;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.VecOp;
+
import org.apache.commons.math3.linear.Array2DRowRealMatrix;
import org.apache.commons.math3.linear.ArrayRealVector;
import org.apache.commons.math3.linear.EigenDecomposition;
import org.apache.commons.math3.linear.RealMatrix;
-import org.hps.conditions.deprecated.SvtUtils;
-import static org.hps.recon.tracking.CoordinateTransformations.transformVectorToTracking;
-import org.hps.recon.tracking.TrackerHitUtils;
+
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.identifier.IIdentifier;
import org.lcsim.detector.identifier.Identifier;
import org.lcsim.event.MCParticle;
@@ -40,10 +35,15 @@
import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
+//===> import org.hps.conditions.deprecated.SvtUtils;
+import static org.hps.recon.tracking.CoordinateTransformations.transformVectorToTracking;
+import org.hps.recon.tracking.TrackerHitUtils;
+
/**
*
* @author Richard Partridge & Matt Graham
*/
+// TODO: This class needs to be cleaned up
public class TrackAnalysis {
private enum HelixPar {
@@ -224,11 +224,13 @@
for (RawTrackerHit rawHit : rawHits) {
// System.out.println(rawHit.getCellID());
IIdentifier id = new Identifier(rawHit.getCellID());
- int newLayer = SvtUtils.getInstance().getHelper().getValue(id, "layer");
+ //===> int newLayer = SvtUtils.getInstance().getHelper().getValue(id, "layer");
+ int newLayer = ((HpsSiSensor) rawHit.getDetectorElement()).getLayerNumber();
if (layer != -1 && layer != newLayer)
System.out.format("TrackerHit has hits from multiple layers: %d and %d\n", layer, newLayer);
layer = newLayer;
- int newModule = SvtUtils.getInstance().getHelper().getValue(id, "module");
+ //===> int newModule = SvtUtils.getInstance().getHelper().getValue(id, "module");
+ int newModule = ((HpsSiSensor) rawHit.getDetectorElement()).getModuleNumber();
if (module != -1 && module != newModule)
System.out.format("TrackerHit has hits from multiple modules: %d and %d\n", module, newModule);
module = newModule;
java/branches/hps_java_trunk_HPSJAVA-255/conditions/src/main/java/org/hps/conditions/deprecated
--- java/branches/hps_java_trunk_HPSJAVA-255/conditions/src/main/java/org/hps/conditions/deprecated/CalibrationDriver.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/conditions/src/main/java/org/hps/conditions/deprecated/CalibrationDriver.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -23,7 +23,7 @@
public CalibrationDriver() {
add(new EcalConditions());
- add(new HPSSVTSensorSetup());
+ //add(new HPSSVTSensorSetup());
}
public void setRunNumber(int runNumber) {
@@ -55,10 +55,10 @@
EcalConditions.setGainFilename(gainFilename);
EcalConditions.loadCalibration();
}
- if (fixRunNumber && (!HPSSVTCalibrationConstants.pedestalLoaded() || !HPSSVTCalibrationConstants.tpLoaded())) {
+ /*if (fixRunNumber && (!HPSSVTCalibrationConstants.pedestalLoaded() || !HPSSVTCalibrationConstants.tpLoaded())) {
System.out.println("Loading calibration for set run: " + runNumber);
loadCalibsByRun(runNumber);
- }
+ }*/
}
@Override
@@ -76,7 +76,7 @@
}
private void loadCalibsByRun(int run) {
- HPSSVTCalibrationConstants.loadCalibration(run);
+ //HPSSVTCalibrationConstants.loadCalibration(run);
FieldMap.loadFieldMap(run);
}
java/branches/hps_java_trunk_HPSJAVA-255/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui
--- java/branches/hps_java_trunk_HPSJAVA-255/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/Viewer.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/Viewer.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -98,8 +98,7 @@
// Set the scaling settings.
ecalPanel.setScaleMinimum(0.00001);
ecalPanel.setScaleMaximum(3);
- // ecalPanel.setScalingLogarithmic();
- ecalPanel.setScalingLinear();
+ ecalPanel.setScalingLogarithmic();
// Disable the crystals in the calorimeter panel along the beam gap.
for (int i = -23; i < 24; i++) {
java/branches/hps_java_trunk_HPSJAVA-255/ecal-readout-sim/src/main/java/org/hps/readout/ecal
--- java/branches/hps_java_trunk_HPSJAVA-255/ecal-readout-sim/src/main/java/org/hps/readout/ecal/MollerTriggerDriver.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/ecal-readout-sim/src/main/java/org/hps/readout/ecal/MollerTriggerDriver.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -438,4 +438,4 @@
private int clusterHitCountCount = 0; // Track the clusters which pass the hit count cut.
private int clusterTotalEnergyCount = 0; // Track the clusters which pass the total energy cut.
private int clusterPositionCount = 0; // Track the clusters which pass the positional cut.
-}
\ No newline at end of file
+}
java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio
--- java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/SVTEvioReader.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/SVTEvioReader.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -1,40 +1,51 @@
package org.hps.evio;
-//--- java ---//
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
-import org.hps.conditions.deprecated.HPSSVTConstants;
-import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.readout.svt.FpgaData;
-import org.hps.readout.svt.SVTData;
-//--- Coda ---//
import org.jlab.coda.jevio.BaseStructure;
import org.jlab.coda.jevio.EvioEvent;
-//--- org.lcsim ---//
+
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
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.geometry.Subdetector;
+import org.lcsim.lcio.LCIOUtil;
+import org.hps.conditions.deprecated.HPSSVTConstants;
+//import org.hps.conditions.deprecated.SvtUtils;
+import org.hps.readout.svt.FpgaData;
+import org.hps.readout.svt.SVTData;
import org.hps.util.Pair;
-import org.lcsim.lcio.LCIOUtil;
-
-//--- Constants ---//
import static org.hps.evio.EventConstants.SVT_BANK_TAG;
/**
*
* @author Omar Moreno <[log in to unmask]>
- * @version $Id: SVTEvioReader.java,v 1.10 2013/07/27 01:52:49 omoreno Exp $
*/
public class SVTEvioReader extends EvioReader {
- String fpgaDataCollectionName = "FPGAData";
+
+ // A Map from FPGA and Hybrid daq pair to the corresponding sensor
+ private Map<Pair<Integer /* FPGA */, Integer /* Hybrid */>,
+ HpsSiSensor /* Sensor*/> daqPairToSensor = new HashMap<Pair<Integer, Integer>, HpsSiSensor>();
+
+
+ // Subdetector name
+ private static final String subdetectorName = "Tracker";
+
+ // Flag indicating whether the DAQ map has been setup
+ boolean isDaqMapSetup = false;
+
+ // Collection names
+ String fpgaDataCollectionName = "FPGAData";
String readoutName = "TrackerHits";
-
+
/**
*
*/
@@ -46,6 +57,20 @@
public void setReadoutName(String readoutName) {
this.readoutName = readoutName;
}
+
+ // TODO: Move this class to the DaqMapping class instead
+ private void setupDaqMap(Subdetector subdetector){
+ List<HpsSiSensor> sensors = subdetector.getDetectorElement().findDescendants(HpsSiSensor.class);
+
+ for(HpsSiSensor sensor : sensors){
+ // FIXME: For now, use the FEB ID and FEB Hybrid ID. This will need to be changed to
+ // use the Fpga and hybrid number once HpsTestRunSensor is ready
+ Pair<Integer, Integer> daqPair
+ = new Pair<Integer, Integer>(sensor.getFebID(), sensor.getFebHybridID());
+ daqPairToSensor.put(daqPair, sensor);
+ }
+ isDaqMapSetup = true;
+ }
/**
*
@@ -53,10 +78,15 @@
@Override
public boolean makeHits(EvioEvent event, EventHeader lcsimEvent) {
// Create DAQ Maps
- if (!SvtUtils.getInstance().isSetup()) {
- SvtUtils.getInstance().setup(lcsimEvent.getDetector());
- }
+ //===> if (!SvtUtils.getInstance().isSetup()) {
+ //===> SvtUtils.getInstance().setup(lcsimEvent.getDetector());
+ //===> }
+ // TODO: This needs to be done in a smarter way
+ if(!isDaqMapSetup){
+ setupDaqMap(lcsimEvent.getDetector().getSubdetector(subdetectorName));
+ }
+
// Create a list to hold the temperatures
List<FpgaData> fpgaDataCollection = new ArrayList<FpgaData>();
@@ -149,14 +179,18 @@
return foundBank;
}
- private static RawTrackerHit makeHit(int[] data) {
+ private RawTrackerHit makeHit(int[] data) {
int hitTime = 0;
Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(SVTData.getFPGAAddress(data), SVTData.getHybridNumber(data));
- SiSensor sensor = SvtUtils.getInstance().getSensor(daqPair);
+ HpsSiSensor sensor = daqPairToSensor.get(daqPair);
+ //===> SiSensor sensor = SvtUtils.getInstance().getSensor(daqPair);
int sensorChannel = SVTData.getSensorChannel(data);
- long cell_id = SvtUtils.makeCellID(sensor, sensorChannel);
+ long cell_id = sensor.makeChannelID(sensorChannel);
+ //===> long cell_id = SvtUtils.makeCellID(sensor, sensorChannel);
+
return new BaseRawTrackerHit(hitTime, cell_id, SVTData.getAllSamples(data), null, sensor);
}
+
}
java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio
--- java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/SVTHitWriter.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/SVTHitWriter.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -5,36 +5,46 @@
import java.util.List;
import java.util.Map;
-import org.hps.conditions.deprecated.HPSSVTConstants;
-import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.readout.svt.FpgaData;
-import org.hps.readout.svt.SVTData;
import org.jlab.coda.jevio.DataType;
import org.jlab.coda.jevio.EventBuilder;
import org.jlab.coda.jevio.EvioBank;
import org.jlab.coda.jevio.EvioException;
+
import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.LCRelation;
import org.lcsim.event.RawTrackerHit;
+import org.lcsim.geometry.Subdetector;
import org.lcsim.lcio.LCIOConstants;
+import org.hps.conditions.deprecated.HPSSVTConstants;
+//===> import org.hps.conditions.deprecated.SvtUtils;
+import org.hps.readout.svt.FpgaData;
+import org.hps.readout.svt.SVTData;
+
import static org.hps.evio.EventConstants.SVT_BANK_NUMBER;
import static org.hps.evio.EventConstants.SVT_BANK_TAG;
/**
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: SVTHitWriter.java,v 1.5 2013/05/22 18:45:33 jeremy Exp $
*/
public class SVTHitWriter implements HitWriter {
boolean debug = false;
+
+ // Subdetector name
+ private static final String subdetectorName = "Tracker";
+
+ // Collection names
private String hitCollectionName = "SVTRawTrackerHits";
private String fpgaDataCollectionName = "FPGAData";
private String relationCollectionName = "SVTTrueHitRelations";
- String readoutName = "TrackerHits";
-
+ private String readoutName = "TrackerHits";
+
+ List<Integer> fpgaNumbers = new ArrayList<Integer>();
+
public SVTHitWriter() {
}
@@ -46,15 +56,26 @@
public boolean hasData(EventHeader event) {
return event.hasCollection(RawTrackerHit.class, hitCollectionName);
}
-
+
//make some dummy FpgaData to use in case there isn't any real FpgaData
- private static Map<Integer, FpgaData> makeFpgaData() {
+ private Map<Integer, FpgaData> makeFpgaData(Subdetector subdetector) {
double[] temps = new double[HPSSVTConstants.TOTAL_HYBRIDS_PER_FPGA * HPSSVTConstants.TOTAL_TEMPS_PER_HYBRID];
for (int i = 0; i < HPSSVTConstants.TOTAL_HYBRIDS_PER_FPGA * HPSSVTConstants.TOTAL_TEMPS_PER_HYBRID; i++) {
temps[i] = 23.0;
}
+
Map<Integer, FpgaData> fpgaData = new HashMap<Integer, FpgaData>();
- for (Integer fpgaNumber : SvtUtils.getInstance().getFpgaNumbers()) {
+ List<HpsSiSensor> sensors = subdetector.getDetectorElement().findDescendants(HpsSiSensor.class);
+
+ // FIXME: For now, just fill the FPGA numbers list using the sensors.
+ // This should be moved to the daqMapping class.
+ for(HpsSiSensor sensor : sensors){
+ if(!fpgaNumbers.contains(sensor.getFebID())){
+ fpgaNumbers.add(sensor.getFebID());
+ }
+ }
+ //===> for (Integer fpgaNumber : SvtUtils.getInstance().getFpgaNumbers()) {
+ for (Integer fpgaNumber : fpgaNumbers) {
fpgaData.put(fpgaNumber, new FpgaData(fpgaNumber, temps, 0));
}
@@ -65,21 +86,26 @@
public void writeData(EventHeader event, EventBuilder builder) {
List<RawTrackerHit> hits = event.get(RawTrackerHit.class, hitCollectionName);
- Map<Integer, FpgaData> fpgaData = makeFpgaData();
+ Map<Integer, FpgaData> fpgaData = makeFpgaData(event.getDetector().getSubdetector(subdetectorName));
System.out.println("Writing " + hits.size() + " SVT hits");
System.out.println("Writing " + fpgaData.size() + " FPGA data");
Map<Integer, List<int[]>> fpgaHits = new HashMap<Integer, List<int[]>>();
- for (Integer fpgaNumber : SvtUtils.getInstance().getFpgaNumbers()) {
+ //===> for (Integer fpgaNumber : SvtUtils.getInstance().getFpgaNumbers()) {
+ for (Integer fpgaNumber : fpgaNumbers) {
fpgaHits.put(fpgaNumber, new ArrayList<int[]>());
}
for (RawTrackerHit hit : hits) {
- int fpgaAddress = SvtUtils.getInstance().getFPGA((SiSensor) hit.getDetectorElement());
- int hybridNumber = SvtUtils.getInstance().getHybrid((SiSensor) hit.getDetectorElement());
- int sensorChannel = hit.getIdentifierFieldValue("strip");
+ //===> int fpgaAddress = SvtUtils.getInstance().getFPGA((SiSensor) hit.getDetectorElement());
+ // FIXME: For now use the FEB ID until HpsTestRunSensor is ready
+ int fpgaAddress = ((HpsSiSensor) hit.getDetectorElement()).getFebID();
+ //int hybridNumber = SvtUtils.getInstance().getHybrid((SiSensor) hit.getDetectorElement());
+ // FIXME: For now use the FEB Hybrid ID until HpsTestRunSensor is ready
+ int hybridNumber = ((HpsSiSensor) hit.getDetectorElement()).getFebHybridID();
+ int sensorChannel = hit.getIdentifierFieldValue("strip");
int apvNumber = SVTData.getAPV(sensorChannel);
int channelNumber = SVTData.getAPVChannel(sensorChannel);
@@ -93,7 +119,8 @@
// Iterate over FPGA's 0 - 6
// for (int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++) {
- for (Integer fpgaNumber : SvtUtils.getInstance().getFpgaNumbers()) {
+ //===> for (Integer fpgaNumber : SvtUtils.getInstance().getFpgaNumbers()) {
+ for (Integer fpgaNumber : fpgaNumbers) {
FpgaData fpgaDatum = fpgaData.get(fpgaNumber);
int[] header = fpgaDatum.extractData();
@@ -150,7 +177,7 @@
List<LCRelation> trueHitRelations = event.get(LCRelation.class, relationCollectionName);
toEvent.put(relationCollectionName, trueHitRelations, LCRelation.class, 0);
- List<FpgaData> fpgaData = new ArrayList(makeFpgaData().values());
+ List<FpgaData> fpgaData = new ArrayList(makeFpgaData(event.getDetector().getSubdetector(subdetectorName)).values());
System.out.println("Writing " + fpgaData.size() + " FPGA data");
toEvent.put(fpgaDataCollectionName, fpgaData, FpgaData.class, 0);
java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt
--- java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/PedestalPlots.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/PedestalPlots.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -16,8 +16,10 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.SvtUtils;
+
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
+//===> import org.hps.conditions.deprecated.SvtUtils;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
@@ -28,7 +30,6 @@
/**
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: $
*/
public class PedestalPlots extends Driver {
@@ -41,7 +42,9 @@
private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
private String fitFile = null;
private boolean plotTimeSeries = false;
-
+ private static final String subdetectorName = "Tracker";
+
+
public void setFitFile(String fitFile) {
this.fitFile = fitFile;
}
@@ -61,7 +64,10 @@
sumsqs = new HashMap<SiSensor, double[]>();
plots = new HashMap<SiSensor, IDataPointSet[]>();
- for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
+ List<SiSensor> sensors = detector.getSubdetector(subdetectorName).getDetectorElement().findDescendants(SiSensor.class);
+
+ //===> for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
+ for (SiSensor sensor : sensors) {
hists.put(sensor, aida.histogram2D(sensor.getName() + " sample 1 vs. ch", 640, -0.5, 639.5, 500, -500.0, 3000.0));
if (plotTimeSeries) {
counts.put(sensor, new int[640]);
@@ -86,9 +92,10 @@
List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
for (RawTrackerHit hit : rawTrackerHits) {
- SiSensor sensor = (SiSensor) hit.getDetectorElement();
+ HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
int strip = hit.getIdentifierFieldValue("strip");
- double pedestal = HPSSVTCalibrationConstants.getPedestal(sensor, strip);
+ double pedestal = sensor.getPedestal(strip, 0);
+ //===> double pedestal = HPSSVTCalibrationConstants.getPedestal(sensor, strip);
hists.get(sensor).fill(strip, hit.getADCValues()[0] - pedestal);
if (plotTimeSeries) {
java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt
--- java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventInfo.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventInfo.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -12,11 +12,12 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.util.Resettable;
import org.lcsim.detector.identifier.IIdentifier;
import org.lcsim.detector.tracker.silicon.ChargeCarrier;
import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.SiSensorElectrodes;
import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
import org.lcsim.event.EventHeader;
@@ -171,7 +172,8 @@
ChargeCarrier carrier = ChargeCarrier.getCarrier(_sid_helper.getSideValue(id));
SiSensorElectrodes electrodes = ((SiSensor) hit.getDetectorElement()).getReadoutElectrodes(carrier);
- if(!SvtUtils.getInstance().isTopLayer(sensor))
+ //===> if(!SvtUtils.getInstance().isTopLayer(sensor))
+ if(!((HpsSiSensor) sensor).isTopLayer())
return false;
return true;
}
java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt
--- java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitPulsePlots.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitPulsePlots.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -14,10 +14,12 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
+
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
import org.hps.util.Resettable;
import org.lcsim.detector.identifier.IIdentifier;
import org.lcsim.detector.identifier.IIdentifierHelper;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
@@ -124,17 +126,19 @@
private void fillPlots(RawTrackerHit hit) {
String sensorName = hit.getDetectorElement().getName();
- SiSensor sensor = (SiSensor) hit.getDetectorElement();
+ HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
int strip = hit.getIdentifierFieldValue("strip");
short[] adcVal = hit.getADCValues();
- double ped = HPSSVTCalibrationConstants.getPedestal(sensor, strip);
- double noise = HPSSVTCalibrationConstants.getNoise(sensor, strip);
+ //===> double ped = HPSSVTCalibrationConstants.getPedestal(sensor, strip);
+ //===> double noise = HPSSVTCalibrationConstants.getNoise(sensor, strip);
for (int i = 0; i < 6; i++) {
- double pedSub = (adcVal[i] - ped);
+ //===> double pedSub = (adcVal[i] - ped);
+ double pedSub = (adcVal[i] - sensor.getPedestal(strip, i));
aida.histogram2D(sensorName + "_AdcVsChan").fill(pedSub, strip);
//only plot hits above threshold...
// if (pedSub / noise > 3 && hasAdjacentHit(hit) && noise < 70)
- if (hasAdjacentHit(hit) && noise < 100) {
+ //===> if (hasAdjacentHit(hit) && noise < 100) {
+ if (hasAdjacentHit(hit) && sensor.getNoise(strip, i) < 100) {
aida.profile1D(sensorName + "_pulse").fill(24.0 * i, pedSub);
}
}
java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt
--- java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitReconstructionPlots.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitReconstructionPlots.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -15,13 +15,14 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.recon.tracking.FittedRawTrackerHit;
import org.hps.util.Resettable;
import org.lcsim.detector.identifier.IIdentifier;
import org.lcsim.detector.identifier.IIdentifierHelper;
import org.lcsim.detector.tracker.silicon.DopedSilicon;
import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
@@ -33,8 +34,6 @@
/**
*
* @author mgraham
- * @version $Id: SVTHitReconstructionPlots.java,v 1.14 2012/05/18 07:41:49 meeg
- * Exp $
*/
public class SVTHitReconstructionPlots extends Driver implements Resettable {
@@ -51,12 +50,12 @@
IPlotter plotter4;
IPlotter plotter5;
IPlotter plotter6;
- IHistogram1D nrawPlot[][] = new IHistogram1D[2][10];
+ /*IHistogram1D nrawPlot[][] = new IHistogram1D[2][10];
IHistogram1D nrecoPlot[][] = new IHistogram1D[2][10];
IHistogram1D nclustPlot[][] = new IHistogram1D[2][10];
IHistogram1D clusterSizePlot[][] = new IHistogram1D[2][10];
IHistogram1D clusterAmpPlot[][] = new IHistogram1D[2][10];
- IHistogram2D clposVsStrip[][] = new IHistogram2D[2][10];
+ IHistogram2D clposVsStrip[][] = new IHistogram2D[2][10];*/
private Map<String, Integer> sensorRegionMap;
private String outputPlots = null;
@@ -133,6 +132,21 @@
style8.zAxisStyle().setParameter("scale", "log");
plotter6.createRegions(5, 4);
+
+ // TODO: Check if this block of code is equivalent to the block commented out below
+ for(SiSensor sensor : sensors){
+
+ int region = computePlotterRegion(sensor);
+ plotter1.region(region).plot(aida.histogram1D(sensor.getName() + "_raw_hits", 10, -0.5, 9.5));
+ plotter3.region(region).plot(aida.histogram1D(sensor.getName() + "_reco_hits", 10, -0.5, 9.5));
+ plotter2.region(region).plot(aida.histogram1D(sensor.getName() + "_cluster_hits", 10, -0.5, 9.5));
+ plotter4.region(region).plot(aida.histogram1D(sensor.getName() + "_cluster_size", 9, 0.5, 9.5));
+ plotter5.region(region).plot(aida.histogram1D(sensor.getName() + "_cluster_amp", 50, 0, 4000.0));
+ ((PlotterRegion) plotter5.region(region)).getPlot().getXAxis().setLabel("Cluster amplitude [ADC counts]");
+ plotter6.region(region).plot(aida.histogram2D(sensor.getName() + "_cluster_vs_strip", 128, 0, 640, 100, -50, 50));
+ }
+
+ /* ===>
for (int module = 0; module < 2; module++) {
for (int layer = 0; layer < 10; layer++) {
SiSensor sensor = SvtUtils.getInstance().getSensor(module, layer);
@@ -152,7 +166,7 @@
((PlotterRegion) plotter5.region(region)).getPlot().getXAxis().setLabel("Cluster amplitude [ADC counts]");
plotter6.region(region).plot(clposVsStrip[module][layer]);
}
- }
+ } ===> */
// plotter5.region(0).plot(aida.histogram1D("Tracker_TestRunModule_layer6_module0_sensor0" + "_cluster_amp"));
// ((PlotterRegion) plotter5.region(0)).getPlot().getXAxis().setLabel("Cluster amplitude [ADC counts]");
@@ -198,7 +212,8 @@
for (FittedRawTrackerHit hrth : fittedrawHits) {
SiSensor sensor = (SiSensor) hrth.getRawTrackerHit().getDetectorElement();
int layer = hrth.getRawTrackerHit().getLayerNumber();
- if (!SvtUtils.getInstance().isTopLayer(sensor)) {
+ //===> if (!SvtUtils.getInstance().isTopLayer(sensor)) {
+ if (!((HpsSiSensor) sensor).isTopLayer()) {
layersBot[layer - 1]++;
} else {
layersTop[layer - 1]++;
java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt
--- java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTMonitoringPlots.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTMonitoringPlots.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -6,12 +6,13 @@
import hep.aida.IProfile1D;
import java.util.List;
+
import org.apache.commons.math3.special.Gamma;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.recon.tracking.FittedRawTrackerHit;
-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;
@@ -25,8 +26,6 @@
* to 20.
*
* @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: SensorOccupancyPlotsDriver.java,v 1.12 2012/04/13 00:06:55
- * jeremy Exp $
*
*/
public class SVTMonitoringPlots extends Driver {
@@ -42,6 +41,9 @@
private IHistogram2D[][] t0s = new IHistogram2D[2][10];
private IHistogram2D[][] amps = new IHistogram2D[2][10];
+ private static final String subdetectorName = "Tracker";
+
+
public SVTMonitoringPlots() {
}
@@ -68,6 +70,8 @@
//plotterFrame = new AIDAFrame();
//plotterFrame.setTitle("HPS SVT Monitoring");
+ List<HpsSiSensor> sensors = detector.getSubdetector(subdetectorName).getDetectorElement().findDescendants(HpsSiSensor.class);
+
// Setup the plotter.
IAnalysisFactory fac = aida.analysisFactory();
@@ -102,9 +106,22 @@
plotter3.style().zAxisStyle().setParameter("scale", "log");
plotter3.style().zAxisStyle().setVisible(false);
plotter3.createRegions(4, 5);
+
+ aida.tree().cd("/");
+ // Setup the occupancy plots.
+ for(HpsSiSensor sensor : sensors){
+ int module = sensor.getModuleNumber();
+ int layer = sensor.getLayerNumber();
+ int region = computePlotterRegion(layer + 1, module);
+ pedestalShifts[module][layer] = aida.profile1D(sensor.getName() + " Pedestal Shifts", 640, -0.5, 639.5);
+ plotter.region(region).plot(pedestalShifts[module][layer]);
+ t0s[module][layer] = aida.histogram2D(sensor.getName() + " Fitted T0", 640, -0.5, 639.5, 100, -24, 72);
+ plotter2.region(region).plot(t0s[module][layer]);
+ amps[module][layer] = aida.histogram2D(sensor.getName() + " Fitted Amplitude", 640, -0.5, 639.5, 100, 0, 2000);
+ plotter3.region(region).plot(amps[module][layer]);
+ }
- // Setup the occupancy plots.
- aida.tree().cd("/");
+ /* ===>
for (int module = 0; module < 2; module++) {
for (int layer = 0; layer < 10; layer++) {
int region = computePlotterRegion(layer + 1, module);
@@ -117,7 +134,7 @@
amps[module][layer] = aida.histogram2D(sensor.getName() + " Fitted Amplitude", 640, -0.5, 639.5, 100, 0, 2000);
plotter3.region(region).plot(amps[module][layer]);
}
- }
+ } ===> */
//plotterFrame.pack();
//plotterFrame.setVisible(true);
}
@@ -140,8 +157,9 @@
for (RawTrackerHit hit : rawTrackerHits) {
int layer = hit.getIdentifierFieldValue("layer"); // 1-10; axial layers are odd layers; stereo layers are even
int module = hit.getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
- double pedestal = HPSSVTCalibrationConstants.getPedestal((SiSensor) hit.getDetectorElement(), hit.getIdentifierFieldValue("strip"));
- pedestalShifts[module][layer - 1].fill(hit.getIdentifierFieldValue("strip"), hit.getADCValues()[0] - pedestal);
+ //===> double pedestal = HPSSVTCalibrationConstants.getPedestal((SiSensor) hit.getDetectorElement(), hit.getIdentifierFieldValue("strip"));
+ double pedestal = ((HpsSiSensor) hit.getDetectorElement()).getPedestal(hit.getIdentifierFieldValue("strip"), 0);
+ pedestalShifts[module][layer - 1].fill(hit.getIdentifierFieldValue("strip"), hit.getADCValues()[0]- pedestal);
}
}
@@ -152,7 +170,8 @@
int module = fit.getRawTrackerHit().getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
int strip = fit.getRawTrackerHit().getIdentifierFieldValue("strip");
if (fit.getShapeFitParameters().getChiProb() > Gamma.regularizedGammaQ(4, 5)) {
- double noise = HPSSVTCalibrationConstants.getNoise((SiSensor) fit.getRawTrackerHit().getDetectorElement(), strip);
+ //===> double noise = HPSSVTCalibrationConstants.getNoise((SiSensor) fit.getRawTrackerHit().getDetectorElement(), strip);
+ double noise = ((HpsSiSensor) fit.getRawTrackerHit().getDetectorElement()).getNoise(strip, 0);
if (fit.getAmp() > 4 * noise) {
t0s[module][layer - 1].fill(strip, fit.getT0());
}
java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt
--- java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -11,12 +11,14 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
+
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
import org.hps.conditions.deprecated.HPSSVTConstants;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.recon.tracking.FittedRawTrackerHit;
import org.hps.util.Resettable;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.geometry.Detector;
import org.lcsim.util.Driver;
@@ -25,8 +27,6 @@
/**
*
* @author mgraham
- * @version $Id: SVTHitReconstructionPlots.java,v 1.14 2012/05/18 07:41:49 meeg
- * Exp $
*/
public class SVTPulseFitPlots extends Driver implements Resettable {
@@ -47,8 +47,12 @@
private IHistogram2D[][] shape = new IHistogram2D[2][10];
// private IHistogram2D shape;
+ private static final String subdetectorName = "Tracker";
+
protected void detectorChanged(Detector detector) {
+ List<HpsSiSensor> sensors = detector.getSubdetector(subdetectorName).getDetectorElement().findDescendants(HpsSiSensor.class);
+
aida.tree().cd("/");
IAnalysisFactory fac = aida.analysisFactory();
@@ -92,6 +96,26 @@
plotter5.style().zAxisStyle().setVisible(false);
plotter5.createRegions(4, 5);
+
+ // Setup the occupancy plots.
+ for(HpsSiSensor sensor : sensors){
+ int module = sensor.getModuleNumber();
+ int layer = sensor.getLayerNumber();
+ int region = computePlotterRegion(layer + 1, module);
+ t0[module][layer] = aida.histogram1D(sensor.getName() + "_timing", 50, -100, 100.0);
+ plotter.region(region).plot(t0[module][layer]);
+ amp[module][layer] = aida.histogram1D(sensor.getName() + "_amplitude", 50, 0, 2000.0);
+ plotter2.region(region).plot(amp[module][layer]);
+ chiprob[module][layer] = aida.histogram1D(sensor.getName() + "_chiprob", 100, 0, 1.0);
+ plotter3.region(region).plot(chiprob[module][layer]);
+ t0a[module][layer] = aida.histogram2D(sensor.getName() + " A vs. T0", 100, -100, 100, 100, 0, 2000);
+ plotter4.region(region).plot(t0a[module][layer]);
+ shape[module][layer] = aida.histogram2D(sensor.getName() + " Shape", 200, -1, 3, 200, -0.5, 2);
+ plotter5.region(region).plot(shape[module][layer]);
+ }
+
+
+ /* ==>
for (int module = 0; module < 2; module++) {
for (int layer = 0; layer < 10; layer++) {
SiSensor sensor = SvtUtils.getInstance().getSensor(module, layer);
@@ -108,7 +132,7 @@
plotter5.region(region).plot(shape[module][layer]);
}
- }
+ } ===> */
}
public SVTPulseFitPlots() {
@@ -126,7 +150,7 @@
++eventCount;
List<FittedRawTrackerHit> fittedrawHits = event.get(FittedRawTrackerHit.class, fittedTrackerHitCollectionName);
for (FittedRawTrackerHit fit : fittedrawHits) {
- SiSensor sensor = (SiSensor) fit.getRawTrackerHit().getDetectorElement();
+ HpsSiSensor sensor = (HpsSiSensor) fit.getRawTrackerHit().getDetectorElement();
int strip = fit.getRawTrackerHit().getIdentifierFieldValue("strip");
int layer = fit.getRawTrackerHit().getIdentifierFieldValue("layer"); // 1-10; axial layers are odd layers; stereo layers are even
int module = fit.getRawTrackerHit().getIdentifierFieldValue("module"); // 0-1; module number is top or bottom
@@ -138,14 +162,18 @@
aida.histogram1D(sensorName + "_amplitude").fill(fittedAmp);
aida.histogram1D(sensorName + "_chiprob").fill(fit.getShapeFitParameters().getChiProb());
- double noise = HPSSVTCalibrationConstants.getNoise(sensor, strip);
- double pedestal = HPSSVTCalibrationConstants.getPedestal(sensor, strip);
- double tp = HPSSVTCalibrationConstants.getTShaping(sensor, strip);
-
+ //===> double noise = HPSSVTCalibrationConstants.getNoise(sensor, strip);
+ //===> double pedestal = HPSSVTCalibrationConstants.getPedestal(sensor, strip);
+ //===> double tp = HPSSVTCalibrationConstants.getTShaping(sensor, strip);
+ double tp = sensor.getShapeFitParameters(strip)[HpsSiSensor.TP_INDEX];
+
t0a[module][layer - 1].fill(fit.getT0(), fit.getAmp());
- if (fit.getAmp() > 4 * noise) {
+ //===> if (fit.getAmp() > 4 * noise) {
+ if (fit.getAmp() > 4 * sensor.getNoise(strip, 0)) {
for (int i = 0; i < fit.getRawTrackerHit().getADCValues().length; i++) {
- shape[module][layer - 1].fill((i * HPSSVTConstants.SAMPLING_INTERVAL - fit.getT0()) / tp, (fit.getRawTrackerHit().getADCValues()[i] - pedestal) / fit.getAmp());
+ //====> shape[module][layer - 1].fill((i * HPSSVTConstants.SAMPLING_INTERVAL - fit.getT0()) / tp, (fit.getRawTrackerHit().getADCValues()[i] - pedestal) / fit.getAmp());
+ shape[module][layer - 1].fill((i * HPSSVTConstants.SAMPLING_INTERVAL - fit.getT0()) / tp,
+ (fit.getRawTrackerHit().getADCValues()[i] - sensor.getPedestal(strip, i)) / fit.getAmp());
// shape.fill((i * HPSSVTConstants.SAMPLE_INTERVAL - hrth.getT0()) / tp, (hrth.getRawTrackerHit().getADCValues()[i] - pedestal) / hrth.getAmp());
}
}
java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt
--- java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTSimpleEventDisplay.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTSimpleEventDisplay.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -5,10 +5,15 @@
import hep.aida.IPlotterFactory;
//import hep.aida.jfree.plot.style.DefaultHistogram1DStyle;
+
+
import java.util.List;
-import org.hps.conditions.deprecated.SvtUtils;
+
+
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.util.Resettable;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.fit.helicaltrack.HelicalTrackHit;
@@ -22,7 +27,6 @@
* This class can be configured to reset after each event for use as an
* event display by calling {@link #setSingleEvent(boolean)}.
*
- * @version $Id: SVTSimpleEventDisplay.java,v 1.13 2013/11/06 19:19:55 jeremy Exp $
*/
public class SVTSimpleEventDisplay extends Driver implements Resettable {
@@ -53,6 +57,11 @@
*/
private boolean singleEvent = true;
+ /*
+ * Subdetector Name
+ */
+ private static final String subdetectorName = "Tracker";
+
/**
* Class constructor.
*/
@@ -117,12 +126,14 @@
* Configure this Driver for a new Detector, e.g. setup the plots and show them.
*/
protected void detectorChanged(Detector detector) {
+ List<HpsSiSensor> sensors = detector.getSubdetector(subdetectorName).getDetectorElement().findDescendants(HpsSiSensor.class);
+
createPlotterFactory();
setupRawTrackerHitPlots();
setupTrackerHitPlots();
setupHelicalTrackHitPlots();
setupHitCountPlots();
- setupOccupancyPlots();
+ setupOccupancyPlots(sensors);
showPlots();
}
@@ -180,9 +191,22 @@
plotter4.show();
}
- private void setupOccupancyPlots() {
+ private void setupOccupancyPlots(List<HpsSiSensor> sensors) {
aida.tree().cd("/");
- for (int module = 0; module < 2; module++) {
+
+ for(HpsSiSensor sensor : sensors){
+ int module = sensor.getModuleNumber();
+ int layer = sensor.getLayerNumber();
+ int region = computePlotterRegion(layer + 1, module);
+ rth[module][layer] = aida.histogram1D(sensor.getName() + " RawTrackerHits", 640, -0.5, 639.5);
+ plotter.region(region).plot(rth[module][layer]);
+ th[module][layer] = aida.histogram1D(sensor.getName() + " TrackerHits", 640, -0.5, 639.5);
+ plotter2.region(region).plot(th[module][layer]);
+ hth[module][layer] = aida.histogram1D(sensor.getName() + " HelicalTrackHits", 640, -0.5, 639.5);
+ plotter3.region(region).plot(hth[module][layer]);
+ }
+
+ /* ===> for (int module = 0; module < 2; module++) {
for (int layer = 0; layer < 10; layer++) {
int region = computePlotterRegion(layer + 1, module);
rth[module][layer] = aida.histogram1D(SvtUtils.getInstance().getSensor(module, layer).getName() + " RawTrackerHits", 640, -0.5, 639.5);
@@ -192,7 +216,7 @@
hth[module][layer] = aida.histogram1D(SvtUtils.getInstance().getSensor(module, layer).getName() + " HelicalTrackHits", 640, -0.5, 639.5);
plotter3.region(region).plot(hth[module][layer]);
}
- }
+ } ===> */
}
/**
java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt
--- java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackTimePlots.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackTimePlots.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -9,13 +9,11 @@
import java.util.List;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.readout.ecal.TriggerData;
import org.hps.util.Resettable;
-import org.lcsim.detector.identifier.IIdentifier;
-import org.lcsim.detector.identifier.IIdentifierHelper;
import org.lcsim.detector.tracker.silicon.DopedSilicon;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.Track;
import org.lcsim.event.TrackerHit;
@@ -29,8 +27,6 @@
/**
*
* @author meeg
- * @version $Id: SVTHitReconstructionPlots.java,v 1.14 2012/05/18 07:41:49 meeg
- * Exp $
*/
public class TrackTimePlots extends Driver implements Resettable {
@@ -49,6 +45,8 @@
private IHistogram1D[] trackTimeRange = new IHistogram1D[2];
private IHistogram2D[] trackTimeMinMax = new IHistogram2D[2];
+ private static final String subdetectorName = "Tracker";
+
@Override
protected void detectorChanged(Detector detector) {
//plotterFrame = new AIDAFrame();
@@ -56,6 +54,8 @@
aida.tree().cd("/");
+ List<HpsSiSensor> sensors = detector.getSubdetector(subdetectorName).getDetectorElement().findDescendants(HpsSiSensor.class);
+
IPlotterFactory fac = aida.analysisFactory().createPlotterFactory();
IPlotterStyle style;
@@ -120,7 +120,59 @@
style.dataStyle().errorBarStyle().setVisible(false);
plotter7.createRegions(2, 2);
+
+ for(HpsSiSensor sensor : sensors){
+ int module = sensor.getModuleNumber();
+ int layer = sensor.getLayerNumber();
+ int region = computePlotterRegion(layer + 1, module);
+
+ t0[module][layer] = aida.histogram1D(sensor.getName() + "_timing", 75, -50, 100.0);
+ plotter.region(region).plot(t0[module][layer]);
+ ((PlotterRegion) plotter.region(region)).getPlot().getXAxis().setLabel("Hit time [ns]");
+ trackHitT0[module][layer] = aida.histogram1D(sensor.getName() + "_trackHit_timing", 75, -50, 4000.0);
+ plotter3.region(region).plot(trackHitT0[module][layer]);
+ ((PlotterRegion) plotter3.region(region)).getPlot().getXAxis().setLabel("Hit time [ns]");
+ trackHitDt[module][layer] = aida.histogram1D(sensor.getName() + "_trackHit_dt", 50, -20, 20.0);
+ plotter4.region(region).plot(trackHitDt[module][layer]);
+ ((PlotterRegion) plotter4.region(region)).getPlot().getXAxis().setLabel("Hit time residual [ns]");
+ trackHit2D[module][layer] = aida.histogram2D(sensor.getName() + "_trackHit_dt_2D", 75, -50, 100.0, 50, -20, 20.0);
+ plotter5.region(region).plot(trackHit2D[module][layer]);
+ ((PlotterRegion) plotter5.region(region)).getPlot().getXAxis().setLabel("Track time [ns]");
+ ((PlotterRegion) plotter5.region(region)).getPlot().getYAxis().setLabel("Hit time [ns]");
+ trackHitDtChan[module][layer] = aida.histogram2D(sensor.getName() + "_trackHit_dt_chan", 200, -20, 20, 50, -20, 20.0);
+ plotter6.region(region).plot(trackHitDtChan[module][layer]);
+ ((PlotterRegion) plotter6.region(region)).getPlot().getXAxis().setLabel("Hit position [mm]");
+ ((PlotterRegion) plotter6.region(region)).getPlot().getYAxis().setLabel("Hit time residual [ns]");
+ }
+
for (int module = 0; module < 2; module++) {
+
+ trackT0[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + " Track Time", 75, -50, 100.0);
+ plotter2.region(module).plot(trackT0[module]);
+ ((PlotterRegion) plotter2.region(module)).getPlot().getXAxis().setLabel("Track time [ns]");
+ trackTrigTime[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + " Track Time vs. Trig Time", 75, -50, 100.0, 33, -1, 32);
+ plotter2.region(module + 2).plot(trackTrigTime[module]);
+ ((PlotterRegion) plotter2.region(module+2)).getPlot().getXAxis().setLabel("Track time [ns]");
+ ((PlotterRegion) plotter2.region(module+2)).getPlot().getYAxis().setLabel("Trigger time [clocks]");
+ style = plotter2.region(module + 2).style();
+ style.setParameter("hist2DStyle", "colorMap");
+ style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+ style.zAxisStyle().setParameter("scale", "log");
+
+ trackTimeRange[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + " Track Hit Time Range", 75, 0, 30.0);
+ plotter7.region(module).plot(trackTimeRange[module]);
+ ((PlotterRegion) plotter7.region(module)).getPlot().getXAxis().setLabel("Track time range [ns]");
+ trackTimeMinMax[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + " First and Last Track Hit Times", 75, -50, 100.0, 75, -50, 100.0);
+ plotter7.region(module + 2).plot(trackTimeMinMax[module]);
+ ((PlotterRegion) plotter7.region(module+2)).getPlot().getXAxis().setLabel("First track hit time [ns]");
+ ((PlotterRegion) plotter7.region(module+2)).getPlot().getYAxis().setLabel("Last track hit time [ns]");
+ style = plotter7.region(module + 2).style();
+ style.setParameter("hist2DStyle", "colorMap");
+ style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+ style.zAxisStyle().setParameter("scale", "log");
+ }
+
+ /* ===> for (int module = 0; module < 2; module++) {
for (int layer = 0; layer < 10; layer++) {
SiSensor sensor = SvtUtils.getInstance().getSensor(module, layer);
int region = computePlotterRegion(layer + 1, module);
@@ -165,7 +217,7 @@
style.setParameter("hist2DStyle", "colorMap");
style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
style.zAxisStyle().setParameter("scale", "log");
- }
+ } ===> */
// shape = aida.histogram2D("Shape", 200, -1, 3, 200, -0.5, 2);
// plotter5.region(0).plot(shape);
@@ -225,12 +277,14 @@
}
}
- IIdentifierHelper helper = SvtUtils.getInstance().getHelper();
+ //===> IIdentifierHelper helper = SvtUtils.getInstance().getHelper();
List<SiTrackerHitStrip1D> hits = event.get(SiTrackerHitStrip1D.class, hitCollection);
for (SiTrackerHitStrip1D hit : hits) {
- IIdentifier id = hit.getSensor().getIdentifier();
- int layer = helper.getValue(id, "layer");
- int module = helper.getValue(id, "module");
+ //===> IIdentifier id = hit.getSensor().getIdentifier();
+ //===> int layer = helper.getValue(id, "layer");
+ int layer = ((HpsSiSensor) hit.getSensor()).getLayerNumber();
+ int module = ((HpsSiSensor) hit.getSensor()).getModuleNumber();
+ //===> int module = helper.getValue(id, "module");
// System.out.format("%d, %d, %d\n",hit.getCellID(),layer,module);
t0[module][layer - 1].fill(hit.getTime());
}
java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt
--- java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -15,9 +15,9 @@
import java.util.logging.Logger;
import org.hps.conditions.deprecated.BeamlineConstants;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.recon.ecal.HPSEcalCluster;
import org.hps.recon.tracking.DumbShaperFit;
import org.hps.recon.tracking.HelixConverter;
@@ -27,6 +27,7 @@
import org.hps.recon.tracking.TrackUtils;
import org.hps.util.Resettable;
import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.LCIOParameters.ParameterName;
import org.lcsim.event.RawTrackerHit;
@@ -615,8 +616,9 @@
// htc.resetTrackDirection();
double x = htc.getPosition()[0];
double y = htc.getPosition()[1];
- SiSensor sensor = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement());
- if (SvtUtils.getInstance().isTopLayer(sensor)) {
+ HpsSiSensor sensor = ((HpsSiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement());
+ //===> if (SvtUtils.getInstance().isTopLayer(sensor)) {
+ if (sensor.isTopLayer()) {
layersTop[htc.Layer() - 1]++;
Hep3Vector sensorPos = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()).getGeometry().getPosition();
if (htc.Layer() == 1) {
@@ -791,10 +793,10 @@
aida.histogram1D(modNum + "Residual Y(mm) Bottom").fill(htcross.getCorrectedPosition().z() - zTr);//these hits should be rotated track hits already
}
- SiSensor sensor = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement());
+ HpsSiSensor sensor = ((HpsSiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement());
double x = htcross.getCorrectedPosition().y();
double y = htcross.getCorrectedPosition().z();
- if (SvtUtils.getInstance().isTopLayer(sensor)) {
+ if (sensor.isTopLayer()) {
layersTop[htc.Layer() - 1]++;
Hep3Vector sensorPos = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()).getGeometry().getPosition();
if (htc.Layer() == 1) {
@@ -833,8 +835,9 @@
for (HelicalTrackStrip hts : htcross.getStrips()) {
double clusterSum = 0;
for (RawTrackerHit rawHit : (List<RawTrackerHit>) hts.rawhits()) {
- ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) rawHit.getDetectorElement(), rawHit.getIdentifierFieldValue("strip"));
- for (ShapeFitParameters fit : _shaper.fitShape(rawHit, constants)) {
+ //===> ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) rawHit.getDetectorElement(), rawHit.getIdentifierFieldValue("strip"));
+ //===>for (ShapeFitParameters fit : _shaper.fitShape(rawHit, constants)) {
+ for (ShapeFitParameters fit : _shaper.fitShape(rawHit)) {
double amp = fit.getAmp();
clusterSum += amp;
aida.histogram1D("Amp (HitOnTrack)").fill(amp);
java/branches/hps_java_trunk_HPSJAVA-255/recon/src/main/java/org/hps/recon/filtering
--- java/branches/hps_java_trunk_HPSJAVA-255/recon/src/main/java/org/hps/recon/filtering/InTimeHitsFilter.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/recon/src/main/java/org/hps/recon/filtering/InTimeHitsFilter.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -2,10 +2,13 @@
import java.util.List;
-import org.hps.conditions.deprecated.SvtUtils;
+
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.recon.tracking.FittedRawTrackerHit;
+
import org.lcsim.detector.identifier.IIdentifier;
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.SiSensorElectrodes;
import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
@@ -13,9 +16,8 @@
import org.lcsim.event.RawTrackerHit;
/**
-
- @author mgraham
- @version $Id:
+ *
+ * @author mgraham
*/
public class InTimeHitsFilter extends EventReconFilter{
@@ -81,13 +83,14 @@
}
private boolean isHitOnTop(RawTrackerHit hit){
- SiSensor sensor=(SiSensor) hit.getDetectorElement();
+ HpsSiSensor sensor=(HpsSiSensor) hit.getDetectorElement();
IIdentifier id=hit.getIdentifier();
SiTrackerIdentifierHelper _sid_helper=(SiTrackerIdentifierHelper) sensor.getIdentifierHelper();
ChargeCarrier carrier=ChargeCarrier.getCarrier(_sid_helper.getSideValue(id));
SiSensorElectrodes electrodes=((SiSensor) hit.getDetectorElement()).getReadoutElectrodes(carrier);
- if(!SvtUtils.getInstance().isTopLayer(sensor))
+ //===> if(!SvtUtils.getInstance().isTopLayer(sensor))
+ if(!sensor.isTopLayer())
return false;
return true;
}
java/branches/hps_java_trunk_HPSJAVA-255/recon/src/main/java/org/hps/recon/filtering
--- java/branches/hps_java_trunk_HPSJAVA-255/recon/src/main/java/org/hps/recon/filtering/MinimumHitsFilter.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/recon/src/main/java/org/hps/recon/filtering/MinimumHitsFilter.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -2,9 +2,11 @@
import java.util.List;
-import org.hps.conditions.deprecated.SvtUtils;
+
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.lcsim.detector.identifier.IIdentifier;
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.SiSensorElectrodes;
import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
@@ -12,9 +14,8 @@
import org.lcsim.event.RawTrackerHit;
/**
-
- @author mgraham
- @version $Id:
+ *
+ * @author mgraham
*/
public class MinimumHitsFilter extends EventReconFilter{
@@ -60,13 +61,14 @@
private boolean isHitOnTop(RawTrackerHit hit){
- SiSensor sensor=(SiSensor) hit.getDetectorElement();
+ HpsSiSensor sensor=(HpsSiSensor) hit.getDetectorElement();
IIdentifier id=hit.getIdentifier();
SiTrackerIdentifierHelper _sid_helper=(SiTrackerIdentifierHelper) sensor.getIdentifierHelper();
ChargeCarrier carrier=ChargeCarrier.getCarrier(_sid_helper.getSideValue(id));
SiSensorElectrodes electrodes=((SiSensor) hit.getDetectorElement()).getReadoutElectrodes(carrier);
- if(!SvtUtils.getInstance().isTopLayer(sensor))
+ //===> if(!SvtUtils.getInstance().isTopLayer(sensor))
+ if(!sensor.isTopLayer())
return false;
return true;
}
java/branches/hps_java_trunk_HPSJAVA-255/steering-files/src/main/resources/org/hps/steering/readout
--- java/branches/hps_java_trunk_HPSJAVA-255/steering-files/src/main/resources/org/hps/steering/readout/HPS2014ReadoutToLcio.lcsim 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/steering-files/src/main/resources/org/hps/steering/readout/HPS2014ReadoutToLcio.lcsim 2014-10-20 04:54:20 UTC (rev 1246)
@@ -26,7 +26,7 @@
<drivers>
<driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
- <eventInterval>1000</eventInterval>
+ <eventInterval>1</eventInterval>
</driver>
<driver name="CalibrationDriver" type="org.hps.conditions.deprecated.CalibrationDriver">
<!-- <runNumber>1351</runNumber> -->
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/readout/svt
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/readout/svt/SimpleSvtReadout.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/readout/svt/SimpleSvtReadout.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -1,6 +1,5 @@
package org.hps.readout.svt;
-//--- java ---//
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -8,42 +7,48 @@
import java.util.PriorityQueue;
import java.util.Set;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.HPSSVTConstants;
-import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.readout.ecal.ClockSingleton;
-import org.hps.readout.ecal.ReadoutTimestamp;
-import org.hps.readout.ecal.TriggerableDriver;
-import org.hps.util.RandomGaussian;
-//--- lcsim ---//
import org.lcsim.detector.tracker.silicon.ChargeCarrier;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.geometry.Detector;
+
+import org.lcsim.lcio.LCIOConstants;
import org.lcsim.event.EventHeader;
import org.lcsim.event.LCRelation;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.event.SimTrackerHit;
import org.lcsim.event.base.BaseLCRelation;
import org.lcsim.event.base.BaseRawTrackerHit;
-import org.lcsim.geometry.Detector;
-import org.lcsim.lcio.LCIOConstants;
+
import org.lcsim.recon.tracking.digitization.sisim.CDFSiSensorSim;
import org.lcsim.recon.tracking.digitization.sisim.SiElectrodeData;
import org.lcsim.recon.tracking.digitization.sisim.SiElectrodeDataCollection;
import org.lcsim.recon.tracking.digitization.sisim.SiSensorSim;
import org.lcsim.recon.tracking.digitization.sisim.config.SimTrackerHitReadoutDriver;
+import org.hps.conditions.deprecated.HPSSVTConstants;
+import org.hps.readout.ecal.ClockSingleton;
+import org.hps.readout.ecal.ReadoutTimestamp;
+import org.hps.readout.ecal.TriggerableDriver;
+import org.hps.util.RandomGaussian;
+
/**
- *
+ * SVT readout simulation.
+ *
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: SimpleSvtReadout.java,v 1.19 2013/08/07 23:38:32 meeg Exp $
*/
public class SimpleSvtReadout extends TriggerableDriver {
-
+
+ //-----------------//
+ //--- Constants ---//
+ //-----------------//
+ private static final String SVT_SUBDETECTOR_NAME = "Tracker";
+
private SimTrackerHitReadoutDriver readoutDriver = new SimTrackerHitReadoutDriver();
private SiSensorSim siSimulation = new CDFSiSensorSim();
- private String outputCollection = "SVTRawTrackerHits";
- private String relationCollection = "SVTTrueHitRelations";
private Map<SiSensor, PriorityQueue<StripHit>[]> hitMap = new HashMap<SiSensor, PriorityQueue<StripHit>[]>();
+ private List<SiSensor> sensors = null;
+
// readout period time offset in ns
private double readoutOffset = 0.0;
private double readoutLatency = 280.0;
@@ -52,6 +57,7 @@
private double timeOffset = 30.0;
private boolean noPileup = false;
private boolean addNoise = true;
+
// cut settings
private boolean enableThresholdCut = true;
private int samplesAboveThreshold = 3;
@@ -59,6 +65,11 @@
private boolean enablePileupCut = true;
private boolean dropBadChannels = true;
+ // Collection Names
+ private String outputCollection = "SVTRawTrackerHits";
+ private String relationCollection = "SVTTrueHitRelations";
+
+
public SimpleSvtReadout() {
add(readoutDriver);
triggerDelay = 100.0;
@@ -103,12 +114,17 @@
public void detectorChanged(Detector detector) {
super.detectorChanged(detector);
+ // Get the collection of all SiSensors from the SVT
+ sensors
+ = detector.getSubdetector(SVT_SUBDETECTOR_NAME).
+ getDetectorElement().findDescendants(SiSensor.class);
+
String[] readouts = { readout };
readoutDriver.setCollections(readouts);
if (!noPileup) {
- for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
- PriorityQueue<StripHit>[] hitQueues = new PriorityQueue[HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR];
+ for(SiSensor sensor : sensors){
+ PriorityQueue<StripHit>[] hitQueues = new PriorityQueue[HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR];
hitMap.put(sensor, hitQueues);
}
}
@@ -136,12 +152,12 @@
}
// dump stale hits
- for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
+ for (SiSensor sensor : sensors) {
PriorityQueue<StripHit>[] hitQueues = hitMap.get(sensor);
for (int i = 0; i < hitQueues.length; i++) {
if (hitQueues[i] != null) {
while (!hitQueues[i].isEmpty() && hitQueues[i].peek().time < ClockSingleton.getTime() - (readoutLatency + pileupCutoff)) {
- // System.out.format("Time %f: Dump stale hit with time %f\n",ClockSingleton.getTime(),hitQueues[i].peek().time);
+ System.out.format("Time %f: Dump stale hit with time %f\n",ClockSingleton.getTime(),hitQueues[i].peek().time);
hitQueues[i].poll();
}
if (hitQueues[i].isEmpty()) {
@@ -154,38 +170,36 @@
// If an ECal trigger is received, make hits from pipelines
checkTrigger(event);
} else {
- // Create a list to hold the analog data
+
+ // Create a list to hold the analog data
List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
for (StripHit stripHit : stripHits) {
- SiSensor sensor = stripHit.sensor;
+ HpsSiSensor sensor = (HpsSiSensor) stripHit.sensor;
int channel = stripHit.channel;
double amplitude = stripHit.amplitude;
short[] samples = new short[6];
double[] signal = new double[6];
- for (int i = 0; i < 6; i++) {
- signal[i] = HPSSVTCalibrationConstants.getPedestal(sensor, channel);
+ for (int sampleN = 0; sampleN < 6; sampleN++) {
+ signal[sampleN] = sensor.getPedestal(channel, sampleN);
}
if (addNoise) {
addNoise(sensor, channel, signal);
}
- for (int i = 0; i < 6; i++) {
- double time = i * HPSSVTConstants.SAMPLING_INTERVAL - timeOffset;
- signal[i] += amplitude * pulseAmplitude(time, HPSSVTCalibrationConstants.getTShaping(sensor, channel));
- // signal[i] += amplitude * pulseAmplitude(time,
- // HPSSVTCalibrationConstants.getTShaping(sensor, channel)) +
- // HPSSVTCalibrationConstants.getPedestal(sensor, channel);
- samples[i] = (short) Math.round(signal[i]);
+ for (int sampleN = 0; sampleN < 6; sampleN++) {
+ double time = sampleN * HPSSVTConstants.SAMPLING_INTERVAL - timeOffset;
+ double tp = sensor.getShapeFitParameters(channel)[HpsSiSensor.TP_INDEX];
+ signal[sampleN] = amplitude * pulseAmplitude(time, tp);
+ samples[sampleN] = (short) Math.round(signal[sampleN]);
}
- long cell_id = SvtUtils.makeCellID(sensor, channel);
-
- RawTrackerHit hit = new BaseRawTrackerHit(0, cell_id, samples, new ArrayList<SimTrackerHit>(stripHit.simHits), sensor);
- // System.out.println("Making RTH");
+ long channel_id = sensor.makeChannelID(channel);
+ RawTrackerHit hit = new BaseRawTrackerHit(0, channel_id, samples, new ArrayList<SimTrackerHit>(stripHit.simHits), sensor);
+ System.out.println("Making RTH");
if (readoutCuts(hit)) {
- // System.out.println("RTH passed cuts");
+ System.out.println("RTH passed cuts");
hits.add(hit);
}
}
@@ -193,13 +207,19 @@
int flags = 1 << LCIOConstants.TRAWBIT_ID1;
// flags += 1 << LCIOConstants.RTHBIT_HITS;
event.put(outputCollection, hits, RawTrackerHit.class, flags, readout);
- // System.out.println("Made " + hits.size() + " RawTrackerHits");
+ System.out.println("Made " + hits.size() + " RawTrackerHits");
}
}
+ /**
+ *
+ * @return Collection of StripHits
+ */
private List<StripHit> doSiSimulation() {
+
List<StripHit> stripHits = new ArrayList<StripHit>();
- for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
+
+ for (SiSensor sensor : sensors) {
// Set the sensor to be used in the charge deposition simulation
siSimulation.setSensor(sensor);
@@ -242,6 +262,7 @@
double resistorValue = 100; // Ohms
double inputStageGain = 1.5;
+ // FIXME: This should use the gains instead
double amplitude = (charge / HPSSVTConstants.MIP) * resistorValue * inputStageGain * Math.pow(2, 14) / 2000;
stripHits.add(new StripHit(sensor, channel, amplitude, time, simHits));
@@ -255,32 +276,31 @@
}
private void addNoise(SiSensor sensor, int channel, double[] signal) {
- double noise = HPSSVTCalibrationConstants.getNoise(sensor, channel);
- for (int i = 0; i < 6; i++) {
- signal[i] += RandomGaussian.getGaussian(0, noise);
+ for (int sampleN = 0; sampleN < 6; sampleN++) {
+ signal[sampleN] += RandomGaussian.getGaussian(0, ((HpsSiSensor) sensor).getNoise(channel, sampleN));
}
}
private boolean readoutCuts(RawTrackerHit hit) {
if (enableThresholdCut && !samplesAboveThreshold(hit)) {
- // System.out.println("Failed threshold cut");
+ System.out.println("Failed threshold cut");
return false;
}
if (enablePileupCut && !pileupCut(hit)) {
- // System.out.println("Failed pileup cut");
+ System.out.println("Failed pileup cut");
return false;
}
if (dropBadChannels && !badChannelCut(hit)) {
- // System.out.println("Failed bad channel cut");
+ System.out.println("Failed bad channel cut");
return false;
}
return true;
}
private boolean badChannelCut(RawTrackerHit hit) {
- SiSensor sensor = (SiSensor) hit.getDetectorElement();
+ HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
int channel = hit.getIdentifierFieldValue("strip");
- return !HPSSVTCalibrationConstants.isBadChannel(sensor, channel);
+ return !sensor.isBadChannel(channel);
}
private boolean pileupCut(RawTrackerHit hit) {
@@ -289,16 +309,17 @@
}
private boolean samplesAboveThreshold(RawTrackerHit hit) {
- SiSensor sensor = (SiSensor) hit.getDetectorElement();
+ HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
int channel = hit.getIdentifierFieldValue("strip");
- HPSSVTCalibrationConstants.getChannelConstants(sensor, channel);
- double pedestal = HPSSVTCalibrationConstants.getPedestal(sensor, channel);
- double noise = HPSSVTCalibrationConstants.getNoise(sensor, channel);
+ double pedestal = 0;
+ double noise = 0;
int count = 0;
short[] samples = hit.getADCValues();
- for (int i = 0; i < samples.length; i++) {
- // System.out.format("%d, %d\n", samples[i] - pedestal, noise * 3.0);
- if (samples[i] - pedestal > noise * noiseThreshold) {
+ for (int sampleN = 0; sampleN < samples.length; sampleN++) {
+ pedestal = sensor.getPedestal(channel, sampleN);
+ noise = sensor.getNoise(channel, sampleN);
+ //System.out.format("%d, %d\n", samples[sampleN] - pedestal, noise * 3.0);
+ if (samples[sampleN] - pedestal > noise * noiseThreshold) {
count++;
}
}
@@ -310,7 +331,7 @@
if (noPileup) {
return;
}
- // System.out.println("Got trigger");
+ System.out.println("Got trigger");
// Create a list to hold the analog data
List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
@@ -318,15 +339,15 @@
// Calculate time of first sample
double firstSample = Math.floor((ClockSingleton.getTime() - readoutLatency - readoutOffset) / HPSSVTConstants.SAMPLING_INTERVAL) * HPSSVTConstants.SAMPLING_INTERVAL + readoutOffset;
- for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
+ for (SiSensor sensor : sensors) {
PriorityQueue<StripHit>[] hitQueues = hitMap.get(sensor);
for (int channel = 0; channel < hitQueues.length; channel++) {
if (!addNoise && (hitQueues[channel] == null || hitQueues[channel].isEmpty())) {
continue;
}
double[] signal = new double[6];
- for (int i = 0; i < 6; i++) {
- signal[i] = HPSSVTCalibrationConstants.getPedestal(sensor, channel);
+ for (int sampleN = 0; sampleN < 6; sampleN++) {
+ signal[sampleN] = ((HpsSiSensor) sensor).getPedestal(channel, sampleN);
}
if (addNoise) {
addNoise(sensor, channel, signal);
@@ -337,34 +358,39 @@
if (hitQueues[channel] != null) {
for (StripHit hit : hitQueues[channel]) {
double totalContrib = 0;
- for (int i = 0; i < 6; i++) {
- double sampleTime = firstSample + i * HPSSVTConstants.SAMPLING_INTERVAL;
- double signalAtTime = hit.amplitude * pulseAmplitude(sampleTime - hit.time, HPSSVTCalibrationConstants.getTShaping(sensor, channel));
+ double meanNoise = 0;
+ for (int sampleN = 0; sampleN < 6; sampleN++) {
+ double sampleTime = firstSample + sampleN * HPSSVTConstants.SAMPLING_INTERVAL;
+ System.out.println("sampleTime: " + sampleTime);
+ double tp = ((HpsSiSensor) sensor).getShapeFitParameters(channel)[HpsSiSensor.TP_INDEX];
+ System.out.println("tp: " + tp);
+ double signalAtTime = hit.amplitude * pulseAmplitude(sampleTime - hit.time, tp);
+ System.out.println("SignalAtTime: " + signalAtTime);
totalContrib += signalAtTime;
- signal[i] += signalAtTime;
- // System.out.format("new value of signal[%d] = %f\n", i, signal[i]);
+ System.out.println("totalContrib: " + totalContrib);
+ signal[sampleN] += signalAtTime;
+ meanNoise += ((HpsSiSensor) sensor).getNoise(channel, sampleN);
+ System.out.format("new value of signal[%d] = %f\n", sampleN, signal[sampleN]);
}
- if (totalContrib > 4.0 * HPSSVTCalibrationConstants.getNoise(sensor, channel)) {
- // System.out.format("adding %d simHits\n", hit.simHits.size());
+ meanNoise /= 6;
+ System.out.println("Mean noise: " + meanNoise);
+ // Compare to the mean noise of the six samples instead
+ if(totalContrib > 4.0*meanNoise){
+ System.out.format("adding %d simHits\n", hit.simHits.size());
simHits.addAll(hit.simHits);
}
}
}
short[] samples = new short[6];
- for (int i = 0; i < 6; i++) {
- samples[i] = (short) Math.round(signal[i]);
+ for (int sampleN = 0; sampleN < 6; sampleN++) {
+ samples[sampleN] = (short) Math.round(signal[sampleN]);
}
- // if (hitQueues[channel] != null && !hitQueues[channel].isEmpty()) {
- // for (int i = 0; i < 6; i++) {
- // System.out.format("samples[%d] = %d\n", i, samples[i]);
- // }
- // }
- long cell_id = SvtUtils.makeCellID(sensor, channel);
- RawTrackerHit hit = new BaseRawTrackerHit(0, cell_id, samples, simHits, sensor);
+ long channel_id = ((HpsSiSensor) sensor).makeChannelID(channel);
+ RawTrackerHit hit = new BaseRawTrackerHit(0, channel_id, samples, simHits, sensor);
if (readoutCuts(hit)) {
hits.add(hit);
- // System.out.format("simHits: %d\n", simHits.size());
+ System.out.format("simHits: %d\n", simHits.size());
for (SimTrackerHit simHit : hit.getSimTrackerHits()) {
LCRelation hitRelation = new BaseLCRelation(hit, simHit);
trueHitRelations.add(hitRelation);
@@ -374,7 +400,6 @@
}
int flags = 1 << LCIOConstants.TRAWBIT_ID1;
- // flags += 1 << LCIOConstants.RTHBIT_HITS;
event.put(outputCollection, hits, RawTrackerHit.class, flags, readout);
event.put(relationCollection, trueHitRelations, LCRelation.class, 0);
System.out.println("Made " + hits.size() + " RawTrackerHits");
@@ -384,8 +409,6 @@
@Override
public double readoutDeltaT() {
double triggerTime = ClockSingleton.getTime() + triggerDelay;
- // int cycle = (int) Math.floor((triggerTime - readoutOffset + ClockSingleton.getDt()) /
- // Apv25Constants.SAMPLING_INTERVAL);
// Calculate time of first sample
double firstSample = Math.floor((triggerTime - readoutLatency - readoutOffset) / HPSSVTConstants.SAMPLING_INTERVAL) * HPSSVTConstants.SAMPLING_INTERVAL + readoutOffset;
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/DataTrackerHitDriver.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/DataTrackerHitDriver.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -5,7 +5,6 @@
import java.util.List;
import java.util.Set;
-import org.hps.conditions.deprecated.SvtUtils;
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
@@ -230,13 +229,6 @@
// toString());
event.put(this.stripHitOutputCollectionName, stripHits1D, SiTrackerHitStrip1D.class, 0, toString());
if (debug) {
- for (int mod = 0; mod < 2; mod++) {
- for (int layer = 0; layer < 10; layer++) {
- counts[mod][layer] += SvtUtils.getInstance().getSensor(mod, layer).getReadout().getHits(SiTrackerHit.class).size();
- }
- }
- }
- if (debug) {
System.out.println("[ DataTrackerHitDriver ] - " + this.stripHitOutputCollectionName + " has " + stripHits1D.size() + " hits.");
}
}
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/DumbShaperFit.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/DumbShaperFit.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -2,15 +2,17 @@
import java.util.ArrayList;
import java.util.Collection;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+
+
+//===>import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.RawTrackerHit;
/**
*
* @author Matt Graham
*/
-// FIXME: Is there some other description besides "dumb" that could be used in this class name?
-// --JM
+// FIXME: Change the name of the class to SimpleShaperFit - OM
// TODO: Add class documentation.
public class DumbShaperFit implements ShaperFitAlgorithm {
@@ -24,19 +26,22 @@
}
@Override
- public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants) {
- short[] adcVals = rth.getADCValues();
- return this.fitShape(adcVals, constants);
+ public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth) {
+ short[] samples = rth.getADCValues();
+ HpsSiSensor sensor =(HpsSiSensor) rth.getDetectorElement();
+ int channel = rth.getIdentifierFieldValue("strip");
+ return fitShape(channel, samples, sensor);
}
-
- public Collection<ShapeFitParameters> fitShape(short[] adcVals, ChannelConstants constants) {
+
+ public Collection<ShapeFitParameters> fitShape(int channel, short[] samples, HpsSiSensor sensor){
+
ShapeFitParameters fitresults = new ShapeFitParameters();
double[] pedSub = {-99.0, -99.0, -99.0, -99.0, -99.0, -99.0};
double maxADC = -99999;
int iMax = -1;
double t0 = -999;
for (int i = 0; i < 6; i++) {
- pedSub[i] = adcVals[i] - constants.getPedestal();
+ pedSub[i] = samples[i] - sensor.getPedestal(channel, i);
if (pedSub[i] > maxADC) {
maxADC = pedSub[i];
iMax = i;
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/HelicalTrackHitDriver.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/HelicalTrackHitDriver.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -8,11 +8,13 @@
import java.util.List;
import java.util.Map;
-import org.hps.conditions.deprecated.StereoPair;
-import org.hps.conditions.deprecated.StereoPair.detectorVolume;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.StereoPair;
+//===> import org.hps.conditions.deprecated.StereoPair.detectorVolume;
+//===> import org.hps.conditions.deprecated.SvtUtils;
+
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.ITransform3D;
+import org.lcsim.detector.converter.compact.subdetector.SvtStereoLayer;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.detector.tracker.silicon.SiTrackerModule;
import org.lcsim.event.EventHeader;
@@ -28,19 +30,22 @@
import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
import org.lcsim.geometry.Detector;
import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
+import org.lcsim.detector.converter.compact.subdetector.HpsTracker2;
import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHit;
import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType;
/**
+ * Driver used to create stereo hits from clusters.
*
+ *
* @author Mathew Graham <[log in to unmask]>
* @author Per Hansson <[log in to unmask]>
* @author Omar Moreno <[log in to unmask]>
- * @version $Id: HelicalTrackHitDriver.java,v 1.10 2013/10/17 22:08:33 omoreno
- * Exp $
+ *
*/
// TODO: Add class documentation.
+// FIXME: The option to run using the Common geometry should be removed
public class HelicalTrackHitDriver extends org.lcsim.fit.helicaltrack.HelicalTrackHitDriver {
private boolean _debug = false;
@@ -48,6 +53,7 @@
// dt cut time in ns
private String _subdetectorName = "Tracker";
private final Map<String, String> _stereomap = new HashMap<String, String>();
+ private List<SvtStereoLayer> stereoLayers = null;
private final List<String> _colnames = new ArrayList<String>();
private boolean _doTransformToTracking = true;
@@ -279,23 +285,22 @@
hitsOnSensor.add(strip);
}
- for (StereoPair stereoPair : SvtUtils.getInstance().getStereoPairs()) {
+ //===> for (StereoPair stereoPair : SvtUtils.getInstance().getStereoPairs()) {
+ for (SvtStereoLayer stereoLayer : stereoLayers) {
// Form the stereo hits and add them to our hit list
List<HelicalTrackCross> newCrosses;
- if (stereoPair.getDetectorVolume() == detectorVolume.Top) {
- newCrosses = _crosser.MakeHits(striplistmap.get(stereoPair.getAxialSensor()), striplistmap.get(stereoPair.getStereoSensor()));
- } else if (stereoPair.getDetectorVolume() == detectorVolume.Bottom) {
- newCrosses = _crosser.MakeHits(striplistmap.get(stereoPair.getStereoSensor()), striplistmap.get(stereoPair.getAxialSensor()));
+ //===> if (stereoPair.getDetectorVolume() == detectorVolume.Top) {
+ if (stereoLayer.getAxialSensor().isTopLayer()) {
+ newCrosses = _crosser.MakeHits(striplistmap.get(stereoLayer.getAxialSensor()), striplistmap.get(stereoLayer.getStereoSensor()));
+ //===> } else if (stereoPair.getDetectorVolume() == detectorVolume.Bottom) {
+ } else if (stereoLayer.getAxialSensor().isBottomLayer()) {
+ newCrosses = _crosser.MakeHits(striplistmap.get(stereoLayer.getStereoSensor()), striplistmap.get(stereoLayer.getAxialSensor()));
} else {
throw new RuntimeException("stereo pair is neither top nor bottom");
}
- if (_debug) {
- System.out.printf("%s: Found %d stereo hits from sensors\n%s: %s : %d hits\n%s: %s with %d hits\n", this.getClass().getSimpleName(), newCrosses.size(), this.getClass().getSimpleName(), stereoPair.getAxialSensor().getName(), striplistmap.get(stereoPair.getAxialSensor()) == null ? 0 : striplistmap.get(stereoPair.getAxialSensor()).size(), this.getClass().getSimpleName(), stereoPair.getStereoSensor().getName(), striplistmap.get(stereoPair.getStereoSensor()) == null ? 0 : striplistmap.get(stereoPair.getStereoSensor()).size());
- }
-
helicalTrackCrosses.addAll(newCrosses);
} // Loop over stereo pairs
}
@@ -360,6 +365,9 @@
@Override
protected void detectorChanged(Detector detector) {
+ // Get the collection of stereo layers from the detector
+ stereoLayers = ((HpsTracker2) detector.getSubdetector(this._subdetectorName).getDetectorElement()).getStereoPairs();
+
/*
* Setup default pairing
*/
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/MaterialSupervisor.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/MaterialSupervisor.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -6,7 +6,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.hps.conditions.deprecated.SvtUtils;
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.IGeometryInfo;
import org.lcsim.detector.ILogicalVolume;
@@ -78,9 +77,6 @@
SiStripPlane plane = new SiStripPlane(module);
- if (DEBUG) {
- System.out.printf("%s: %5d %32s %15.2fx%.2f %10.2f %10.3f %10s\n", this.getClass().getSimpleName(), plane.getId(), plane.origin().toString(), plane.getUnmeasuredDimension(), plane.getMeasuredDimension(), plane.getThickness(), plane.getThicknessInRL() * 100, SvtUtils.getInstance().isAxial(module) ? "axial" : "stereo");
- }
_detectorVolumes.add(plane);
}
if (DEBUG) {
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/NearestNeighborRMSClusterer.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/NearestNeighborRMSClusterer.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -8,14 +8,18 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+
import org.apache.commons.math3.special.Gamma;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.HPSSVTConstants;
+
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
import org.lcsim.detector.identifier.IIdentifier;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+//===> import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
import org.lcsim.event.RawTrackerHit;
+import org.hps.conditions.deprecated.HPSSVTConstants;
+
/**
*
* @author Matt Graham
@@ -156,8 +160,15 @@
// Get the signal from the readout chip
double signal = base_hit.getAmp();
- double noiseRMS = HPSSVTCalibrationConstants.getNoise((SiSensor) rth.getDetectorElement(), channel_number);
-
+ double noiseRMS = 0;
+ for(int sampleN = 0; sampleN < HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES; sampleN++){
+ noiseRMS += ((HpsSiSensor) rth.getDetectorElement()).getNoise(channel_number, sampleN);
+ }
+ noiseRMS = noiseRMS/HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES;
+
+ //===> double noiseRMS = HPSSVTCalibrationConstants.getNoise((SiSensor) rth.getDetectorElement(), channel_number);
+
+
// Mark this hit as available for clustering if it is above the neighbor threshold
if (signal / noiseRMS >= _neighbor_threshold && passChisqCut(base_hit)) {
clusterableSet.add(channel_number);
@@ -205,7 +216,13 @@
cluster.add(channel_to_hit.get(clustered_cell));
FittedRawTrackerHit hit = channel_to_hit.get(clustered_cell);
cluster_signal += hit.getAmp();
- cluster_noise_squared += Math.pow(HPSSVTCalibrationConstants.getNoise((SiSensor) hit.getRawTrackerHit().getDetectorElement(), clustered_cell), 2);
+ double strip_noise = 0;
+ for(int sampleN = 0; sampleN < HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES; sampleN++){
+ strip_noise += ((HpsSiSensor) hit.getRawTrackerHit().getDetectorElement()).getNoise(clustered_cell, sampleN);
+ }
+ strip_noise = strip_noise/HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES;
+ cluster_noise_squared += Math.pow(strip_noise, 2);
+ //===> cluster_noise_squared += Math.pow(HPSSVTCalibrationConstants.getNoise((SiSensor) hit.getRawTrackerHit().getDetectorElement(), clustered_cell), 2);
cluster_weighted_time += hit.getT0() * hit.getAmp();
// cluster_noise_squared +=0; //need to get the noise from the calib. const. class
// Get the neigbor channels
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/NoiselessReadoutChip.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/NoiselessReadoutChip.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -1,6 +1,3 @@
-/*
- * Class BasicReadoutChip
- */
package org.hps.recon.tracking;
import java.util.ArrayList;
@@ -8,8 +5,9 @@
import java.util.SortedMap;
import java.util.TreeMap;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
+//===> import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.SiSensorElectrodes;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.recon.tracking.digitization.sisim.ReadoutChip;
@@ -166,7 +164,9 @@
// Loop over the channels contained in the SiElectrodeDataCollection
for (Integer channel : data.keySet()) {
- if (dropBadChannels && HPSSVTCalibrationConstants.isBadChannel((SiSensor) electrodes.getDetectorElement(), channel)) {
+
+ if(dropBadChannels && ((HpsSiSensor) electrodes.getDetectorElement()).isBadChannel(channel)){
+ //===> if (dropBadChannels && HPSSVTCalibrationConstants.isBadChannel((SiSensor) electrodes.getDetectorElement(), channel)) {
// System.out.format("%d bad\n", channel);
continue;
}
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/RawTrackerHitFitterDriver.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/RawTrackerHitFitterDriver.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -5,11 +5,11 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
import org.hps.conditions.deprecated.HPSSVTConstants;
import org.hps.readout.ecal.ReadoutTimestamp;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+//===> import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.geometry.Detector;
@@ -112,10 +112,13 @@
// Make a fitted hit from this cluster
for (RawTrackerHit hit : rawHits) {
int strip = hit.getIdentifierFieldValue("strip");
- ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) hit.getDetectorElement(), strip);
- for (ShapeFitParameters fit : _shaper.fitShape(hit, constants)) {
+ HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
+ //===> ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) hit.getDetectorElement(), strip);
+ //for (ShapeFitParameters fit : _shaper.fitShape(hit, constants)) {
+ for (ShapeFitParameters fit : _shaper.fitShape(hit)) {
if (correctT0Shift) {
- fit.setT0(fit.getT0() - constants.getT0Shift());
+ //===> fit.setT0(fit.getT0() - constants.getT0Shift());
+ fit.setT0(fit.getT0() - sensor.getT0Shift());
}
if (subtractTOF) {
double tof = hit.getDetectorElement().getGeometry().getPosition().magnitude() / (Const.SPEED_OF_LIGHT * Const.nanosecond);
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/SVTBadChannelFilterDriver.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/SVTBadChannelFilterDriver.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -3,39 +3,49 @@
import java.util.Iterator;
import java.util.List;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.EventHeader.LCMetaData;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.util.Driver;
/**
+ * Driver used to filter out RawTrackerHits that have been identified to come
+ * from noisy/dead channels.
*
* @author Sho Uemura <[log in to unmask]>
+ * @version $Id$
+ *
*/
-// TODO: Add class documentation.
public class SVTBadChannelFilterDriver extends Driver {
+ // RawTrackerHit collection name
private String rawTrackerHitCollection = "SVTRawTrackerHits";
@Override
public void process(EventHeader event) {
+
if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollection)) {
- List<RawTrackerHit> hits = event.get(RawTrackerHit.class, rawTrackerHitCollection);
- LCMetaData meta = event.getMetaData(hits);
- Iterator<RawTrackerHit> i = hits.iterator();
- while (i.hasNext()) {
- RawTrackerHit hit = i.next();
+
+ // Get the list of raw hits from the event
+ List<RawTrackerHit> hits = event.get(RawTrackerHit.class, rawTrackerHitCollection);
+
+ // Get the hits meta data from the event
+ LCMetaData meta = event.getMetaData(hits);
+
+ // Iterate over all raw hits in the event. If the raw hit is
+ // identified to come from a noisy/bad channel, remove it from
+ // the list of raw hits.
+ Iterator<RawTrackerHit> hitsIterator = hits.iterator();
+ while (hitsIterator.hasNext()) {
+
+ RawTrackerHit hit = hitsIterator.next();
hit.setMetaData(meta);
int strip = hit.getIdentifierFieldValue("strip");
- SiSensor sensor = (SiSensor) hit.getDetectorElement();
+ HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
- // System.out.format("module %d, layer %d, strip %d\n",
- // hit.getIdentifierFieldValue("module"), hit.getIdentifierFieldValue("layer"),
- // hit.getIdentifierFieldValue("strip"));
- if (HPSSVTCalibrationConstants.isBadChannel(sensor, strip)) {
- i.remove();
+ if(sensor.isBadChannel(strip)){
+ hitsIterator.remove();
}
if (!sensor.getReadout().getHits(RawTrackerHit.class).isEmpty()) {
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -2,9 +2,11 @@
import java.util.ArrayList;
import java.util.Collection;
+
import org.apache.commons.math3.special.Gamma;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
import org.hps.conditions.deprecated.HPSSVTConstants;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.RawTrackerHit;
/**
@@ -22,23 +24,27 @@
}
@Override
- public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants) {
- return this.fitShape(rth.getADCValues(), constants);
+ public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth) {
+ short[] samples = rth.getADCValues();
+ HpsSiSensor sensor =(HpsSiSensor) rth.getDetectorElement();
+ int channel = rth.getIdentifierFieldValue("strip");
+ return this.fitShape(channel, samples, sensor);
+ //===> return this.fitShape(rth.getADCValues(), constants);
}
- public Collection<ShapeFitParameters> fitShape(short[] samples, ChannelConstants constants) {
+ public Collection<ShapeFitParameters> fitShape(int channel, short[] samples, HpsSiSensor sensor) {
double minChisq = Double.POSITIVE_INFINITY;
int bestStart = 0;
ShapeFitParameters fit = new ShapeFitParameters();
for (int i = 0; i < samples.length - 2; i++) {
- double chisq = fitSection(samples, constants, fit, i);
+ double chisq = fitSection(channel, samples, sensor, fit, i);
// System.out.println("i = " + i + ", " + fit);
if (chisq < minChisq) {
minChisq = chisq;
bestStart = i;
}
}
- fitSection(samples, constants, fit, bestStart);
+ fitSection(channel, samples, sensor, fit, bestStart);
// System.out.format("%f\t%f\t%f\t%f\t%f\t%f\n", samples[0] - constants.getPedestal(),
// samples[1] - constants.getPedestal(), samples[2] - constants.getPedestal(), samples[3] -
// constants.getPedestal(), samples[4] - constants.getPedestal(), samples[5] -
@@ -49,21 +55,27 @@
return fits;
}
- private double fitSection(short[] samples, ChannelConstants constants, ShapeFitParameters fit, int start) {
+ private double fitSection(int channel, short[] samples, HpsSiSensor sensor, ShapeFitParameters fit, int start) {
int length = samples.length - start;
double[] y = new double[length];
double[] t = new double[length];
+ double tp = sensor.getShapeFitParameters(channel)[HpsSiSensor.TP_INDEX];
+
for (int i = 0; i < length; i++) {
- y[i] = samples[start + i] - constants.getPedestal();
+ //===> y[i] = samples[start + i] - constants.getPedestal();
+ y[i] = samples[start + i] - sensor.getPedestal(channel, i);
t[i] = HPSSVTConstants.SAMPLING_INTERVAL * i;
}
double[] p = new double[length];
double[] a = new double[length];
for (int i = 0; i < length; i++) {
- p[i] = y[i] / constants.getNoise();
- a[i] = Math.exp(1 - t[i] / constants.getTp()) / (constants.getTp() * constants.getNoise());
+ //===> p[i] = y[i] / constants.getNoise();
+ p[i] = y[i] / sensor.getNoise(channel, i);
+ //===> a[i] = Math.exp(1 - t[i] / constants.getTp()) / (constants.getTp() * constants.getNoise());
+
+ a[i] = Math.exp(1 - t[i] /tp / (tp * sensor.getNoise(channel, i)));
}
double pa, aatt, pat, aat, aa;
@@ -81,13 +93,15 @@
}
double t0 = (pa * aatt - pat * aat) / (pa * aat - aa * pat);
- double A = pa / ((Math.exp(t0 / constants.getTp()) * (aat - t0 * aa)));
+ //===> double A = pa / ((Math.exp(t0 / constants.getTp()) * (aat - t0 * aa)));
+ double A = pa / ((Math.exp(t0 / tp) * (aat - t0 * aa)));
double time_var = 0;
double height_var = 0;
for (int i = 0; i < length; i++) {
double dt_dp = a[i] * (aatt - t[i] * aat - t0 * (aat - t[i] * aa)) / (pa * aat - aa * pat);
- double dh_dp = (a[i] * Math.exp(-1.0 * t0 / constants.getTp()) + A * dt_dp * aa) / (aat - t0 * aa) - A * dt_dp / constants.getTp();
+ //===> double dh_dp = (a[i] * Math.exp(-1.0 * t0 / constants.getTp()) + A * dt_dp * aa) / (aat - t0 * aa) - A * dt_dp / constants.getTp();
+ double dh_dp = (a[i] * Math.exp(-1.0 * t0 / tp) + A * dt_dp * aa) / (aat - t0 * aa) - A * dt_dp / tp;
time_var += dt_dp * dt_dp;
height_var += dh_dp * dh_dp;
}
@@ -100,8 +114,10 @@
double chisq = 0;
for (int i = 0; i < samples.length; i++) {
double ti = HPSSVTConstants.SAMPLING_INTERVAL * i;
- double fit_y = A * (Math.max(0, (ti - t0)) / constants.getTp()) * Math.exp(1 - (ti - t0) / constants.getTp()) + constants.getPedestal();
- chisq += Math.pow((fit_y - samples[i]) / constants.getNoise(), 2);
+ //===> double fit_y = A * (Math.max(0, (ti - t0)) / constants.getTp()) * Math.exp(1 - (ti - t0) / constants.getTp()) + constants.getPedestal();
+ double fit_y = A * (Math.max(0, (ti - t0)) / tp) * Math.exp(1 - (ti - t0) / tp) + sensor.getPedestal(channel, i);
+ //===> chisq += Math.pow((fit_y - samples[i]) / constants.getNoise(), 2);
+ chisq += Math.pow((fit_y - samples[i]) / sensor.getNoise(channel, i), 2);
}
if (A > 0 && chisq < Double.POSITIVE_INFINITY) {
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/ShaperFitAlgorithm.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/ShaperFitAlgorithm.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -1,7 +1,7 @@
package org.hps.recon.tracking;
import java.util.Collection;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+//import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
import org.lcsim.event.RawTrackerHit;
/**
@@ -11,7 +11,8 @@
// TODO: Add class documentation.
public interface ShaperFitAlgorithm {
- public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants);
+ //===> public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants);
+ public Collection<ShapeFitParameters> fitShape(RawTrackerHit rawHit);
public void setDebug(boolean debug);
}
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/ShaperLinearFitAlgorithm.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/ShaperLinearFitAlgorithm.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -7,6 +7,7 @@
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
+
import org.apache.commons.math3.linear.Array2DRowRealMatrix;
import org.apache.commons.math3.linear.ArrayRealVector;
import org.apache.commons.math3.linear.CholeskyDecomposition;
@@ -19,10 +20,13 @@
import org.freehep.math.minuit.FunctionMinimum;
import org.freehep.math.minuit.MnSimplex;
import org.freehep.math.minuit.MnUserParameters;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
-import org.hps.conditions.deprecated.HPSSVTConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.RawTrackerHit;
+import org.hps.conditions.deprecated.HPSSVTConstants;
+
/**
* Fast fitter; currently only fits single hits. Uses Tp from ChannelConstants;
* fits values and errors for T0 and amplitude.
@@ -34,13 +38,15 @@
private final int nPulses;
final double[] amplitudes;
final double[] amplitudeErrors;
- private ChannelConstants channelConstants;
+ //===> private ChannelConstants channelConstants;
+ HpsSiSensor sensor = null;
private final double[] sigma = new double[HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES];
private final double[] y = new double[HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES];
private int firstUsedSample;
private int nUsedSamples;
private int firstFittedPulse;
private int nFittedPulses;
+ private int channel;
private boolean debug = false;
private static final Logger minuitLoggger = Logger.getLogger("org.freehep.math.minuit");
@@ -61,17 +67,27 @@
}
@Override
- public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants) {
- return this.fitShape(rth.getADCValues(), constants);
+ //===> public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants) {
+ public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth) {
+ short[] samples = rth.getADCValues();
+ HpsSiSensor sensor =(HpsSiSensor) rth.getDetectorElement();
+ int channel = rth.getIdentifierFieldValue("strip");
+ return fitShape(channel, samples, sensor);
+ //===> return this.fitShape(rth.getADCValues(), constants);
}
- public Collection<ShapeFitParameters> fitShape(short[] samples, ChannelConstants constants) {
- channelConstants = constants;
+ public Collection<ShapeFitParameters> fitShape(int channelNumber, short[] samples, HpsSiSensor siSensor) {
+ //===> public Collection<ShapeFitParameters> fitShape(short[] samples, ChannelConstants constants) {
+ // channelConstants = constants;
+ this.sensor = siSensor;
+ this.channel = channelNumber;
double[] signal = new double[HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES];
for (int i = 0; i < samples.length; i++) {
- signal[i] = samples[i] - constants.getPedestal();
- sigma[i] = constants.getNoise();
+ //===> signal[i] = samples[i] - constants.getPedestal();
+ signal[i] = samples[i] - sensor.getPedestal(channel, i);
+ //===> sigma[i] = constants.getNoise();
+ sigma[i] = sensor.getNoise(channel, i);
}
// if (signal[0]>300.0) {
@@ -155,7 +171,8 @@
//subtract first pulse from fit input
for (int i = 0; i < samples.length; i++) {
- fitData[i] -= amplitudes[firstFittedPulse] * getAmplitude(HPSSVTConstants.SAMPLING_INTERVAL * i - frontFit.userState().value(0), channelConstants);
+ //===> fitData[i] -= amplitudes[firstFittedPulse] * getAmplitude(HPSSVTConstants.SAMPLING_INTERVAL * i - frontFit.userState().value(0), channelConstants);
+ fitData[i] -= amplitudes[firstFittedPulse] * getAmplitude(HPSSVTConstants.SAMPLING_INTERVAL * i - frontFit.userState().value(0), this.channel, this.sensor);
}
if (debug) {
@@ -298,7 +315,8 @@
for (int j = 0; j < nUsedSamples; j++) {
for (int i = 0; i < nFittedPulses; i++) {
- sc_mat.setEntry(i, j, getAmplitude(HPSSVTConstants.SAMPLING_INTERVAL * (firstUsedSample + j) - times[i], channelConstants) / sigma[firstUsedSample + j]);
+ //===> sc_mat.setEntry(i, j, getAmplitude(HPSSVTConstants.SAMPLING_INTERVAL * (firstUsedSample + j) - times[i], channelConstants) / sigma[firstUsedSample + j]);
+ sc_mat.setEntry(i, j, getAmplitude(HPSSVTConstants.SAMPLING_INTERVAL * (firstUsedSample + j) - times[i], this.channel, this.sensor) / sigma[firstUsedSample + j]);
}
y_vec.setEntry(j, y[firstUsedSample + j] / sigma[firstUsedSample + j]);
var_vec.setEntry(j, sigma[firstUsedSample + j] * sigma[firstUsedSample + j]);
@@ -334,11 +352,14 @@
return chisq;
}
- private static double getAmplitude(double time, ChannelConstants channelConstants) {
+ //===> private static double getAmplitude(double time, ChannelConstants channelConstants) {
+ private static double getAmplitude(double time, int channel, HpsSiSensor sensor) {
if (time < 0) {
return 0;
}
- return (time / channelConstants.getTp()) * Math.exp(1 - time / channelConstants.getTp());
+ double tp = sensor.getShapeFitParameters(channel)[HpsSiSensor.TP_INDEX];
+ //===> return (time / channelConstants.getTp()) * Math.exp(1 - time / channelConstants.getTp());
+ return (time / tp) * Math.exp(1 - time / tp);
}
@Override
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/ShaperPileupFitAlgorithm.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/ShaperPileupFitAlgorithm.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -1,13 +1,12 @@
package org.hps.recon.tracking;
import java.util.Collection;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
import org.lcsim.event.RawTrackerHit;
/**
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: $
*/
public class ShaperPileupFitAlgorithm implements ShaperFitAlgorithm {
@@ -26,13 +25,16 @@
refitThreshold = threshold;
}
- public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, HPSSVTCalibrationConstants.ChannelConstants constants) {
- Collection<ShapeFitParameters> fittedPulses = onePulseFitter.fitShape(rth, constants);
+ //===> public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, HPSSVTCalibrationConstants.ChannelConstants constants) {
+ public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth) {
+ //===> Collection<ShapeFitParameters> fittedPulses = onePulseFitter.fitShape(rth, constants);
+ Collection<ShapeFitParameters> fittedPulses = onePulseFitter.fitShape(rth);
double singlePulseChiProb = fittedPulses.iterator().next().getChiProb();
totalFits++;
if (singlePulseChiProb < refitThreshold) {
refitAttempts++;
- Collection<ShapeFitParameters> doublePulse = twoPulseFitter.fitShape(rth, constants);
+ //===> Collection<ShapeFitParameters> doublePulse = twoPulseFitter.fitShape(rth, constants);
+ Collection<ShapeFitParameters> doublePulse = twoPulseFitter.fitShape(rth);
double doublePulseChiProb = doublePulse.iterator().next().getChiProb();
if (doublePulseChiProb > singlePulseChiProb) {
refitsAccepted++;
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/TrackUtils.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/TrackUtils.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -1,6 +1,5 @@
package org.hps.recon.tracking;
-//--- hep ---//
import hep.physics.matrix.SymmetricMatrix;
import hep.physics.vec.BasicHep3Vector;
import hep.physics.vec.Hep3Matrix;
@@ -13,16 +12,14 @@
import java.util.List;
import java.util.Map;
-import org.hps.conditions.deprecated.BeamlineConstants;
-import org.hps.conditions.deprecated.SvtUtils;
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.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.MCParticle;
import org.lcsim.event.RawTrackerHit;
-//--- org.lcsim ---//
import org.lcsim.event.Track;
import org.lcsim.event.TrackerHit;
import org.lcsim.fit.helicaltrack.HelicalTrackFit;
@@ -35,6 +32,8 @@
import org.lcsim.recon.tracking.seedtracker.SeedCandidate;
import org.lcsim.recon.tracking.seedtracker.SeedTrack;
import org.lcsim.util.swim.Helix;
+import org.hps.conditions.deprecated.BeamlineConstants;
+//===> import org.hps.conditions.deprecated.SvtUtils;
/**
* Assorted helper functions for the track and helix objects in lcsim. Re-use as much of HelixUtils
@@ -338,7 +337,6 @@
Box sensorSolid = (Box) sensor.getGeometry().getLogicalVolume().getSolid();
Polygon3D sensorFace = sensorSolid.getFacesNormalTo(new BasicHep3Vector(0, 0, 1)).get(0);
if (debug) {
- System.out.println("sensorContainsTrack: Sensor: " + SvtUtils.getInstance().getDescription(sensor));
System.out.println("sensorContainsTrack: Track Position: " + trackPosition.toString());
}
@@ -543,7 +541,9 @@
List<TrackerHit> hitsOnTrack = track.getTrackerHits();
for (TrackerHit hit : hitsOnTrack) {
HelicalTrackHit hth = (HelicalTrackHit) hit;
- if (SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit) hth.getRawHits().get(0)).getDetectorElement())) {
+ //===> if (SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit) hth.getRawHits().get(0)).getDetectorElement())) {
+ HpsSiSensor sensor = ((HpsSiSensor) ((RawTrackerHit) hth.getRawHits().get(0)).getDetectorElement());
+ if(sensor.isTopLayer()){
n[0] = n[0] + 1;
} else {
n[1] = n[1] + 1;
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/TrackerHitUtils.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/TrackerHitUtils.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -11,7 +11,8 @@
import java.util.List;
import java.util.Map;
-import org.hps.conditions.deprecated.SvtUtils;
+
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.ITransform3D;
import org.lcsim.detector.identifier.ExpandedIdentifier;
@@ -20,6 +21,7 @@
import org.lcsim.detector.identifier.IIdentifierDictionary;
import org.lcsim.detector.identifier.IIdentifierHelper;
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.SiSensorElectrodes;
import org.lcsim.event.RawTrackerHit;
@@ -31,7 +33,6 @@
/**
*
* @author Per Hansson <[log in to unmask]>
- * @version $Id: TrackerHitUtils.java,v 1.4 2013/10/15 00:33:53 phansson Exp $
*/
// TODO: Add class documentation.
public class TrackerHitUtils {
@@ -269,7 +270,8 @@
IIdentifierDictionary dictionary = helper.getIdentifierDictionary();
// Fill in the layer number
- id.setValue(dictionary.getFieldIndex("layer"), SvtUtils.getInstance().getLayerNumber(sensor));
+ //===> id.setValue(dictionary.getFieldIndex("layer"), SvtUtils.getInstance().getLayerNumber(sensor));
+ id.setValue(dictionary.getFieldIndex("layer"), ((HpsSiSensor) sensor).getLayerNumber());
// Pack and return the identifier
return helper.pack(id);
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/DataProcessingModule.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/DataProcessingModule.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -4,7 +4,7 @@
import java.util.List;
import java.util.Map;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
@@ -13,9 +13,9 @@
/**
*
* @author Omar Moreno
- * @version $Id: DataProcessingModule.java,v 1.1 2013/03/15 21:05:28 meeg Exp $
*/
-public abstract class DataProcessingModule extends Driver{
+// TODO: Sandbox this class
+public abstract class DataProcessingModule extends Driver {
Map<SiSensor, SvtDataBlocks> sensorToDataBlocks = new HashMap<SiSensor, SvtDataBlocks>();
@@ -35,12 +35,12 @@
protected abstract List<RawTrackerHit> findRawHits();
- @Override
- public void detectorChanged(Detector detector){
+
+ /*public void detectorChanged(Detector detector){
for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
sensorToDataBlocks.put(sensor, new SvtDataBlocks());
}
- }
+ }*/
@Override
public void process(EventHeader event){
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/HPSDataProcessingModule.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/HPSDataProcessingModule.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -15,7 +15,7 @@
//--- org.lcsim ---//
import java.util.Set;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.readout.svt.SVTData;
import org.lcsim.detector.IReadout;
import org.lcsim.detector.tracker.silicon.SiSensor;
@@ -30,8 +30,8 @@
/**
*
* @author Omar Moreno <[log in to unmask]>
- * @version $Id: HPSDataProcessingModule.java,v 1.3 2013/03/15 21:05:28 meeg Exp $
*/
+// TODO: Sandbox this class
public class HPSDataProcessingModule extends Driver {
// A map relating a sensor to all sample blocks collected from that sensor
@@ -92,10 +92,10 @@
@Override
public void detectorChanged(Detector detector) {
- for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
+ /*for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
// Map a sensor to its corresponding samples
sensorToSamplesMap.put(sensor, new HashMap<Integer, List<Double>>());
- }
+ }*/
}
/**
@@ -219,10 +219,11 @@
for (Map.Entry<SiSensor, Map<Integer, List<Double>>> sensor : sensorToSamplesMap.entrySet()) {
// Get the FPGA number
- fpgaNumber = SvtUtils.getInstance().getFPGA(sensor.getKey());
+ /* ===> fpgaNumber = SvtUtils.getInstance().getFPGA(sensor.getKey());
if(fpgaNumber > SVT_TOTAL_FPGAS || fpgaNumber < 0)
throw new RuntimeException("FPGA Number out of range!");
if(debug) System.out.println(this.getClass().getSimpleName() + ": FPGA Number: " + fpgaNumber);
+ ===> */
// Clear the temporary list
svtFpgaData.clear();
@@ -265,10 +266,11 @@
rawHits.add(rawHit);
// Get the hybrid number
- hybridNumber = SvtUtils.getInstance().getHybrid(sensor.getKey());
- if(hybridNumber > TOTAL_HYBRIDS_PER_FPGA || hybridNumber < 0)
+ //===> hybridNumber = SvtUtils.getInstance().getHybrid(sensor.getKey());
+ /* ==> if(hybridNumber > TOTAL_HYBRIDS_PER_FPGA || hybridNumber < 0)
throw new RuntimeException("Hybrid number is out of range!");
//if(debug) System.out.println(this.getClass().getSimpleName() + ": Hybrid Number: " + hybridNumber);
+ ===> */
// Find the APV number. Note that strip numbering is from 639 to 0
apvNumber = (TOTAL_APV25_PER_HYBRID - 1) - (int) Math.floor(samples.getKey()/128);
@@ -284,14 +286,14 @@
//if(debug) System.out.println(this.getClass().getSimpleName() + ": Raw Channel Number: " + rawChannel);
// Create an svtData packet
- SVTData data = new SVTData(hybridNumber, apvNumber, rawChannel, fpgaNumber, adc);
+ /* ===> SVTData data = new SVTData(hybridNumber, apvNumber, rawChannel, fpgaNumber, adc);
svtData.add(data);
svtFpgaData.add(data);
-
+ ===> */
samples.getValue().clear();
}
- HPSSVTDataBuffer.addToBuffer(svtFpgaData, fpgaNumber);
+ //===> HPSSVTDataBuffer.addToBuffer(svtFpgaData, fpgaNumber);
}
if(debug) System.out.println(this.getClass().getName() + ": Total RawTrackerHits before cuts: " + rawHitsNoCuts.size());
if(debug) System.out.println(this.getClass().getName() + ": Total RawTrackerHits: " + rawHits.size());
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/HPSSiSensorReadout.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/HPSSiSensorReadout.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -20,7 +20,7 @@
import org.apache.commons.math.distribution.BinomialDistributionImpl;
import org.apache.commons.math.distribution.NormalDistribution;
import org.apache.commons.math.distribution.NormalDistributionImpl;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.readout.ecal.ClockSingleton;
//--- hps-java ---//
import org.hps.recon.tracking.apv25.HPSAPV25.APV25Channel.APV25AnalogPipeline;
@@ -43,8 +43,8 @@
* Class used to Readout HPS APV25's
*
* @author Omar Moreno <[log in to unmask]>
- * @version $Id: HPSSiSensorReadout.java,v 1.12 2013/03/15 21:05:28 meeg Exp $
*/
+// TODO: Sandbox this classes
public class HPSSiSensorReadout extends Driver {
//
@@ -142,7 +142,7 @@
super.detectorChanged(detector);
// Instantiate all maps
- for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
+ /*for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
sensorToPipelineMap.put(sensor, new HashMap<Integer, APV25AnalogPipeline>());
@@ -158,7 +158,7 @@
sensorToAnalogDataMap.put(sensor, new HashMap<Integer, double[]>());
sensorToDigitalDataMap.put(sensor, new HashMap<Integer, double[]>());
- }
+ }*/
}
/**
@@ -193,10 +193,10 @@
}
// Loop over all sensors
- for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
+ /*for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
// Readout the sensors
readoutSensor(sensor);
- }
+ }*/
// If a trigger is received readout the APV25 and digitize all hits
if (HPSAPV25.readoutBit) {
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/RearTransitionModule.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/RearTransitionModule.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -1,25 +1,22 @@
package org.hps.recon.tracking.apv25;
-//--- java ---//
-//--- Constants ---//
-import static org.hps.conditions.deprecated.HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR;
import java.util.ArrayList;
import java.util.List;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
import org.hps.conditions.deprecated.HPSSVTConstants;
+import static org.hps.conditions.deprecated.HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR;
import org.hps.util.RandomGaussian;
-//--- org.lcsim ---//
+
import org.lcsim.event.EventHeader;
import org.lcsim.util.Driver;
-//--- hps-java ---//
/**
*
* @author Omar Moreno <[log in to unmask]>
- * @version $Id: RearTransitionModule.java,v 1.2 2013/04/25 22:11:14 meeg Exp $
*/
+// TODO: Sandbox this class.
public class RearTransitionModule extends Driver {
String apv25AnalogDataCollectionName = "APV25AnalogData";
@@ -116,15 +113,20 @@
apv25Output[index] *= (HPSSVTConstants.MIP/HPSSVTConstants.MULTIPLEXER_GAIN);
// Digitize the signal
+
+ // FIXME: Update to use the new conditions system at some point.
+ /* ===>
apv25Output[index] *= HPSSVTCalibrationConstants.getGain(analogDatum.getSensor(), physicalChannel);
// Add pedestal and noise
double pedestal = HPSSVTCalibrationConstants.getPedestal(analogDatum.getSensor(), physicalChannel);
double noise = HPSSVTCalibrationConstants.getNoise(analogDatum.getSensor(), physicalChannel);
+
if(!noiseless)
apv25Output[index] += RandomGaussian.getGaussian(pedestal, noise);
else
apv25Output[index] += pedestal;
+ ===> */
}
// Add the digital data to the list
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/SvtHalfModule.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/SvtHalfModule.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -1,18 +1,16 @@
package org.hps.recon.tracking.apv25;
-//--- constants ---//
import static org.hps.conditions.deprecated.HPSSVTConstants.TOTAL_APV25_PER_HYBRID;
-
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
import org.hps.conditions.deprecated.HPSSVTConstants;
-//--- lcsim ---//
+
import org.lcsim.detector.tracker.silicon.SiSensor;
/**
*
* @author Omar Moreno
- * @version $Id: SvtHalfModule.java,v 1.7 2013/04/25 22:11:14 meeg Exp $
*/
+// TODO: Sandbox this class.
public class SvtHalfModule {
private SiSensor sensor;
@@ -30,13 +28,14 @@
int physicalChannel = 639 - (chip*128 + 127 - channel);
// Mark all bad channels which were found during QA
- if(HPSSVTCalibrationConstants.isBadChannel(sensor, physicalChannel)){
+ // FIXME: Update to use the new conditions system at some point.
+ /* ===> if(HPSSVTCalibrationConstants.isBadChannel(sensor, physicalChannel)){
apv25[chip].getChannel(channel).markAsBadChannel();
}
// Set the shaping time
double tp = HPSSVTCalibrationConstants.getTShaping(sensor, physicalChannel);
- apv25[chip].getChannel(channel).setShapingTime(tp);
+ apv25[chip].getChannel(channel).setShapingTime(tp); <=== */
}
}
}
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/SvtReadout.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/SvtReadout.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -1,7 +1,6 @@
package org.hps.recon.tracking.apv25;
-//--- java ---//
import static org.hps.conditions.deprecated.HPSSVTConstants.TOTAL_APV25_CHANNELS;
import static org.hps.conditions.deprecated.HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES;
import static org.hps.conditions.deprecated.HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR;
@@ -16,9 +15,8 @@
import java.util.Set;
import org.hps.conditions.deprecated.HPSSVTConstants;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.readout.ecal.ClockSingleton;
-//--- lcsim ---//
import org.lcsim.detector.tracker.silicon.ChargeCarrier;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
@@ -30,14 +28,12 @@
import org.lcsim.recon.tracking.digitization.sisim.SiSensorSim;
import org.lcsim.recon.tracking.digitization.sisim.config.SimTrackerHitReadoutDriver;
import org.lcsim.util.Driver;
-//--- Constants ---//
-//--- hps-java ---//
/**
*
* @author Omar Moreno <[log in to unmask]>
- * @version $Id: SvtReadout.java,v 1.12 2013/04/25 22:11:14 meeg Exp $
*/
+// TODO: Sandbox this class
public class SvtReadout extends Driver {
private Set<SvtHalfModule> halfModules = new HashSet<SvtHalfModule>();
@@ -122,9 +118,9 @@
super.detectorChanged(detector);
// Instantiate all SVT Half modules
- for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
+ /*for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
halfModules.add(new SvtHalfModule(sensor));
- }
+ }*/
// Set the trigger latency
for(SvtHalfModule halfModule : halfModules){
@@ -256,12 +252,12 @@
double charge = pedestalRun ? 0 : electrodeData.getCharge();
if(debug){
- if(charge > 0){
+ /*if(charge > 0){
System.out.println(this.getClass().getSimpleName()
+ ": Sensor: " + SvtUtils.getInstance().getDescription(halfModule.getSensor())
+ ": Injecting charge " + charge + " into channel " + physicalChannel);
sensorToChannel.get(halfModule.getSensor()).add(physicalChannel);
- }
+ }*/
}
// Inject the charge into the APV25 amplifier chain
@@ -295,9 +291,6 @@
if(sensorToChannel.get(halfModule.getSensor()).contains(physicalChannel)){
int channel = physicalChannel - TOTAL_STRIPS_PER_SENSOR
+ halfModule.getAPV25Number(physicalChannel)*TOTAL_APV25_CHANNELS + (TOTAL_APV25_CHANNELS - 1);
- System.out.println("\nPhysical Channel: " + physicalChannel
- + " Sensor: " + SvtUtils.getInstance().getDescription(halfModule.getSensor())
- + apv25[halfModule.getAPV25Number(physicalChannel)].getChannel(channel).getPipeline().toString() + "\n");
}
}
}
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/TestRunDataProcessingModule.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/recon/tracking/apv25/TestRunDataProcessingModule.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -4,7 +4,7 @@
import java.util.List;
import java.util.Map;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
import org.lcsim.detector.IReadout;
import org.lcsim.detector.tracker.silicon.ChargeCarrier;
import org.lcsim.detector.tracker.silicon.SiSensor;
@@ -16,8 +16,8 @@
/**
*
* @author Omar Moreno <[log in to unmask]>
- * @version $Id: TestRunDataProcessingModule.java,v 1.1 2013/03/15 21:05:28 meeg Exp $
*/
+// TODO: Sandbox this class.
public class TestRunDataProcessingModule extends DataProcessingModule {
int nSamplesAboveThreshold = 1; // Number of samples above noise threshold
@@ -71,7 +71,8 @@
for(int channel = 0; channel < 639; channel++){
- if(HPSSVTCalibrationConstants.isBadChannel(sensor.getKey(), channel)) continue;
+ // FIXME: Update to use the new conditions system at some point.
+ //===> if(HPSSVTCalibrationConstants.isBadChannel(sensor.getKey(), channel)) continue;
short[] samples = blocks.getSamples(channel);
@@ -104,8 +105,11 @@
/**
*
*/
+ // FIXME: Update to use the new conditions system at some point.
private boolean samplesAboveThreshold(SiSensor sensor, int channel, short[] samples){
- // Number of samples above threshold
+
+ /* ===>
+ // Number of samples above threshold
int nSamplesAboveThreshold = 0;
// Get the pedestal and noise for this channel
@@ -121,6 +125,7 @@
// If the prerequisite number of samples are above threshold return true
if(nSamplesAboveThreshold >= this.nSamplesAboveThreshold ) return true;
+ ===> */
return false;
}
java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/svt/alignment
--- java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/svt/alignment/BuildCompact.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/tracking/src/main/java/org/hps/svt/alignment/BuildCompact.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -32,7 +32,7 @@
import org.apache.commons.cli.PosixParser;
import org.apache.commons.lang.StringUtils;
import org.hps.conditions.deprecated.HPSSVTSensorSetup;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.recon.tracking.CoordinateTransformations;
import org.jdom.Document;
import org.jdom.Element;
@@ -44,6 +44,7 @@
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.ITransform3D;
import org.lcsim.detector.tracker.silicon.ChargeCarrier;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.geometry.Detector;
import org.lcsim.geometry.GeometryReader;
@@ -455,13 +456,15 @@
//System.out.printf("%d sensors\n",sensors.size());
for (SiSensor module: sensors) {
// Create DAQ Maps
- if (!SvtUtils.getInstance().isSetup()) {
+ /* ===> if (!SvtUtils.getInstance().isSetup()) {
SvtUtils.getInstance().setup(det);
- }
- boolean isTop = SvtUtils.getInstance().isTopLayer(module);
+ } ===> */
+ //===> boolean isTop = SvtUtils.getInstance().isTopLayer(module);
+ boolean isTop = ((HpsSiSensor) module).isTopLayer();
int h = par.getHalf();
if ((isTop && h == 1) || (!isTop && h == 2)) {
- int layer = SvtUtils.getInstance().getLayerNumber(module);
+ int layer = ((HpsSiSensor) module).getLayerNumber();
+ //===> int layer = SvtUtils.getInstance().getLayerNumber(module);
if (layer == par.getSensor()) {
//found match
return module;
java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/meeg
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/meeg/LCIOTrackAnalysis.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/meeg/LCIOTrackAnalysis.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -8,9 +8,11 @@
import java.util.Map;
import java.util.Set;
-import org.hps.conditions.deprecated.SvtUtils;
+
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.lcsim.detector.identifier.IIdentifier;
import org.lcsim.detector.identifier.Identifier;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.MCParticle;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.event.RelationalTable;
@@ -20,8 +22,9 @@
/**
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: LCIOTrackAnalysis.java,v 1.3 2013/10/24 18:11:43 meeg Exp $
*/
+// TODO: This is an exact duplicate of the class in the analysis.example package.
+// One of them should be sandboxed
public class LCIOTrackAnalysis {
protected Track track;
@@ -73,15 +76,19 @@
int module = -1;
List<RawTrackerHit> rawHits = cl.getRawHits();
// System.out.println("RawHits: " + rawHits.size());
+ HpsSiSensor sensor = null;
for (RawTrackerHit rawHit : rawHits) {
// System.out.println(rawHit.getCellID());
IIdentifier id = new Identifier(rawHit.getCellID());
- int newLayer = SvtUtils.getInstance().getHelper().getValue(id, "layer");
+ //===> int newLayer = SvtUtils.getInstance().getHelper().getValue(id, "layer");
+ sensor = ((HpsSiSensor) rawHit.getDetectorElement());
+ int newLayer = sensor.getLayerNumber();
if (layer != -1 && layer != newLayer) {
System.out.format("TrackerHit has hits from multiple layers: %d and %d\n", layer, newLayer);
}
layer = newLayer;
- int newModule = SvtUtils.getInstance().getHelper().getValue(id, "module");
+ //===> int newModule = SvtUtils.getInstance().getHelper().getValue(id, "module");
+ int newModule = sensor.getModuleNumber();
if (module != -1 && module != newModule) {
System.out.format("TrackerHit has hits from multiple modules: %d and %d\n", module, newModule);
}
@@ -98,7 +105,8 @@
_hitLocationPerLayer.put(layer, new BasicHep3Vector(cl.getPosition()));
_nhitsNew++;
- boolean isAxial = SvtUtils.getInstance().isAxial(SvtUtils.getInstance().getSensor(module, layer - 1));
+ //===> boolean isAxial = SvtUtils.getInstance().isAxial(SvtUtils.getInstance().getSensor(module, layer - 1));
+ boolean isAxial = sensor.isAxial();
if (isAxial) {
_nAxialhits++;
} else {
java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/mgraham
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/mgraham/HelicalTrackHitResidualsDriver.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/mgraham/HelicalTrackHitResidualsDriver.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -15,11 +15,12 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.hps.conditions.deprecated.SvtUtils;
+
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.recon.tracking.EventQuality;
import org.hps.recon.tracking.TrackUtils;
import org.hps.users.phansson.TrigRateDriver;
-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;
@@ -139,7 +140,9 @@
//htc.setTrackDirection(trk);
Map<String,Double> res_track = TrackUtils.calculateTrackHitResidual(hth, trk, this._includeMS);
boolean isTop = false;
- if(SvtUtils.getInstance().isTopLayer((SiSensor)((RawTrackerHit)hth.getRawHits().get(0)).getDetectorElement())) {
+ HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) hth.getRawHits().get(0)).getDetectorElement();
+ //===> if(SvtUtils.getInstance().isTopLayer((SiSensor)((RawTrackerHit)hth.getRawHits().get(0)).getDetectorElement())) {
+ if(sensor.isTopLayer()) {
isTop = true;
}
int layer = hth.Layer();
java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/mgraham
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/mgraham/SVTRawTrackerHitThresholdDriver.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/mgraham/SVTRawTrackerHitThresholdDriver.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -3,8 +3,8 @@
import java.util.ArrayList;
import java.util.List;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-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;
@@ -14,6 +14,8 @@
*
* @author Matt Graham
*/
+// TODO: Check that this Driver works as expected after it was updated to use
+// the database conditions system.
public class SVTRawTrackerHitThresholdDriver extends Driver {
private String rawTrackerHitCollectionName = "RawTrackerHitMaker_RawTrackerHits";
@@ -21,7 +23,6 @@
private String calibFileName = "foobar";
private String trackerName = "Tracker";
private Detector detector;
- private List<SiSensor> sensors;
private double noiseThreshold = 3;
private int nhitsAboveNoise = 2;
@@ -59,14 +60,12 @@
// Increment strip hit count.
for (RawTrackerHit hit : rawTrackerHits) {
- SiSensor sensor = (SiSensor) hit.getDetectorElement();
+ HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
int strip = hit.getIdentifierFieldValue("strip");
short[] adcVal = hit.getADCValues();
- double ped = HPSSVTCalibrationConstants.getPedestal(sensor, strip);
- double noise = HPSSVTCalibrationConstants.getNoise(sensor, strip);
int nAbove = 0;
for (int i = 0; i < 6; i++) {
- double pedSubNorm = (adcVal[i] - ped) / noise;
+ double pedSubNorm = (adcVal[i] - sensor.getPedestal(strip, i)) / sensor.getNoise(strip, i);
if (pedSubNorm > noiseThreshold)
nAbove++;
}
java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/PlotUtils.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/PlotUtils.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -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_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/SimpleSvtTrigger.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/SimpleSvtTrigger.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -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_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/SvtHitCorrelations.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/SvtHitCorrelations.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -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_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -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_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/SvtPerformance.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/SvtPerformance.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -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,8 +377,7 @@
}
}
- constants = HPSSVTCalibrationConstants.getChannelConstants(sensor, channel);
- for (ShapeFitParameters fit : shaperFitter.fitShape(rawHit, constants)) {
+ for (ShapeFitParameters fit : shaperFitter.fitShape(rawHit)) {
if (fit.getAmp() > maxClusterAmplitude) {
maxClusterChannel = channel;
maxClusterAmplitude = fit.getAmp();
java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/SvtQA.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/SvtQA.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -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,21 +26,29 @@
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;
private ShaperAnalyticFitAlgorithm shaperFitter = new ShaperAnalyticFitAlgorithm();
private List<IHistogram1D> histos1D = new ArrayList<IHistogram1D>();
private List<IHistogram2D> histos2D = new ArrayList<IHistogram2D>();
- private List<IPlotter> plotters = new ArrayList<IPlotter>();
+ 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;
@@ -62,7 +56,7 @@
int channelNumber = 0;
int plotterIndex = 0;
- int apvNumber = 0;
+ int apvNumber = 0;
double totalNumberEvents = 0;
double totalNumberOfRawHitEvents = 0;
double[] totalTopSamples = new double[6];
@@ -70,7 +64,7 @@
double[] topSamples = new double[6];
double[] bottomSamples = new double[6];
double totalNumberOfHits = 0;
-
+
double maxOccupancy = 1.0;
double maxOccupancyVariation = 1000; // %
@@ -79,10 +73,10 @@
// Plot flags
boolean enableADCvsChannel = false;
- boolean enableOccupancy = false;
+ boolean enableOccupancy = false;
boolean enableStereoHitOccupancy = false;
boolean enableChannelPlots = false;
- boolean enableAPVPlots = false;
+ boolean enableAPVPlots = false;
boolean enableChiSquaredvsChannel = false;
boolean enableSamples = false;
boolean enableT0Plots = false;
@@ -97,7 +91,7 @@
/**
* Default Ctor
*/
- public SvtQA() {
+ public SvtQA(){
}
//--- Setters ---//
@@ -105,134 +99,132 @@
/**
* Enable/disable occupancy plots
*/
- public void setEnableOccupancyPlots(boolean enableOccupancy) {
+ public void setEnableOccupancyPlots(boolean enableOccupancy){
this.enableOccupancy = enableOccupancy;
}
/**
* Enable/disable stereo hit occupancy plots
*/
- public void setEnableStereoHitOccupancyPlots(boolean enableStereoHitOccupancy) {
+ public void setEnableStereoHitOccupancyPlots(boolean enableStereoHitOccupancy){
this.enableStereoHitOccupancy = enableStereoHitOccupancy;
}
/**
- * Enable/disable ADC counts vs Channel plots
+ * Enable/disable ADC counts vs Channel plots
*/
- public void setEnableADCvsChannelPlots(boolean enableADCvsChannel) {
+ public void setEnableADCvsChannelPlots(boolean enableADCvsChannel){
this.enableADCvsChannel = enableADCvsChannel;
}
/**
* Enable/disable Channel Plots
*/
- public void setEnableChannelPlots(boolean enableChannelPlots) {
+ public void setEnableChannelPlots(boolean enableChannelPlots){
this.enableChannelPlots = enableChannelPlots;
}
/**
- * Enable/disable plots associated with individual APVs
+ * Enable/disable plots associated with individual APVs
*/
- public void setEnableAPVPlots(boolean enableAPVPlots) {
+ public void setEnableAPVPlots(boolean enableAPVPlots){
this.enableAPVPlots = enableAPVPlots;
}
/**
- * Enable/disable Chi Squared of fit to samples vs Channel plots
+ * Enable/disable Chi Squared of fit to samples vs Channel plots
*/
- public void setEnableChiSquaredvsChannelPlots(boolean enableChiSquaredvsChannel) {
+ public void setEnableChiSquaredvsChannelPlots(boolean enableChiSquaredvsChannel){
this.enableChiSquaredvsChannel = enableChiSquaredvsChannel;
}
/**
* Enable/disable plots of the APV samples
*/
- public void setEnableSamplesPlots(boolean enableSamples) {
+ public void setEnableSamplesPlots(boolean enableSamples){
this.enableSamples = enableSamples;
}
/**
- * Enable/disable t0 plots
+ * Enable/disable t0 plots
*/
- public void setEnableT0Plots(boolean enableT0Plots) {
+ public void setEnableT0Plots(boolean enableT0Plots){
this.enableT0Plots = enableT0Plots;
}
/**
- * Set the channel number of interest
+ * Set the channel number of interest
*/
- public void setChannelNumber(int channelNumber) {
+ public void setChannelNumber(int channelNumber){
this.channelNumber = channelNumber;
}
/**
- * Set the sensor of interest
+ * Set the sensor of interest
*/
- public void setSensorName(String sensorName) {
+ public void setSensorName(String sensorName){
this.sensorName = sensorName;
}
/**
* Set the APV number of interest
*/
- public void setApvNumber(int apvNumber) {
+ public void setApvNumber(int apvNumber){
this.apvNumber = apvNumber;
}
/**
- * Set the maximum occupancy a channel may have
+ * Set the maximum occupancy a channel may have
*/
- public void setMaxOccupancy(double maxOccupancy) {
+ public void setMaxOccupancy(double maxOccupancy){
this.maxOccupancy = maxOccupancy;
}
/**
* Set the maximum channel to channel occupancy variation
*/
- public void setMaxOccupancyVariation(double maxOccupancyVariation) {
+ public void setMaxOccupancyVariation(double maxOccupancyVariation){
this.maxOccupancyVariation = maxOccupancyVariation;
}
/**
- *
+ *
*/
- public void setOutputFileName(String outputFile) {
+ public void setOutputFileName(String outputFile){
this.outputFile = outputFile;
}
/**
*
*/
- public void setVerbose(boolean verbose) {
+ public void setVerbose(boolean verbose){
this.verbose = verbose;
}
/**
*
*/
- public void setSimulation(boolean simulation) {
+ public void setSimulation(boolean simulation){
this.simulation = simulation;
}
-
+
/**
- *
+ *
*/
- public void setEnableTotalNumberOfHitsPlots(boolean enableTotalNumberOfHitsPlots) {
- this.enableTotalNumberOfHitsPlots = enableTotalNumberOfHitsPlots;
+ public void setEnableTotalNumberOfHitsPlots(boolean enableTotalNumberOfHitsPlots){
+ this.enableTotalNumberOfHitsPlots = enableTotalNumberOfHitsPlots;
}
/**
- *
+ *
*/
- private int getAPVNumber(int physicalChannel) {
- int apv = (int) Math.floor((physicalChannel - TOTAL_STRIPS_PER_SENSOR) / -128);
- if (apv > 4 || apv < 0) {
- throw new RuntimeException("Invalid APV Number: " + apv);
- }
+ private int getAPVNumber(int physicalChannel){
+ int apv = (int) Math.floor((physicalChannel - TOTAL_STRIPS_PER_SENSOR)/-128);
+ if(apv > 4 || apv < 0) throw new RuntimeException("Invalid APV Number: " + apv );
return apv;
- }
+ }
- protected void detectorChanged(Detector detector) {
+ protected void detectorChanged(Detector detector){
super.detectorChanged(detector);
// setup AIDA
@@ -240,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,11 +240,11 @@
//--- Occupancy ---//
//-----------------//
- if (enableOccupancy) {
+ 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,11 +254,11 @@
//--- Stereo Hit Occupancy ---//
//----------------------------//
- if (enableStereoHitOccupancy) {
+ 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);
@@ -276,17 +268,17 @@
//--- ADC Counts vs Channel ---//
//-----------------------------//
- if (enableADCvsChannel) {
- if (sensorName.equals("all")) {
+ 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);
}
plotterIndex++;
- } else if (sensorName != null) {
+ } else if(sensorName != null){
title = sensorName + " - ADC Counts vs Channel #";
plotters.add(PlotUtils.setupPlotter(title, 0, 0));
histo2D = aida.histogram2D(title, 640, 0, 639, 300, 0, 10000);
@@ -300,27 +292,26 @@
//--- Chi Squared vs Channel ---//
//------------------------------//
- if (enableChiSquaredvsChannel) {
- title = sensorName + " - Chi Squared Probability vs Channel #";
+ if(enableChiSquaredvsChannel){
+ title = sensorName + " - Chi Squared vs Channel #";
plotters.add(PlotUtils.setupPlotter(title, 0, 0));
- histo2D = aida.histogram2D(title, 640, 0, 639, 300, 0, 1.0);
+ histo2D = aida.histogram2D(title, 640, 0, 639, 300, 0, 100);
histos2D.add(histo2D);
PlotUtils.setup2DRegion(plotters.get(plotterIndex), title, 0, "Channel #", "Chi Squared", histo2D);
plotterIndex++;
}
+
//--- Single Channel Plots ---//
//----------------------------//
- if (enableChannelPlots) {
- if (sensorName == null) {
- throw new RuntimeException("Sensor of interest is not set!");
- }
+ if(enableChannelPlots){
+ if(sensorName == null) throw new RuntimeException("Sensor of interest is not set!");
title = sensorName + " - Channel: " + channelNumber;
plotters.add(PlotUtils.setupPlotter(title, 2, 2));
title = "ADC Counts";
histo1D = aida.histogram1D(title, 300, 4000, 7000);
histos1D.add(histo1D);
- PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 0, "ADC Counts", histo1D);
+ PlotUtils.setup1DRegion(plotters.get(plotterIndex),title , 0, "ADC Counts", histo1D);
title = "Shaper Signal Amplitude";
histo1D = aida.histogram1D(title, 300, 0, 3000);
histos1D.add(histo1D);
@@ -334,16 +325,14 @@
//--- APV Plots ---//
//-----------------//
- if (enableAPVPlots) {
- if (sensorName == null) {
- throw new RuntimeException("Sensor of interest is not set!");
- }
+ if(enableAPVPlots){
+ if(sensorName == null) throw new RuntimeException("Sensor of interest is not set!");
title = sensorName + " - APV " + apvNumber;
plotters.add(PlotUtils.setupPlotter(title, 2, 2));
title = "APV " + apvNumber + " - ADC Counts";
histo1D = aida.histogram1D(title, 400, 0, 10000);
histos1D.add(histo1D);
- PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 0, "ADC Counts", histo1D);
+ PlotUtils.setup1DRegion(plotters.get(plotterIndex),title , 0, "ADC Counts", histo1D);
title = "APV " + apvNumber + " - Shaper Signal Amplitude";
histo1D = aida.histogram1D(title, 300, 0, 6000);
histos1D.add(histo1D);
@@ -356,12 +345,12 @@
histo2D = aida.histogram2D(title, 300, 0, 6000, 100, -100, 100);
histos2D.add(histo2D);
PlotUtils.setup2DRegion(plotters.get(plotterIndex), title, 3, "Amplitude [ADC Counts]", "t0 [ns]", histo2D);
- plotterIndex++;
+ plotterIndex++;
}
//--- Samples Amplitude vs Sample Number ---//
//------------------------------------------//
- if (enableSamples) {
+ if(enableSamples){
title = "APV Sample Number vs Sample Amplitude";
plotters.add(PlotUtils.setupPlotter(title, 1, 2));
plotters.get(plotterIndex).style().zAxisStyle().setParameter("scale", "log");
@@ -378,18 +367,19 @@
//--- t0 Plots ---//
//----------------//
- if (enableT0Plots) {
- if (sensorName.equals("all")) {
+ if(enableT0Plots){
+ 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);
}
plotterIndex++;
- } else if (sensorName != null) {
+ }
+ else if(sensorName != null){
title = sensorName + " - Hit Time Resolution";
plotters.add(PlotUtils.setupPlotter(title, 0, 0));
plotters.get(plotterIndex).style().statisticsBoxStyle().setVisible(true);
@@ -397,36 +387,33 @@
histos1D.add(histo1D);
PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 0, "<Hit Time> - Hit Time [ns]", histo1D);
plotterIndex++;
- } else {
- throw new RuntimeException("Sensor of interest not set!");
}
+ else throw new RuntimeException("Sensor of interest not set!");
}
-
- if (enableTotalNumberOfHitsPlots) {
- title = "Total Number of RawTrackerHits";
- plotters.add(PlotUtils.setupPlotter(title, 0, 0));
- plotters.get(plotterIndex).style().statisticsBoxStyle().setVisible(true);
- histo1D = aida.histogram1D(title, 100, 0, 75);
- histos1D.add(histo1D);
- PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 0, "Number of RawTrackerHits", histo1D);
- plotterIndex++;
+
+ if(enableTotalNumberOfHitsPlots){
+ title = "Total Number of RawTrackerHits";
+ plotters.add(PlotUtils.setupPlotter(title, 0, 0));
+ plotters.get(plotterIndex).style().statisticsBoxStyle().setVisible(true);
+ histo1D = aida.histogram1D(title, 100, 0, 75);
+ histos1D.add(histo1D);
+ PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 0, "Number of RawTrackerHits", histo1D);
+ plotterIndex++;
}
- for (IPlotter plotter : plotters) {
- plotter.show();
- }
-
+ for(IPlotter plotter : plotters) plotter.show();
+
}
/**
- *
+ *
*/
- public int findPeakSamples(short[] samples) {
+ public int findPeakSamples(short[] samples){
int maxSample = 0;
int maxSampleIndex = 0;
- for (int index = 0; index < samples.length; index++) {
- if (maxSample < samples[index]) {
+ for(int index = 0; index < samples.length; index++){
+ if(maxSample < samples[index]){
maxSample = samples[index];
maxSampleIndex = index;
}
@@ -434,33 +421,33 @@
return maxSampleIndex;
}
- public void process(EventHeader event) {
+
+ public void process(EventHeader event){
+
totalNumberEvents++;
String title;
// If the event doesn't contain RawTrackerHits then skip it
- if (!event.hasCollection(RawTrackerHit.class, rawHitCollectionName)) {
- if (verbose) {
- System.out.println("Event doesn't contain RawTrackerHits! Skipping event ...");
- }
+ if(!event.hasCollection(RawTrackerHit.class, rawHitCollectionName )){
+ if(verbose) System.out.println("Event doesn't contain RawTrackerHits! Skipping event ...");
return;
}
// Get the RawTrackerHits from the event
List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawHitCollectionName);
-
+
// Get the total number of RawTrackerHits in the event
- if (enableTotalNumberOfHitsPlots && rawHits.size() != 0) {
+ if(enableTotalNumberOfHitsPlots && rawHits.size() != 0){
aida.histogram1D("Total Number of RawTrackerHits").fill(rawHits.size());
}
- SiSensor sensor = null;
- ChannelConstants constants = null;
- for (RawTrackerHit rawHit : rawHits) {
+ 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();
@@ -472,152 +459,148 @@
int apv = this.getAPVNumber(channel);
// Get the constants associated with this channel
- constants = HPSSVTCalibrationConstants.getChannelConstants(sensor, channel);
+ //constants = HPSSVTCalibrationConstants.getChannelConstants(sensor, channel);
// Fit the samples associated with the RawTrackerHit
- for (ShapeFitParameters fit : shaperFitter.fitShape(rawHit, constants)) {
+ //fit = shaperFitter.fitShape(rawHit);
- // Fill the occupancy plots
- if (enableOccupancy) {
- title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
- aida.histogram1D(title).fill(channel, 1);
- }
+ // Fill the occupancy plots
+ if(enableOccupancy){
+ 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 #";
- for (short sample : samples) {
- aida.histogram2D(title).fill(channel, sample);
- }
- } else if (enableADCvsChannel && SvtUtils.getInstance().getDescription(sensor).equals(sensorName)) {
- title = sensorName + " - ADC Counts vs Channel #";
- for (short sample : samples) {
- aida.histogram2D(title).fill(channel, sample);
- }
+ // Fill ADC vs Channel # plots
+ if(enableADCvsChannel && sensorName.equals("all")){
+ title = sensor.getName() + " - ADC Counts vs Channel #";
+ for(short sample : samples){
+ aida.histogram2D(title).fill(channel, sample);
}
+ } else if(enableADCvsChannel && sensor.getName().equals(sensorName)){
+ title = sensorName + " - ADC Counts vs Channel #";
+ for(short sample : samples){
+ aida.histogram2D(title).fill(channel, sample);
+ }
+ }
- //
- if (enableChannelPlots && SvtUtils.getInstance().getDescription(sensor).equals(sensorName) && channel == channelNumber) {
- title = "ADC Counts";
- for (short sample : samples) {
- aida.histogram1D(title).fill(sample);
- }
- title = "Shaper Signal Amplitude";
- aida.histogram1D(title).fill(fit.getAmp());
- System.out.println("Amplitude: " + fit.getAmp());
- title = "t0";
- aida.histogram1D(title).fill(fit.getT0());
- System.out.println("t0 " + fit.getT0());
+ //
+ if(enableChannelPlots && sensor.getName().equals(sensorName) && channel == channelNumber){
+ title = "ADC Counts";
+ for(short sample : samples){
+ aida.histogram1D(title).fill(sample);
}
+ title = "Shaper Signal Amplitude";
+ aida.histogram1D(title).fill(fit.getAmp());
+ System.out.println("Amplitude: " + fit.getAmp());
+ title="t0";
+ aida.histogram1D(title).fill(fit.getT0());
+ System.out.println("t0 " + fit.getT0());
+ }
- if (enableAPVPlots && SvtUtils.getInstance().getDescription(sensor).equals(sensorName) && apv == apvNumber) {
- title = "APV " + apvNumber + " - ADC Counts";
- for (short sample : samples) {
- aida.histogram1D(title).fill(sample);
- }
- title = "APV " + apvNumber + " - Shaper Signal Amplitude";
- aida.histogram1D(title).fill(fit.getAmp());
- title = "APV " + apvNumber + " - t0";
- aida.histogram1D(title).fill(fit.getT0());
- title = "APV " + apvNumber + " - Amplitude vs t0";
- aida.histogram2D(title).fill(fit.getAmp(), fit.getT0());
+ if(enableAPVPlots && sensor.getName().equals(sensorName) && apv == apvNumber ){
+ title = "APV " + apvNumber + " - ADC Counts";
+ for(short sample : samples){
+ aida.histogram1D(title).fill(sample);
}
+ title = "APV " + apvNumber + " - Shaper Signal Amplitude";
+ aida.histogram1D(title).fill(fit.getAmp());
+ title = "APV " + apvNumber + " - t0";
+ aida.histogram1D(title).fill(fit.getT0());
+ title = "APV " + apvNumber + " - Amplitude vs t0";
+ aida.histogram2D(title).fill(fit.getAmp(), fit.getT0());
}
}
/*
- if(enableOccupancy){
- for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
- title = SvtUtils.getInstance().getDescription(sensor) + " - 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);
- }
- }
- }*/
- // If the event doesn't contain FittedRawTrackerHits then skip it
- if (!event.hasCollection(FittedRawTrackerHit.class, fittedHitCollectionName)) {
- if (verbose) {
- System.out.println("Event doesn't contain FittedRawTrackerHits! Skipping event ...");
+ if(enableOccupancy){
+ 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(sensor.getName())[index]/nEvents);
+ }
}
+ }*/
+
+ // If the event doesn't contain FittedRawTrackerHits then skip it
+ if(!event.hasCollection(FittedRawTrackerHit.class, fittedHitCollectionName)){
+ if(verbose) System.out.println("Event doesn't contain FittedRawTrackerHits! Skipping event ...");
return;
}
// Get the RawTrackerHits from the event
List<FittedRawTrackerHit> fittedHits = event.get(FittedRawTrackerHit.class, fittedHitCollectionName);
-
+
//System.out.println(this.getClass().getSimpleName() + ": Number of FittedRawTrackerHits " + fittedHits.size());
- for (FittedRawTrackerHit fittedHit : fittedHits) {
+ for(FittedRawTrackerHit fittedHit : fittedHits){
+
+
// Get the channel number
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)) {
- title = sensorName + " - Chi Squared Probability vs Channel #";
- aida.histogram2D(title).fill(channel, fittedHit.getShapeFitParameters().getChiProb());
+ if(enableChiSquaredvsChannel && sensor.getName().equals(sensorName)){
+ title = sensorName + " - Chi Squared vs Channel #";
+ //aida.histogram2D(title).fill(channel, fittedHit.getShapeFitParameters().getChiSq());
}
}
// If the event does not contain stereo hits, skip the event
- if (!event.hasCollection(HelicalTrackHit.class, stereoHitCollectionName)) {
- if (verbose) {
- System.out.println("Event doesn't contain HelicalTrackHits! Skipping event ...");
- }
+ if(!event.hasCollection(HelicalTrackHit.class, stereoHitCollectionName)){
+ if(verbose) System.out.println("Event doesn't contain HelicalTrackHits! Skipping event ...");
return;
}
// Get the list of HelicalTrackHits
- List<HelicalTrackHit> stereoHits = event.get(HelicalTrackHit.class, stereoHitCollectionName);
+ List<HelicalTrackHit> stereoHits =event.get(HelicalTrackHit.class, stereoHitCollectionName);
- for (HelicalTrackHit stereoHit : stereoHits) {
+ for(HelicalTrackHit stereoHit : stereoHits){
double totalT0 = 0;
- for (Object hit : stereoHit.getRawHits()) {
+ for(Object hit : stereoHit.getRawHits()){
RawTrackerHit rawHit = (RawTrackerHit) hit;
- sensor = (SiSensor) rawHit.getDetectorElement();
+ sensor = (HpsSiSensor) rawHit.getDetectorElement();
// Get the channel number
int channel = rawHit.getIdentifierFieldValue("strip");
// Get the constants associated with this channel
- constants = HPSSVTCalibrationConstants.getChannelConstants(sensor, channel);
+ //constants = HPSSVTCalibrationConstants.getChannelConstants(sensor, channel);
// Fit the samples associated with the RawTrackerHit
- for (ShapeFitParameters fit : shaperFitter.fitShape(rawHit, constants)) {
+ //fit = shaperFitter.fitShape(rawHit);
- // Get the shaper signal samples
- short[] samples = rawHit.getADCValues();
+ // Get the shaper signal samples
+ short[] samples = rawHit.getADCValues();
- if (enableStereoHitOccupancy) {
- title = SvtUtils.getInstance().getDescription(sensor) + " - Stereo Hit Occupancy";
- sensorToStereoOccupancy.get(SvtUtils.getInstance().getDescription(sensor))[channel] += 1;
- }
+ if(enableStereoHitOccupancy){
+ title = sensor.getName() + " - Stereo Hit Occupancy";
+ sensorToStereoOccupancy.get(sensor.getName())[channel] += 1;
+ }
- // Fill Sample Plots
- if (enableSamples) {
- 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());
- totalTopSamples[sampleN - 1]++;
- topSamples[sampleN - 1] += samples[sampleN - 1] - constants.getPedestal();
- } else {
- aida.histogram2D("APV Sample Number vs Sample Amplitude - Bottom").fill(sampleN, samples[sampleN - 1] - constants.getPedestal());
- totalBottomSamples[sampleN - 1]++;
- bottomSamples[sampleN - 1] += samples[sampleN - 1] - constants.getPedestal();
- }
+ // Fill Sample Plots
+ if(enableSamples){
+ 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(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] - sensor.getPedestal(channel, sampleN-1);
}
+ else{
+ 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] - sensor.getPedestal(channel, sampleN-1);
+ }
}
}
}
@@ -625,67 +608,66 @@
}
/*
- if(enableStereoHitOccupancy){
- for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
- title = SvtUtils.getInstance().getDescription(sensor) + " - 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());
- }
- }
- }*/
- if (!event.hasCollection(Track.class, trackCollectionName)) {
- return;
- }
-
+ if(enableStereoHitOccupancy){
+ 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(sensor.getName())[index]/event.getEventNumber());
+ }
+ }
+ }*/
+ if(!event.hasCollection(Track.class, trackCollectionName)) return;
+
// Get the list of tracks in the event
List<SeedTrack> tracks = event.get(SeedTrack.class, trackCollectionName);
- if (enableT0Plots) {
+ if(enableT0Plots){
// Loop over all tracks in the event
- for (Track track : tracks) {
+ for(Track track : tracks){
+
double totalT0 = 0;
double totalHits = 0;
// Loop over all stereo hits comprising a track
- for (TrackerHit crossHit : track.getTrackerHits()) {
+ for(TrackerHit crossHit : track.getTrackerHits()){
HelicalTrackCross htc = (HelicalTrackCross) crossHit;
- for (HelicalTrackStrip hts : htc.getStrips()) {
+ for(HelicalTrackStrip hts : htc.getStrips()){
totalT0 += hts.time();
totalHits++;
}
}
- double meanT0 = totalT0 / totalHits;
+ double meanT0 = totalT0/totalHits;
- for (TrackerHit crossHit : track.getTrackerHits()) {
+ for(TrackerHit crossHit : track.getTrackerHits()){
HelicalTrackCross htc = (HelicalTrackCross) crossHit;
- for (HelicalTrackStrip hts : htc.getStrips()) {
+ for(HelicalTrackStrip hts : htc.getStrips()){
- //SiSensor sensor = null;
- if (TrackUtils.getZ0(track) > 0) {
- sensor = SvtUtils.getInstance().getSensor(0, hts.layer() - 1);
- } else if (TrackUtils.getZ0(track) < 0) {
- sensor = SvtUtils.getInstance().getSensor(1, hts.layer() - 1);
+ //HpsSiSensor sensor = null;
+ if(TrackUtils.getZ0(track) > 0){
+ //sensor = SvtUtils.getInstance().getSensor(0, hts.layer() - 1);
+ } else if(TrackUtils.getZ0(track) < 0){
+ //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());
+
+ if(sensorName.equals("all")){
+ aida.histogram2D(sensor.getName() + " - t0 Resolution vs Channel #").fill(channel, meanT0 - hts.time());
} else {
- if (SvtUtils.getInstance().getDescription(sensor).equals(sensorName)) {
- aida.histogram1D(sensorName + " - Hit Time Resolution").fill(meanT0 - hts.time());
- }
-
+ if(sensor.getName().equals(sensorName)){
+ aida.histogram1D(sensorName + " - Hit Time Resolution").fill(meanT0 - hts.time());
}
+
+ }
}
}
}
@@ -694,175 +676,164 @@
}
@Override
- public void endOfData() {
- String title;
+ public void endOfData(){
+ String title;
+
- String plotName;
- if (enableOccupancy) {
- for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
- title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
- // Scale the hits per channel by the number of events
- aida.histogram1D(title).scale(1 / totalNumberEvents);
+
+ String plotName;
+ if(enableOccupancy){
+ 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(sensor.isTopLayer()){
+ plotName = outputFile + "_top_";
+ } else {
+ plotName = outputFile + "_bottom_";
+ }
+
+ if(sensor.getLayerNumber() < 10){
+ plotName += "0" + sensor.getLayerNumber() + ".dat";
+ } else {
+ plotName += sensor.getLayerNumber() + ".dat";
+ }
+
+ // Open the output files stream
+ if(plotName != null){
+ try{
+ output = new BufferedWriter(new FileWriter(plotName));
+ for(int channel = 0; channel < 640; channel++){
+ output.write(channel + " " + aida.histogram1D(title).binHeight(channel) + "\n");
+ }
+ output.close();
+ } catch(Exception e) {
+ System.out.println(this.getClass().getSimpleName() + " :Error! " + e.getMessage());
+ }
+ }
+ }
+ }
+
+ if(enableT0Plots){
+ int bins = aida.histogram1D(sensorName + " - Hit Time Resolution").axis().bins();
+ for(int bin = 0; bin < bins; bin++){
+ System.out.println(bin + " " + aida.histogram1D(sensorName + " - Hit Time Resolution").binHeight(bin));
+ }
+ }
+
+
+ /*
+ 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");
+ }
+ output.close();
+ } catch(IOException e){
+ System.out.println(this.getClass().getSimpleName() + ": Error! " + e.getMessage());
+ }
+ }
+
+ System.out.println("%===================================================================%");
+ System.out.println(sensor.getName() + " Bad Channels");
+ System.out.println("%===================================================================%");
+ for(int index = 0; index < 640; index++){
- // Write the occupancies to a file
- if (SvtUtils.getInstance().isTopLayer(sensor)) {
- plotName = outputFile + "_top_";
- } else {
- plotName = outputFile + "_bottom_";
+ // Check is the channel can be considered bad
+ this.checkChannel(sensor, index);
+ }
}
+ System.out.println("%===================================================================% \n");
+ }*/
- if (SvtUtils.getInstance().getLayerNumber(sensor) < 10) {
- plotName += "0" + SvtUtils.getInstance().getLayerNumber(sensor) + ".dat";
- } else {
- plotName += SvtUtils.getInstance().getLayerNumber(sensor) + ".dat";
- }
-
- // Open the output files stream
- if (plotName != null) {
- try {
- output = new BufferedWriter(new FileWriter(plotName));
- for (int channel = 0; channel < 640; channel++) {
- output.write(channel + " " + aida.histogram1D(title).binHeight(channel) + "\n");
- }
- output.close();
- } catch (Exception e) {
- System.out.println(this.getClass().getSimpleName() + " :Error! " + e.getMessage());
+ if(enableStereoHitOccupancy){
+ for(HpsSiSensor sensor : sensors){
+ System.out.println("%===================================================================% \n");
+ 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
+ this.checkChannel(sensor, index);
}
+ System.out.println("%===================================================================% \n");
}
}
- }
- if (enableT0Plots) {
- int bins = aida.histogram1D(sensorName + " - Hit Time Resolution").axis().bins();
- for (int bin = 0; bin < bins; bin++) {
[truncated at 1000 lines; 182 more skipped]
java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/SvtTrackRecoEfficiency.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/omoreno/SvtTrackRecoEfficiency.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -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();
java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson/DataTrackerFakeHitDriver.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson/DataTrackerFakeHitDriver.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -16,7 +16,7 @@
import java.util.List;
import java.util.Set;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.recon.tracking.HPSTrack;
import org.hps.recon.tracking.TrackUtils;
import org.hps.recon.tracking.TrackerHitUtils;
@@ -32,6 +32,7 @@
import org.lcsim.detector.tracker.silicon.ChargeCarrier;
import org.lcsim.detector.tracker.silicon.DopedSilicon;
import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.SiSensorElectrodes;
import org.lcsim.detector.tracker.silicon.SiStrips;
import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
@@ -278,7 +279,8 @@
if (debug) {
System.out.println(this.getClass().getSimpleName() + ": make a tracker hit and add to this sensor");
}
- if (SvtUtils.getInstance().isTopLayer(sensor)) {
+ //===> if (SvtUtils.getInstance().isTopLayer(sensor)) {
+ if (((HpsSiSensor) sensor).isTopLayer()) {
n_hits_top++;
isTopTrack = true;
} else {
java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson/ModuleMPAlignmentInput.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson/ModuleMPAlignmentInput.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -18,9 +18,9 @@
import java.util.List;
import java.util.Map;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.recon.tracking.TrackUtils;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.event.Track;
import org.lcsim.event.TrackerHit;
@@ -255,7 +255,9 @@
int layer = hit.Layer();
- int side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? 10000 : 20000;
+ HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) strip.rawhits().get(0)).getDetectorElement();
+ //===> int side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? 10000 : 20000;
+ int side = sensor.isTopLayer() ? 10000 : 20000;
if(_DEBUG) {
@@ -380,12 +382,15 @@
private void PrintHitResiduals(HelicalTrackHit hit) {
- HelicalTrackStrip strip = ((HelicalTrackCross) hit).getStrips().get(0);
- String side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "top" : "bottom";
+ HelicalTrackStrip strip = ((HelicalTrackCross) hit).getStrips().get(0);
+ HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) strip.rawhits().get(0)).getDetectorElement();
+ //===> String side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "top" : "bottom";
+ String side = sensor.isTopLayer() ? "top" : "bottom";
if (_DEBUG) {
System.out.printf("%s: --- Alignment Results for this helical track hit ---\n",this.getClass().getSimpleName());
- String sensor_type = SvtUtils.getInstance().isAxial((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "axial" : "stereo";
+ //===> String sensor_type = SvtUtils.getInstance().isAxial((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "axial" : "stereo";
+ String sensor_type = sensor.isAxial() ? "axial" : "stereo";
System.out.printf("%s: Layer %d in %s at position %s\n",this.getClass().getSimpleName(), hit.Layer(),side, hit.getCorrectedPosition().toString());
System.out.printf("%s: Residuals (x,y,z) : %5.5e %5.5e %5.5e\n",this.getClass().getSimpleName(), _resid[0], _resid[1], _resid[2]);
System.out.printf("%s: Errors (x,y,z) : %5.5e %5.5e %5.5e\n",this.getClass().getSimpleName(), _error[0], _error[1], _error[2]);
java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson/ROOTFlatTupleDriver.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson/ROOTFlatTupleDriver.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -22,7 +22,7 @@
import org.hps.analysis.ecal.HPSMCParticlePlotsDriver;
import org.hps.conditions.deprecated.BeamlineConstants;
-import org.hps.conditions.deprecated.SvtUtils;
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.readout.ecal.TriggerData;
import org.hps.recon.ecal.HPSEcalCluster;
import org.hps.recon.tracking.EventQuality;
@@ -36,7 +36,7 @@
import org.lcsim.detector.identifier.IExpandedIdentifier;
import org.lcsim.detector.identifier.IIdentifierHelper;
import org.lcsim.detector.tracker.silicon.DopedSilicon;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.GenericObject;
import org.lcsim.event.MCParticle;
@@ -931,10 +931,12 @@
if(this._debug) System.out.printf("%s: found %d strips in clollection, asking strips in the %s\n", this.getClass().getSimpleName(),strips.size(),(top?"top":"bottom"));
for(SiTrackerHitStrip1D strip : strips) {
IDetectorElement de = strip.getSensor();
- SiSensor sensor = (SiSensor) de;
+ HpsSiSensor sensor = (HpsSiSensor) de;
int lyr = _ID.getLayer(de);
- if(!top && SvtUtils.getInstance().isTopLayer(sensor)) continue;
- else if (top && !SvtUtils.getInstance().isTopLayer(sensor)) continue;
+ //===> if(!top && SvtUtils.getInstance().isTopLayer(sensor)) continue;
+ if(!top && sensor.isTopLayer()) continue;
+ //else if (top && !SvtUtils.getInstance().isTopLayer(sensor)) continue;
+ else if (top && !sensor.isTopLayer()) continue;
if(this._debug) System.out.printf("%s: strip \"%s\" at %s is selected\n", this.getClass().getSimpleName(),_ID.getName(de),strip.getPositionAsVector().toString());
if(!map.containsKey(lyr)) {
map.put(lyr, new ArrayList<SiTrackerHitStrip1D>());
java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson/StripMPAlignmentInput.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson/StripMPAlignmentInput.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -19,9 +19,10 @@
import java.util.List;
import java.util.Map;
-import org.hps.conditions.deprecated.SvtUtils;
+
+//===> import org.hps.conditions.deprecated.SvtUtils;
import org.hps.recon.tracking.TrackUtils;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.event.Track;
import org.lcsim.event.TrackerHit;
@@ -286,7 +287,9 @@
int layer = strip.layer();
- int side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? 10000 : 20000;
+ HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) strip.rawhits().get(0)).getDetectorElement();
+ //===> int side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? 10000 : 20000;
+ int side = sensor.isTopLayer() ? 10000 : 20000;
if(_DEBUG) {
@@ -388,7 +391,9 @@
_error[2] = res_local.get("wreserr");
double vdiffy = res_local.get("vdiffTrky");
- String side = SvtUtils.getInstance().isTopLayer((SiSensor)((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "top" : "bottom";
+ HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) strip.rawhits().get(0)).getDetectorElement();
+ String side = sensor.isTopLayer() ? "top" : "bottom";
+ //===> String side = SvtUtils.getInstance().isTopLayer((SiSensor)((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "top" : "bottom";
//Fill residuals vs distrance from center of plane in the v directions
aida.profile1D("res_u_vs_ydiff_layer_" + strip.layer() + "_" + side).fill(vdiffy,_resid[0]);
@@ -493,11 +498,14 @@
private void PrintStripResiduals(HelicalTrackStrip strip) {
- String side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "top" : "bottom";
+ HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) strip.rawhits().get(0)).getDetectorElement();
+ String side = sensor.isTopLayer() ? "top" : "bottom";
+ //===> String side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "top" : "bottom";
if (_DEBUG) {
System.out.printf("%s: --- Alignment Results for this Strip ---\n",this.getClass().getSimpleName());
- String sensor_type = SvtUtils.getInstance().isAxial((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "axial" : "stereo";
+ //===> String sensor_type = SvtUtils.getInstance().isAxial((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "axial" : "stereo";
+ String sensor_type = sensor.isAxial() ? "axial" : "stereo";
System.out.printf("%s: Strip layer %4d is %s in %s at origin %s\n",this.getClass().getSimpleName(), strip.layer(),sensor_type, side, strip.origin().toString());
System.out.printf("%s: u=%s v=%s w=%s\n",this.getClass().getSimpleName(), strip.u().toString(),strip.v().toString(),strip.w().toString());
System.out.printf("%s: Residuals (u,v,w) : %5.5e %5.5e %5.5e\n",this.getClass().getSimpleName(), _resid[0], _resid[1], _resid[2]);
@@ -850,7 +858,9 @@
Hep3Vector corigin = strip.origin();
double vmeas = corigin.y(); //THis is wrong
int layer = strip.layer();
- int side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? 10000 : 20000;
+ HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) strip.rawhits().get(0)).getDetectorElement();
+ int side = sensor.isTopLayer() ? 10000 : 20000;
+ //===> int side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? 10000 : 20000;
if(_DEBUG) {
System.out.printf("%s: --- Calculate global derivatives ---\n",this.getClass().getSimpleName());
java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson
--- java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson/TrackingGeometryChecker.java 2014-10-19 06:58:06 UTC (rev 1245)
+++ java/branches/hps_java_trunk_HPSJAVA-255/users/src/main/java/org/hps/users/phansson/TrackingGeometryChecker.java 2014-10-20 04:54:20 UTC (rev 1246)
@@ -3,11 +3,11 @@
import java.util.ArrayList;
import java.util.List;
-import org.hps.conditions.deprecated.SvtUtils;
+
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.identifier.IIdentifier;
import org.lcsim.detector.identifier.IIdentifierHelper;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
import org.lcsim.event.EventHeader;
import org.lcsim.event.SimTrackerHit;
@@ -35,15 +35,15 @@
// Get all of the sensors composing the SVT and add them to the set of all sensors
IDetectorElement detectorElement = arg0.getDetectorElement().findDetectorElement("Tracker");
IIdentifierHelper helper = detectorElement.getIdentifierHelper();
- List<SiSensor> sensors = new ArrayList<SiSensor>();
- sensors.addAll(detectorElement.findDescendants(SiSensor.class));
+ List<HpsSiSensor> sensors = new ArrayList<HpsSiSensor>();
+ sensors.addAll(detectorElement.findDescendants(HpsSiSensor.class));
System.out.printf("%s: Total number of sensors: %d\n",getClass().getSimpleName(), sensors.size());
IIdentifier sensorIdent;
SiTrackerIdentifierHelper sensorHelper;
String description;
// Loop through all of the sensors and fill the maps
- for (SiSensor sensor : sensors) {
+ for (HpsSiSensor sensor : sensors) {
// Get the sensor identifier
sensorIdent = sensor.getIdentifier();
@@ -60,7 +60,7 @@
System.out.printf("%s: Sensor name %s\n",getClass().getSimpleName(), sensor.getName());
System.out.printf("%s: Sensor position %s\n",getClass().getSimpleName(), sensor.getGeometry().getPosition().toString());
- System.out.printf("%s: Sensor is %s %s \n",getClass().getSimpleName(), SvtUtils.getInstance().isTopLayer(sensor)?"top":"bottom", SvtUtils.getInstance().isAxial(sensor)?"axial":"stereo");
+ System.out.printf("%s: Sensor is %s %s \n",getClass().getSimpleName(), sensor.isTopLayer()?"top":"bottom", sensor.isAxial()?"axial":"stereo");
System.out.printf("%s: layerNumber %d\n",getClass().getSimpleName(), layerNumber);
System.out.printf("%s: moduleNumber %d\n",getClass().getSimpleName(), moduleNumber);
System.out.printf("%s: sideNumber %d\n",getClass().getSimpleName(), sideNumber);
SVNspam 0.1