java/trunk/analysis/src/main/java/org/hps/analysis/dataquality
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java 2014-06-27 02:18:08 UTC (rev 747)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java 2014-06-27 02:18:29 UTC (rev 748)
@@ -15,10 +15,13 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.recon.tracking.FittedRawTrackerHit;
+import org.hps.recon.tracking.ShapeFitParameters;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
+import org.lcsim.event.LCRelation;
import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.TrackerHit;
import org.lcsim.geometry.Detector;
/**
@@ -81,9 +84,11 @@
for (SiSensor sensor : sensors) {
//IHistogram1D occupancyPlot = aida.histogram1D(sensor.getName().replaceAll("Tracker_TestRunModule_", ""), 640, 0, 639);
IHistogram1D occupancyPlot = createSensorPlot(plotDir + "occupancy_", sensor, maxChannels, 0, maxChannels - 1);
- IHistogram1D t0Plot = createSensorPlot(plotDir + "t0_", sensor, 50, -50., 50.);
- IHistogram1D amplitudePlot = createSensorPlot(plotDir + "amplitude_", sensor, 50, 0, 2000);
- IHistogram1D chi2Plot = createSensorPlot(plotDir + "chi2_", sensor, 50, 0, 25);
+ IHistogram1D t0Plot = createSensorPlot(plotDir + "t0Hit_", sensor, 50, -50., 50.);
+ IHistogram1D amplitudePlot = createSensorPlot(plotDir + "amplitude_", sensor, 50, 0, 2000.0);
+ IHistogram1D chi2Plot = createSensorPlot(plotDir + "chi2_", sensor, 50, 0, 25);
+ IHistogram1D t0ClusterPlot = createSensorPlot(plotDir + "t0Cluster_", sensor, 50, -50., 50.);
+ IHistogram1D dedxClusterPlot = createSensorPlot(plotDir + "electrons_", sensor, 50, 0., 10.);
occupancyPlot.reset();
}
@@ -95,34 +100,50 @@
public void process(EventHeader event) {
/* increment the strip occupancy arrays */
if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
+ System.out.println("Found a raw hit collection");
List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
for (RawTrackerHit hit : rawTrackerHits) {
int[] strips = occupancyMap.get(hit.getDetectorElement().getName());
strips[hit.getIdentifierFieldValue("strip")] += 1;
}
++eventCountRaw;
- } else
- return; /* kick out of this if the even has none of these...*/
- /* fill the FittedTrackerHit related histograms */
-
- if (event.hasCollection(FittedRawTrackerHit.class, fittedTrackerHitCollectionName)) {
- List<FittedRawTrackerHit> fittedTrackerHits = event.get(FittedRawTrackerHit.class, fittedTrackerHitCollectionName);
- for (FittedRawTrackerHit hit : fittedTrackerHits) {
- String sensorName = hit.getRawTrackerHit().getDetectorElement().getName();
- double t0 = hit.getT0();
- double amp = hit.getAmp();
- double chi2 = hit.getShapeFitParameters().getChiSq();
- getSensorPlot(plotDir + "t0_", sensorName).fill(t0);
+ }
+ /* fill the FittedTrackerHit related histograms */
+ if (event.hasCollection(LCRelation.class, fittedTrackerHitCollectionName)) {
+ List<LCRelation> fittedTrackerHits = event.get(LCRelation.class, fittedTrackerHitCollectionName);
+ for (LCRelation hit : fittedTrackerHits) {
+ RawTrackerHit rth=(RawTrackerHit)hit.getFrom();
+ GenericObject pars=(GenericObject)hit.getTo();
+ String sensorName = getNiceSensorName((SiSensor)rth.getDetectorElement());
+ //this is a clever way to get the parameters we want from the generic object
+ ShapeFitParameters sfp=new ShapeFitParameters();
+ double t0 = sfp.getT0(pars);
+ double amp = sfp.getAmp(pars);
+ double chi2 = sfp.getChisq(pars);
+ getSensorPlot(plotDir + "t0Hit_", sensorName).fill(t0);
getSensorPlot(plotDir + "amplitude_", sensorName).fill(amp);
getSensorPlot(plotDir + "chi2_", sensorName).fill(chi2);
}
++eventCountFit;
- } else
- return;
+ }
+
+ if (event.hasItem(trackerHitCollectionName)) {
+ System.out.println("Found a Si cluster collection");
+ List<TrackerHit> siClusters = (List<TrackerHit>)event.get(trackerHitCollectionName);
+ for (TrackerHit cluster : siClusters) {
+ String sensorName = getNiceSensorName((SiSensor)((RawTrackerHit) cluster.getRawHits().get(0)).getDetectorElement());
+ double t0 = cluster.getTime();
+ double dedx = cluster.getdEdx()*1e6;
+// System.out.println("dedx = "+dedx);
+ getSensorPlot(plotDir + "t0Cluster_", sensorName).fill(t0);
+ getSensorPlot(plotDir + "electrons_", sensorName).fill(dedx);
+ }
+ }
}
private IHistogram1D getSensorPlot(String prefix, SiSensor sensor) {
- return aida.histogram1D(prefix + sensor.getName());
+ String hname=prefix+getNiceSensorName(sensor);
+ return aida.histogram1D(hname);
}
private IHistogram1D getSensorPlot(String prefix, String sensorName) {
@@ -130,11 +151,13 @@
}
private IHistogram1D createSensorPlot(String prefix, SiSensor sensor, int nchan, double min, double max) {
- IHistogram1D hist = aida.histogram1D(prefix + sensor.getName(), nchan, min, 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;
}
@@ -214,11 +237,11 @@
int irTop = 0;
int irBot = 0;
for (SiSensor sensor : sensors) {
- IHistogram1D sensPlot = getSensorPlot(plotDir + "t0_", sensor);
+ IHistogram1D sensPlot = getSensorPlot(plotDir + "t0Hit_", sensor);
IFitResult result = fitGaussian(sensPlot, fitter, "range=\"(-10.0,10.0)\"");
for (int i = 0; i < 5; i++) {
double par = result.fittedParameters()[i];
- System.out.println("t0_" + sensor.getName() + ": " + result.fittedParameterNames()[i] + " = " + par);
+ System.out.println("t0Hit_" + sensor.getName() + ": " + result.fittedParameterNames()[i] + " = " + par);
}
boolean isTop = SvtUtils.getInstance().isTopLayer(sensor);
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java 2014-06-27 02:18:08 UTC (rev 747)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java 2014-06-27 02:18:29 UTC (rev 748)
@@ -11,6 +11,7 @@
import org.lcsim.event.LCIOParameters;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
import org.lcsim.fit.helicaltrack.HelicalTrackCross;
import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.geometry.Detector;
@@ -58,9 +59,6 @@
this.detector = detector;
aida.tree().cd("/");
- IProfile avgLayersTopPlot = aida.profile1D(plotDir+"Number of Stereo Hits per layer in Top Half", 6, 1, 13);
- IProfile avgLayersBottomPlot = aida.profile1D(plotDir+"Number of Stereo Hits per layer in Bottom Half", 6, 1, 13);
-
IHistogram1D trkChi2 = aida.histogram1D(plotDir+"Track Chi2", 25, 0, 25.0);
IHistogram1D nTracks = aida.histogram1D(plotDir+"Tracks per Event", 6, 0, 6);
IHistogram1D trkd0 = aida.histogram1D(plotDir+"d0 ", 25, -5.0, 5.0);
@@ -76,29 +74,9 @@
public void process(EventHeader event) {
aida.tree().cd("/");
- if (!event.hasCollection(HelicalTrackHit.class, helicalTrackHitCollectionName))
- return;
- nEvents++;
- List<HelicalTrackHit> hthList = event.get(HelicalTrackHit.class, helicalTrackHitCollectionName);
- int[] layersTop = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- int[] layersBot = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- for (HelicalTrackHit hth : hthList) {
- HelicalTrackCross htc = (HelicalTrackCross) hth;
- double x = htc.getPosition()[0];
- double y = htc.getPosition()[1];
- SiSensor sensor = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement());
- if (SvtUtils.getInstance().isTopLayer(sensor))
- layersTop[htc.Layer() - 1]++;
- else
- layersBot[htc.Layer() - 1]++;
- }
- for (int i = 0; i < 12; i++) {
- aida.profile1D(plotDir+"Number of Stereo Hits per layer in Top Half").fill(i + 1, layersTop[i]);
- aida.profile1D(plotDir+"Number of Stereo Hits per layer in Bottom Half").fill(i + 1, layersBot[i]);
- }
-
+
if (!event.hasCollection(Track.class, trackCollectionName)) {
-// System.out.println(trackCollectionName + " does not exist; skipping event");
+ System.out.println(trackCollectionName + " does not exist; skipping event");
aida.histogram1D(plotDir+"Tracks per Event").fill(0);
return;
}
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java 2014-06-27 02:18:08 UTC (rev 747)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java 2014-06-27 02:18:29 UTC (rev 748)
@@ -5,6 +5,7 @@
import org.hps.recon.tracking.TrackResidualsData;
import org.hps.recon.tracking.TrackTimeData;
import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
import org.lcsim.geometry.Detector;
/**
@@ -34,7 +35,6 @@
for (int i = 0; i < nmodules; i++) {
IHistogram1D xresid = aida.histogram1D(plotDir + "Layer " + i + " x Residual", 50, -2.5, 2.5);
IHistogram1D yresid = aida.histogram1D(plotDir + "Layer " + i + " y Residual", 50, -1, 1);
-
}
for (int i = 0; i < nmodules * 2; i++) {
@@ -44,16 +44,14 @@
@Override
public void process(EventHeader event) {
-
aida.tree().cd("/");
- if (!event.hasCollection(TrackTimeData.class, trackTimeDataCollectionName))
+ if (!event.hasCollection(GenericObject.class, trackTimeDataCollectionName))
return;
- if (!event.hasCollection(TrackResidualsData.class, trackResidualsCollectionName))
+ if (!event.hasCollection(GenericObject.class, trackResidualsCollectionName))
return;
nEvents++;
-
- List<TrackResidualsData> trdList = event.get(TrackResidualsData.class, trackResidualsCollectionName);
- for (TrackResidualsData trd : trdList) {
+ List<GenericObject> trdList = event.get(GenericObject.class, trackResidualsCollectionName);
+ for (GenericObject trd : trdList) {
int nResid = trd.getNDouble();
for (int i = 0; i < nResid; i++) {
aida.histogram1D(plotDir + "Layer " + i + " x Residual").fill(trd.getDoubleVal(i));//x is the double value in the generic object
@@ -61,13 +59,12 @@
}
}
- List<TrackTimeData> ttdList = event.get(TrackTimeData.class, trackTimeDataCollectionName);
- for (TrackTimeData ttd : ttdList) {
+ List<GenericObject> ttdList = event.get(GenericObject.class, trackTimeDataCollectionName);
+ for (GenericObject ttd : ttdList) {
int nResid = ttd.getNDouble();
for (int i = 0; i < nResid; i++)
aida.histogram1D(plotDir + "Half-Layer " + i + " t Residual").fill(ttd.getDoubleVal(i));//x is the double value in the generic object
}
-
}
@Override
@@ -87,7 +84,6 @@
public void printDQMStrings() {
// for (Map.Entry<String, Double> entry : monitoredQuantityMap.entrySet())
// System.out.println("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
-
}
}