Author: [log in to unmask]
Date: Fri Apr 24 16:52:52 2015
New Revision: 2814
Log:
more DQM plots; change some histogram ranges
Modified:
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java
java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim
Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java
=============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java Fri Apr 24 16:52:52 2015
@@ -8,23 +8,27 @@
import hep.aida.IHistogram2D;
import hep.aida.IPlotter;
import hep.aida.IPlotterStyle;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;
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.ecal.triggerbank.AbstractIntData;
-import org.hps.recon.ecal.triggerbank.TDCData;
-import org.hps.recon.ecal.triggerbank.TIData;
+import org.hps.recon.tracking.FittedRawTrackerHit;
import org.hps.recon.tracking.ShapeFitParameters;
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;
+import org.lcsim.event.SimTrackerHit;
import org.lcsim.event.TrackerHit;
+import org.lcsim.event.base.BaseRelationalTable;
import org.lcsim.geometry.Detector;
/**
@@ -88,8 +92,16 @@
//IHistogram1D occupancyPlot = aida.histogram1D(sensor.getName().replaceAll("Tracker_TestRunModule_", ""), 640, 0, 639);
IHistogram1D occupancyPlot = createSensorPlot(plotDir + "occupancy_", sensor, maxChannels, 0, maxChannels - 1);
IHistogram1D t0Plot = createSensorPlot(plotDir + "t0Hit_", sensor, 400, -100., 100.);
+ IHistogram1D nHits = createSensorPlot(plotDir + "nHitsPerEvent_", sensor, 100, -0.5, 99.5);
+ IHistogram1D pileup = createSensorPlot(plotDir + "nFitsPerHit_", sensor, 3, 0.5, 3.5);
+
IHistogram1D amplitudePlot = createSensorPlot(plotDir + "amplitude_", sensor, 50, 0, 4000.0);
IHistogram2D t0AmpPlot = createSensorPlot2D(plotDir + "t0AmpHit_", sensor, 200, -100., 100., 50, 0, 4000.0);
+ IHistogram2D t0ChanPlot = createSensorPlot2D(plotDir + "t0ChanBigHit_", sensor, 640, -0.5, 639.5, 200, -100., 100.);
+ IHistogram2D ampChanPlot = createSensorPlot2D(plotDir + "ampChanHit_", sensor, 640, -0.5, 639.5, 50, 0, 4000);
+ IHistogram2D chiprobChanPlot = createSensorPlot2D(plotDir + "chiprobChanBigHit_", sensor, 640, -0.5, 639.5, 50, 0, 1.0);
+ IHistogram2D t0TrigTimeHitPlot = createSensorPlot2D(plotDir + "t0BigHitTrigTime_", sensor, 400, -100., 100., 6, -2, 22);
+
IHistogram1D chiProbPlot = createSensorPlot(plotDir + "chiProb_", sensor, 50, 0, 1.0);
IHistogram1D t0ClusterPlot = createSensorPlot(plotDir + "t0Cluster_", sensor, 400, -100., 100.);
IHistogram2D t0TrigTimePlot = createSensorPlot2D(plotDir + "t0ClusterTrigTime_", sensor, 400, -100., 100., 6, -2, 22);
@@ -104,30 +116,63 @@
public void process(EventHeader event) {
/* increment the strip occupancy arrays */
+ Map<String, Integer> hitsPerSensor = new HashMap<String, Integer>();
+
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;
+
+ Integer nHits = hitsPerSensor.get(hit.getDetectorElement().getName());
+ if (nHits == null) {
+ nHits = 0;
+ }
+ nHits++;
+ hitsPerSensor.put(hit.getDetectorElement().getName(), nHits);
}
++eventCountRaw;
+ }
+ for (HpsSiSensor sensor : sensors) {
+ IHistogram1D sensorHist = getSensorPlot(plotDir + "nHitsPerEvent_", sensor);
+ Integer nHits = hitsPerSensor.get(sensor.getName());
+ if (nHits == null) {
+ sensorHist.fill(0);
+ } else {
+ sensorHist.fill(nHits);
+ }
}
/* fill the FittedTrackerHit related histograms */
if (event.hasCollection(LCRelation.class, fittedTrackerHitCollectionName)) {
List<LCRelation> fittedTrackerHits = event.get(LCRelation.class, fittedTrackerHitCollectionName);
+
+ RelationalTable rthtofit = new BaseRelationalTable(RelationalTable.Mode.ONE_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
+ for (LCRelation hit : fittedTrackerHits) {
+ rthtofit.add(FittedRawTrackerHit.getRawTrackerHit(hit), FittedRawTrackerHit.getShapeFitParameters(hit));
+ }
+
for (LCRelation hit : fittedTrackerHits) {
RawTrackerHit rth = (RawTrackerHit) hit.getFrom();
GenericObject pars = (GenericObject) hit.getTo();
+
String sensorName = getNiceSensorName((HpsSiSensor) rth.getDetectorElement());
//this is a clever way to get the parameters we want from the generic object
double t0 = ShapeFitParameters.getT0(pars);
double amp = ShapeFitParameters.getAmp(pars);
double chiProb = ShapeFitParameters.getChiProb(pars);
+ int channel = rth.getIdentifierFieldValue("strip");
+ getSensorPlot(plotDir + "nFitsPerHit_", sensorName).fill(rthtofit.allFrom(rth).size());
getSensorPlot(plotDir + "t0Hit_", sensorName).fill(t0);
getSensorPlot(plotDir + "amplitude_", sensorName).fill(amp);
getSensorPlot2D(plotDir + "t0AmpHit_", sensorName).fill(t0, amp);
getSensorPlot(plotDir + "chiProb_", sensorName).fill(chiProb);
+ getSensorPlot2D(plotDir + "ampChanHit_", sensorName).fill(channel, amp);
+ if (amp > 1000.0) {
+ getSensorPlot2D(plotDir + "t0ChanBigHit_", sensorName).fill(channel, t0);
+ getSensorPlot2D(plotDir + "chiprobChanBigHit_", sensorName).fill(channel, chiProb);
+ getSensorPlot2D(plotDir + "t0BigHitTrigTime_", sensorName).fill(t0, event.getTimeStamp() % 24);
+ }
}
++eventCountFit;
}
Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java
=============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java Fri Apr 24 16:52:52 2015
@@ -31,9 +31,12 @@
private final String rotatedHelicalTrackHitRelationsCollectionName = "RotatedHelicalTrackHitRelations";
private String trackCollectionName = "MatchedTracks";
private final String trackerName = "Tracker";
+ private static final String nameStrip = "Tracker_TestRunModule_";
String ecalSubdetectorName = "Ecal";
String ecalCollectionName = "EcalClusters";
private Detector detector = null;
+ private List<HpsSiSensor> sensors;
+
IDDecoder dec;
int nEvents = 0;
int nTotTracks = 0;
@@ -66,10 +69,20 @@
IHistogram1D trklam = aida.histogram1D(plotDir + "tan(lambda) ", 25, -0.1, 0.1);
IHistogram1D trkz0 = aida.histogram1D(plotDir + "z0 ", 25, -1.0, 1.0);
IHistogram1D nHits = aida.histogram1D(plotDir + "Hits per Track", 2, 5, 7);
- IHistogram1D trackMeanTime = aida.histogram1D(plotDir + "Mean time of hits on track", 200, -20., 20.);
+ IHistogram1D trackMeanTime = aida.histogram1D(plotDir + "Mean time of hits on track", 400, -100., 100.);
IHistogram1D trackRMSTime = aida.histogram1D(plotDir + "RMS time of hits on track", 200, 0., 15.);
IHistogram2D trackChi2RMSTime = aida.histogram2D(plotDir + "Track chi2 vs. RMS time of hits", 200, 0., 15., 25, 0, 25.0);
IHistogram1D seedRMSTime = aida.histogram1D(plotDir + "RMS time of hits on seed layers", 200, 0., 15.);
+
+ // Make a list of SiSensors in the SVT.
+ sensors = this.detector.getSubdetector(trackerName).getDetectorElement().findDescendants(HpsSiSensor.class);
+
+ // Setup the occupancy plots.
+ aida.tree().cd("/");
+ for (HpsSiSensor sensor : sensors) {
+ //IHistogram1D occupancyPlot = aida.histogram1D(sensor.getName().replaceAll("Tracker_TestRunModule_", ""), 640, 0, 639);
+ IHistogram1D hitTimeResidual = createSensorPlot(plotDir + "hitTimeResidual_", sensor, 100, -20, 20);
+ }
}
@@ -141,10 +154,13 @@
Collection<TrackerHit> htsList = hittostrip.allFrom(hittorotated.from(hit));
for (TrackerHit hts : htsList) {
rmsTime += Math.pow(hts.getTime() - meanTime, 2);
- int layer = ((HpsSiSensor) ((RawTrackerHit) hts.getRawHits().get(0)).getDetectorElement()).getLayerNumber();
+ 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 + "hitTimeResidual_", sensorName).fill(hts.getTime() - meanTime);
}
}
rmsTime = Math.sqrt(rmsTime / nStrips);
@@ -185,4 +201,32 @@
System.out.println("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
}
}
+
+ 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")
+ .replace("layer", "lyr")
+ .replace("sensor", "sens");
+ }
+
}
Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java
=============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java Fri Apr 24 16:52:52 2015
@@ -56,16 +56,16 @@
/* beamspot constrained */
IHistogram1D nV0 = aida.histogram1D(plotDir + "Number of V0 per event", 10, 0, 10);
IHistogram1D bsconMass = aida.histogram1D(plotDir + "BS Constrained Mass (GeV)", 100, 0, 0.200);
- IHistogram1D bsconVx = aida.histogram1D(plotDir + "BS Constrained Vx (mm)", 50, -1, 1);
- IHistogram1D bsconVy = aida.histogram1D(plotDir + "BS Constrained Vy (mm)", 50, -1, 1);
- IHistogram1D bsconVz = aida.histogram1D(plotDir + "BS Constrained Vz (mm)", 50, -10, 10);
- IHistogram1D bsconChi2 = aida.histogram1D(plotDir + "BS Constrained Chi2", 25, 0, 25);
+ IHistogram1D bsconVx = aida.histogram1D(plotDir + "BS Constrained Vx (mm)", 200, -5, 5);
+ IHistogram1D bsconVy = aida.histogram1D(plotDir + "BS Constrained Vy (mm)", 200, -5, 5);
+ IHistogram1D bsconVz = aida.histogram1D(plotDir + "BS Constrained Vz (mm)", 200, -50, 50);
+ IHistogram1D bsconChi2 = aida.histogram1D(plotDir + "BS Constrained Chi2", 100, 0, 100);
/* target constrained */
IHistogram1D tarconMass = aida.histogram1D(plotDir + "Target Constrained Mass (GeV)", 100, 0, 0.200);
- IHistogram1D tarconVx = aida.histogram1D(plotDir + "Target Constrained Vx (mm)", 50, -1, 1);
- IHistogram1D tarconVy = aida.histogram1D(plotDir + "Target Constrained Vy (mm)", 50, -1, 1);
- IHistogram1D tarconVz = aida.histogram1D(plotDir + "Target Constrained Vz (mm)", 50, -10, 10);
- IHistogram1D tarconChi2 = aida.histogram1D(plotDir + "Target Constrained Chi2", 25, 0, 25);
+ IHistogram1D tarconVx = aida.histogram1D(plotDir + "Target Constrained Vx (mm)", 200, -5, 5);
+ IHistogram1D tarconVy = aida.histogram1D(plotDir + "Target Constrained Vy (mm)", 200, -5, 5);
+ IHistogram1D tarconVz = aida.histogram1D(plotDir + "Target Constrained Vz (mm)", 200, -50, 50);
+ IHistogram1D tarconChi2 = aida.histogram1D(plotDir + "Target Constrained Chi2", 100, 0, 100);
}
Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim
=============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim (original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim Fri Apr 24 16:52:52 2015
@@ -1,5 +1,5 @@
<!--
- Offline reconstruction for 2014 (electron run) data.
+ Offline reconstruction for 2015 (engineering run with SVT+ECal) data.
@author Sho Uemura <[log in to unmask]>
-->
<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
@@ -18,10 +18,6 @@
<driver name="TrackDataDriver" />
<!--<driver name="GBLDriver"/>-->
<driver name="LCIOWriter"/>
-
- <!--<driver name="SVTMonitoring"/>-->
- <!--<driver name="TrackingMonitoring"/>-->
- <driver name="AidaSaveDriver"/>
<driver name="CleanupDriver"/>
</execute>
@@ -108,12 +104,5 @@
<driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
<outputFileName>${outputFile}.root</outputFileName>
</driver>
- <driver name="TrackingMonitoring" type="org.hps.analysis.dataquality.TrackingMonitoring">
- <overwriteDB>false</overwriteDB>
- </driver>
- <driver name="SVTMonitoring" type="org.hps.analysis.dataquality.SvtMonitoring">
- <overwriteDB>false</overwriteDB>
- </driver>
-
</drivers>
</lcsim>
|