Author: [log in to unmask]
Date: Tue Dec 8 20:48:40 2015
New Revision: 4031
Log:
More dev branch work on run db and datacat plus other minor changes and improvements; merge in more trunk changes.
Added:
java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/filtering/SvtHitMultiplicityFilter.java
- copied unchanged from r4021, java/trunk/recon/src/main/java/org/hps/recon/filtering/SvtHitMultiplicityFilter.java
java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/production/FilterHitsPerSensor.lcsim
- copied, changed from r4021, java/trunk/steering-files/src/main/resources/org/hps/steering/production/FilterHitsPerSensor.lcsim
java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015STRecon.lcsim
- copied, changed from r4021, java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015STRecon.lcsim
java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/SvtPlotUtils.java
- copied unchanged from r4021, java/trunk/tracking/src/main/java/org/hps/recon/tracking/SvtPlotUtils.java
java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/straight/
- copied from r4021, java/trunk/tracking/src/main/java/org/hps/recon/tracking/straight/
Removed:
java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtPlotUtils.java
java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/users/phansson/HitRecon.lcsim
java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/STUtils.java
java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/StraightThroughAnalysisDriver.java
Modified:
java/branches/jeremy-dev/ (props changed)
java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/PlotAndFitUtilities.java
java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java
java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java
java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java
java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/EvioMetadataReader.java
java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/FileSet.java
java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalOnlineRawConverter.java
java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverter.java
java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/ClusterPositionCorrection.java
java/branches/jeremy-dev/job/src/main/java/org/hps/job/JobManager.java
java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/util/TableExporter.java
java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/PedestalPlots.java
java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java
java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java
java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java
java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java
java/branches/jeremy-dev/parent/pom.xml
java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java
java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/utils/TrackClusterMatcher.java
java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/DAQConfig.java
java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/FADCConfig.java
java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/GTPConfig.java
java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/IDAQConfig.java
java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/SSPConfig.java
java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/epics/EpicsData.java
java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/epics/EpicsRunProcessor.java
java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/evio/EvioFileSource.java
java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/triggerbank/TriggerModule.java
java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/EpicsType.java
java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/EpicsVariable.java
java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunDatabaseBuilder.java
java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunManager.java
java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunSummaryDaoImpl.java
java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/TrackDataDriver.java
java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/TrackUtils.java
java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLKinkData.java
java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutput.java
java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutputDriver.java
java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLRefitterDriver.java
java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/MakeGblTracks.java
java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/straight/StraightThroughAnalysisDriver.java
java/branches/jeremy-dev/users/src/main/java/org/hps/users/holly/EcalRawConverter.java
Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/PlotAndFitUtilities.java
=============================================================================
--- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/PlotAndFitUtilities.java (original)
+++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/PlotAndFitUtilities.java Tue Dec 8 20:48:40 2015
@@ -19,6 +19,7 @@
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.util.aida.AIDA;
@@ -29,7 +30,7 @@
public class PlotAndFitUtilities {
private static Logger LOGGER = Logger.getLogger(PlotAndFitUtilities.class.getPackage().getName());
-
+
static private AIDA aida = AIDA.defaultInstance();
/*
@@ -37,13 +38,15 @@
* copied from org.hps.monitoring.drivers.ecal.EcalMonitoringUtilities.java
*/
static IPlotter plot(IPlotterFactory plotterFactory, IBaseHistogram histogram, IPlotterStyle style, boolean show) {
- if (style == null)
+ if (style == null) {
style = getPlotterStyle(histogram);
+ }
IPlotter plotter = plotterFactory.create(histogram.title());
plotter.createRegion();
plotter.region(0).plot(histogram, style);
- if (show)
+ if (show) {
plotter.show();
+ }
return plotter;
}
@@ -52,8 +55,9 @@
* copied from org.hps.monitoring.drivers.ecal.EcalMonitoringUtilities.java
*/
static void plot(IPlotter plotter, IBaseHistogram histogram, IPlotterStyle style, int region) {
- if (style == null)
+ if (style == null) {
style = getPlotterStyle(histogram);
+ }
LOGGER.info("Putting plot in region " + region);
plotter.region(region).plot(histogram, style);
@@ -64,8 +68,9 @@
*/
static void plot(IPlotter plotter, IFunction function, IPlotterStyle style, int region) {
- if (style == null)
+ if (style == null) {
style = getPlotterStyle(function);
+ }
LOGGER.info("Putting function in region " + region);
plotter.region(region).plot(function, style);
}
@@ -78,16 +83,17 @@
StyleRegistry styleRegistry = StyleRegistry.getStyleRegistry();
IStyleStore store = styleRegistry.getStore("DefaultStyleStore");
IPlotterStyle style = null;
- if ((histogram instanceof IHistogram1D) || (histogram instanceof ICloud1D) || (histogram instanceof IProfile1D))
+ if ((histogram instanceof IHistogram1D) || (histogram instanceof ICloud1D) || (histogram instanceof IProfile1D)) {
style = store.getStyle("DefaultHistogram1DStyle");
- else if ((histogram instanceof IHistogram2D) || (histogram instanceof IProfile2D)) {
+ } else if ((histogram instanceof IHistogram2D) || (histogram instanceof IProfile2D)) {
style = store.getStyle("DefaultColorMapStyle");
style.statisticsBoxStyle().setVisible(false);
style.setParameter("hist2DStyle", "colorMap");
style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
}
- if (style == null)
+ if (style == null) {
throw new RuntimeException("A default style could not be found for " + histogram.title());
+ }
//custom stuff...mg
style.dataStyle().errorBarStyle().setVisible(false);
@@ -106,8 +112,9 @@
IStyleStore store = styleRegistry.getStore("DefaultStyleStore");
IPlotterStyle style = null;
style = store.getStyle("DefaultFunctionStyle");
- if (style == null)
+ if (style == null) {
throw new RuntimeException("A default style could not be found for " + func.title());
+ }
return style;
}
@@ -122,10 +129,10 @@
parameters[2] = histogram.rms();
function.setParameters(parameters);
IFitResult fitResult = null;
- Logger minuitLogger = Logger.getLogger("org.freehep.math.minuit");
+ Logger minuitLogger = Logger.getLogger("org.freehep.math.minuit");
minuitLogger.setLevel(Level.OFF);
minuitLogger.info("minuit logger test");
-
+
try {
fitResult = fitter.fit(histogram, function);
} catch (RuntimeException e) {
@@ -142,4 +149,44 @@
}
}
+ private static final String nameStrip = "Tracker_TestRunModule_";
+
+ private static String getNiceSensorName(HpsSiSensor sensor) {
+ return sensor.getName().replaceAll(nameStrip, "")
+ .replace("module", "mod")
+ .replace("layer", "lyr")
+ .replace("sensor", "sens");
+ }
+
+ public static IHistogram1D getSensorPlot(String prefix, HpsSiSensor sensor) {
+ String hname = prefix + getNiceSensorName(sensor);
+ return aida.histogram1D(hname);
+ }
+
+// private static IHistogram1D getSensorPlot(String prefix, String sensorName) {
+// return aida.histogram1D(prefix + sensorName);
+// }
+ public static 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(getNiceSensorName(sensor));
+
+ return hist;
+ }
+
+ public static IHistogram2D getSensorPlot2D(String prefix, HpsSiSensor sensor) {
+ String hname = prefix + getNiceSensorName(sensor);
+ return aida.histogram2D(hname);
+ }
+
+ public static IHistogram2D createSensorPlot2D(String prefix, HpsSiSensor sensor, int nchanX, double minX, double maxX, int nchanY, double minY, double maxY) {
+ String hname = prefix + getNiceSensorName(sensor);
+ IHistogram2D hist = aida.histogram2D(hname, nchanX, minX, maxX, nchanY, minY, maxY);
+ hist.setTitle(sensor.getName().replaceAll(nameStrip, "")
+ .replace("module", "mod")
+ .replace("layer", "lyr")
+ .replace("sensor", "sens"));
+
+ return hist;
+ }
}
Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java
=============================================================================
--- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java (original)
+++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java Tue Dec 8 20:48:40 2015
@@ -38,7 +38,7 @@
*/
//TODO: add some more quantities to DQM database: <t0> or <sigma>_t0 for intime events; <chi^2>, <amplitude> etc
public class SvtMonitoring extends DataQualityMonitor {
-
+
private static Logger LOGGER = Logger.getLogger(SvtMonitoring.class.getPackage().getName());
private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
@@ -90,22 +90,22 @@
aida.tree().cd("/");
for (HpsSiSensor sensor : sensors) {
//IHistogram1D occupancyPlot = aida.histogram1D(sensor.getName().replaceAll("Tracker_TestRunModule_", ""), 640, 0, 639);
- IHistogram1D occupancyPlot = createSensorPlot(plotDir + triggerType + "/"+"occupancy_", sensor, maxChannels, 0, maxChannels - 1);
- IHistogram1D t0Plot = createSensorPlot(plotDir + triggerType + "/"+"t0Hit_", sensor, 400, -100., 100.);
- IHistogram1D nHits = createSensorPlot(plotDir + triggerType + "/"+"nHitsPerEvent_", sensor, 100, -0.5, 99.5);
- IHistogram1D pileup = createSensorPlot(plotDir + triggerType + "/"+"nFitsPerHit_", sensor, 3, 0.5, 3.5);
-
- IHistogram1D amplitudePlot = createSensorPlot(plotDir + triggerType + "/"+"amplitude_", sensor, 50, 0, 4000.0);
- IHistogram2D t0AmpPlot = createSensorPlot2D(plotDir + triggerType + "/"+"t0AmpHit_", sensor, 200, -100., 100., 50, 0, 4000.0);
- IHistogram2D t0ChanPlot = createSensorPlot2D(plotDir + triggerType + "/"+"t0ChanBigHit_", sensor, 640, -0.5, 639.5, 200, -100., 100.);
- IHistogram2D ampChanPlot = createSensorPlot2D(plotDir + triggerType + "/"+"ampChanHit_", sensor, 640, -0.5, 639.5, 50, 0, 4000);
- IHistogram2D chiprobChanPlot = createSensorPlot2D(plotDir + triggerType + "/"+"chiprobChanBigHit_", sensor, 640, -0.5, 639.5, 50, 0, 1.0);
- IHistogram2D t0TrigTimeHitPlot = createSensorPlot2D(plotDir + triggerType + "/"+"t0BigHitTrigTime_", sensor, 400, -100., 100., 6, 0, 24);
-
- IHistogram1D chiProbPlot = createSensorPlot(plotDir + triggerType + "/"+"chiProb_", sensor, 50, 0, 1.0);
- IHistogram1D t0ClusterPlot = createSensorPlot(plotDir + triggerType + "/"+"t0Cluster_", sensor, 400, -100., 100.);
- IHistogram2D t0TrigTimePlot = createSensorPlot2D(plotDir + triggerType + "/"+"t0ClusterTrigTime_", sensor, 400, -100., 100., 6, 0, 24);
- IHistogram1D dedxClusterPlot = createSensorPlot(plotDir + triggerType + "/"+"electrons_", sensor, 50, 0., 10.);
+ IHistogram1D occupancyPlot = PlotAndFitUtilities.createSensorPlot(plotDir + triggerType + "/" + "occupancy_", sensor, maxChannels, 0, maxChannels - 1);
+ IHistogram1D t0Plot = PlotAndFitUtilities.createSensorPlot(plotDir + triggerType + "/" + "t0Hit_", sensor, 400, -100., 100.);
+ IHistogram1D nHits = PlotAndFitUtilities.createSensorPlot(plotDir + triggerType + "/" + "nHitsPerEvent_", sensor, 100, -0.5, 99.5);
+ IHistogram1D pileup = PlotAndFitUtilities.createSensorPlot(plotDir + triggerType + "/" + "nFitsPerHit_", sensor, 3, 0.5, 3.5);
+
+ IHistogram1D amplitudePlot = PlotAndFitUtilities.createSensorPlot(plotDir + triggerType + "/" + "amplitude_", sensor, 50, 0, 4000.0);
+ IHistogram2D t0AmpPlot = PlotAndFitUtilities.createSensorPlot2D(plotDir + triggerType + "/" + "t0AmpHit_", sensor, 200, -100., 100., 50, 0, 4000.0);
+ IHistogram2D t0ChanPlot = PlotAndFitUtilities.createSensorPlot2D(plotDir + triggerType + "/" + "t0ChanBigHit_", sensor, 640, -0.5, 639.5, 200, -100., 100.);
+ IHistogram2D ampChanPlot = PlotAndFitUtilities.createSensorPlot2D(plotDir + triggerType + "/" + "ampChanHit_", sensor, 640, -0.5, 639.5, 50, 0, 4000);
+ IHistogram2D chiprobChanPlot = PlotAndFitUtilities.createSensorPlot2D(plotDir + triggerType + "/" + "chiprobChanBigHit_", sensor, 640, -0.5, 639.5, 50, 0, 1.0);
+ IHistogram2D t0TrigTimeHitPlot = PlotAndFitUtilities.createSensorPlot2D(plotDir + triggerType + "/" + "t0BigHitTrigTime_", sensor, 400, -100., 100., 6, 0, 24);
+
+ IHistogram1D chiProbPlot = PlotAndFitUtilities.createSensorPlot(plotDir + triggerType + "/" + "chiProb_", sensor, 50, 0, 1.0);
+ IHistogram1D t0ClusterPlot = PlotAndFitUtilities.createSensorPlot(plotDir + triggerType + "/" + "t0Cluster_", sensor, 400, -100., 100.);
+ IHistogram2D t0TrigTimePlot = PlotAndFitUtilities.createSensorPlot2D(plotDir + triggerType + "/" + "t0ClusterTrigTime_", sensor, 400, -100., 100., 6, 0, 24);
+ IHistogram1D dedxClusterPlot = PlotAndFitUtilities.createSensorPlot(plotDir + triggerType + "/" + "electrons_", sensor, 50, 0., 10.);
occupancyPlot.reset();
}
@@ -116,10 +116,11 @@
public void process(EventHeader event) {
- //check to see if this event is from the correct trigger (or "all");
- if (!matchTrigger(event))
+ //check to see if this event is from the correct trigger (or "all");
+ if (!matchTrigger(event)) {
return;
-
+ }
+
/* increment the strip occupancy arrays */
Map<String, Integer> hitsPerSensor = new HashMap<String, Integer>();
@@ -140,7 +141,7 @@
++eventCountRaw;
}
for (HpsSiSensor sensor : sensors) {
- IHistogram1D sensorHist = getSensorPlot(plotDir + triggerType + "/"+"nHitsPerEvent_", sensor);
+ IHistogram1D sensorHist = PlotAndFitUtilities.getSensorPlot(plotDir + triggerType + "/" + "nHitsPerEvent_", sensor);
Integer nHits = hitsPerSensor.get(sensor.getName());
if (nHits == null) {
sensorHist.fill(0);
@@ -161,22 +162,22 @@
RawTrackerHit rth = (RawTrackerHit) hit.getFrom();
GenericObject pars = (GenericObject) hit.getTo();
- String sensorName = getNiceSensorName((HpsSiSensor) rth.getDetectorElement());
+ HpsSiSensor sensor = ((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);
double chiProb = ShapeFitParameters.getChiProb(pars);
int channel = rth.getIdentifierFieldValue("strip");
- getSensorPlot(plotDir + triggerType + "/"+"nFitsPerHit_", sensorName).fill(rthtofit.allFrom(rth).size());
- getSensorPlot(plotDir + triggerType + "/"+"t0Hit_", sensorName).fill(t0);
- getSensorPlot(plotDir + triggerType + "/"+"amplitude_", sensorName).fill(amp);
- getSensorPlot2D(plotDir + triggerType + "/"+"t0AmpHit_", sensorName).fill(t0, amp);
- getSensorPlot(plotDir + triggerType + "/"+"chiProb_", sensorName).fill(chiProb);
- getSensorPlot2D(plotDir + triggerType + "/"+"ampChanHit_", sensorName).fill(channel, amp);
+ PlotAndFitUtilities.getSensorPlot(plotDir + triggerType + "/" + "nFitsPerHit_", sensor).fill(rthtofit.allFrom(rth).size());
+ PlotAndFitUtilities.getSensorPlot(plotDir + triggerType + "/" + "t0Hit_", sensor).fill(t0);
+ PlotAndFitUtilities.getSensorPlot(plotDir + triggerType + "/" + "amplitude_", sensor).fill(amp);
+ PlotAndFitUtilities.getSensorPlot2D(plotDir + triggerType + "/" + "t0AmpHit_", sensor).fill(t0, amp);
+ PlotAndFitUtilities.getSensorPlot(plotDir + triggerType + "/" + "chiProb_", sensor).fill(chiProb);
+ PlotAndFitUtilities.getSensorPlot2D(plotDir + triggerType + "/" + "ampChanHit_", sensor).fill(channel, amp);
if (amp > 1000.0) {
- getSensorPlot2D(plotDir + triggerType + "/"+"t0ChanBigHit_", sensorName).fill(channel, t0);
- getSensorPlot2D(plotDir + triggerType + "/"+"chiprobChanBigHit_", sensorName).fill(channel, chiProb);
- getSensorPlot2D(plotDir + triggerType + "/"+"t0BigHitTrigTime_", sensorName).fill(t0, event.getTimeStamp() % 24);
+ PlotAndFitUtilities.getSensorPlot2D(plotDir + triggerType + "/" + "t0ChanBigHit_", sensor).fill(channel, t0);
+ PlotAndFitUtilities.getSensorPlot2D(plotDir + triggerType + "/" + "chiprobChanBigHit_", sensor).fill(channel, chiProb);
+ PlotAndFitUtilities.getSensorPlot2D(plotDir + triggerType + "/" + "t0BigHitTrigTime_", sensor).fill(t0, event.getTimeStamp() % 24);
}
}
++eventCountFit;
@@ -186,55 +187,15 @@
// LOGGER.info("Found a Si cluster collection");
List<TrackerHit> siClusters = (List<TrackerHit>) event.get(trackerHitCollectionName);
for (TrackerHit cluster : siClusters) {
- String sensorName = getNiceSensorName((HpsSiSensor) ((RawTrackerHit) cluster.getRawHits().get(0)).getDetectorElement());
+ HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) cluster.getRawHits().get(0)).getDetectorElement();
double t0 = cluster.getTime();
double dedx = cluster.getdEdx() * 1e6;
// LOGGER.info("dedx = "+dedx);
- getSensorPlot(plotDir + triggerType + "/"+"t0Cluster_", sensorName).fill(t0);
- getSensorPlot2D(plotDir + triggerType + "/"+"t0ClusterTrigTime_", sensorName).fill(t0, event.getTimeStamp() % 24);
- getSensorPlot(plotDir + triggerType + "/"+"electrons_", sensorName).fill(dedx);
- }
- }
- }
-
- private IHistogram1D getSensorPlot(String prefix, HpsSiSensor sensor) {
- String hname = prefix + getNiceSensorName(sensor);
- return aida.histogram1D(hname);
- }
-
- private IHistogram1D getSensorPlot(String prefix, String sensorName) {
- return aida.histogram1D(prefix + sensorName);
- }
-
- 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, "")
- .replace("module", "mod")
- .replace("layer", "lyr")
- .replace("sensor", "sens"));
-
- return hist;
- }
-
- private IHistogram2D getSensorPlot2D(String prefix, HpsSiSensor sensor) {
- String hname = prefix + getNiceSensorName(sensor);
- return aida.histogram2D(hname);
- }
-
- private IHistogram2D getSensorPlot2D(String prefix, String sensorName) {
- return aida.histogram2D(prefix + sensorName);
- }
-
- private IHistogram2D createSensorPlot2D(String prefix, HpsSiSensor sensor, int nchanX, double minX, double maxX, int nchanY, double minY, double maxY) {
- String hname = prefix + getNiceSensorName(sensor);
- IHistogram2D hist = aida.histogram2D(hname, nchanX, minX, maxX, nchanY, minY, maxY);
- hist.setTitle(sensor.getName().replaceAll(nameStrip, "")
- .replace("module", "mod")
- .replace("layer", "lyr")
- .replace("sensor", "sens"));
-
- return hist;
+ PlotAndFitUtilities.getSensorPlot(plotDir + triggerType + "/" + "t0Cluster_", sensor).fill(t0);
+ PlotAndFitUtilities.getSensorPlot2D(plotDir + triggerType + "/" + "t0ClusterTrigTime_", sensor).fill(t0, event.getTimeStamp() % 24);
+ PlotAndFitUtilities.getSensorPlot(plotDir + triggerType + "/" + "electrons_", sensor).fill(dedx);
+ }
+ }
}
private void resetOccupancyMap() {
@@ -279,7 +240,7 @@
for (HpsSiSensor sensor : sensors) {
Double avg = 0.0;
//IHistogram1D sensorHist = aida.histogram1D(sensor.getName());
- IHistogram1D sensorHist = getSensorPlot(plotDir + triggerType + "/"+"occupancy_", sensor);
+ IHistogram1D sensorHist = PlotAndFitUtilities.getSensorPlot(plotDir + triggerType + "/" + "occupancy_", sensor);
sensorHist.reset();
int[] strips = occupancyMap.get(sensor.getName());
for (int i = 0; i < strips.length; i++) {
@@ -314,7 +275,7 @@
int irTop = 0;
int irBot = 0;
for (HpsSiSensor sensor : sensors) {
- IHistogram1D sensPlot = getSensorPlot(plotDir + triggerType + "/"+"t0Hit_", sensor);
+ IHistogram1D sensPlot = PlotAndFitUtilities.getSensorPlot(plotDir + triggerType + "/" + "t0Hit_", sensor);
IFitResult result = fitGaussian(sensPlot, fitter, "range=\"(-8.0,8.0)\"");
boolean isTop = sensor.isTopLayer();
@@ -362,9 +323,9 @@
@Override
public void printDQMData() {
for (HpsSiSensor sensor : sensors) {
- LOGGER.info(avgOccupancyNames.get(sensor.getName()) + " " +triggerType+" " + avgOccupancyMap.get(sensor.getName()));
- LOGGER.info(avgt0Names.get(sensor.getName()) + " " +triggerType+" " + avgt0Map.get(sensor.getName()));
- LOGGER.info(sigt0Names.get(sensor.getName()) + " " +triggerType+" " + sigt0Map.get(sensor.getName()));
+ LOGGER.info(avgOccupancyNames.get(sensor.getName()) + " " + triggerType + " " + avgOccupancyMap.get(sensor.getName()));
+ LOGGER.info(avgt0Names.get(sensor.getName()) + " " + triggerType + " " + avgt0Map.get(sensor.getName()));
+ LOGGER.info(sigt0Names.get(sensor.getName()) + " " + triggerType + " " + sigt0Map.get(sensor.getName()));
}
}
Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java
=============================================================================
--- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java (original)
+++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java Tue Dec 8 20:48:40 2015
@@ -8,16 +8,17 @@
import hep.physics.vec.BasicHep3Matrix;
import hep.physics.vec.Hep3Vector;
import hep.physics.vec.VecOp;
-
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
-
import org.hps.recon.tracking.CoordinateTransformations;
import org.hps.recon.tracking.TrackUtils;
+import org.hps.recon.tracking.gbl.GBLKinkData;
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
import org.lcsim.event.LCRelation;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.event.RelationalTable;
@@ -37,7 +38,7 @@
public class TrackingMonitoring extends DataQualityMonitor {
private static Logger LOGGER = Logger.getLogger(SvtMonitoring.class.getPackage().getName());
-
+
private String helicalTrackHitCollectionName = "HelicalTrackHits";
private final String rotatedTrackHitCollectionName = "RotatedHelicalTrackHits";
private final String helicalTrackHitRelationsCollectionName = "HelicalTrackHitRelations";
@@ -64,6 +65,7 @@
private final String botDir = "Bottom/";
private final String hthplotDir = "HelicalTrackHits/";
private final String timeresidDir = "HitTimeResiduals/";
+ private final String kinkDir = "Kinks/";
String[] trackingQuantNames = {"avg_N_tracks", "avg_N_hitsPerTrack", "avg_d0", "avg_z0", "avg_absslope", "avg_chi2"};
int nmodules = 6;
IHistogram1D[] hthTop = new IHistogram1D[nmodules];
@@ -300,9 +302,12 @@
aida.tree().cd("/");
for (HpsSiSensor sensor : sensors) {
//IHistogram1D occupancyPlot = aida.histogram1D(sensor.getName().replaceAll("Tracker_TestRunModule_", ""), 640, 0, 639);
- IHistogram1D hitTimeResidual = createSensorPlot(plotDir + trackCollectionName + "/" + triggerType + "/" + timeresidDir + "hitTimeResidual_", sensor, 100, -20, 20);
- }
-
+ IHistogram1D hitTimeResidual = PlotAndFitUtilities.createSensorPlot(plotDir + trackCollectionName + "/" + triggerType + "/" + timeresidDir + "hitTimeResidual_", sensor, 100, -20, 20);
+ IHistogram1D lambdaKink = PlotAndFitUtilities.createSensorPlot(plotDir + trackCollectionName + "/" + triggerType + "/" + kinkDir + "lambdaKink_", sensor, 100, -5e-3, 5e-3);
+ IHistogram1D phiKink = PlotAndFitUtilities.createSensorPlot(plotDir + trackCollectionName + "/" + triggerType + "/" + kinkDir + "phiKink_", sensor, 100, -5e-3, 5e-3);
+ IHistogram2D lambdaKink2D = PlotAndFitUtilities.createSensorPlot2D(plotDir + trackCollectionName + "/" + triggerType + "/" + kinkDir + "lambdaKinkVsOmega_", sensor, 100, -omegaCut, omegaCut, 100, -5e-3, 5e-3);
+ IHistogram2D phiKink2D = PlotAndFitUtilities.createSensorPlot2D(plotDir + trackCollectionName + "/" + triggerType + "/" + kinkDir + "phiKinkVsOmega_", sensor, 100, -omegaCut, omegaCut, 100, -5e-3, 5e-3);
+ }
}
@Override
@@ -385,7 +390,7 @@
double sinphi0 = Math.sin(trk.getTrackStates().get(0).getPhi());
double omega = trk.getTrackStates().get(0).getOmega();
double lambda = trk.getTrackStates().get(0).getTanLambda();
- double z0 = trk.getTrackStates().get(0).getZ0();
+ double z0 = trk.getTrackStates().get(0).getZ0();
trkChi2.fill(trk.getChi2());
nHits.fill(trk.getTrackerHits().size());
trackNhitsVsChi2.fill(trk.getChi2(), trk.getTrackerHits().size());
@@ -447,8 +452,12 @@
int nSeedStrips = 0;
double meanTime = 0;
double meanSeedTime = 0;
+
+ List<TrackerHit> stripHits = new ArrayList<TrackerHit>();
+
for (TrackerHit hit : trk.getTrackerHits()) {
Collection<TrackerHit> htsList = hitToStrips.allFrom(hitToRotated.from(hit));
+ stripHits.addAll(htsList);
double hitTimes[] = new double[2];
for (TrackerHit hts : htsList) {
int stripLayer = ((HpsSiSensor) ((RawTrackerHit) hts.getRawHits().get(0)).getDetectorElement()).getLayerNumber();
@@ -479,18 +488,16 @@
double rmsTime = 0;
double rmsSeedTime = 0;
- for (TrackerHit hit : trk.getTrackerHits()) {
- Collection<TrackerHit> htsList = hitToStrips.allFrom(hitToRotated.from(hit));
- for (TrackerHit hts : htsList) {
- rmsTime += Math.pow(hts.getTime() - meanTime, 2);
- HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) hts.getRawHits().get(0)).getDetectorElement();
- int layer = sensor.getLayerNumber();
- if (layer <= 6) {
- rmsSeedTime += Math.pow(hts.getTime() - meanSeedTime, 2);
- }
- String sensorName = getNiceSensorName(sensor);
- getSensorPlot(plotDir + trackCollectionName + "/" + triggerType + "/" + timeresidDir + "hitTimeResidual_", sensorName).fill((hts.getTime() - meanTime) * nStrips / (nStrips - 1)); //correct residual for bias
+
+ stripHits = TrackUtils.sortHits(stripHits);
+ for (TrackerHit hts : stripHits) {
+ rmsTime += Math.pow(hts.getTime() - meanTime, 2);
+ HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) hts.getRawHits().get(0)).getDetectorElement();
+ int layer = sensor.getLayerNumber();
+ if (layer <= 6) {
+ rmsSeedTime += Math.pow(hts.getTime() - meanSeedTime, 2);
}
+ PlotAndFitUtilities.getSensorPlot(plotDir + trackCollectionName + "/" + triggerType + "/" + timeresidDir + "hitTimeResidual_", sensor).fill((hts.getTime() - meanTime) * nStrips / (nStrips - 1)); //correct residual for bias
}
rmsTime = Math.sqrt(rmsTime / nStrips);
trackMeanTime.fill(meanTime);
@@ -501,6 +508,23 @@
rmsSeedTime = Math.sqrt(rmsSeedTime / nSeedStrips);
seedRMSTime.fill(rmsSeedTime);
+
+ GenericObject kinkData = GBLKinkData.getKinkData(event, trk);
+ if (kinkData != null) {
+ for (int i = 0; i < stripHits.size(); i++) {
+ TrackerHit hts = stripHits.get(i);
+ HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) hts.getRawHits().get(0)).getDetectorElement();
+// int layer = sensor.getLayerNumber();
+ double lambdaKink = GBLKinkData.getLambdaKink(kinkData, i);
+ double phiKink = GBLKinkData.getPhiKink(kinkData, i);
+// System.out.format("%d %d %f %f\n", i, layer, lambdaKink, phiKink);
+
+ PlotAndFitUtilities.getSensorPlot(plotDir + trackCollectionName + "/" + triggerType + "/" + kinkDir + "lambdaKink_", sensor).fill(lambdaKink);
+ PlotAndFitUtilities.getSensorPlot(plotDir + trackCollectionName + "/" + triggerType + "/" + kinkDir + "phiKink_", sensor).fill(phiKink);
+ PlotAndFitUtilities.getSensorPlot2D(plotDir + trackCollectionName + "/" + triggerType + "/" + kinkDir + "lambdaKinkVsOmega_", sensor).fill(trk.getTrackStates().get(0).getOmega(), lambdaKink);
+ PlotAndFitUtilities.getSensorPlot2D(plotDir + trackCollectionName + "/" + triggerType + "/" + kinkDir + "phiKinkVsOmega_", sensor).fill(trk.getTrackStates().get(0).getOmega(), phiKink);
+ }
+ }
if (trk.getTrackStates().get(0).getOmega() < 0) {//positrons
trkChi2Pos.fill(trk.getChi2());
@@ -568,7 +592,7 @@
for (HpsSiSensor sensor : sensors) {
//IHistogram1D occupancyPlot = aida.histogram1D(sensor.getName().replaceAll("Tracker_TestRunModule_", ""), 640, 0, 639);
- IHistogram1D hitTimeResidual = getSensorPlot(plotDir + trackCollectionName + "/" + triggerType + "/" + timeresidDir + "hitTimeResidual_", getNiceSensorName(sensor));
+ IHistogram1D hitTimeResidual = PlotAndFitUtilities.getSensorPlot(plotDir + trackCollectionName + "/" + triggerType + "/" + timeresidDir + "hitTimeResidual_", sensor);
IFitResult result = fitGaussian(hitTimeResidual, fitter, "range=\"(-20.0,20.0)\"");
if (result != null) {
System.out.format("%s\t%f\t%f\t%d\t%d\t%f\n", getNiceSensorName(sensor), result.fittedParameters()[1], result.fittedParameters()[2], sensor.getFebID(), sensor.getFebHybridID(), sensor.getT0Shift());
@@ -611,26 +635,6 @@
}
}
- private IHistogram1D getSensorPlot(String prefix, HpsSiSensor sensor) {
- String hname = prefix + getNiceSensorName(sensor);
- return aida.histogram1D(hname);
- }
-
- private IHistogram1D getSensorPlot(String prefix, String sensorName) {
- return aida.histogram1D(prefix + sensorName);
- }
-
- 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, "")
- .replace("module", "mod")
- .replace("layer", "lyr")
- .replace("sensor", "sens"));
-
- return hist;
- }
-
private String getNiceSensorName(HpsSiSensor sensor) {
return sensor.getName().replaceAll(nameStrip, "")
.replace("module", "mod")
Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java
=============================================================================
--- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java (original)
+++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java Tue Dec 8 20:48:40 2015
@@ -28,8 +28,8 @@
// TODO: Add some quantities for DQM monitoring:
public class TrackingResiduals extends DataQualityMonitor {
- private static Logger LOGGER = Logger.getLogger(TrackingResiduals.class.getPackage().getName());
-
+ private static final Logger LOGGER = Logger.getLogger(TrackingResiduals.class.getPackage().getName());
+
// Collection Names
String trackTimeDataCollectionName = "TrackTimeData";
String trackResidualsCollectionName = "TrackResiduals";
@@ -82,8 +82,9 @@
yresidbot[i - 1] = aida.histogram1D(plotDir + triggerType + "/" + posresDir + "Module " + i + " Bot y Residual", 50, -getRange(i, false), getRange(i, false));
}
- for (int i = 1; i <= nmodules * 2; i++)
+ for (int i = 1; i <= nmodules * 2; i++) {
tresid[i - 1] = aida.histogram1D(plotDir + triggerType + "/" + timeresDir + "HalfModule " + i + " t Residual", 50, -20, 20);
+ }
for (int i = 1; i <= nsensors; i++) {
// IHistogram1D utopresid = aida.histogram1D(plotDir + triggerType + "/"+uresDir + "HalfModule " + i + " Top u Residual", 50, -getRange((i + 1) / 2, false), getRange((i + 1) / 2, false));
// IHistogram1D ubotresid = aida.histogram1D(plotDir + triggerType + "/"+uresDir + "HalfModule " + i + " Bot u Residual", 50, -getRange((i + 1) / 2, false), getRange((i + 1) / 2, false));
@@ -106,17 +107,19 @@
@Override
public void process(EventHeader event) {
aida.tree().cd("/");
- if (!event.hasCollection(GenericObject.class, trackResidualsCollectionName))
+ if (!event.hasCollection(GenericObject.class, trackResidualsCollectionName)) {
return;
+ }
//check to see if this event is from the correct trigger (or "all");
- if (!matchTrigger(event))
+ if (!matchTrigger(event)) {
return;
+ }
nEvents++;
List<GenericObject> trdList = event.get(GenericObject.class, trackResidualsCollectionName);
for (GenericObject trd : trdList) {
int nResid = trd.getNDouble();
int isBot = trd.getIntVal(trd.getNInt() - 1);//last Int is the top/bottom flag
- for (int i = 1; i <= nResid; i++)
+ for (int i = 1; i <= nResid; i++) {
if (isBot == 1) {
xresidbot[i - 1].fill(trd.getDoubleVal(i - 1));//x is the double value in the generic object
yresidbot[i - 1].fill(trd.getFloatVal(i - 1));//y is the float value in the generic object
@@ -124,19 +127,22 @@
xresidtop[i - 1].fill(trd.getDoubleVal(i - 1));//x is the double value in the generic object
yresidtop[i - 1].fill(trd.getFloatVal(i - 1));//y is the float value in the generic object
}
- }
-
+ }
+ }
+
if (event.hasCollection(GenericObject.class, trackTimeDataCollectionName)) {
List<GenericObject> ttdList = event.get(GenericObject.class, trackTimeDataCollectionName);
for (GenericObject ttd : ttdList) {
int nResid = ttd.getNDouble();
- for (int i = 1; i <= nResid; i++)
+ for (int i = 1; i <= nResid; i++) {
tresid[i - 1].fill(ttd.getDoubleVal(i - 1));//x is the double value in the generic object
- }
- }
-
- if (!event.hasCollection(GenericObject.class, gblStripClusterDataCollectionName))
+ }
+ }
+ }
+
+ if (!event.hasCollection(GenericObject.class, gblStripClusterDataCollectionName)) {
return;
+ }
List<GenericObject> gblSCDList = event.get(GenericObject.class, gblStripClusterDataCollectionName);
for (GenericObject gblSCD : gblSCDList) {
double umeas = gblSCD.getDoubleVal(GBLStripClusterData.GBLDOUBLE.UMEAS);//TODO: implement generic methods into GBLStripClusterData so this isn't hard coded
@@ -146,23 +152,25 @@
double tanlambda = gblSCD.getDoubleVal(GBLStripClusterData.GBLDOUBLE.TLAMBDA);//use the slope as a proxy for the top/bottom half of tracker
int i = gblSCD.getIntVal(GBLStripClusterData.GBLINT.ID);//implement generic methods into GBLStripClusterData so this isn't hard coded
- if (i == 666)
- if (tanlambda > 0)
+ if (i == 666) {
+ if (tanlambda > 0) {
xtopresidBS.fill(resid);
- else
+ } else {
xbotresidBS.fill(resid);
- else if (i == 667)
- if (tanlambda > 0)
+ }
+ } else if (i == 667) {
+ if (tanlambda > 0) {
ytopresidBS.fill(resid);
- else
+ } else {
ybotresidBS.fill(resid);
- else if (tanlambda > 0)
+ }
+ } else if (tanlambda > 0) {
utopresid[i - 1].fill(resid);//x is the double value in the generic object
- // aida.histogram2D(plotDir + triggerType + "/"+uresDir + "HalfModule " + i + " Top u Residual vs. u").fill(utrk,resid);//x is the double value in the generic object
+ } // aida.histogram2D(plotDir + triggerType + "/"+uresDir + "HalfModule " + i + " Top u Residual vs. u").fill(utrk,resid);//x is the double value in the generic object
// aida.histogram2D(plotDir + triggerType + "/"+uresDir + "HalfModule " + i + " Top u Residual vs. v").fill(vtrk,resid);//x is the double value in the generic object
- else
+ else {
ubotresid[i - 1].fill(resid);//x is the double value in the generic object
- // aida.histogram2D(plotDir + triggerType + "/"+uresDir + "HalfModule " + i + " Bot u Residual vs. u").fill(utrk,resid);//x is the double value in the generic object
+ } // aida.histogram2D(plotDir + triggerType + "/"+uresDir + "HalfModule " + i + " Bot u Residual vs. u").fill(utrk,resid);//x is the double value in the generic object
// aida.histogram2D(plotDir + triggerType + "/"+uresDir + "HalfModule " + i + " Bot u Residual vs. v").fill(vtrk,resid);//x is the double value in the generic object
}
}
@@ -287,20 +295,25 @@
private String getQuantityName(int itype, int iquant, int top, int nlayer) {
String typeString = "position_resid";
String quantString = "mean_";
- if (itype == 1)
+ if (itype == 1) {
typeString = "time_resid";
- if (iquant == 1)
+ }
+ if (iquant == 1) {
quantString = "sigma_";
+ }
String botString = "bot_";
- if (top == 1)
+ if (top == 1) {
botString = "top_";
- if (top == 2)
+ }
+ if (top == 2) {
botString = "";
+ }
String layerString = "module" + nlayer;
- if (itype == 1)
+ if (itype == 1) {
layerString = "halfmodule" + nlayer;
+ }
return typeString + quantString + botString + layerString;
}
@@ -308,51 +321,71 @@
@Override
public void printDQMData() {
LOGGER.info("TrackingResiduals::printDQMData");
- for (Map.Entry<String, Double> entry : xposTopMeanResidMap.entrySet())
- LOGGER.info(entry.getKey() + " = " + entry.getValue());
- for (Map.Entry<String, Double> entry : xposBotMeanResidMap.entrySet())
- LOGGER.info(entry.getKey() + " = " + entry.getValue());
- for (Map.Entry<String, Double> entry : xposTopSigmaResidMap.entrySet())
- LOGGER.info(entry.getKey() + " = " + entry.getValue());
- for (Map.Entry<String, Double> entry : xposBotSigmaResidMap.entrySet())
- LOGGER.info(entry.getKey() + " = " + entry.getValue());
- for (Map.Entry<String, Double> entry : yposTopMeanResidMap.entrySet())
- LOGGER.info(entry.getKey() + " = " + entry.getValue());
- for (Map.Entry<String, Double> entry : yposBotMeanResidMap.entrySet())
- LOGGER.info(entry.getKey() + " = " + entry.getValue());
- for (Map.Entry<String, Double> entry : yposTopSigmaResidMap.entrySet())
- LOGGER.info(entry.getKey() + " = " + entry.getValue());
- for (Map.Entry<String, Double> entry : yposBotSigmaResidMap.entrySet())
- LOGGER.info(entry.getKey() + " = " + entry.getValue());
- for (Map.Entry<String, Double> entry : timeMeanResidMap.entrySet())
- LOGGER.info(entry.getKey() + " = " + entry.getValue());
- for (Map.Entry<String, Double> entry : timeSigmaResidMap.entrySet())
- LOGGER.info(entry.getKey() + " = " + entry.getValue());
+ for (Map.Entry<String, Double> entry : xposTopMeanResidMap.entrySet()) {
+ LOGGER.info(entry.getKey() + " = " + entry.getValue());
+ }
+ for (Map.Entry<String, Double> entry : xposBotMeanResidMap.entrySet()) {
+ LOGGER.info(entry.getKey() + " = " + entry.getValue());
+ }
+ for (Map.Entry<String, Double> entry : xposTopSigmaResidMap.entrySet()) {
+ LOGGER.info(entry.getKey() + " = " + entry.getValue());
+ }
+ for (Map.Entry<String, Double> entry : xposBotSigmaResidMap.entrySet()) {
+ LOGGER.info(entry.getKey() + " = " + entry.getValue());
+ }
+ for (Map.Entry<String, Double> entry : yposTopMeanResidMap.entrySet()) {
+ LOGGER.info(entry.getKey() + " = " + entry.getValue());
+ }
+ for (Map.Entry<String, Double> entry : yposBotMeanResidMap.entrySet()) {
+ LOGGER.info(entry.getKey() + " = " + entry.getValue());
+ }
+ for (Map.Entry<String, Double> entry : yposTopSigmaResidMap.entrySet()) {
+ LOGGER.info(entry.getKey() + " = " + entry.getValue());
+ }
+ for (Map.Entry<String, Double> entry : yposBotSigmaResidMap.entrySet()) {
+ LOGGER.info(entry.getKey() + " = " + entry.getValue());
+ }
+ for (Map.Entry<String, Double> entry : timeMeanResidMap.entrySet()) {
+ LOGGER.info(entry.getKey() + " = " + entry.getValue());
+ }
+ for (Map.Entry<String, Double> entry : timeSigmaResidMap.entrySet()) {
+ LOGGER.info(entry.getKey() + " = " + entry.getValue());
+ }
LOGGER.info("*******************************");
}
@Override
public void printDQMStrings() {
- for (Map.Entry<String, Double> entry : xposTopMeanResidMap.entrySet())
- LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
- for (Map.Entry<String, Double> entry : xposBotMeanResidMap.entrySet())
- LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
- for (Map.Entry<String, Double> entry : xposTopSigmaResidMap.entrySet())
- LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
- for (Map.Entry<String, Double> entry : xposBotSigmaResidMap.entrySet())
- LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
- for (Map.Entry<String, Double> entry : yposTopMeanResidMap.entrySet())
- LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
- for (Map.Entry<String, Double> entry : yposBotMeanResidMap.entrySet())
- LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
- for (Map.Entry<String, Double> entry : yposTopSigmaResidMap.entrySet())
- LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
- for (Map.Entry<String, Double> entry : yposBotSigmaResidMap.entrySet())
- LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
- for (Map.Entry<String, Double> entry : timeMeanResidMap.entrySet())
- LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
- for (Map.Entry<String, Double> entry : timeSigmaResidMap.entrySet())
- LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
+ for (Map.Entry<String, Double> entry : xposTopMeanResidMap.entrySet()) {
+ LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
+ }
+ for (Map.Entry<String, Double> entry : xposBotMeanResidMap.entrySet()) {
+ LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
+ }
+ for (Map.Entry<String, Double> entry : xposTopSigmaResidMap.entrySet()) {
+ LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
+ }
+ for (Map.Entry<String, Double> entry : xposBotSigmaResidMap.entrySet()) {
+ LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
+ }
+ for (Map.Entry<String, Double> entry : yposTopMeanResidMap.entrySet()) {
+ LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
+ }
+ for (Map.Entry<String, Double> entry : yposBotMeanResidMap.entrySet()) {
+ LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
+ }
+ for (Map.Entry<String, Double> entry : yposTopSigmaResidMap.entrySet()) {
+ LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
+ }
+ for (Map.Entry<String, Double> entry : yposBotSigmaResidMap.entrySet()) {
+ LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
+ }
+ for (Map.Entry<String, Double> entry : timeMeanResidMap.entrySet()) {
+ LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
+ }
+ for (Map.Entry<String, Double> entry : timeSigmaResidMap.entrySet()) {
+ LOGGER.info("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
+ }
}
private void resetOccupancyMap() {
@@ -399,31 +432,35 @@
private double getRange(int layer, boolean isX) {
double range = 2.5;
if (isX) {
- if (layer == 1)
- return 0.2;
- if (layer == 2)
- return 0.5;
- if (layer == 3)
- return 0.5;
- if (layer == 4)
- return 1.0;
- if (layer == 5)
- return 1.0;
- if (layer == 6)
- return 1.0;
+ switch (layer) {
+ case 1:
+ return 0.2;
+ case 2:
+ return 0.5;
+ case 3:
+ return 0.5;
+ case 4:
+ return 1.0;
+ case 5:
+ return 1.0;
+ case 6:
+ return 1.0;
+ }
} else {
- if (layer == 1)
- return 0.005;
- if (layer == 2)
- return 0.5;
- if (layer == 3)
- return 0.5;
- if (layer == 4)
- return 1.0;
- if (layer == 5)
- return 1.0;
- if (layer == 6)
- return 1.5;
+ switch (layer) {
+ case 1:
+ return 0.005;
+ case 2:
+ return 0.5;
+ case 3:
+ return 0.5;
+ case 4:
+ return 1.0;
+ case 5:
+ return 1.0;
+ case 6:
+ return 1.5;
+ }
}
return range;
Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
=============================================================================
--- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java (original)
+++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java Tue Dec 8 20:48:40 2015
@@ -97,8 +97,8 @@
private final String plotDir = "TridentMonitoring/";
- private IHistogram2D triTrackTime2D;
- private IHistogram1D triTrackTimeDiff;
+// private IHistogram2D triTrackTime2D;
+// private IHistogram1D triTrackTimeDiff;
private IHistogram2D triMassMomentum;
private IHistogram2D triZVsMomentum;
private IHistogram2D triTrackMomentum2D;
@@ -108,22 +108,22 @@
private IHistogram1D triSumP;
private IHistogram1D triMass;
private IHistogram2D triZVsMass;
- private IHistogram1D triX;
- private IHistogram1D triY;
- private IHistogram1D triZ;
- private IHistogram2D triZY;
- private IHistogram2D triXY;
- private IHistogram1D triPx;
- private IHistogram1D triPy;
- private IHistogram1D triPz;
- private IHistogram2D triPxPy;
- private IHistogram1D triU;
- private IHistogram1D triV;
+// private IHistogram1D triX;
+// private IHistogram1D triY;
+// private IHistogram1D triZ;
+// private IHistogram2D triZY;
+// private IHistogram2D triXY;
+// private IHistogram1D triPx;
+// private IHistogram1D triPy;
+// private IHistogram1D triPz;
+// private IHistogram2D triPxPy;
+// private IHistogram1D triU;
+// private IHistogram1D triV;
private IHistogram2D triRadTrackTime2D;
private IHistogram1D triRadTrackTimeDiff;
- private IHistogram2D triRadMassMomentum;
- private IHistogram2D triRadZVsMomentum;
+// private IHistogram2D triRadMassMomentum;
+// private IHistogram2D triRadZVsMomentum;
private IHistogram2D triRadTrackMomentum2D;
private IHistogram2D triRadPyEleVsPyPos;
private IHistogram2D triRadPxEleVsPxPos;
@@ -131,11 +131,11 @@
private IHistogram1D triRadSumP;
private IHistogram1D triRadMass;
private IHistogram2D triRadZVsMass;
- private IHistogram1D triRadX;
- private IHistogram1D triRadY;
- private IHistogram1D triRadZ;
- private IHistogram2D triRadZY;
- private IHistogram2D triRadXY;
+// private IHistogram1D triRadX;
+// private IHistogram1D triRadY;
+// private IHistogram1D triRadZ;
+// private IHistogram2D triRadZY;
+// private IHistogram2D triRadXY;
private IHistogram1D triRadPx;
private IHistogram1D triRadPy;
private IHistogram1D triRadPz;
@@ -143,8 +143,8 @@
private IHistogram1D triRadU;
private IHistogram1D triRadV;
- private IHistogram2D vertTrackTime2D;
- private IHistogram1D vertTrackTimeDiff;
+// private IHistogram2D vertTrackTime2D;
+// private IHistogram1D vertTrackTimeDiff;
private IHistogram2D vertMassMomentum;
private IHistogram2D vertZVsMomentum;
private IHistogram2D vertTrackMomentum2D;
@@ -154,17 +154,17 @@
private IHistogram1D vertSumP;
private IHistogram1D vertMass;
private IHistogram2D vertZVsMass;
- private IHistogram1D vertX;
- private IHistogram1D vertY;
- private IHistogram1D vertZ;
- private IHistogram2D vertZY;
- private IHistogram2D vertXY;
- private IHistogram1D vertPx;
- private IHistogram1D vertPy;
- private IHistogram1D vertPz;
- private IHistogram2D vertPxPy;
- private IHistogram1D vertU;
- private IHistogram1D vertV;
+// private IHistogram1D vertX;
+// private IHistogram1D vertY;
+// private IHistogram1D vertZ;
+// private IHistogram2D vertZY;
+// private IHistogram2D vertXY;
+// private IHistogram1D vertPx;
+// private IHistogram1D vertPy;
+// private IHistogram1D vertPz;
+// private IHistogram2D vertPxPy;
+// private IHistogram1D vertU;
+// private IHistogram1D vertV;
private IHistogram2D vertRadTrackTime2D;
private IHistogram1D vertRadTrackTimeDiff;
@@ -284,9 +284,8 @@
// IHistogram1D tarconChi2 = aida.histogram1D(plotDir + triggerType + "/"+ triggerType + "/"+"Target Constrained Chi2", 25, 0, 25);
nTriCand = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Number of Trident Candidates", 5, 0, 4);
- triTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Track time difference", 100, -10, 10);
- triTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Track time vs. track time", 100, -10, 10, 100, -10, 10);
-
+// triTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Track time difference", 100, -10, 10);
+// triTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Track time vs. track time", 100, -10, 10, 100, -10, 10);
triTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Positron vs. electron momentum", 100, 0, v0PzMax, 100, 0, v0PzMax);
triDeltaP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Positron - electron momentum", 100, -1., 1.0);
triSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Positron + electron momentum", 100, v0PzMin, v0PzMax);
@@ -297,17 +296,17 @@
triZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Z vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, -v0VzMax, v0VzMax);
triMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex mass", 100, 0, 0.11);
triZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Z vs. mass", 100, 0, 0.11, 100, -v0VzMax, v0VzMax);
- triX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex X", 100, -v0VxMax, v0VxMax);
- triY = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Y", 100, -v0VyMax, v0VyMax);
- triZ = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Z", 100, -v0VzMax, v0VzMax);
- triXY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Y vs. X", 100, -v0VxMax, v0VxMax, 100, -v0VyMax, v0VyMax);
- triZY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Z vs. Y", 100, -v0VyMax, v0VyMax, 100, -v0VzMax, v0VzMax);
- triPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Px", 100, -v0PxMax, v0PxMax);
- triPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Py", 100, -v0PyMax, v0PyMax);
- triPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Pz", 100, v0PzMin, v0PzMax);
- triPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Py vs. Px", 100, -v0PxMax, v0PxMax, 100, -v0PyMax, v0PyMax);
- triU = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Px over Ptot", 100, -0.1, 0.1);
- triV = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Py over Ptot", 100, -0.1, 0.1);
+// triX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex X", 100, -v0VxMax, v0VxMax);
+// triY = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Y", 100, -v0VyMax, v0VyMax);
+// triZ = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Z", 100, -v0VzMax, v0VzMax);
+// triXY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Y vs. X", 100, -v0VxMax, v0VxMax, 100, -v0VyMax, v0VyMax);
+// triZY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Z vs. Y", 100, -v0VyMax, v0VyMax, 100, -v0VzMax, v0VzMax);
+// triPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Px", 100, -v0PxMax, v0PxMax);
+// triPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Py", 100, -v0PyMax, v0PyMax);
+// triPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Pz", 100, v0PzMin, v0PzMax);
+// triPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Py vs. Px", 100, -v0PxMax, v0PxMax, 100, -v0PyMax, v0PyMax);
+// triU = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Px over Ptot", 100, -0.1, 0.1);
+// triV = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Py over Ptot", 100, -0.1, 0.1);
triRadTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Track time difference", 100, -10, 10);
triRadTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Track time vs. track time", 100, -10, 10, 100, -10, 10);
@@ -318,15 +317,15 @@
triRadPyEleVsPyPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Py(e) vs Py(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
triRadPxEleVsPxPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Px(e) vs Px(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
- triRadMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex mass vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, 0, 0.1);
- triRadZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Z vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, -v0VzMax, v0VzMax);
+// triRadMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex mass vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, 0, 0.1);
+// triRadZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Z vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, -v0VzMax, v0VzMax);
triRadMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex mass", 100, 0, 0.11);
triRadZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Z vs. mass", 100, 0, 0.11, 100, -v0VzMax, v0VzMax);
- triRadX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex X", 100, -v0VxMax, v0VxMax);
- triRadY = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Y", 100, -v0VyMax, v0VyMax);
- triRadZ = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Z", 100, -v0VzMax, v0VzMax);
- triRadXY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Y vs. X", 100, -v0VxMax, v0VxMax, 100, -v0VyMax, v0VyMax);
- triRadZY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Z vs. Y", 100, -v0VyMax, v0VyMax, 100, -v0VzMax, v0VzMax);
+// triRadX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex X", 100, -v0VxMax, v0VxMax);
+// triRadY = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Y", 100, -v0VyMax, v0VyMax);
+// triRadZ = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Z", 100, -v0VzMax, v0VzMax);
+// triRadXY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Y vs. X", 100, -v0VxMax, v0VxMax, 100, -v0VyMax, v0VyMax);
+// triRadZY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Z vs. Y", 100, -v0VyMax, v0VyMax, 100, -v0VzMax, v0VzMax);
triRadPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Px", 100, -v0PxMax, v0PxMax);
triRadPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Py", 100, -v0PyMax, v0PyMax);
triRadPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Pz", 100, v0PzMin, v0PzMax);
@@ -334,9 +333,8 @@
triRadU = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Px over Ptot", 100, -0.1, 0.1);
triRadV = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Py over Ptot", 100, -0.1, 0.1);
- vertTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Track time difference", 100, -10, 10);
- vertTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Track time vs. track time", 100, -10, 10, 100, -10, 10);
-
+// vertTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Track time difference", 100, -10, 10);
+// vertTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Track time vs. track time", 100, -10, 10, 100, -10, 10);
vertTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Positron vs. electron momentum", 100, 0, v0PzMax, 100, 0, v0PzMax);
vertDeltaP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Positron - electron momentum", 100, -1., 1.0);
vertSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Positron + electron momentum", 100, v0PzMin, v0PzMax);
@@ -347,17 +345,17 @@
vertZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Z vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, -v0VzMax, v0VzMax);
vertMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex mass", 100, 0, 0.11);
vertZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Z vs. mass", 100, 0, 0.11, 100, -v0VzMax, v0VzMax);
- vertX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex X", 100, -v0VxMax, v0VxMax);
- vertY = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Y", 100, -v0VyMax, v0VyMax);
- vertZ = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Z", 100, -v0VzMax, v0VzMax);
- vertXY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Y vs. X", 100, -v0VxMax, v0VxMax, 100, -v0VyMax, v0VyMax);
- vertZY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Z vs. Y", 100, -v0VyMax, v0VyMax, 100, -v0VzMax, v0VzMax);
- vertPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Px", 100, -v0PxMax, v0PxMax);
- vertPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Py", 100, -v0PyMax, v0PyMax);
- vertPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Pz", 100, v0PzMin, v0PzMax);
- vertPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Py vs. Px", 100, -v0PxMax, v0PxMax, 100, -v0PyMax, v0PyMax);
- vertU = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Px over Ptot", 100, -0.1, 0.1);
- vertV = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Py over Ptot", 100, -0.1, 0.1);
+// vertX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex X", 100, -v0VxMax, v0VxMax);
+// vertY = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Y", 100, -v0VyMax, v0VyMax);
+// vertZ = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Z", 100, -v0VzMax, v0VzMax);
+// vertXY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Y vs. X", 100, -v0VxMax, v0VxMax, 100, -v0VyMax, v0VyMax);
+// vertZY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Z vs. Y", 100, -v0VyMax, v0VyMax, 100, -v0VzMax, v0VzMax);
+// vertPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Px", 100, -v0PxMax, v0PxMax);
+// vertPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Py", 100, -v0PyMax, v0PyMax);
+// vertPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Pz", 100, v0PzMin, v0PzMax);
+// vertPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Py vs. Px", 100, -v0PxMax, v0PxMax, 100, -v0PyMax, v0PyMax);
+// vertU = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Px over Ptot", 100, -0.1, 0.1);
+// vertV = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Py over Ptot", 100, -0.1, 0.1);
vertRadTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Track time difference", 100, -10, 10);
vertRadTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Track time vs. track time", 100, -10, 10, 100, -10, 10);
@@ -407,11 +405,11 @@
for (Cut cut : Cut.values()) {
for (int i = 0; i < 2; i++) {
- cutVertexZ[cut.ordinal()][i] = aida.histogram1D(String.format("%s%s%s/failed cut: %s/%s: Vertex Z position (mm)", plotDir, trkType, triggerType, cut.ordinal(), cut.name, i == VERTEX ? "vertex" : "trident"),
+ cutVertexZ[cut.ordinal()][i] = aida.histogram1D(String.format("%s%s%s/failed cut %d: %s/%s: Vertex Z position (mm)", plotDir, trkType, triggerType, cut.ordinal(), cut.name, i == VERTEX ? "vertex" : "trident"),
100, -v0VzMax, v0VzMax);
- cutVertexMass[cut.ordinal()][i] = aida.histogram1D(String.format("%s%s%s/failed cut: %s/%s: Vertex mass (GeV)", plotDir, trkType, triggerType, cut.ordinal(), cut.name, i == VERTEX ? "vertex" : "trident"),
+ cutVertexMass[cut.ordinal()][i] = aida.histogram1D(String.format("%s%s%s/failed cut %d: %s/%s: Vertex mass (GeV)", plotDir, trkType, triggerType, cut.ordinal(), cut.name, i == VERTEX ? "vertex" : "trident"),
100, 0, 0.1 * ebeam);
- cutVertexZVsMass[cut.ordinal()][i] = aida.histogram2D(String.format("%s%s%s/failed cut: %s/%s: Vertex Z vs. mass", plotDir, trkType, triggerType, cut.ordinal(), cut.name, i == VERTEX ? "vertex" : "trident"),
+ cutVertexZVsMass[cut.ordinal()][i] = aida.histogram2D(String.format("%s%s%s/failed cut %d: %s/%s: Vertex Z vs. mass", plotDir, trkType, triggerType, cut.ordinal(), cut.name, i == VERTEX ? "vertex" : "trident"),
100, 0, 0.1 * ebeam, 100, -v0VzMax, v0VzMax);
}
}
@@ -520,15 +518,11 @@
EnumSet<Cut> bits = EnumSet.noneOf(Cut.class);
boolean trackQualityCut = Math.max(tracks.get(0).getChi2(), tracks.get(1).getChi2()) < (isGBL ? maxChi2GBLTrack : maxChi2SeedTrack);
- maxTrkChi2.fill(Math.max(tracks.get(0).getChi2(), tracks.get(1).getChi2()));
- zVsMaxTrkChi2.fill(Math.max(tracks.get(0).getChi2(), tracks.get(1).getChi2()), v0Vtx.z());
if (trackQualityCut) {
bits.add(Cut.TRK_QUALITY);
}
boolean v0QualityCut = uncVert.getChi2() < maxVertChi2;
- v0Chi2.fill(uncVert.getChi2());
- zVsV0Chi2.fill(uncVert.getChi2(), v0Vtx.z());
if (v0QualityCut) {
bits.add(Cut.VTX_QUALITY);
}
@@ -540,10 +534,6 @@
}
boolean trackTimeDiffCut = Math.abs(trackTimes.get(0) - trackTimes.get(1)) < trkTimeDiff;
- trackTimeDiff.fill(Math.abs(trackTimes.get(0) - trackTimes.get(1)));
- hitTimeStdDev.fill(stdDev);
- zVsTrackTimeDiff.fill(Math.abs(trackTimes.get(0) - trackTimes.get(1)), v0Vtx.z());
- zVsHitTimeStdDev.fill(stdDev, v0Vtx.z());
if (trackTimeDiffCut) {
bits.add(Cut.TIMING);
}
@@ -557,16 +547,13 @@
boolean clusterMatchCut = !electron.getClusters().isEmpty() && !positron.getClusters().isEmpty();
boolean clusterTimeCut = clusterMatchCut && Math.abs(ClusterUtilities.getSeedHitTime(electron.getClusters().get(0)) - ClusterUtilities.getSeedHitTime(positron.getClusters().get(0))) < clusterTimeDiffCut;
- if (clusterMatchCut && clusterTimeCut) {
- bits.add(Cut.CLUSTER_CUTS);
- }
+//disable cut for now
+// if (clusterMatchCut && clusterTimeCut) {
+ bits.add(Cut.CLUSTER_CUTS);
+// }
boolean eventTrkCountCut = ntrk >= 2 && ntrk <= nTrkMax;
boolean eventPosCountCut = npos >= 1 && npos <= nPosMax;
- eventTrkCount.fill(ntrk);
- eventPosCount.fill(npos);
- zVsEventTrkCount.fill(ntrk, v0Vtx.z());
- zVsEventPosCount.fill(npos, v0Vtx.z());
if (eventTrkCountCut && eventPosCountCut) {
bits.add(Cut.EVENT_QUALITY);
}
@@ -576,10 +563,8 @@
bits.add(Cut.FRONT_HITS);
}
- l1Iso.fill(minL1Iso);
- zVsL1Iso.fill(minL1Iso, v0Vtx.z());
boolean isoCut = minL1Iso > l1IsoMin;
- if (isoCut) {
+ if (!frontHitsCut || isoCut) { //diagnostic plots look better if failing the front hits cut makes you pass this one
bits.add(Cut.ISOLATION);
}
@@ -597,22 +582,54 @@
for (Cut cut : Cut.values()) {
EnumSet<Cut> allButThisCut = EnumSet.allOf(Cut.class);
allButThisCut.remove(cut);
- if (bits.equals(allButThisCut)) {
+ if (bits.containsAll(allButThisCut)) {
if (uncV0.getMass() > plotsMinMass && uncV0.getMass() < plotsMaxMass) {
- cutVertexZ[cut.ordinal()][VERTEX].fill(v0Vtx.z());
+ switch (cut) {
+ case ISOLATION:
+ l1Iso.fill(minL1Iso);
+ zVsL1Iso.fill(minL1Iso, v0Vtx.z());
+ break;
+ case EVENT_QUALITY:
+ eventTrkCount.fill(ntrk);
+ eventPosCount.fill(npos);
+ zVsEventTrkCount.fill(ntrk, v0Vtx.z());
+ zVsEventPosCount.fill(npos, v0Vtx.z());
+ break;
+ case TIMING:
+ trackTimeDiff.fill(Math.abs(trackTimes.get(0) - trackTimes.get(1)));
+ hitTimeStdDev.fill(stdDev);
+ zVsTrackTimeDiff.fill(Math.abs(trackTimes.get(0) - trackTimes.get(1)), v0Vtx.z());
+ zVsHitTimeStdDev.fill(stdDev, v0Vtx.z());
+ break;
+ case VTX_QUALITY:
+ v0Chi2.fill(uncVert.getChi2());
+ zVsV0Chi2.fill(uncVert.getChi2(), v0Vtx.z());
+ break;
+ case TRK_QUALITY:
+ maxTrkChi2.fill(Math.max(tracks.get(0).getChi2(), tracks.get(1).getChi2()));
+ zVsMaxTrkChi2.fill(Math.max(tracks.get(0).getChi2(), tracks.get(1).getChi2()), v0Vtx.z());
+ break;
+ }
}
- cutVertexMass[cut.ordinal()][VERTEX].fill(uncV0.getMass());
- cutVertexZVsMass[cut.ordinal()][VERTEX].fill(uncV0.getMass(), v0Vtx.z());
+ if (!bits.contains(cut)) {
+ if (uncV0.getMass() > plotsMinMass && uncV0.getMass() < plotsMaxMass) {
+ cutVertexZ[cut.ordinal()][VERTEX].fill(v0Vtx.z());
+ }
+ cutVertexMass[cut.ordinal()][VERTEX].fill(uncV0.getMass());
+ cutVertexZVsMass[cut.ordinal()][VERTEX].fill(uncV0.getMass(), v0Vtx.z());
+ }
}
EnumSet<Cut> allTriCutsButThisCut = EnumSet.range(Cut.values()[0], Cut.values()[Cut.firstVertexingCut - 1]);
allTriCutsButThisCut.remove(cut);
- if (bits.containsAll(allTriCutsButThisCut) && !bits.contains(cut)) {
- if (uncV0.getMass() > plotsMinMass && uncV0.getMass() < plotsMaxMass) {
- cutVertexZ[cut.ordinal()][TRIDENT].fill(v0Vtx.z());
+ if (bits.containsAll(allTriCutsButThisCut)) {
+ if (!bits.contains(cut)) {
+ if (uncV0.getMass() > plotsMinMass && uncV0.getMass() < plotsMaxMass) {
+ cutVertexZ[cut.ordinal()][TRIDENT].fill(v0Vtx.z());
+ }
+ cutVertexMass[cut.ordinal()][TRIDENT].fill(uncV0.getMass());
+ cutVertexZVsMass[cut.ordinal()][TRIDENT].fill(uncV0.getMass(), v0Vtx.z());
}
- cutVertexMass[cut.ordinal()][TRIDENT].fill(uncV0.getMass());
- cutVertexZVsMass[cut.ordinal()][TRIDENT].fill(uncV0.getMass(), v0Vtx.z());
}
}
@@ -645,8 +662,8 @@
Hep3Vector pPosRot = VecOp.mult(beamAxisRotation, positron.getMomentum());
Hep3Vector v0Vtx = VecOp.mult(beamAxisRotation, bestCandidate.getStartVertex().getPosition());
- triTrackTime2D.fill(tEle, tPos);
- triTrackTimeDiff.fill(tEle - tPos);
+// triTrackTime2D.fill(tEle, tPos);
+// triTrackTimeDiff.fill(tEle - tPos);
triZVsMomentum.fill(bestCandidate.getMomentum().magnitude(), v0Vtx.z());
triMassMomentum.fill(bestCandidate.getMomentum().magnitude(), bestCandidate.getMass());
triTrackMomentum2D.fill(electron.getMomentum().magnitude(), positron.getMomentum().magnitude());
@@ -655,24 +672,24 @@
triSumP.fill(bestCandidate.getMomentum().magnitude());
triDeltaP.fill(positron.getMomentum().magnitude() - electron.getMomentum().magnitude());
- triPxPy.fill(pBestV0Rot.x(), pBestV0Rot.y());
+// triPxPy.fill(pBestV0Rot.x(), pBestV0Rot.y());
triMass.fill(bestCandidate.getMass());
triZVsMass.fill(bestCandidate.getMass(), v0Vtx.z());
- triX.fill(v0Vtx.x());
- triY.fill(v0Vtx.y());
- triZ.fill(v0Vtx.z());
- triPx.fill(pBestV0Rot.x());
- triPy.fill(pBestV0Rot.y());
- triPz.fill(pBestV0Rot.z());
- triU.fill(pBestV0Rot.x() / pBestV0Rot.magnitude());
- triV.fill(pBestV0Rot.y() / pBestV0Rot.magnitude());
- triXY.fill(v0Vtx.x(), v0Vtx.y());
- triZY.fill(v0Vtx.y(), v0Vtx.z());
+// triX.fill(v0Vtx.x());
+// triY.fill(v0Vtx.y());
+// triZ.fill(v0Vtx.z());
+// triPx.fill(pBestV0Rot.x());
+// triPy.fill(pBestV0Rot.y());
+// triPz.fill(pBestV0Rot.z());
+// triU.fill(pBestV0Rot.x() / pBestV0Rot.magnitude());
+// triV.fill(pBestV0Rot.y() / pBestV0Rot.magnitude());
+// triXY.fill(v0Vtx.x(), v0Vtx.y());
+// triZY.fill(v0Vtx.y(), v0Vtx.z());
if (bestCandidate.getMomentum().magnitude() > radCut) {
triRadTrackTime2D.fill(tEle, tPos);
triRadTrackTimeDiff.fill(tEle - tPos);
- triRadZVsMomentum.fill(bestCandidate.getMomentum().magnitude(), v0Vtx.z());
- triRadMassMomentum.fill(bestCandidate.getMomentum().magnitude(), bestCandidate.getMass());
+// triRadZVsMomentum.fill(bestCandidate.getMomentum().magnitude(), v0Vtx.z());
+// triRadMassMomentum.fill(bestCandidate.getMomentum().magnitude(), bestCandidate.getMass());
triRadTrackMomentum2D.fill(electron.getMomentum().magnitude(), positron.getMomentum().magnitude());
triRadPyEleVsPyPos.fill(pEleRot.y(), pPosRot.y());
triRadPxEleVsPxPos.fill(pEleRot.x(), pPosRot.x());
@@ -682,16 +699,16 @@
triRadPxPy.fill(pBestV0Rot.x(), pBestV0Rot.y());
triRadMass.fill(bestCandidate.getMass());
triRadZVsMass.fill(bestCandidate.getMass(), v0Vtx.z());
- triRadX.fill(v0Vtx.x());
- triRadY.fill(v0Vtx.y());
- triRadZ.fill(v0Vtx.z());
+// triRadX.fill(v0Vtx.x());
+// triRadY.fill(v0Vtx.y());
+// triRadZ.fill(v0Vtx.z());
triRadPx.fill(pBestV0Rot.x());
triRadPy.fill(pBestV0Rot.y());
triRadPz.fill(pBestV0Rot.z());
triRadU.fill(pBestV0Rot.x() / pBestV0Rot.magnitude());
triRadV.fill(pBestV0Rot.y() / pBestV0Rot.magnitude());
- triRadXY.fill(v0Vtx.x(), v0Vtx.y());
- triRadZY.fill(v0Vtx.y(), v0Vtx.z());
+// triRadXY.fill(v0Vtx.x(), v0Vtx.y());
+// triRadZY.fill(v0Vtx.y(), v0Vtx.z());
}
}
@@ -713,8 +730,8 @@
Hep3Vector pPosRot = VecOp.mult(beamAxisRotation, positron.getMomentum());
Hep3Vector v0Vtx = VecOp.mult(beamAxisRotation, bestCandidate.getStartVertex().getPosition());
- vertTrackTime2D.fill(tEle, tPos);
- vertTrackTimeDiff.fill(tEle - tPos);
+// vertTrackTime2D.fill(tEle, tPos);
+// vertTrackTimeDiff.fill(tEle - tPos);
vertZVsMomentum.fill(bestCandidate.getMomentum().magnitude(), v0Vtx.z());
vertMassMomentum.fill(bestCandidate.getMomentum().magnitude(), bestCandidate.getMass());
vertTrackMomentum2D.fill(electron.getMomentum().magnitude(), positron.getMomentum().magnitude());
@@ -723,19 +740,19 @@
vertSumP.fill(bestCandidate.getMomentum().magnitude());
vertDeltaP.fill(positron.getMomentum().magnitude() - electron.getMomentum().magnitude());
- vertPxPy.fill(pBestV0Rot.x(), pBestV0Rot.y());
+// vertPxPy.fill(pBestV0Rot.x(), pBestV0Rot.y());
vertMass.fill(bestCandidate.getMass());
vertZVsMass.fill(bestCandidate.getMass(), v0Vtx.z());
- vertX.fill(v0Vtx.x());
- vertY.fill(v0Vtx.y());
- vertZ.fill(v0Vtx.z());
- vertPx.fill(pBestV0Rot.x());
- vertPy.fill(pBestV0Rot.y());
- vertPz.fill(pBestV0Rot.z());
- vertU.fill(pBestV0Rot.x() / pBestV0Rot.magnitude());
- vertV.fill(pBestV0Rot.y() / pBestV0Rot.magnitude());
- vertXY.fill(v0Vtx.x(), v0Vtx.y());
- vertZY.fill(v0Vtx.y(), v0Vtx.z());
+// vertX.fill(v0Vtx.x());
+// vertY.fill(v0Vtx.y());
+// vertZ.fill(v0Vtx.z());
+// vertPx.fill(pBestV0Rot.x());
+// vertPy.fill(pBestV0Rot.y());
+// vertPz.fill(pBestV0Rot.z());
+// vertU.fill(pBestV0Rot.x() / pBestV0Rot.magnitude());
+// vertV.fill(pBestV0Rot.y() / pBestV0Rot.magnitude());
+// vertXY.fill(v0Vtx.x(), v0Vtx.y());
+// vertZY.fill(v0Vtx.y(), v0Vtx.z());
if (bestCandidate.getMomentum().magnitude() > radCut) {
vertRadTrackTime2D.fill(tEle, tPos);
vertRadTrackTimeDiff.fill(tEle - tPos);
Modified: java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/EvioMetadataReader.java
=============================================================================
--- java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/EvioMetadataReader.java (original)
+++ java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/EvioMetadataReader.java Tue Dec 8 20:48:40 2015
@@ -214,7 +214,15 @@
LOGGER.info("done reading " + events + " events");
// Rough trigger rate calculation.
- triggerRate = calculateTriggerRate(firstHeadTimestamp, lastHeadTimestamp, events);
+ try {
+ if (firstHeadTimestamp != null && lastHeadTimestamp != null && events > 0) {
+ triggerRate = calculateTriggerRate(firstHeadTimestamp, lastHeadTimestamp, events);
+ } else {
+ LOGGER.log(Level.WARNING, "Missing information for calculating trigger rate.");
+ }
+ } catch (Exception e) {
+ LOGGER.log(Level.WARNING, "Error calculating trigger rate.", e);
+ }
// Create and fill the metadata map.
final Map<String, Object> metadataMap = new LinkedHashMap<String, Object>();
Modified: java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/FileSet.java
=============================================================================
--- java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/FileSet.java (original)
+++ java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/FileSet.java Tue Dec 8 20:48:40 2015
@@ -12,7 +12,7 @@
*
* @author Jeremy McCormick, SLAC
*/
-public class FileSet extends HashMap<DatasetFileFormat, List<File>> {
+final class FileSet extends HashMap<DatasetFileFormat, List<File>> {
List<File> get(DatasetFileFormat format) {
if (super.get(format) == null) {
Modified: java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalOnlineRawConverter.java
=============================================================================
--- java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalOnlineRawConverter.java (original)
+++ java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalOnlineRawConverter.java Tue Dec 8 20:48:40 2015
@@ -46,7 +46,7 @@
System.out.println("======================================================================");
System.out.println("=== FADC Pulse-Processing Settings ===================================");
System.out.println("======================================================================");
- config.printConfig();
+ config.printConfig(System.out);
}
});
}
Modified: java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverter.java
=============================================================================
--- java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverter.java (original)
+++ java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverter.java Tue Dec 8 20:48:40 2015
@@ -181,7 +181,7 @@
System.out.println("======================================================================");
System.out.println("=== FADC Pulse-Processing Settings ===================================");
System.out.println("======================================================================");
- config.printConfig();
+ config.printConfig(System.out);
}
}
});
Modified: java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/ClusterPositionCorrection.java
=============================================================================
--- java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/ClusterPositionCorrection.java (original)
+++ java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/ClusterPositionCorrection.java Tue Dec 8 20:48:40 2015
@@ -12,30 +12,29 @@
* @author Jeremy McCormick <[log in to unmask]>
*/
public final class ClusterPositionCorrection {
-
+ //Parameterizations tested in MC using v3-fieldmap
+ //Nov 2015
+
// Variables for electron position corrections.
- static final double ELECTRON_POS_A1 = -0.0005813;//0.0066;
- static final double ELECTRON_POS_A2 = 0.005738;//-0.03;
- static final double ELECTRON_POS_A3 = -0.0309;
- static final double ELECTRON_POS_B1 = 0.02963;//0.028;
- static final double ELECTRON_POS_B2 = -4.289;//-0.451;
- static final double ELECTRON_POS_B3 = 4.596;//0.465;
+ static final double ELECTRON_POS_A1 = 0.004483;
+ static final double ELECTRON_POS_A2 = -0.02884;
+ static final double ELECTRON_POS_B1 = 0.6197;
+ static final double ELECTRON_POS_B2 = -2.279;
+ static final double ELECTRON_POS_B3 = 3.66;
// Variables for positron position corrections.
- static final double POSITRON_POS_A1 = -0.0006243;//0.0072;
- static final double POSITRON_POS_A2 = 0.006799;//-0.031;
- static final double POSITRON_POS_A3 = -0.03141;
- static final double POSITRON_POS_B1 = 0.0869;//0.007;
- static final double POSITRON_POS_B2 = 2.965;//0.342;
- static final double POSITRON_POS_B3 = 1.653;//0.108;
+ static final double POSITRON_POS_A1 = 0.006887;
+ static final double POSITRON_POS_A2 = -0.03207;
+ static final double POSITRON_POS_B1 = -0.8048;
+ static final double POSITRON_POS_B2 = 0.9366;
+ static final double POSITRON_POS_B3 = 2.628;
// Variables for photon position corrections.
- static final double PHOTON_POS_A1 = -0.0006329;//0.005;
- static final double PHOTON_POS_A2 = 0.00595;//-0.032;
- static final double PHOTON_POS_A3 = -0.03563;
- static final double PHOTON_POS_B1 = 0.06444;//0.011;
- static final double PHOTON_POS_B2 = -0.5836;//-0.037;
- static final double PHOTON_POS_B3 = 3.508;//0.294;
+ static final double PHOTON_POS_A1 = 0.005385;
+ static final double PHOTON_POS_A2 = -0.03562;
+ static final double PHOTON_POS_B1 = -0.1948;
+ static final double PHOTON_POS_B2 = -0.7991;
+ static final double PHOTON_POS_B3 = 3.797;
public static double[] calculateCorrectedPosition(Cluster cluster) {
@@ -66,13 +65,13 @@
double xCorr;
switch(pdg) {
case 11: //Particle is electron
- xCorr = positionCorrection(xPos, rawEnergy, ELECTRON_POS_A1, ELECTRON_POS_A2, ELECTRON_POS_A3, ELECTRON_POS_B1, ELECTRON_POS_B2, ELECTRON_POS_B3);
+ xCorr = positionCorrection(xPos, rawEnergy, ELECTRON_POS_A1, ELECTRON_POS_A2, ELECTRON_POS_B1, ELECTRON_POS_B2, ELECTRON_POS_B3);
return xCorr;
case -11:// Particle is positron
- xCorr = positionCorrection(xPos, rawEnergy, POSITRON_POS_A1, POSITRON_POS_A2, POSITRON_POS_A3, POSITRON_POS_B1, POSITRON_POS_B2, POSITRON_POS_B3);
+ xCorr = positionCorrection(xPos, rawEnergy, POSITRON_POS_A1, POSITRON_POS_A2, POSITRON_POS_B1, POSITRON_POS_B2, POSITRON_POS_B3);
return xCorr;
case 22: // Particle is photon
- xCorr = positionCorrection(xPos, rawEnergy, PHOTON_POS_A1, PHOTON_POS_A2, PHOTON_POS_A3, PHOTON_POS_B1, PHOTON_POS_B2, PHOTON_POS_B3);
+ xCorr = positionCorrection(xPos, rawEnergy, PHOTON_POS_A1, PHOTON_POS_A2, PHOTON_POS_B1, PHOTON_POS_B2, PHOTON_POS_B3);
return xCorr;
default: //Unknown
xCorr = xPos;
@@ -94,8 +93,8 @@
* @param varB3
* @return
*/
- private static double positionCorrection(double xCl, double rawEnergy, double varA1, double varA2, double varA3, double varB1, double varB2, double varB3) {
+ private static double positionCorrection(double xCl, double rawEnergy, double varA1, double varA2, double varB1, double varB2, double varB3) {
//return ((xCl - (varB1 * rawEnergy + varB2 / Math.sqrt(rawEnergy) + varB3))/(varA1 / Math.sqrt(rawEnergy) + varA2 + 1));
- return ((xCl - (varB1 * rawEnergy + varB2 / Math.sqrt(rawEnergy) + varB3))/(varA1 * rawEnergy + varA2 / Math.sqrt(rawEnergy) + varA3 + 1));
+ return ((xCl - (varB1 * rawEnergy + varB2 / Math.sqrt(rawEnergy) + varB3))/(varA1 / Math.sqrt(rawEnergy) + varA2 + 1));
}
-}
+}
Modified: java/branches/jeremy-dev/job/src/main/java/org/hps/job/JobManager.java
=============================================================================
--- java/branches/jeremy-dev/job/src/main/java/org/hps/job/JobManager.java (original)
+++ java/branches/jeremy-dev/job/src/main/java/org/hps/job/JobManager.java Tue Dec 8 20:48:40 2015
@@ -1,5 +1,10 @@
package org.hps.job;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.Options;
import org.hps.conditions.ConditionsDriver;
import org.hps.conditions.database.DatabaseConditionsManager;
import org.hps.detector.svt.SvtDetectorSetup;
@@ -15,6 +20,11 @@
*/
public class JobManager extends JobControlManager {
+ /**
+ * The set of conditions tags (none by default).
+ */
+ private Set<String> tags = null;
+
/**
* Run the job manager from the command line.
*
@@ -33,6 +43,25 @@
public JobManager() {
}
+ @Override
+ protected Options createCommandLineOptions() {
+ Options options = super.createCommandLineOptions();
+ options.addOption("t", "tag", true, "conditions system tag (can be used multiple times)");
+ return options;
+ }
+
+ @Override
+ public CommandLine parse(final String args[]) {
+ CommandLine commandLine = super.parse(args);
+ if (commandLine.hasOption("t")) {
+ tags = new HashSet<String>();
+ for (String tag : commandLine.getOptionValues("t")) {
+ tags.add(tag);
+ }
+ }
+ return commandLine;
+ }
+
/**
* Initialize the conditions system for the job.
* <p>
@@ -52,21 +81,26 @@
// Add class that will setup SVT detector with conditions data.
dbManager.addConditionsListener(new SvtDetectorSetup());
-
- // Call super method which will initialize conditions system if the detector and run were provided.
+
+ // Add conditions system tags.
+ if (this.tags != null) {
+ dbManager.addTags(tags);
+ }
+
+ // Call super method which will initialize the conditions system if both the detector and run were provided.
super.initializeConditions();
- // Setup from conditions driver (to be deleted soon).
+ // Setup from conditions driver (to be deleted soon!).
if (!dbManager.isInitialized()) {
setupConditionsDriver();
} else {
// Command line options overrode the conditions driver.
- LOGGER.config("conditions driver was overridden by command line options");
+ LOGGER.config("Conditions driver was overridden by command line options!");
}
if (dbManager.isInitialized()) {
- // Assume conditions system should be frozen since detector and run were provided explicitly.
- LOGGER.config("job manager freezing conditions system");
+ // Assume conditions system should be frozen since detector and run were both set explicitly.
+ LOGGER.config("Job manager is freezing the conditions system.");
dbManager.freeze();
}
}
@@ -84,6 +118,9 @@
// Close the conditions database connection if it is open.
DatabaseConditionsManager.getInstance().closeConnection();
+
+ // Close the connection to the run db if necessary.
+ RunManager.getRunManager().closeConnection();
return result;
}
Modified: java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/util/TableExporter.java
=============================================================================
--- java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/util/TableExporter.java (original)
+++ java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/util/TableExporter.java Tue Dec 8 20:48:40 2015
@@ -33,7 +33,7 @@
// Column headers.
for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) {
- buffer.append("\"" + model.getColumnName(columnIndex) + "\"" + fieldDelimiter);
+ buffer.append("\"" + model.getColumnName(columnIndex) + "\"" + fieldDelimiter + ",");
}
buffer.setLength(buffer.length() - 1);
buffer.append('\n');
@@ -47,6 +47,7 @@
} else {
buffer.append("\"" + value + "\"" + fieldDelimiter);
}
+ buffer.append(",");
}
buffer.setLength(buffer.length() - 1);
buffer.append('\n');
Modified: java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/PedestalPlots.java
=============================================================================
--- java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/PedestalPlots.java (original)
+++ java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/PedestalPlots.java Tue Dec 8 20:48:40 2015
@@ -23,6 +23,7 @@
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.hps.recon.tracking.SvtPlotUtils;
//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
//===> import org.hps.conditions.deprecated.SvtUtils;
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
Modified: java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java
=============================================================================
--- java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java (original)
+++ java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java Tue Dec 8 20:48:40 2015
@@ -28,6 +28,7 @@
import org.hps.conditions.svt.SvtBiasMyaDataReader;
import org.hps.conditions.svt.SvtBiasMyaDataReader.SvtBiasMyaRange;
import org.hps.conditions.svt.SvtBiasMyaDataReader.SvtBiasRunRange;
+import org.hps.recon.tracking.SvtPlotUtils;
import org.hps.record.epics.EpicsData;
import org.hps.record.triggerbank.AbstractIntData;
import org.hps.record.triggerbank.HeadBankData;
Modified: java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java
=============================================================================
--- java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java (original)
+++ java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java Tue Dec 8 20:48:40 2015
@@ -36,6 +36,7 @@
import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType;
import org.lcsim.util.Driver;
+import org.hps.recon.tracking.SvtPlotUtils;
import org.hps.record.triggerbank.AbstractIntData;
import org.hps.record.triggerbank.TIData;
import org.lcsim.util.aida.AIDA;
Modified: java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java
=============================================================================
--- java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java (original)
+++ java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java Tue Dec 8 20:48:40 2015
@@ -16,6 +16,7 @@
import hep.aida.jfree.plotter.Plotter;
import hep.aida.jfree.plotter.PlotterRegion;
import hep.aida.ref.rootwriter.RootFileStore;
+
import java.util.HashSet;
import java.util.Set;
@@ -25,8 +26,8 @@
import org.lcsim.geometry.Detector;
import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
import org.lcsim.util.Driver;
-
import org.hps.recon.tracking.FittedRawTrackerHit;
+import org.hps.recon.tracking.SvtPlotUtils;
import org.lcsim.detector.tracker.silicon.DopedSilicon;
import org.lcsim.util.aida.AIDA;
Modified: java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java
=============================================================================
--- java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java (original)
+++ java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java Tue Dec 8 20:48:40 2015
@@ -2,6 +2,7 @@
import hep.aida.IAnalysisFactory;
import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
import hep.aida.IHistogramFactory;
import hep.aida.IPlotter;
import hep.aida.IPlotterFactory;
@@ -9,18 +10,19 @@
import hep.aida.ITree;
import hep.aida.jfree.plotter.Plotter;
import hep.aida.jfree.plotter.PlotterRegion;
-
+import hep.aida.ref.rootwriter.RootFileStore;
+
+import java.io.IOException;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
-
+
+import org.hps.recon.tracking.SvtPlotUtils;
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
-import org.lcsim.util.Driver;
-import org.lcsim.geometry.Detector;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
+import org.lcsim.geometry.Detector;
+import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
/**
@@ -28,6 +30,8 @@
* event.
*
* @author Omar Moreno <[log in to unmask]>
+ * @author Per Hansson Adrian <[log in to unmask]>
+ *
*/
public class SvtHitPlots extends Driver {
@@ -49,6 +53,8 @@
private static Map<String, IHistogram1D> layersHitPlots = new HashMap<String, IHistogram1D>();
private static Map<String, IHistogram1D> hitCountPlots = new HashMap<String, IHistogram1D>();
private static Map<String, IHistogram1D> firstSamplePlots = new HashMap<String, IHistogram1D>();
+ private static Map<String, IHistogram1D> firstSamplePlotsNoise = new HashMap<String, IHistogram1D>();
+ private static Map<String, IHistogram2D> firstSamplePlotsNoisePerChannel = new HashMap<String, IHistogram2D>();
private List<HpsSiSensor> sensors;
@@ -62,6 +68,10 @@
double totalBotHitCount = 0;
private boolean dropSmallHitEvents = true;
+ private static final boolean debug = false;
+ private static final boolean doPerChannelSamplePlots = false;
+ private static final boolean saveRootFile = false;
+ private String outputRootFilename = "";
public void setDropSmallHitEvents(boolean dropSmallHitEvents) {
this.dropSmallHitEvents = dropSmallHitEvents;
@@ -137,6 +147,9 @@
for (HpsSiSensor sensor : sensors) {
hitsPerSensorPlots.get(sensor.getName()).reset();
firstSamplePlots.get(sensor.getName()).reset();
+ firstSamplePlotsNoise.get(sensor.getName()).reset();
+ if(doPerChannelSamplePlots)
+ firstSamplePlotsNoisePerChannel.get(sensor.getName()).reset();
}
for (IHistogram1D histogram : layersHitPlots.values()) {
@@ -203,11 +216,34 @@
plotters.put("First sample distributions (pedestal shifts)", plotterFactory.create("First sample distributions (pedestal shifts)"));
plotters.get("First sample distributions (pedestal shifts)").createRegions(6, 6);
+
+ plotters.put("First sample distributions (pedestal shifts, MAX_SAMPLE>=4)", plotterFactory.create("First sample distributions (pedestal shifts, MAX_SAMPLE>=4)"));
+ plotters.get("First sample distributions (pedestal shifts, MAX_SAMPLE>=4)").createRegions(6, 6);
+
+ if(doPerChannelSamplePlots) {
+ plotters.put("First sample channel distributions (pedestal shifts, MAX_SAMPLE>=4)", plotterFactory.create("First sample channel distributions (pedestal shifts, MAX_SAMPLE>=4)"));
+ plotters.get("First sample channel distributions (pedestal shifts, MAX_SAMPLE>=4)").createRegions(6, 6);
+ }
+
+
for (HpsSiSensor sensor : sensors) {
firstSamplePlots.put(sensor.getName(),
histogramFactory.createHistogram1D(sensor.getName() + " - first sample", 100, -500.0, 2000.0));
plotters.get("First sample distributions (pedestal shifts)").region(this.computePlotterRegion(sensor))
.plot(firstSamplePlots.get(sensor.getName()), this.createStyle(sensor, "First sample - pedestal [ADC counts]", ""));
+ firstSamplePlotsNoise.put(sensor.getName(),
+ histogramFactory.createHistogram1D(sensor.getName() + " - first sample (MAX_SAMPLE>=4)", 100, -500.0, 2000.0));
+ plotters.get("First sample distributions (pedestal shifts, MAX_SAMPLE>=4)").region(this.computePlotterRegion(sensor))
+ .plot(firstSamplePlotsNoise.get(sensor.getName()), this.createStyle(sensor, "First sample - pedestal (MAX_SAMPLE>=4) [ADC counts]", ""));
+
+ if( doPerChannelSamplePlots ) {
+ firstSamplePlotsNoisePerChannel.put(sensor.getName(),
+ histogramFactory.createHistogram2D(sensor.getName() + " channels - first sample (MAX_SAMPLE>=4)", 640, -0.5,639.5, 20, -500.0, 500.0));
+ plotters.get("First sample channel distributions (pedestal shifts, MAX_SAMPLE>=4)").region(this.computePlotterRegion(sensor))
+ .plot(firstSamplePlotsNoisePerChannel.get(sensor.getName()), this.createStyle(sensor, "First sample channels - pedestal (MAX_SAMPLE>=4) [ADC counts]", ""));
+ }
+
+
}
for (IPlotter plotter : plotters.values()) {
@@ -228,8 +264,15 @@
return;
}
+ if(debug && ((int) eventCount % 100 == 0) )
+ System.out.println(this.getClass().getSimpleName() + ": processed " + String.valueOf(eventCount) + " events");
+
eventCount++;
-
+
+
+ if(outputRootFilename.isEmpty())
+ outputRootFilename = "run" + String.valueOf( event.getRunNumber());
+
// Get RawTrackerHit collection from event.
List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
@@ -240,8 +283,28 @@
this.clearHitMaps();
for (RawTrackerHit rawHit : rawHits) {
HpsSiSensor sensor = (HpsSiSensor) rawHit.getDetectorElement();
+ int channel = rawHit.getIdentifierFieldValue("strip");
+ double pedestal = sensor.getPedestal(channel,0);
+ // Find the sample with maximum ADC count
+ int maxSample = 0;
+ double maxSampleValue = 0;
+ for (int s = 0; s < 6; ++s) {
+ if (((double) rawHit.getADCValues()[s] - pedestal) > maxSampleValue) {
+ maxSample = s;
+ maxSampleValue = ((double) rawHit.getADCValues()[s]) - pedestal;
+ }
+ }
+
hitsPerSensor.get(sensor.getName())[0]++;
- firstSamplePlots.get(sensor.getName()).fill(rawHit.getADCValues()[0] - sensor.getPedestal(rawHit.getIdentifierFieldValue("strip"), 0));
+ firstSamplePlots.get(sensor.getName()).fill(rawHit.getADCValues()[0] - pedestal);
+ if (maxSample >= 4) {
+ firstSamplePlotsNoise.get(sensor.getName()).fill(rawHit.getADCValues()[0] - pedestal);
+
+ if( doPerChannelSamplePlots ) {
+ firstSamplePlotsNoisePerChannel.get(sensor.getName()).fill(channel, rawHit.getADCValues()[0] - pedestal);
+ }
+
+ }
}
int[] topLayersHit = new int[12];
@@ -300,6 +363,19 @@
System.out.println("% Total Top SVT Hits/Event: " + totalTopHitCount / eventCount);
System.out.println("% Total Bottom SVT Hits/Event: " + totalBotHitCount / eventCount);
System.out.println("\n%================================================%");
+
+ if(saveRootFile) {
+ String rootFileName = outputRootFilename.isEmpty() ? "svthitplots.root" : outputRootFilename + "_svthitplots.root";
+ RootFileStore rootFileStore = new RootFileStore(rootFileName);
+ try {
+ rootFileStore.open();
+ rootFileStore.add(tree);
+ rootFileStore.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
}
}
Modified: java/branches/jeremy-dev/parent/pom.xml
=============================================================================
--- java/branches/jeremy-dev/parent/pom.xml (original)
+++ java/branches/jeremy-dev/parent/pom.xml Tue Dec 8 20:48:40 2015
@@ -290,6 +290,11 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.lcsim</groupId>
+ <artifactId>lcsim-detector-framework</artifactId>
+ <version>3.1.6-SNAPSHOT</version>
+ </dependency>
</dependencies>
</dependencyManagement>
<reporting>
Modified: java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java
=============================================================================
--- java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java (original)
+++ java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java Tue Dec 8 20:48:40 2015
@@ -645,7 +645,7 @@
// Beam size variables.
// The beamsize array is in the tracking frame
/* TODO mg-May 14, 2014: the the beam size from the conditions db...also beam position! */
- protected double[] beamSize = {0.001, 0.2, 0.02};
+ protected double[] beamSize = {0.001, 0.130, 0.050}; //rough estimate from harp scans during engineering run production running
protected double bField;
// flipSign is a kludge...
Modified: java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/utils/TrackClusterMatcher.java
=============================================================================
--- java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/utils/TrackClusterMatcher.java (original)
+++ java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/utils/TrackClusterMatcher.java Tue Dec 8 20:48:40 2015
@@ -173,6 +173,31 @@
this.topClusterTrackMatchDeltaYHigh = yHigh;
}
+ /**
+ * Get distance between track and cluster.
+ *
+ * @param cluster
+ * @param track
+ * @return distance between cluster and track
+ */
+ public double getDistance(Cluster cluster,Track track) {
+
+ // Get the cluster position
+ Hep3Vector cPos = new BasicHep3Vector(cluster.getPosition());
+
+ // Extrapolate the track to the Ecal cluster position
+ Hep3Vector tPos = null;
+ if (this.useAnalyticExtrapolator) {
+ tPos = TrackUtils.extrapolateTrack(track, cPos.z());
+ } else {
+ TrackState trackStateAtEcal = TrackUtils.getTrackStateAtECal(track);
+ tPos = new BasicHep3Vector(trackStateAtEcal.getReferencePoint());
+ tPos = CoordinateTransformations.transformVectorToDetector(tPos);
+ }
+
+ return Math.sqrt(Math.pow(cPos.x()-tPos.x(),2)+Math.pow(cPos.y()-tPos.y(),2));
+ }
+
/**
* Determine if a track is matched to a cluster. Currently, this is
* determined by checking that the track and cluster are within the same
Modified: java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/DAQConfig.java
=============================================================================
--- java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/DAQConfig.java (original)
+++ java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/DAQConfig.java Tue Dec 8 20:48:40 2015
@@ -1,4 +1,8 @@
package org.hps.record.daqconfig;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
/**
* Class <code>DAQConfig</code> holds all of the supported parameters
@@ -47,13 +51,23 @@
}
@Override
- public void printConfig() {
+ public void printConfig(PrintStream ps) {
// Print the system-specific objects.
- fadcConfig.printConfig();
- System.out.println();
- gtpConfig.printConfig();
- System.out.println();
- sspConfig.printConfig();
+ fadcConfig.printConfig(ps);
+ ps.println();
+ gtpConfig.printConfig(ps);
+ ps.println();
+ sspConfig.printConfig(ps);
}
-
-}
+
+ public String toString() {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ PrintStream ps = new PrintStream(os);
+ printConfig(ps);
+ try {
+ return os.toString("UTF8");
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
Modified: java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/FADCConfig.java
=============================================================================
--- java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/FADCConfig.java (original)
+++ java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/FADCConfig.java Tue Dec 8 20:48:40 2015
@@ -1,6 +1,7 @@
package org.hps.record.daqconfig;
import java.awt.Point;
+import java.io.PrintStream;
import java.util.HashMap;
import java.util.Map;
@@ -305,18 +306,18 @@
}
@Override
- public void printConfig() {
+ public void printConfig(PrintStream ps) {
// Print the basic configuration information.
- System.out.println("FADC Configuration:");
- System.out.printf("\tMode :: %d%n", mode);
- System.out.printf("\tNSA :: %d%n", nsa);
- System.out.printf("\tNSB :: %d%n", nsb);
- System.out.printf("\tWindow Width :: %d%n", windowWidth);
- System.out.printf("\tWindow Offset :: %d%n", offset);
- System.out.printf("\tMax Peaks :: %d%n", maxPulses);
+ ps.println("FADC Configuration:");
+ ps.printf("\tMode :: %d%n", mode);
+ ps.printf("\tNSA :: %d%n", nsa);
+ ps.printf("\tNSB :: %d%n", nsb);
+ ps.printf("\tWindow Width :: %d%n", windowWidth);
+ ps.printf("\tWindow Offset :: %d%n", offset);
+ ps.printf("\tMax Peaks :: %d%n", maxPulses);
// Output the pedestal/gain write-out header.
- System.out.println("\tix\tiy\tPedestal (ADC)\tGain (MeV/ADC)\tThreshold (ADC)");
+ ps.println("\tix\tiy\tPedestal (ADC)\tGain (MeV/ADC)\tThreshold (ADC)");
// Iterate over each crystal y-index.
yLoop:
@@ -335,7 +336,7 @@
// Output the crystal indices, pedestal, and gain.
int channelID = indexChannelMap.get(new Point(ix, iy));
- System.out.printf("\t%3d\t%3d\t%8.3f\t%8.3f\t%4d%n", ix, iy,
+ ps.printf("\t%3d\t%3d\t%8.3f\t%8.3f\t%4d%n", ix, iy,
getPedestal(channelID), getGain(channelID), getThreshold(channelID));
}
}
Modified: java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/GTPConfig.java
=============================================================================
--- java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/GTPConfig.java (original)
+++ java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/GTPConfig.java Tue Dec 8 20:48:40 2015
@@ -1,4 +1,6 @@
package org.hps.record.daqconfig;
+
+import java.io.PrintStream;
/**
* Class <code>GTPConfig</code> stores GTP configuration settings
@@ -57,14 +59,14 @@
}
@Override
- public void printConfig() {
+ public void printConfig(PrintStream ps) {
// Print the configuration header.
- System.out.println("GTP Configuration:");
+ ps.println("GTP Configuration:");
// Print the GTP settings.
- System.out.printf("\tTime Window Before :: %d clock-cycles%n", windowBefore);
- System.out.printf("\tTime Window After :: %d clock-cycles%n", windowAfter);
- System.out.printf("\tSeed Energy Min :: %5.3f GeV%n", seedCut.getLowerBound());
+ ps.printf("\tTime Window Before :: %d clock-cycles%n", windowBefore);
+ ps.printf("\tTime Window After :: %d clock-cycles%n", windowAfter);
+ ps.printf("\tSeed Energy Min :: %5.3f GeV%n", seedCut.getLowerBound());
}
}
Modified: java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/IDAQConfig.java
=============================================================================
--- java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/IDAQConfig.java (original)
+++ java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/IDAQConfig.java Tue Dec 8 20:48:40 2015
@@ -1,4 +1,6 @@
package org.hps.record.daqconfig;
+
+import java.io.PrintStream;
/**
@@ -20,5 +22,5 @@
* Prints a textual representation of the configuration bank to the
* terminal.
*/
- public abstract void printConfig();
+ public abstract void printConfig(PrintStream ps);
}
Modified: java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/SSPConfig.java
=============================================================================
--- java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/SSPConfig.java (original)
+++ java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/daqconfig/SSPConfig.java Tue Dec 8 20:48:40 2015
@@ -1,4 +1,6 @@
package org.hps.record.daqconfig;
+
+import java.io.PrintStream;
/**
@@ -98,64 +100,64 @@
}
@Override
- public void printConfig() {
+ public void printConfig(PrintStream ps) {
// Print the configuration header.
- System.out.println("SSP Configuration:");
+ ps.println("SSP Configuration:");
// Print the singles triggers.
for(int triggerNum = 0; triggerNum < 2; triggerNum++) {
- System.out.printf("\tSingles Trigger %d%n", (triggerNum + 1));
- System.out.println("\t\tCluster Energy Lower Bound Cut");
- System.out.printf("\t\t\tEnabled :: %b%n", singlesTrigger[triggerNum].getEnergyMinCutConfig().isEnabled());
- System.out.printf("\t\t\tValue :: %5.3f GeV%n", singlesTrigger[triggerNum].getEnergyMinCutConfig().getLowerBound());
+ ps.printf("\tSingles Trigger %d%n", (triggerNum + 1));
+ ps.println("\t\tCluster Energy Lower Bound Cut");
+ ps.printf("\t\t\tEnabled :: %b%n", singlesTrigger[triggerNum].getEnergyMinCutConfig().isEnabled());
+ ps.printf("\t\t\tValue :: %5.3f GeV%n", singlesTrigger[triggerNum].getEnergyMinCutConfig().getLowerBound());
- System.out.println("\t\tCluster Energy Upper Bound Cut");
- System.out.printf("\t\t\tEnabled :: %b%n", singlesTrigger[triggerNum].getEnergyMaxCutConfig().isEnabled());
- System.out.printf("\t\t\tValue :: %5.3f GeV%n", singlesTrigger[triggerNum].getEnergyMaxCutConfig().getUpperBound());
+ ps.println("\t\tCluster Energy Upper Bound Cut");
+ ps.printf("\t\t\tEnabled :: %b%n", singlesTrigger[triggerNum].getEnergyMaxCutConfig().isEnabled());
+ ps.printf("\t\t\tValue :: %5.3f GeV%n", singlesTrigger[triggerNum].getEnergyMaxCutConfig().getUpperBound());
- System.out.println("\t\tCluster Hit Count Cut");
- System.out.printf("\t\t\tEnabled :: %b%n", singlesTrigger[triggerNum].getHitCountCutConfig().isEnabled());
- System.out.printf("\t\t\tValue :: %1.0f hits%n", singlesTrigger[triggerNum].getHitCountCutConfig().getLowerBound());
- System.out.println();
+ ps.println("\t\tCluster Hit Count Cut");
+ ps.printf("\t\t\tEnabled :: %b%n", singlesTrigger[triggerNum].getHitCountCutConfig().isEnabled());
+ ps.printf("\t\t\tValue :: %1.0f hits%n", singlesTrigger[triggerNum].getHitCountCutConfig().getLowerBound());
+ ps.println();
}
// Print the pair triggers.
for(int triggerNum = 0; triggerNum < 2; triggerNum++) {
- System.out.printf("\tPair Trigger %d%n", (triggerNum + 1));
- System.out.println("\t\tCluster Energy Lower Bound Cut");
- System.out.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getEnergyMinCutConfig().isEnabled());
- System.out.printf("\t\t\tValue :: %5.3f GeV%n", pairTrigger[triggerNum].getEnergyMinCutConfig().getLowerBound());
+ ps.printf("\tPair Trigger %d%n", (triggerNum + 1));
+ ps.println("\t\tCluster Energy Lower Bound Cut");
+ ps.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getEnergyMinCutConfig().isEnabled());
+ ps.printf("\t\t\tValue :: %5.3f GeV%n", pairTrigger[triggerNum].getEnergyMinCutConfig().getLowerBound());
- System.out.println("\t\tCluster Energy Upper Bound Cut");
- System.out.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getEnergyMaxCutConfig().isEnabled());
- System.out.printf("\t\t\tValue :: %5.3f GeV%n", pairTrigger[triggerNum].getEnergyMaxCutConfig().getUpperBound());
+ ps.println("\t\tCluster Energy Upper Bound Cut");
+ ps.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getEnergyMaxCutConfig().isEnabled());
+ ps.printf("\t\t\tValue :: %5.3f GeV%n", pairTrigger[triggerNum].getEnergyMaxCutConfig().getUpperBound());
- System.out.println("\t\tCluster Hit Count Cut");
- System.out.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getHitCountCutConfig().isEnabled());
- System.out.printf("\t\t\tValue :: %1.0f hits%n", pairTrigger[triggerNum].getHitCountCutConfig().getLowerBound());
+ ps.println("\t\tCluster Hit Count Cut");
+ ps.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getHitCountCutConfig().isEnabled());
+ ps.printf("\t\t\tValue :: %1.0f hits%n", pairTrigger[triggerNum].getHitCountCutConfig().getLowerBound());
- System.out.println("\t\tPair Energy Sum Cut");
- System.out.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getEnergySumCutConfig().isEnabled());
- System.out.printf("\t\t\tMin :: %5.3f GeV%n", pairTrigger[triggerNum].getEnergySumCutConfig().getLowerBound());
- System.out.printf("\t\t\tMax :: %5.3f GeV%n", pairTrigger[triggerNum].getEnergySumCutConfig().getUpperBound());
+ ps.println("\t\tPair Energy Sum Cut");
+ ps.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getEnergySumCutConfig().isEnabled());
+ ps.printf("\t\t\tMin :: %5.3f GeV%n", pairTrigger[triggerNum].getEnergySumCutConfig().getLowerBound());
+ ps.printf("\t\t\tMax :: %5.3f GeV%n", pairTrigger[triggerNum].getEnergySumCutConfig().getUpperBound());
- System.out.println("\t\tPair Energy Difference Cut");
- System.out.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getEnergyDifferenceCutConfig().isEnabled());
- System.out.printf("\t\t\tValue :: %5.3f GeV%n", pairTrigger[triggerNum].getEnergyDifferenceCutConfig().getUpperBound());
+ ps.println("\t\tPair Energy Difference Cut");
+ ps.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getEnergyDifferenceCutConfig().isEnabled());
+ ps.printf("\t\t\tValue :: %5.3f GeV%n", pairTrigger[triggerNum].getEnergyDifferenceCutConfig().getUpperBound());
- System.out.println("\t\tPair Energy Slope Cut");
- System.out.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getEnergySlopeCutConfig().isEnabled());
- System.out.printf("\t\t\tValue :: %5.3f GeV%n", pairTrigger[triggerNum].getEnergySlopeCutConfig().getLowerBound());
- System.out.printf("\t\t\tParam F :: %6.4f GeV/mm%n", pairTrigger[triggerNum].getEnergySlopeCutConfig().getParameterF());
+ ps.println("\t\tPair Energy Slope Cut");
+ ps.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getEnergySlopeCutConfig().isEnabled());
+ ps.printf("\t\t\tValue :: %5.3f GeV%n", pairTrigger[triggerNum].getEnergySlopeCutConfig().getLowerBound());
+ ps.printf("\t\t\tParam F :: %6.4f GeV/mm%n", pairTrigger[triggerNum].getEnergySlopeCutConfig().getParameterF());
- System.out.println("\t\tPair Coplanarity Cut");
- System.out.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getCoplanarityCutConfig().isEnabled());
- System.out.printf("\t\t\tValue :: %3.0f degrees%n", pairTrigger[triggerNum].getCoplanarityCutConfig().getUpperBound());
+ ps.println("\t\tPair Coplanarity Cut");
+ ps.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getCoplanarityCutConfig().isEnabled());
+ ps.printf("\t\t\tValue :: %3.0f degrees%n", pairTrigger[triggerNum].getCoplanarityCutConfig().getUpperBound());
- System.out.println("\t\tPair Time Coincidence Cut");
- System.out.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getTimeDifferenceCutConfig().isEnabled());
- System.out.printf("\t\t\tValue :: %1.0f clock-cycles%n", pairTrigger[triggerNum].getTimeDifferenceCutConfig().getUpperBound());
- System.out.println();
+ ps.println("\t\tPair Time Coincidence Cut");
+ ps.printf("\t\t\tEnabled :: %b%n", pairTrigger[triggerNum].getTimeDifferenceCutConfig().isEnabled());
+ ps.printf("\t\t\tValue :: %1.0f clock-cycles%n", pairTrigger[triggerNum].getTimeDifferenceCutConfig().getUpperBound());
+ ps.println();
}
}
}
Modified: java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/epics/EpicsData.java
=============================================================================
--- java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/epics/EpicsData.java (original)
+++ java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/epics/EpicsData.java Tue Dec 8 20:48:40 2015
@@ -276,6 +276,7 @@
* @param evioEvent the EVIO event
* @return the EPICS data or <code>null</code> if it is not present in the event
*/
+ // FIXME: Not currently used.
public static EpicsData getEpicsData(EvioEvent evioEvent) {
EpicsData epicsData = null;
Modified: java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/epics/EpicsRunProcessor.java
=============================================================================
--- java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/epics/EpicsRunProcessor.java (original)
+++ java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/epics/EpicsRunProcessor.java Tue Dec 8 20:48:40 2015
@@ -66,7 +66,7 @@
// Add EPICS data to the collection.
if (this.currentEpicsData != null) {
- LOGGER.info("Adding EPICS data with run " + this.currentEpicsData.getEpicsHeader().getRun() + "; timestamp "
+ LOGGER.fine("Adding EPICS data with run " + this.currentEpicsData.getEpicsHeader().getRun() + "; timestamp "
+ this.currentEpicsData.getEpicsHeader().getTimestamp() + "; seq "
+ this.currentEpicsData.getEpicsHeader().getSequence() + ".");
this.epicsDataSet.add(this.currentEpicsData);
Modified: java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/evio/EvioFileSource.java
=============================================================================
--- java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/evio/EvioFileSource.java (original)
+++ java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/evio/EvioFileSource.java Tue Dec 8 20:48:40 2015
@@ -4,6 +4,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.logging.Logger;
import org.freehep.record.source.NoSuchRecordException;
import org.hps.record.AbstractRecordQueue;
@@ -19,6 +20,8 @@
*/
public final class EvioFileSource extends AbstractRecordQueue<EvioEvent> {
+ private static final Logger LOGGER = Logger.getLogger(EvioFileSource.class.getPackage().getName());
+
/**
* The current event.
*/
@@ -158,6 +161,7 @@
private void openReader() {
try {
// FIXME: This should use the reader directly and MSS paths should be transformed externally.
+ LOGGER.info("opening EVIO file " + this.files.get(this.fileIndex).getPath() + " ...");
this.reader = EvioFileUtilities.open(this.files.get(this.fileIndex), true);
} catch (EvioException | IOException e) {
throw new RuntimeException(e);
Modified: java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/triggerbank/TriggerModule.java
=============================================================================
--- java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/triggerbank/TriggerModule.java (original)
+++ java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/triggerbank/TriggerModule.java Tue Dec 8 20:48:40 2015
@@ -449,8 +449,22 @@
* be calculated.
* @return Returns displacement of the cluster.
*/
- // TODO: What defines cluster distance?
public static double getClusterDistance(Cluster cluster) {
+ // Get the variables from the cluster.
+ double x = getClusterX(cluster);
+ double y = getClusterY(cluster);
+
+ // Perform the calculation.
+ return getClusterDistance(x, y);
+ }
+
+ /**
+ * Calculates the distance between the origin and a cluster.
+ * @param cluster - The cluster pair from which the value should
+ * be calculated.
+ * @return Returns displacement of the cluster.
+ */
+ public static double getClusterDistance(SSPCluster cluster) {
// Get the variables from the cluster.
double x = getClusterX(cluster);
double y = getClusterY(cluster);
Modified: java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/EpicsType.java
=============================================================================
--- java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/EpicsType.java (original)
+++ java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/EpicsType.java Tue Dec 8 20:48:40 2015
@@ -8,16 +8,17 @@
*
* @author Jeremy McCormick, SLAC
*/
+// FIXME: move to record-util
public enum EpicsType {
/**
* 20S EPICS data.
*/
- EPICS_20s(20),
+ EPICS_20S(20),
/**
* 2S EPICS data.
*/
- EPICS_2s(2);
+ EPICS_2S(2);
/**
* Get the type from an int.
@@ -27,10 +28,10 @@
* @throws IllegalArgumentException if <code>type</code> is invalid (not 2 or 20)
*/
public static EpicsType fromInt(final int type) {
- if (type == EPICS_2s.type) {
- return EPICS_2s;
- } else if (type == EPICS_20s.type) {
- return EPICS_20s;
+ if (type == EPICS_2S.type) {
+ return EPICS_2S;
+ } else if (type == EPICS_20S.type) {
+ return EPICS_20S;
} else {
throw new IllegalArgumentException("The type code is invalid (must be 1 or 10): " + type);
}
@@ -44,9 +45,9 @@
public static EpicsType getEpicsType(final EpicsData epicsData) {
// FIXME: The type argument should be set on creation which would make this key check unnecessary.
if (epicsData.getKeys().contains("MBSY2C_energy")) {
- return EpicsType.EPICS_2s;
+ return EpicsType.EPICS_2S;
} else {
- return EpicsType.EPICS_20s;
+ return EpicsType.EPICS_20S;
}
}
Modified: java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/EpicsVariable.java
=============================================================================
--- java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/EpicsVariable.java (original)
+++ java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/EpicsVariable.java Tue Dec 8 20:48:40 2015
@@ -29,7 +29,7 @@
private final String variableName;
/**
- * The type of the variable (1s or 10s).
+ * The type of the variable (2s or 20s).
*/
private final EpicsType variableType;
Modified: java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunDatabaseBuilder.java
=============================================================================
--- java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunDatabaseBuilder.java (original)
+++ java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunDatabaseBuilder.java Tue Dec 8 20:48:40 2015
@@ -156,8 +156,8 @@
LOGGER.info("loaded run summary ..." + '\n' + runSummary);
- LOGGER.info("loaded " + runManager.getEpicsData(EpicsType.EPICS_2s).size() + " EPICS 2S records");
- LOGGER.info("loaded " + runManager.getEpicsData(EpicsType.EPICS_20s).size() + " EPICS 20S records");
+ LOGGER.info("loaded " + runManager.getEpicsData(EpicsType.EPICS_2S).size() + " EPICS 2S records");
+ LOGGER.info("loaded " + runManager.getEpicsData(EpicsType.EPICS_20S).size() + " EPICS 20S records");
List<ScalerData> scalerData = runManager.getScalerData();
LOGGER.info("loaded " + scalerData.size() + " scaler records");
@@ -167,7 +167,7 @@
LOGGER.info("printing DAQ config ...");
DAQConfig daqConfig = runManager.getDAQConfig();
- daqConfig.printConfig();
+ daqConfig.printConfig(System.out);
runManager.closeConnection();
}
@@ -628,6 +628,7 @@
LOGGER.info("updating end timestamp");
IntBankDefinition headBankDefinition = new IntBankDefinition(HeadBankData.class, new int[] {0x2e, 0xe10f});
File lastEvioFile = cacheFiles.get(cacheFiles.size() - 1);
+ LOGGER.info("setting end timestamp from file " + lastEvioFile.getPath());
EvioReader reader = null;
Integer endTimestamp = null;
try {
@@ -659,7 +660,7 @@
}
}
runSummary.setEndTimestamp(endTimestamp);
- LOGGER.fine("end timestamp set to " + endTimestamp);
+ LOGGER.fine("end timestamp was set to " + endTimestamp);
}
/**
@@ -726,6 +727,7 @@
private void updateStartTimestamps() {
LOGGER.fine("updating start timestamps");
File firstEvioFile = cacheFiles.get(0);
+ LOGGER.info("setting start timestamps from file " + firstEvioFile.getPath());
int sequence = EvioFileUtilities.getSequenceFromName(firstEvioFile);
if (sequence != 0) {
LOGGER.warning("first file does not have sequence 0");
@@ -790,13 +792,21 @@
*/
private void updateTriggerRate() {
LOGGER.fine("updating trigger rate");
- if (runSummary.getEndTimestamp() != null && runSummary.getGoTimestamp() != null) {
+ Integer startTimestamp = null;
+ if (runSummary.getGoTimestamp() != null) {
+ startTimestamp = runSummary.getGoTimestamp();
+ } else if (runSummary.getPrestartTimestamp() != null) {
+ startTimestamp = runSummary.getPrestartTimestamp();
+ } else {
+ LOGGER.warning("Could not get starting timestamp for trigger rate calculation.");
+ }
+ if (runSummary.getEndTimestamp() != null && startTimestamp != null) {
double triggerRate = ((double) runSummary.getTotalEvents() / ((double) runSummary.getEndTimestamp() - (double) runSummary
.getGoTimestamp())) / 1000.;
runSummary.setTriggerRate(triggerRate);
LOGGER.info("trigger rate set to " + runSummary.getTriggerRate());
} else {
- LOGGER.warning("Skipped trigger rate calculation because END or GO timestamp is missing.");
+ LOGGER.warning("Skipped trigger rate calculation because a timestamp is missing.");
}
}
}
Modified: java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunManager.java
=============================================================================
--- java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunManager.java (original)
+++ java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunManager.java Tue Dec 8 20:48:40 2015
@@ -143,8 +143,8 @@
* @param run the run number
*/
void deleteRun() {
- factory.createEpicsDataDao().deleteEpicsData(EpicsType.EPICS_2s, run);
- factory.createEpicsDataDao().deleteEpicsData(EpicsType.EPICS_20s, run);
+ factory.createEpicsDataDao().deleteEpicsData(EpicsType.EPICS_2S, run);
+ factory.createEpicsDataDao().deleteEpicsData(EpicsType.EPICS_20S, run);
factory.createScalerDataDao().deleteScalerData(run);
factory.createSvtConfigDao().deleteSvtConfigs(run);
factory.createTriggerConfigDao().deleteTriggerConfig(run);
Modified: java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunSummaryDaoImpl.java
=============================================================================
--- java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunSummaryDaoImpl.java (original)
+++ java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunSummaryDaoImpl.java Tue Dec 8 20:48:40 2015
@@ -171,23 +171,24 @@
*/
@Override
public void insertRunSummary(final RunSummary runSummary) {
- PreparedStatement preparedStatement = null;
+ PreparedStatement preparedStatement = null;
try {
preparedStatement = connection.prepareStatement(INSERT);
preparedStatement.setInt(1, runSummary.getRun());
preparedStatement.setInt(2, runSummary.getTotalEvents());
preparedStatement.setInt(3, runSummary.getTotalFiles());
- preparedStatement.setInt(4, runSummary.getPrestartTimestamp());
- preparedStatement.setInt(5, runSummary.getGoTimestamp());
- preparedStatement.setInt(6, runSummary.getEndTimestamp());
- preparedStatement.setDouble(7, runSummary.getTriggerRate());
- preparedStatement.setString(8, runSummary.getTriggerConfigName());
- preparedStatement.setLong(9, runSummary.getTiTimeOffset());
- preparedStatement.setDouble(10, runSummary.getLivetimeClock());
- preparedStatement.setDouble(11, runSummary.getLivetimeFcupTdc());
- preparedStatement.setDouble(12, runSummary.getLivetimeFcupTrg());
- preparedStatement.setString(13, runSummary.getTarget());
- preparedStatement.setString(14, runSummary.getNotes());
+ /* Use setObject on the rest as they may be null. */
+ preparedStatement.setObject(4, runSummary.getPrestartTimestamp());
+ preparedStatement.setObject(5, runSummary.getGoTimestamp());
+ preparedStatement.setObject(6, runSummary.getEndTimestamp());
+ preparedStatement.setObject(7, runSummary.getTriggerRate());
+ preparedStatement.setObject(8, runSummary.getTriggerConfigName());
+ preparedStatement.setObject(9, runSummary.getTiTimeOffset());
+ preparedStatement.setObject(10, runSummary.getLivetimeClock());
+ preparedStatement.setObject(11, runSummary.getLivetimeFcupTdc());
+ preparedStatement.setObject(12, runSummary.getLivetimeFcupTrg());
+ preparedStatement.setObject(13, runSummary.getTarget());
+ preparedStatement.setObject(14, runSummary.getNotes());
LOGGER.fine(preparedStatement.toString());
preparedStatement.executeUpdate();
} catch (final SQLException e) {
Copied: java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/production/FilterHitsPerSensor.lcsim (from r4021, java/trunk/steering-files/src/main/resources/org/hps/steering/production/FilterHitsPerSensor.lcsim)
=============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/production/FilterHitsPerSensor.lcsim (original)
+++ java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/production/FilterHitsPerSensor.lcsim Tue Dec 8 20:48:40 2015
@@ -5,6 +5,7 @@
@author <a href="mailto:[log in to unmask]">Sho Uemura</a>
-->
<execute>
+ <driver name="CleanupDriver"/>
<driver name="EventMarkerDriver"/>
<!-- SVT reconstruction drivers -->
<driver name="RawTrackerHitSensorSetup"/>
@@ -16,7 +17,6 @@
<!-- write and cleanup -->
<driver name="LCIOWriter"/>
- <driver name="CleanupDriver"/>
</execute>
<drivers>
<driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
Copied: java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015STRecon.lcsim (from r4021, java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015STRecon.lcsim)
=============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015STRecon.lcsim (original)
+++ java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015STRecon.lcsim Tue Dec 8 20:48:40 2015
@@ -10,11 +10,8 @@
<driver name="RawTrackerHitSensorSetup"/>
<driver name="RawTrackerHitFitterDriver" />
<driver name="TrackerHitDriver"/>
- <driver name="HelicalTrackHitDriver"/>
- <!--<driver name="SensorOccupancyDriver"/>-->
<driver name="StraightThroughDriver"/>
- <!--<driver name="TrackingReconstructionPlots" />-->
<!--<driver name="LCIOWriter"/>-->
<!--<driver name="AidaSaveDriver"/>-->
<driver name="CleanupDriver"/>
@@ -40,12 +37,6 @@
<driver name="TrackerHitDriver" type="org.hps.recon.tracking.DataTrackerHitDriver">
<neighborDeltaT>8.0</neighborDeltaT>
</driver>
- <driver name="HelicalTrackHitDriver" type="org.hps.recon.tracking.HelicalTrackHitDriver">
- <debug>false</debug>
- <clusterTimeCut>12.0</clusterTimeCut>
- <maxDt>16.0</maxDt>
- <clusterAmplitudeCut>400.0</clusterAmplitudeCut>
- </driver>
<driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
<outputFilePath>${outputFile}.slcio</outputFilePath>
</driver>
@@ -61,7 +52,7 @@
<eventRefreshRate>100</eventRefreshRate>
<enableTriggerFilter>False</enableTriggerFilter>
</driver>
- <driver name="StraightThroughDriver" type="org.hps.users.phansson.StraightThroughAnalysisDriver">
+ <driver name="StraightThroughDriver" type="org.hps.recon.tracking.straight.StraightThroughAnalysisDriver">
<outputFilename>${outputFile}</outputFilename>
<writeGbl>true</writeGbl>
</driver>
Modified: java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/TrackDataDriver.java
=============================================================================
--- java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/TrackDataDriver.java (original)
+++ java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/TrackDataDriver.java Tue Dec 8 20:48:40 2015
@@ -317,7 +317,7 @@
}
// Add all collections to the event
- event.put(TrackData.TRACK_DATA_COLLECTION, trackDataCollection, TrackTimeData.class, 0);
+ event.put(TrackData.TRACK_DATA_COLLECTION, trackDataCollection, TrackData.class, 0);
event.put(TrackData.TRACK_DATA_RELATION_COLLECTION, trackDataRelations, LCRelation.class, 0);
event.put(TRK_RESIDUALS_COL_NAME, trackResidualsCollection, TrackResidualsData.class, 0);
event.put(TRK_RESIDUALS_REL_COL_NAME, trackToTrackResidualsRelations, LCRelation.class, 0);
Modified: java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/TrackUtils.java
=============================================================================
--- java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/TrackUtils.java (original)
+++ java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/TrackUtils.java Tue Dec 8 20:48:40 2015
@@ -7,6 +7,9 @@
import hep.physics.vec.SpacePoint;
import hep.physics.vec.VecOp;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -1029,6 +1032,20 @@
for (TrackerHit hit : track.getTrackerHits())
hits.addAll(hitToStrips.allFrom(hitToRotated.from(hit)));
return hits;
+ }
+
+ public static List<TrackerHit> sortHits(Collection<TrackerHit> hits) {
+ List<TrackerHit> hitList = new ArrayList<TrackerHit>(hits);
+ Collections.sort(hitList, new LayerComparator());
+ return hitList;
+ }
+
+ private static class LayerComparator implements Comparator<TrackerHit> {
+
+ @Override
+ public int compare(TrackerHit o1, TrackerHit o2) {
+ return Integer.compare(TrackUtils.getLayer(o1), TrackUtils.getLayer(o2));
+ }
}
public static boolean hasSharedStrips(Track track1, Track track2, RelationalTable hitToStrips, RelationalTable hitToRotated) {
Modified: java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLKinkData.java
=============================================================================
--- java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLKinkData.java (original)
+++ java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLKinkData.java Tue Dec 8 20:48:40 2015
@@ -1,6 +1,13 @@
package org.hps.recon.tracking.gbl;
+import java.util.List;
+import org.apache.commons.math3.util.Pair;
+import org.lcsim.event.EventHeader;
import org.lcsim.event.GenericObject;
+import org.lcsim.event.LCRelation;
+import org.lcsim.event.RelationalTable;
+import org.lcsim.event.Track;
+import org.lcsim.event.base.BaseRelationalTable;
/**
* Generic object used to persist GBL kink data.
@@ -94,4 +101,27 @@
public boolean isFixedSize() {
return true;
}
+
+ private static Pair<EventHeader, RelationalTable> kinkDataToTrackCache = null;
+
+ public static RelationalTable getKinkDataToTrackTable(EventHeader event) {
+ if (kinkDataToTrackCache == null || kinkDataToTrackCache.getFirst() != event) {
+ RelationalTable kinkDataToTrack = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
+ if (event.hasCollection(LCRelation.class, DATA_RELATION_COLLECTION)) {
+ List<LCRelation> relations = event.get(LCRelation.class, DATA_RELATION_COLLECTION);
+ for (LCRelation relation : relations) {
+ if (relation != null && relation.getFrom() != null && relation.getTo() != null) {
+ kinkDataToTrack.add(relation.getFrom(), relation.getTo());
+ }
+ }
+ }
+ kinkDataToTrackCache = new Pair<EventHeader, RelationalTable>(event, kinkDataToTrack);
+ }
+ return kinkDataToTrackCache.getSecond();
+ }
+
+ public static GenericObject getKinkData(EventHeader event, Track track) {
+ return (GenericObject) getKinkDataToTrackTable(event).from(track);
+ }
+
}
Modified: java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutput.java
=============================================================================
--- java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutput.java (original)
+++ java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutput.java Tue Dec 8 20:48:40 2015
@@ -153,15 +153,13 @@
void printGBL(Track trk, List<SiTrackerHitStrip1D> stripHits, GBLTrackData gtd, List<GBLStripClusterData> stripClusterDataList, List<MCParticle> mcParticles, List<SimTrackerHit> simTrackerHits, boolean isMC) {
- SeedTrack st = (SeedTrack) trk;
- SeedCandidate seed = st.getSeedCandidate();
- HelicalTrackFit htf = seed.getHelix();
+ HelicalTrackFit htf = TrackUtils.getHTF(trk);
// Find scatter points along the path
ScatterPoints scatters = _scattering.FindHPSScatterPoints(htf);
// Hits on track
- List<HelicalTrackHit> hits = seed.getHits();
+ List<TrackerHit> hits = trk.getTrackerHits();
// Find the truth particle of the track
MCParticle mcp = null;
@@ -326,7 +324,7 @@
continue;
}
else {
- hit = hits.get(ihit);
+ hit = (HelicalTrackHit) hits.get(ihit);
htc = (HelicalTrackCross) hit;
strips = htc.getStrips();
correctedHitPosition = hit.getCorrectedPosition();
Modified: java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutputDriver.java
=============================================================================
--- java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutputDriver.java (original)
+++ java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutputDriver.java Tue Dec 8 20:48:40 2015
@@ -1,32 +1,21 @@
package org.hps.recon.tracking.gbl;
-import hep.physics.vec.BasicHep3Vector;
import hep.physics.vec.Hep3Vector;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hps.recon.tracking.EventQuality;
-import org.hps.recon.tracking.StrategyType;
-import org.hps.recon.tracking.TrackType;
import org.hps.recon.tracking.TrackUtils;
import org.lcsim.event.EventHeader;
import org.lcsim.event.LCRelation;
import org.lcsim.event.MCParticle;
-import org.lcsim.event.RelationalTable;
import org.lcsim.event.SimTrackerHit;
import org.lcsim.event.Track;
-import org.lcsim.event.TrackerHit;
import org.lcsim.event.base.MyLCRelation;
import org.lcsim.geometry.Detector;
-import org.lcsim.lcio.LCIOConstants;
import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
-import org.lcsim.recon.tracking.seedtracker.SeedTrack;
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
@@ -58,15 +47,12 @@
private int totalTracksProcessed = 0;
private int iTrack = 0;
private int iEvent = 0;
- private boolean addBeamspot=false;
+ private boolean addBeamspot = false;
private double beamspotScatAngle = 0.000001;
private double beamspotWidthZ = 0.05;
private double beamspotWidthY = 0.15;
- private double beamspotTiltZOverY = 15.0*180.0/Math.PI;
- private double beamspotPosition[] = {0,0,0};
-
-
-
+ private double beamspotTiltZOverY = 15.0 * 180.0 / Math.PI;
+ private double beamspotPosition[] = {0, 0, 0};
public GBLOutputDriver() {
}
@@ -95,7 +81,7 @@
@Override
public void process(EventHeader event) {
- List<Track> tracklist = null;
+ List<Track> tracklist;
if (event.hasCollection(Track.class, trackCollectionName)) {
tracklist = event.get(Track.class, trackCollectionName);
if (_debug > 0) {
@@ -107,7 +93,7 @@
List<SiTrackerHitStrip1D> stripHits = event.get(SiTrackerHitStrip1D.class, "StripClusterer_SiTrackerHitStrip1D");
if (_debug > 0) {
- System.out.printf("%s: Got %d SiTrackerHitStrip1D in this event\n",this.getClass().getSimpleName(), stripHits.size());
+ System.out.printf("%s: Got %d SiTrackerHitStrip1D in this event\n", this.getClass().getSimpleName(), stripHits.size());
}
List<MCParticle> mcParticles = new ArrayList<MCParticle>();
@@ -143,13 +129,13 @@
// Loop over each of the track collections retrieved from the event
for (Track trk : tracklist) {
totalTracks++;
-
- if (_debug > 0) System.out.printf("%s: PX %f bottom %d\n", this.getClass().getSimpleName(), trk.getPX(), TrackUtils.isBottomTrack(trk, 4)?1:0) ;
-
+
+ if (_debug > 0) {
+ System.out.printf("%s: PX %f bottom %d\n", this.getClass().getSimpleName(), trk.getPX(), TrackUtils.isBottomTrack(trk, 4) ? 1 : 0);
+ }
+
//if( trk.getPX() < 0.9) continue;
-
//if( TrackUtils.isBottomTrack(trk, 4)) continue;
-
if (TrackUtils.isGoodTrack(trk, tracklist, EventQuality.Quality.NONE)) {
if (_debug > 0) {
System.out.printf("%s: Print GBL output for this track\n", this.getClass().getSimpleName());
@@ -228,8 +214,8 @@
this.isMC = isMC;
}
- public void setAddBeamspot(boolean add){
- this.addBeamspot=add;
+ public void setAddBeamspot(boolean add) {
+ this.addBeamspot = add;
}
public double getBeamspotScatAngle() {
@@ -271,5 +257,8 @@
public void setBeamspotPosition(double beamspotPosition[]) {
this.beamspotPosition = beamspotPosition;
}
-
+
+ public void setTrackCollectionName(String trackCollectionName) {
+ this.trackCollectionName = trackCollectionName;
+ }
}
Modified: java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLRefitterDriver.java
=============================================================================
--- java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLRefitterDriver.java (original)
+++ java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLRefitterDriver.java Tue Dec 8 20:48:40 2015
@@ -11,9 +11,11 @@
import org.hps.recon.tracking.MultipleScattering;
import org.hps.recon.tracking.TrackUtils;
import org.lcsim.event.EventHeader;
+import org.lcsim.event.LCRelation;
import org.lcsim.event.RelationalTable;
import org.lcsim.event.Track;
import org.lcsim.event.TrackerHit;
+import org.lcsim.event.base.BaseLCRelation;
import org.lcsim.geometry.Detector;
import org.lcsim.lcio.LCIOConstants;
import org.lcsim.util.Driver;
@@ -66,12 +68,20 @@
RelationalTable hitToRotated = TrackUtils.getHitToRotatedTable(event);
List<Track> refittedTracks = new ArrayList<Track>();
+ List<GBLKinkData> kinkDataCollection = new ArrayList<GBLKinkData>();
+
+ List<LCRelation> kinkDataRelations = new ArrayList<LCRelation>();
Map<Track, Track> inputToRefitted = new HashMap<Track, Track>();
for (Track track : tracks) {
- Pair<Track, GBLKinkData> newTrack = MakeGblTracks.refitTrack(TrackUtils.getHTF(track), TrackUtils.getStripHits(track, hitToStrips, hitToRotated), track.getTrackerHits(), 5, _scattering, bfield);
+ Pair<Track, GBLKinkData> newTrack = MakeGblTracks.refitTrack(TrackUtils.getHTF(track), TrackUtils.getStripHits(track, hitToStrips, hitToRotated), track.getTrackerHits(), 5, track.getType(), _scattering, bfield
+ );
+// newTrack.getFirst().
refittedTracks.add(newTrack.getFirst());
inputToRefitted.put(track, newTrack.getFirst());
+
+ kinkDataCollection.add(newTrack.getSecond());
+ kinkDataRelations.add(new BaseLCRelation(newTrack.getSecond(), newTrack.getFirst()));
}
if (mergeTracks) {
@@ -106,7 +116,7 @@
}
}
- Pair<Track, GBLKinkData> mergedTrack = MakeGblTracks.refitTrack(TrackUtils.getHTF(track), TrackUtils.getStripHits(track, hitToStrips, hitToRotated), allHth, 5, _scattering, bfield);
+ Pair<Track, GBLKinkData> mergedTrack = MakeGblTracks.refitTrack(TrackUtils.getHTF(track), TrackUtils.getStripHits(track, hitToStrips, hitToRotated), allHth, 5, track.getType(), _scattering, bfield);
mergedTracks.add(mergedTrack.getFirst());
// System.out.format("%f %f %f\n", fit.get_chi2(), inputToRefitted.get(track).getChi2(), inputToRefitted.get(otherTrack).getChi2());
// mergedTrackToTrackList.put(mergedTrack, new ArrayList<Track>());
@@ -131,5 +141,7 @@
// Put the tracks back into the event and exit
int flag = 1 << LCIOConstants.TRBIT_HITS;
event.put(outputCollectionName, refittedTracks, Track.class, flag);
+ event.put(GBLKinkData.DATA_COLLECTION, kinkDataCollection, GBLKinkData.class, 0);
+ event.put(GBLKinkData.DATA_RELATION_COLLECTION, kinkDataRelations, LCRelation.class, 0);
}
}
Modified: java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/MakeGblTracks.java
=============================================================================
--- java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/MakeGblTracks.java (original)
+++ java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/gbl/MakeGblTracks.java Tue Dec 8 20:48:40 2015
@@ -146,7 +146,7 @@
double yTPrimeCorr = locPar.get(FittedGblTrajectory.GBLPARIDX.YTPRIME.getValue());
double xTCorr = locPar.get(FittedGblTrajectory.GBLPARIDX.XT.getValue());
double yTCorr = locPar.get(FittedGblTrajectory.GBLPARIDX.YT.getValue());
-
+// System.out.println((helix.slope() > 0 ? "top: " : "bot ") + "qOverPCorr " + qOverPCorr + " xtPrimeCorr " + xTPrimeCorr + " yTPrimeCorr " + yTPrimeCorr + " xTCorr " + xTCorr + " yTCorr " + yTCorr);
LOGGER.info((helix.slope() > 0 ? "top: " : "bot ") + "qOverPCorr " + qOverPCorr + " xtPrimeCorr " + xTPrimeCorr + " yTPrimeCorr " + yTPrimeCorr + " xTCorr " + xTCorr + " yTCorr " + yTCorr);
// calculate new d0 and z0
@@ -275,6 +275,7 @@
if (i > 0) {
lambdaKinks[i - 1] = (float) (newLambda - oldLambda);
phiKinks[i - 1] = newPhi - oldPhi;
+// System.out.println("phikink: " + (newPhi - oldPhi));
}
oldPhi = newPhi;
oldLambda = newLambda;
@@ -298,16 +299,16 @@
* @param bfield B-field
* @return The refitted track.
*/
- public static Pair<Track, GBLKinkData> refitTrack(HelicalTrackFit helix, Collection<TrackerHit> stripHits, Collection<TrackerHit> hth, int nIterations, MultipleScattering scattering, double bfield) {
- List<TrackerHit> allHthList = sortHits(hth);
- List<TrackerHit> sortedStripHits = sortHits(stripHits);
- FittedGblTrajectory fit = MakeGblTracks.doGBLFit(helix, sortedStripHits, scattering, bfield, 0);
+ public static Pair<Track, GBLKinkData> refitTrack(HelicalTrackFit helix, Collection<TrackerHit> stripHits, Collection<TrackerHit> hth, int nIterations, int trackType, MultipleScattering scattering, double bfield) {
+ List<TrackerHit> allHthList = TrackUtils.sortHits(hth);
+ List<TrackerHit> sortedStripHits = TrackUtils.sortHits(stripHits);
+ FittedGblTrajectory fit = doGBLFit(helix, sortedStripHits, scattering, bfield, 0);
for (int i = 0; i < nIterations; i++) {
- Pair<Track, GBLKinkData> newTrack = MakeGblTracks.makeCorrectedTrack(fit, helix, allHthList, 0, bfield);
+ Pair<Track, GBLKinkData> newTrack = makeCorrectedTrack(fit, helix, allHthList, trackType, bfield);
helix = TrackUtils.getHTF(newTrack.getFirst());
- fit = MakeGblTracks.doGBLFit(helix, sortedStripHits, scattering, bfield, 0);
- }
- Pair<Track, GBLKinkData> mergedTrack = MakeGblTracks.makeCorrectedTrack(fit, helix, allHthList, 0, bfield);
+ fit = doGBLFit(helix, sortedStripHits, scattering, bfield, 0);
+ }
+ Pair<Track, GBLKinkData> mergedTrack = makeCorrectedTrack(fit, helix, allHthList, trackType, bfield);
return mergedTrack;
}
@@ -480,18 +481,4 @@
return strip;
}
-
- private static List<TrackerHit> sortHits(Collection<TrackerHit> hits) {
- List<TrackerHit> hitList = new ArrayList<TrackerHit>(hits);
- Collections.sort(hitList, new LayerComparator());
- return hitList;
- }
-
- private static class LayerComparator implements Comparator<TrackerHit> {
-
- @Override
- public int compare(TrackerHit o1, TrackerHit o2) {
- return Integer.compare(TrackUtils.getLayer(o1), TrackUtils.getLayer(o2));
- }
- }
}
Modified: java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/straight/StraightThroughAnalysisDriver.java
=============================================================================
--- java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/straight/StraightThroughAnalysisDriver.java (original)
+++ java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/straight/StraightThroughAnalysisDriver.java Tue Dec 8 20:48:40 2015
@@ -29,6 +29,7 @@
import org.hps.recon.tracking.SvtPlotUtils;
import org.hps.recon.tracking.straight.STUtils.STStereoTrack;
+import org.hps.recon.tracking.straight.STUtils.STTrack;
import org.lcsim.detector.converter.compact.subdetector.HpsTracker2;
import org.lcsim.detector.converter.compact.subdetector.SvtStereoLayer;
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
@@ -59,6 +60,8 @@
private IHistogram1D botHitCount;
private Map<String,IHistogram2D> stereoHitPositionsXY = new HashMap<String, IHistogram2D>();
private Map<String,IHistogram1D> sensorHitResGlobal = new HashMap<String, IHistogram1D>();
+ private Map<String,IHistogram1D> sensorHitResGlobalL13 = new HashMap<String, IHistogram1D>();
+ private Map<String,IHistogram1D> sensorHitResGlobalL46 = new HashMap<String, IHistogram1D>();
private Map<String,IHistogram1D> sensorStereoHitYZResGlobal = new HashMap<String, IHistogram1D>();
private Map<String,IHistogram1D> sensorStereoHitXZResGlobal = new HashMap<String, IHistogram1D>();
private Map<String,IHistogram1D> sensorURes = new HashMap<String, IHistogram1D>();
@@ -79,6 +82,12 @@
private IHistogram1D trackAxialHitCount[];
private IHistogram1D trackAxialSlope[];
private IHistogram1D trackAxialIntercept[];
+ private IHistogram1D trackL13AxialSlope[];
+ private IHistogram1D trackL13AxialIntercept[];
+ private IHistogram1D trackL46AxialSlope[];
+ private IHistogram1D trackL46AxialIntercept[];
+ private IHistogram1D trackL13L46AxialSlope[];
+ private IHistogram1D trackL13L46AxialIntercept[];
private IHistogram1D trackAxialCount[];
private IHistogram2D trackAxialExtraPolation[];
private IHistogram2D trackExtraPolationY[];
@@ -154,6 +163,10 @@
plotters.get("Sensor u res").createRegions(6, 6);
plotters.put("Sensor hit res", af.createPlotterFactory().create("Sensor hit res"));
plotters.get("Sensor hit res").createRegions(3, 6);
+ plotters.put("Sensor hit res L13", af.createPlotterFactory().create("Sensor hit res L13"));
+ plotters.get("Sensor hit res L13").createRegions(3, 6);
+ plotters.put("Sensor hit res L46", af.createPlotterFactory().create("Sensor hit res L46"));
+ plotters.get("Sensor hit res L46").createRegions(3, 6);
plotters.put("Sensor stereo YZ hit res", af.createPlotterFactory().create("Sensor stereo YZ hit res"));
plotters.get("Sensor stereo YZ hit res").setStyle(this.getDefaultPlotterStyle("Stereo hit y res global (mm)","Entries"));
plotters.get("Sensor stereo YZ hit res").createRegions(3, 6);
@@ -194,6 +207,12 @@
trackAxialCount = new IHistogram1D[2];
trackAxialSlope = new IHistogram1D[2];
trackAxialIntercept = new IHistogram1D[2];
+ trackL13AxialSlope = new IHistogram1D[2];
+ trackL13AxialIntercept = new IHistogram1D[2];
+ trackL46AxialSlope = new IHistogram1D[2];
+ trackL46AxialIntercept = new IHistogram1D[2];
+ trackL13L46AxialSlope = new IHistogram1D[2];
+ trackL13L46AxialIntercept = new IHistogram1D[2];
trackAxialExtraPolation = new IHistogram2D[5];
trackExtraPolationY = new IHistogram2D[5];
trackExtraPolationX = new IHistogram2D[5];
@@ -212,20 +231,32 @@
trackCount[i] = hf.createHistogram1D("Track " + half + " multiplicity", 11, -0.5, 10.5);
trackSlope[i] = new IHistogram1D[2];
trackIntercept[i] = new IHistogram1D[2];
+ trackSlope[i] = new IHistogram1D[2];
+ trackIntercept[i] = new IHistogram1D[2];
trackSlope[i][STUtils.STStereoTrack.VIEW.YZ.ordinal()] = hf.createHistogram1D("Track " + half +" " + STUtils.STStereoTrack.VIEW.YZ.name() + " slope", 50, -0.05, 0.05);
trackSlope[i][STUtils.STStereoTrack.VIEW.XZ.ordinal()] = hf.createHistogram1D("Track " + half +" " + STUtils.STStereoTrack.VIEW.XZ.name() + " slope", 50, -0.1, 0.1);
if(i==0) {
trackIntercept[i][STUtils.STStereoTrack.VIEW.YZ.ordinal()] = hf.createHistogram1D("Track " + half +" " + STUtils.STStereoTrack.VIEW.YZ.name() + " intecept", 50, 0, 50);
trackIntercept[i][STUtils.STStereoTrack.VIEW.XZ.ordinal()] = hf.createHistogram1D("Track " + half +" " + STUtils.STStereoTrack.VIEW.XZ.name() + " intecept", 50, -80, 0);
trackAxialIntercept[i] = hf.createHistogram1D("Track axial " + half +" intercept", 50, 0, 50);
+ trackL13AxialIntercept[i] = hf.createHistogram1D("Track L13 axial " + half +" intercept", 50, -20, 50);
+ trackL46AxialIntercept[i] = hf.createHistogram1D("Track L46 axial " + half +" intercept", 50, -20, 50);
+ trackL13AxialSlope[i] = hf.createHistogram1D("Track L13 axial " + half +" slope", 50, -0.02, 0.1);
+ trackL46AxialSlope[i] = hf.createHistogram1D("Track L46 axial " + half +" slope", 50, -0.02, 0.1);
} else {
trackIntercept[i][STUtils.STStereoTrack.VIEW.YZ.ordinal()] = hf.createHistogram1D("Track " + half +" " + STUtils.STStereoTrack.VIEW.YZ.name() + " intecept", 50, -50, 0);
trackIntercept[i][STUtils.STStereoTrack.VIEW.XZ.ordinal()] = hf.createHistogram1D("Track " + half +" " + STUtils.STStereoTrack.VIEW.XZ.name() + " intecept", 50, -50, 50);
trackAxialIntercept[i] = hf.createHistogram1D("Track axial " + half +" intercept", 50, -50, 0);
+ trackL13AxialIntercept[i] = hf.createHistogram1D("Track L13 axial " + half +" intercept", 50, -50, 20);
+ trackL46AxialIntercept[i] = hf.createHistogram1D("Track L46 axial " + half +" intercept", 50, -50, 20);
+ trackL13AxialSlope[i] = hf.createHistogram1D("Track L13 axial " + half +" slope", 50, -0.1, 0.02);
+ trackL46AxialSlope[i] = hf.createHistogram1D("Track L46 axial " + half +" slope", 50, -0.1, 0.02);
}
trackAxialHitCount[i] = hf.createHistogram1D("Track axial " + half +" hit multiplicity", 11, -0.5, 10.5);
trackAxialCount[i] = hf.createHistogram1D("Track axial " + half +" multiplicity", 2, -0.5, 1.5);
trackAxialSlope[i] = hf.createHistogram1D("Track axial " + half +" slope", 50, -0.05, 0.05);
+ trackL13L46AxialSlope[i] = hf.createHistogram1D("Track L13-L46 axial " + half +" slope", 50, -0.03, 0.03);
+ trackL13L46AxialIntercept[i] = hf.createHistogram1D("Track L13-L46 axial " + half +" intercept", 50, -8, 8);
trackAxialExtraPolation[i] = hf.createHistogram2D("Track axial " + half +" extrapolation", nPointsZ, endPointZ, startPointZ,50,-80,80);
trackExtraPolationY[i] = hf.createHistogram2D("Track " + half +" extrapolation Y", nPointsZ, endPointZ, startPointZ,50,-80,80);
trackExtraPolationX[i] = hf.createHistogram2D("Track " + half +" extrapolation X", nPointsZ, endPointZ, startPointZ,50,-100,60);
@@ -243,7 +274,24 @@
plotters.get("Track " + half +" axial").region(1).plot(trackAxialCount[i]);
plotters.get("Track " + half +" axial").region(2).plot(trackAxialSlope[i]);
plotters.get("Track " + half +" axial").region(3).plot(trackAxialIntercept[i]);
-
+
+ plotters.put("Track L13 " + half +" axial", af.createPlotterFactory().create("Track L13 " + half +" axial"));
+ //plotters.get("Track " + half +" axial").setStyle(this.getDefaultPlotterStyle("","Entries",true));
+ plotters.get("Track L13 " + half +" axial").createRegions(2,2);
+ plotters.get("Track L13 " + half +" axial").region(2).plot(trackL13AxialSlope[i]);
+ plotters.get("Track L13 " + half +" axial").region(3).plot(trackL13AxialIntercept[i]);
+
+ plotters.put("Track L46 " + half +" axial", af.createPlotterFactory().create("Track L46 " + half +" axial"));
+ //plotters.get("Track " + half +" axial").setStyle(this.getDefaultPlotterStyle("","Entries",true));
+ plotters.get("Track L46 " + half +" axial").createRegions(2,2);
+ plotters.get("Track L46 " + half +" axial").region(2).plot(trackL46AxialSlope[i]);
+ plotters.get("Track L46 " + half +" axial").region(3).plot(trackL46AxialIntercept[i]);
+
+ plotters.put("Track L13L46 " + half +" axial", af.createPlotterFactory().create("Track L13L46 " + half +" axial"));
+ //plotters.get("Track " + half +" axial").setStyle(this.getDefaultPlotterStyle("","Entries",true));
+ plotters.get("Track L13L46 " + half +" axial").createRegions(2,2);
+ plotters.get("Track L13L46 " + half +" axial").region(2).plot(trackL13L46AxialSlope[i]);
+ plotters.get("Track L13L46 " + half +" axial").region(3).plot(trackL13L46AxialIntercept[i]);
plotters.put("Track " + half, af.createPlotterFactory().create("Track " + half));
@@ -321,6 +369,15 @@
sensorHitResGlobal.put(sensor.getName(), hf.createHistogram1D(sensor.getName() + "_hitresglobal", 50, -0.7, 0.7));
plotters.get("Sensor hit res").region(SvtPlotUtils.computePlotterRegionAxialOnly(sensor)).plot(sensorHitResGlobal.get(sensor.getName()));
plotters.get("Sensor hit res").region(0).style().dataStyle().showInStatisticsBox(true);
+
+ sensorHitResGlobalL13.put(sensor.getName(), hf.createHistogram1D(sensor.getName() + "_hitresglobalL13", 50, -0.7, 0.7));
+ plotters.get("Sensor hit res L13").region(SvtPlotUtils.computePlotterRegionAxialOnly(sensor)).plot(sensorHitResGlobalL13.get(sensor.getName()));
+ plotters.get("Sensor hit res L13").region(0).style().dataStyle().showInStatisticsBox(true);
+
+ sensorHitResGlobalL46.put(sensor.getName(), hf.createHistogram1D(sensor.getName() + "_hitresglobalL46", 50, -0.7, 0.7));
+ plotters.get("Sensor hit res L46").region(SvtPlotUtils.computePlotterRegionAxialOnly(sensor)).plot(sensorHitResGlobalL46.get(sensor.getName()));
+ plotters.get("Sensor hit res L46").region(0).style().dataStyle().showInStatisticsBox(true);
+
sensorStereoHitYZResGlobal.put(sensor.getName(), hf.createHistogram1D(sensor.getName() + "_stereohityzresglobal", 50, -1, 1));
plotters.get("Sensor stereo YZ hit res").region(SvtPlotUtils.computePlotterRegionAxialOnly(sensor)).plot(sensorStereoHitYZResGlobal.get(sensor.getName()));
plotters.get("Sensor stereo YZ hit res").region(0).style().dataStyle().showInStatisticsBox(true);
@@ -450,26 +507,44 @@
// Pattern recognition for axial hits - yeah!
List< List<SiTrackerHitStrip1D>> axialSeedHits = new ArrayList<List<SiTrackerHitStrip1D>>();
+ List< List<SiTrackerHitStrip1D>> axialSeedL13Hits = new ArrayList<List<SiTrackerHitStrip1D>>();
+ List< List<SiTrackerHitStrip1D>> axialSeedL46Hits = new ArrayList<List<SiTrackerHitStrip1D>>();
for(int ihalf=0; ihalf<2; ++ihalf) {
List<SiTrackerHitStrip1D> seedHits = new ArrayList<SiTrackerHitStrip1D>();
+ List<SiTrackerHitStrip1D> seedL13Hits = new ArrayList<SiTrackerHitStrip1D>();
+ List<SiTrackerHitStrip1D> seedL46Hits = new ArrayList<SiTrackerHitStrip1D>();
for(int layer : axialHitsPerLayer.get(ihalf).keySet()) {
// single hit on the sensor
- if( axialHitsPerLayer.get(ihalf).get(layer).size() == 1 )
+ if( axialHitsPerLayer.get(ihalf).get(layer).size() == 1 ) {
seedHits.add(axialHitsPerLayer.get(ihalf).get(layer).get(0));
+ if( layer < 4) seedL13Hits.add(axialHitsPerLayer.get(ihalf).get(layer).get(0));
+ else seedL46Hits.add(axialHitsPerLayer.get(ihalf).get(layer).get(0));
+ }
}
axialSeedHits.add(seedHits);
+ axialSeedL13Hits.add(seedL13Hits);
+ axialSeedL46Hits.add(seedL46Hits);
}
// Pattern recognition for stereo hits - yeah!
List< List<SiTrackerHitStrip1D>> stereoSeedHits = new ArrayList<List<SiTrackerHitStrip1D>>();
+ List< List<SiTrackerHitStrip1D>> stereoSeedL13Hits = new ArrayList<List<SiTrackerHitStrip1D>>();
+ List< List<SiTrackerHitStrip1D>> stereoSeedL46Hits = new ArrayList<List<SiTrackerHitStrip1D>>();
for(int ihalf=0; ihalf<2; ++ihalf) {
List<SiTrackerHitStrip1D> seedHits = new ArrayList<SiTrackerHitStrip1D>();
+ List<SiTrackerHitStrip1D> seedL13Hits = new ArrayList<SiTrackerHitStrip1D>();
+ List<SiTrackerHitStrip1D> seedL46Hits = new ArrayList<SiTrackerHitStrip1D>();
for(int layer : stereoHitsPerLayer.get(ihalf).keySet()) {
// single hit on the sensor
- if( stereoHitsPerLayer.get(ihalf).get(layer).size() == 1 )
+ if( stereoHitsPerLayer.get(ihalf).get(layer).size() == 1 ) {
seedHits.add(stereoHitsPerLayer.get(ihalf).get(layer).get(0));
+ if( layer < 4) seedL13Hits.add(stereoHitsPerLayer.get(ihalf).get(layer).get(0));
+ else seedL46Hits.add(stereoHitsPerLayer.get(ihalf).get(layer).get(0));
+ }
}
stereoSeedHits.add(seedHits);
+ stereoSeedL13Hits.add(seedL13Hits);
+ stereoSeedL46Hits.add(seedL46Hits);
}
@@ -565,6 +640,34 @@
axialTracks.add(track);
}
+
+ // add hits to L13 axial tracks and fit them
+ List<STUtils.STTrack> axialL13Tracks = new ArrayList<STUtils.STTrack>();
+ for(List<SiTrackerHitStrip1D> seedHits : axialSeedL13Hits) {
+ if(seedHits.size() !=3)
+ continue;
+ STUtils.STTrack track = new STUtils.STTrack();
+ track.setHits(seedHits);
+ logger.fine("Fit axial L13 track");
+ regressionFitter.fit(track);
+ track.addFit(regressionFitter.getFit());
+ axialL13Tracks.add(track);
+ }
+
+ // add hits to L46 axial tracks and fit them
+ List<STUtils.STTrack> axialL46Tracks = new ArrayList<STUtils.STTrack>();
+ for(List<SiTrackerHitStrip1D> seedHits : axialSeedL46Hits) {
+ if(seedHits.size() !=3)
+ continue;
+ STUtils.STTrack track = new STUtils.STTrack();
+ track.setHits(seedHits);
+ logger.fine("Fit axial L46 track");
+ regressionFitter.fit(track);
+ track.addFit(regressionFitter.getFit());
+ axialL46Tracks.add(track);
+ }
+
+
// add stereo hits to tracks and fit them
List<STUtils.STStereoTrack> stereoTracks = new ArrayList<STUtils.STStereoTrack>();
for(List<STUtils.StereoPair> seedHits : stereoPairs) {
@@ -616,8 +719,70 @@
trackAxialCount[0].fill(nTracksAxial[0]);
trackAxialCount[1].fill(nTracksAxial[1]);
-
-
+ // Fill histograms for axial L13 tracks
+
+ for(STUtils.STTrack track : axialL13Tracks) {
+
+ for(SiTrackerHitStrip1D hit : track.getHits()) {
+ double yhit = hit.getPositionAsVector().y();
+ double zHit = hit.getPositionAsVector().z();
+ double yPred = track.predict(zHit);
+ double resGlobal = yhit - yPred;
+ sensorHitResGlobalL13.get(hit.getRawHits().get(0).getDetectorElement().getName()).fill(resGlobal);
+ }
+
+ logger.finest(track.toString());
+
+ if(track.isTop()) {
+ trackL13AxialSlope[0].fill(track.getSlope());
+ trackL13AxialIntercept[0].fill(track.getIntercept());
+ }
+ else {
+ trackL13AxialSlope[1].fill(track.getSlope());
+ trackL13AxialIntercept[1].fill(track.getIntercept());
+ }
+ }
+
+ // Fill histograms for axial L46 tracks
+
+ for(STUtils.STTrack track : axialL46Tracks) {
+
+ for(SiTrackerHitStrip1D hit : track.getHits()) {
+ double yhit = hit.getPositionAsVector().y();
+ double zHit = hit.getPositionAsVector().z();
+ double yPred = track.predict(zHit);
+ double resGlobal = yhit - yPred;
+ sensorHitResGlobalL46.get(hit.getRawHits().get(0).getDetectorElement().getName()).fill(resGlobal);
+ }
+
+ logger.finest(track.toString());
+
+ if(track.isTop()) {
+ trackL46AxialSlope[0].fill(track.getSlope());
+ trackL46AxialIntercept[0].fill(track.getIntercept());
+ }
+ else {
+ trackL46AxialSlope[1].fill(track.getSlope());
+ trackL46AxialIntercept[1].fill(track.getIntercept());
+ }
+ }
+
+ // Look at difference b/w L13 and L46 axial tracks
+
+ if(axialL13Tracks.size()==1 && axialL46Tracks.size()==1) {
+ STUtils.STTrack l13Track = axialL13Tracks.get(0);
+ STUtils.STTrack l46Track = axialL46Tracks.get(0);
+ if( l13Track.isTop() == l46Track.isTop()) {
+ if(l13Track.isTop()) {
+ trackL13L46AxialSlope[0].fill(l13Track.getSlope() - l46Track.getSlope());
+ trackL13L46AxialIntercept[0].fill(l13Track.getIntercept() - l46Track.getIntercept());
+ }
+ else {
+ trackL13L46AxialSlope[1].fill(l13Track.getSlope() - l46Track.getSlope());
+ trackL13L46AxialIntercept[1].fill(l13Track.getIntercept() - l46Track.getIntercept());
+ }
+ }
+ }
// Update track and hit positions
for(STUtils.STStereoTrack track : stereoTracks) {
Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/holly/EcalRawConverter.java
=============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/holly/EcalRawConverter.java (original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/holly/EcalRawConverter.java Tue Dec 8 20:48:40 2015
@@ -138,7 +138,7 @@
System.out.println("======================================================================");
System.out.println("=== FADC Pulse-Processing Settings ===================================");
System.out.println("======================================================================");
- config.printConfig();
+ config.printConfig(System.out);
}
}
});
|