Author: [log in to unmask]
Date: Tue Apr 21 08:58:07 2015
New Revision: 2762
Log:
Add helical track hit monitoring plots...probably needs some improvement to the axis ranges etal.
Modified:
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java Tue Apr 21 08:58:07 2015
@@ -18,7 +18,9 @@
import org.lcsim.event.EventHeader;
import org.lcsim.event.LCIOParameters.ParameterName;
+import org.lcsim.event.RawTrackerHit;
import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
import org.lcsim.fit.helicaltrack.HelicalTrackFit;
import org.lcsim.geometry.Detector;
import org.lcsim.geometry.IDDecoder;
@@ -35,18 +37,22 @@
private AIDA aida = AIDA.defaultInstance();
private String trackCollectionName = "MatchedTracks";
+ private String helicalTrackHitCollectionName = "HelicalTrackHits";
String ecalSubdetectorName = "Ecal";
String ecalCollectionName = "EcalClusters";
IDDecoder dec;
private String outputPlots = null;
private boolean debug = false;
- double feeMomentumCut = 1.6;
+ double feeMomentumCut = 0.8;
+ int nmodules = 6;
IPlotter plotter;
IPlotter plotter22;
IPlotter plotterECal;
IPlotter plotterFEE;
+ IPlotter plotterHTH;
+ IPlotter plotterXvsY;
IHistogram1D nTracks;
IHistogram1D nhits;
@@ -69,6 +75,11 @@
IHistogram1D hfeePOverE;
IHistogram2D hfeeClustPos;
+ IHistogram1D[] hthTop = new IHistogram1D[nmodules];
+ IHistogram1D[] hthBot = new IHistogram1D[nmodules];
+ IHistogram2D[] xvsyTop = new IHistogram2D[nmodules];
+ IHistogram2D[] xvsyBot = new IHistogram2D[nmodules];
+
@Override
protected void detectorChanged(Detector detector) {
aida.tree().cd("/");
@@ -145,6 +156,25 @@
plotterFEE.show();
+ plotterHTH = pfac.create("Track Hits");
+ plotterHTH.createRegions(3, 4);
+ plotterXvsY = pfac.create("3d Hit Positions");
+ plotterXvsY.createRegions(3, 4);
+
+ for (int i = 1; i <= nmodules; i++) {
+
+ xvsyTop[i - 1] = aida.histogram2D("Module " + i + " Top", 50, -10, 10, 50, 0, 4);
+ xvsyBot[i - 1] = aida.histogram2D("Module " + i + " Bottom", 50, -10, 10, 50, 0, 4);
+ hthTop[i - 1] = aida.histogram1D("Module " + i + "Top: Track Hits", 25, 0, 25);
+ hthBot[i - 1] = aida.histogram1D("Module " + i + "Bot: Track Hits", 25, 0, 25);
+ plot(plotterHTH, hthTop[i - 1], null, computePlotterRegion(i - 1, true));
+ plot(plotterHTH, hthBot[i - 1], null, computePlotterRegion(i - 1, false));
+ plot(plotterXvsY, xvsyTop[i - 1], null, computePlotterRegion(i - 1, true));
+ plot(plotterXvsY, xvsyBot[i - 1], null, computePlotterRegion(i - 1, false));
+ }
+ plotterHTH.show();
+ plotterXvsY.show();
+
}
public TrackingReconPlots() {
@@ -169,6 +199,42 @@
if (!event.hasCollection(Track.class, trackCollectionName)) {
nTracks.fill(0);
return;
+ }
+
+ if (!event.hasCollection(TrackerHit.class, helicalTrackHitCollectionName))
+ return;
+
+ int[] topHits = {0, 0, 0, 0, 0, 0};
+ int[] botHits = {0, 0, 0, 0, 0, 0};
+ List<TrackerHit> hth = event.get(TrackerHit.class, helicalTrackHitCollectionName);
+ for (TrackerHit hit : hth) {
+ int module = -99;
+ int layer = ((RawTrackerHit) hit.getRawHits().get(0)).getLayerNumber();
+ if (layer < 2)
+ module = 1;
+ else if (layer < 4)
+ module = 2;
+ else if (layer < 6)
+ module = 3;
+ else if (layer < 8)
+ module = 4;
+ else if (layer < 10)
+ module = 5;
+ else
+ module = 6;
+
+ if (hit.getPosition()[1] > 0) {
+ topHits[module - 1]++;
+ xvsyTop[module - 1].fill(hit.getPosition()[0], hit.getPosition()[0]);
+ } else {
+ botHits[module - 1]++;
+ xvsyBot[module - 1].fill(hit.getPosition()[0], Math.abs(hit.getPosition()[0]));
+ }
+ }
+
+ for (int i = 0; i < nmodules; i++) {
+ hthTop[i].fill(topHits[i]);
+ hthBot[i].fill(botHits[i]);
}
List<Track> tracks = event.get(Track.class, trackCollectionName);
@@ -268,4 +334,20 @@
return closest;
}
+ private int computePlotterRegion(int i, boolean istop) {
+
+ int region = -99;
+ if (i < 3)
+ if (istop)
+ region = i * 4;
+ else
+ region = i * 4 + 1;
+ else if (istop)
+ region = (i - 3) * 4 + 2;
+ else
+ region = (i - 3) * 4 + 3;
+// System.out.println("Setting region to "+region);
+ return region;
+ }
+
}
|