Commit in hps-java/src/main on MAIN | |||
resources/org/lcsim/hps/steering/OnlineTracking.lcsim | +22 | -8 | 1.8 -> 1.9 |
java/org/lcsim/hps/monitoring/svt/SVTEventInfo.java | +18 | 1.4 -> 1.5 | |
/SVTHitReconstructionPlots.java | +14 | 1.7 -> 1.8 | |
/SVTHitPulsePlots.java | +18 | -9 | 1.9 -> 1.10 |
/TrackingReconstructionPlots.java | +305 | -21 | 1.2 -> 1.3 |
java/org/lcsim/hps/recon/vertexing/StraightLineTrack.java | +14 | -1 | 1.1 -> 1.2 |
resources/org/lcsim/hps/recon/tracking/strategies/HPS-Test-4pt1.xml | +2 | -2 | 1.3 -> 1.4 |
+393 | -41 |
Some changes to plots...many more tracking-related ones.
diff -u -r1.8 -r1.9 --- OnlineTracking.lcsim 5 May 2012 11:48:43 -0000 1.8 +++ OnlineTracking.lcsim 8 May 2012 16:01:33 -0000 1.9 @@ -4,18 +4,30 @@
<driver name="EventMarkerDriver"/> <driver name="SVTSetupDriver"/> <driver name="HPSSVTDAQMaps"/>
+ <driver name="EcalRawConverter"/> + <driver name="EcalClusterer"/>
<driver name="RawTrackerHitMaker"/>
-<!-- <driver name="SVTEventPlots"/> --> - <!-- <driver name="SVTPulsePlots"/> -->
+ <driver name="SVTEventPlots"/> + <driver name="SVTPulsePlots"/>
<driver name="RawTrackerHitFitterDriver"/> <driver name="TrackerHitDriver"/>
-<!-- <driver name="SVTHitRecoPlots"/> -->
+ <driver name="SVTHitRecoPlots"/>
<driver name="TrackerReconDriver"/> <driver name="TrackingReconstructionPlots"/> <driver name="LCIOWriter"/> <driver name="CleanupDriver"/> </execute> <drivers>
+ <driver name="EcalRawConverter" + type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver"> + <ecalCollectionName>EcalCalHits</ecalCollectionName> + </driver> + <driver name="EcalClusterer" + type="org.lcsim.hps.recon.ecal.HPSEcalClusterer"> + <ecalName>Ecal</ecalName> + <ecalCollectionName>EcalCalHits</ecalCollectionName> + </driver> +
<driver name="RawTrackerHitFitterDriver" type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver"> <rawHitCollectionName>SVTRawTrackerHits</rawHitCollectionName>
@@ -28,23 +40,24 @@
<driver name="SVTEventPlots" type="org.lcsim.hps.monitoring.svt.SVTEventInfo">
- <rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName>
+ <outputPlots>svtEventInfoPlots.aida</outputPlots>
</driver> <driver name="SVTHitRecoPlots" type="org.lcsim.hps.monitoring.svt.SVTHitReconstructionPlots"> <rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName> <fittedTrackerHitCollectionName>SVTFittedRawTrackerHits</fittedTrackerHitCollectionName>
+ <outputPlots>svtHitRecoPlots.aida</outputPlots>
</driver> <driver name="SVTPulsePlots" type="org.lcsim.hps.monitoring.svt.SVTHitPulsePlots">
- <rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName>
+ <rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName> + <outputPlots>svtPulsePlots.aida</outputPlots>
</driver> <driver name="SVTEventDisplay" type="org.lcsim.hps.monitoring.svt.SVTEventDisplay">
- <rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName>
</driver> <driver name="SVTSetupDriver"
@@ -67,8 +80,9 @@
<driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"> <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName> </driver>
- - <driver name="TrackingReconstructionPlots" type="org.lcsim.hps.monitoring.svt.TrackingReconstructionPlots">
+ + <driver name="TrackingReconstructionPlots" type="org.lcsim.hps.monitoring.svt.TrackingReconstructionPlots"> + <outputPlots>trackingPlots.aida</outputPlots>
</driver>
diff -u -r1.4 -r1.5 --- SVTEventInfo.java 3 May 2012 13:50:36 -0000 1.4 +++ SVTEventInfo.java 8 May 2012 16:01:33 -0000 1.5 @@ -1,10 +1,13 @@
package org.lcsim.hps.monitoring.svt; import hep.aida.*;
+import java.io.IOException;
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
+import java.util.logging.Level; +import java.util.logging.Logger;
import org.lcsim.detector.identifier.IIdentifier; import org.lcsim.detector.tracker.silicon.*; import org.lcsim.event.EventHeader;
@@ -28,10 +31,13 @@
private List<SiSensor> sensors; IPlotter plotter; IPlotter plotter2;
+ private String outputPlots = null;
public SVTEventInfo() { }
+ +
public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) { this.rawTrackerHitCollectionName = rawTrackerHitCollectionName; }
@@ -80,6 +86,11 @@
plotter2.show(); }
+ + public void setOutputPlots(String output) { + this.outputPlots = output; + } +
public void process(EventHeader event) { if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) { List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
@@ -141,6 +152,13 @@
if (plotter2 != null) { plotter2.hide(); }
+ + if (outputPlots != null) + try { + aida.saveAs(outputPlots); + } catch (IOException ex) { + Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex); + }
} private boolean isHitOnTop(RawTrackerHit hit) {
diff -u -r1.7 -r1.8 --- SVTHitReconstructionPlots.java 6 May 2012 08:57:38 -0000 1.7 +++ SVTHitReconstructionPlots.java 8 May 2012 16:01:33 -0000 1.8 @@ -1,10 +1,13 @@
package org.lcsim.hps.monitoring.svt; import hep.aida.*;
+import java.io.IOException;
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
+import java.util.logging.Level; +import java.util.logging.Logger;
import org.lcsim.detector.identifier.IIdentifier; import org.lcsim.detector.identifier.IIdentifierHelper; import org.lcsim.detector.tracker.silicon.SiSensor;
@@ -40,6 +43,7 @@
IPlotter plotter4; IPlotter plotter5; private Map<String, Integer> sensorRegionMap;
+ private String outputPlots = null;
protected void detectorChanged(Detector detector) { plotterFrame = new AIDAFrame();
@@ -126,6 +130,10 @@
public SVTHitReconstructionPlots() { }
+ public void setOutputPlots(String output) { + this.outputPlots = output; + } +
public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) { this.rawTrackerHitCollectionName = rawTrackerHitCollectionName; }
@@ -193,6 +201,12 @@
} public void endOfData() {
+ if (outputPlots != null) + try { + aida.saveAs(outputPlots); + } catch (IOException ex) { + Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex); + }
plotterFrame.dispose(); }
diff -u -r1.9 -r1.10 --- SVTHitPulsePlots.java 6 May 2012 08:57:38 -0000 1.9 +++ SVTHitPulsePlots.java 8 May 2012 16:01:33 -0000 1.10 @@ -1,10 +1,13 @@
package org.lcsim.hps.monitoring.svt; import hep.aida.*;
+import java.io.IOException;
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
+import java.util.logging.Level; +import java.util.logging.Logger;
import org.lcsim.detector.identifier.IIdentifier; import org.lcsim.detector.identifier.IIdentifierHelper; import org.lcsim.detector.tracker.silicon.SiSensor;
@@ -33,7 +36,8 @@
private IPlotter plotter2; private List<SiSensor> sensors; private Map<String, Integer> sensorRegionMap;
-
+ private String outputPlots = null; +
protected void detectorChanged(Detector detector) { plotterFrame = new AIDAFrame(); plotterFrame.setTitle("HPS SVT Pulse Plots");
@@ -90,6 +94,11 @@
public SVTHitPulsePlots() { }
+ + + public void setOutputPlots(String output) { + this.outputPlots = output; + }
public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) { this.rawTrackerHitCollectionName = rawTrackerHitCollectionName;
@@ -127,13 +136,13 @@
} public void endOfData() {
- if (plotter3 != null) { - plotter3.hide(); - } - if (plotter2 != null) { - plotter2.hide(); - } -
+ plotterFrame.dispose(); + if (outputPlots != null) + try { + aida.saveAs(outputPlots); + } catch (IOException ex) { + Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex); + }
} private boolean hasAdjacentHit(RawTrackerHit hit) {
@@ -158,7 +167,7 @@
for (int i = 0; i < ns; i++) { aida.histogram2D(sensors.get(i).getName() + "_AdcVsChan").reset(); aida.profile1D(sensors.get(i).getName() + "_pulse").reset();
- }
+ }
}
diff -u -r1.2 -r1.3 --- TrackingReconstructionPlots.java 5 May 2012 11:48:43 -0000 1.2 +++ TrackingReconstructionPlots.java 8 May 2012 16:01:33 -0000 1.3 @@ -1,19 +1,34 @@
package org.lcsim.hps.monitoring.svt; import hep.aida.*;
+import hep.physics.matrix.SymmetricMatrix; +import hep.physics.vec.Hep3Vector; +import java.io.IOException;
import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set;
+import java.util.logging.Level; +import java.util.logging.Logger;
import org.lcsim.detector.tracker.silicon.SiSensor;
-import org.lcsim.event.EventHeader; -import org.lcsim.event.RawTrackerHit; -import org.lcsim.event.Track;
+import org.lcsim.event.*; +import org.lcsim.fit.helicaltrack.HelicalTrackCross; +import org.lcsim.fit.helicaltrack.HelicalTrackFit; +import org.lcsim.fit.helicaltrack.HelicalTrackHit; +import org.lcsim.fit.helicaltrack.HelixUtils;
import org.lcsim.geometry.Detector;
+import org.lcsim.geometry.IDDecoder; +import org.lcsim.hps.monitoring.AIDAFrame;
import org.lcsim.hps.monitoring.Resettable;
+import org.lcsim.hps.recon.ecal.HPSEcalCluster;
import org.lcsim.hps.recon.tracking.HPSFittedRawTrackerHit; import org.lcsim.hps.recon.tracking.HPSSVTCalibrationConstants;
+import org.lcsim.hps.recon.tracking.HPSSVTDAQMaps; +import org.lcsim.hps.recon.vertexing.HelixConverter; +import org.lcsim.hps.recon.vertexing.StraightLineTrack;
import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
+import org.lcsim.recon.tracking.seedtracker.SeedCandidate; +import org.lcsim.recon.tracking.seedtracker.SeedTrack;
import org.lcsim.util.Driver; import org.lcsim.util.aida.AIDA;
@@ -23,7 +38,7 @@
*/ public class TrackingReconstructionPlots extends Driver implements Resettable {
- private List<IPlotter> plotters = new ArrayList<IPlotter>();
+ private AIDAFrame plotterFrame;
private AIDA aida = AIDA.defaultInstance(); private String rawTrackerHitCollectionName = "SVTRawTrackerHits"; private String fittedTrackerHitCollectionName = "SVTFittedRawTrackerHits";
@@ -32,36 +47,44 @@
private String helicalTrackHitRelationsCollectionName = "HelicalTrackHitRelations"; private String trackCollectionName = "MatchedTracks"; private String trackerName = "Tracker";
+ String ecalSubdetectorName = "Ecal"; + String ecalCollectionName = "EcalClusters";
private Detector detector = null;
+ IDDecoder dec;
private int eventCount; private List<SiSensor> sensors;
+ private double zAtConverter = -600;//mm + private String outputPlots = null;
IPlotter plotter; IPlotter plotter2; IPlotter plotter3; IPlotter plotter4; IPlotter plotter5;
+ IPlotter plotter6; + double zEcal = 130; + IHistogram1D trkPx; + IHistogram1D nTracks;
protected void detectorChanged(Detector detector) { this.detector = detector; aida.tree().cd("/");
-
+ plotterFrame = new AIDAFrame(); + plotterFrame.setTitle("HPS Tracking Plots");
sensors = detector.getSubdetector(trackerName).getDetectorElement().findDescendants(SiSensor.class);
-
IAnalysisFactory fac = aida.analysisFactory();
- plotter = fac.createPlotterFactory().create("HPS SVT Timing Plots"); - plotters.add(plotter);
+ plotter = fac.createPlotterFactory().create("HPS Tracking Plots"); + plotter.setTitle("Momentum");
IPlotterStyle style = plotter.style(); style.dataStyle().fillStyle().setColor("yellow"); style.dataStyle().errorBarStyle().setVisible(false); plotter.createRegions(2, 2);
+ plotterFrame.addPlotter(plotter);
- - - IHistogram1D trkPx = aida.histogram1D("Track Momentum (Px)", 25, -0.1, 0.1);
+ trkPx = aida.histogram1D("Track Momentum (Px)", 25, -0.25, 0.25);
IHistogram1D trkPy = aida.histogram1D("Track Momentum (Py)", 25, -0.25, 0.25);
- IHistogram1D trkPz = aida.histogram1D("Track Momentum (Pz)", 25, 0, 2.5);
+ IHistogram1D trkPz = aida.histogram1D("Track Momentum (Pz)", 25, 0, 3.5);
IHistogram1D trkChi2 = aida.histogram1D("Track Chi2", 25, 0, 25.0); plotter.region(0).plot(trkPx);
@@ -69,13 +92,141 @@
plotter.region(2).plot(trkPz); plotter.region(3).plot(trkChi2);
- plotter.show();
+ + plotter2 = fac.createPlotterFactory().create("HPS Tracking Plots"); + plotter2.setTitle("Other"); + plotterFrame.addPlotter(plotter2); + IPlotterStyle style2 = plotter2.style(); + style2.dataStyle().fillStyle().setColor("yellow"); + style2.dataStyle().errorBarStyle().setVisible(false); + plotter2.createRegions(2, 2); + IHistogram1D xAtConverter = aida.histogram1D("X (mm) @ Z=-60cm", 25, -20, 20); + IHistogram1D yAtConverter = aida.histogram1D("Y (mm) @ Z=-60cm", 25, -50, 50); + IHistogram1D nHits = aida.histogram1D("Hits per Track", 2, 4, 6); + nTracks = aida.histogram1D("Tracks per Event", 3, 0, 3); + plotter2.region(0).plot(xAtConverter); + plotter2.region(1).plot(yAtConverter); + plotter2.region(2).plot(nHits); + plotter2.region(3).plot(nTracks); + + + plotter3 = fac.createPlotterFactory().create("HPS Residual Plots"); + plotter3.setTitle("Residuals"); + plotterFrame.addPlotter(plotter3); + IPlotterStyle style3 = plotter3.style(); + style3.dataStyle().fillStyle().setColor("yellow"); + style3.dataStyle().errorBarStyle().setVisible(false); + plotter3.createRegions(5, 2); + + double minResidY = -1; + double maxResidY = 1; + + double minResidX = -25; + double maxResidX = 25; + + IHistogram1D mod1ResX = aida.histogram1D("Module 1 Residual X(mm)", 25, minResidX, maxResidX); + IHistogram1D mod1ResY = aida.histogram1D("Module 1 Residual Y(mm)", 25, minResidY, maxResidY); + + IHistogram1D mod2ResX = aida.histogram1D("Module 2 Residual X(mm)", 25, minResidX, maxResidX); + IHistogram1D mod2ResY = aida.histogram1D("Module 2 Residual Y(mm)", 25, minResidY, maxResidY); + + IHistogram1D mod3ResX = aida.histogram1D("Module 3 Residual X(mm)", 25, minResidX, maxResidX); + IHistogram1D mod3ResY = aida.histogram1D("Module 3 Residual Y(mm)", 25, minResidY, maxResidY); + + IHistogram1D mod4ResX = aida.histogram1D("Module 4 Residual X(mm)", 25, minResidX, maxResidX); + IHistogram1D mod4ResY = aida.histogram1D("Module 4 Residual Y(mm)", 25, minResidY, maxResidY); + + IHistogram1D mod5ResX = aida.histogram1D("Module 5 Residual X(mm)", 25, minResidX, maxResidX); + IHistogram1D mod5ResY = aida.histogram1D("Module 5 Residual Y(mm)", 25, minResidY, maxResidY); + + plotter3.region(0).plot(mod1ResX); + plotter3.region(2).plot(mod2ResX); + plotter3.region(4).plot(mod3ResX); + plotter3.region(6).plot(mod4ResX); + plotter3.region(8).plot(mod5ResX); + + plotter3.region(1).plot(mod1ResY); + plotter3.region(3).plot(mod2ResY); + plotter3.region(5).plot(mod3ResY); + plotter3.region(7).plot(mod4ResY); + plotter3.region(9).plot(mod5ResY); + + + plotter4 = fac.createPlotterFactory().create("HPS Track and ECal Plots"); + plotter4.setTitle("Track and ECal Correlations"); + plotterFrame.addPlotter(plotter4); + IPlotterStyle style4 = plotter4.style(); + style4.setParameter("hist2DStyle", "colorMap"); + style4.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); + style4.dataStyle().fillStyle().setColor("yellow"); + style4.dataStyle().errorBarStyle().setVisible(false); + plotter4.createRegions(2, 2); + + IHistogram2D eVsP = aida.histogram2D("Energy Vs Momentum", 50, 0, 5000, 50, 0, 3500); + IHistogram1D eOverP = aida.histogram1D("Energy Over Momentum", 50, 0, 5); + + IHistogram1D distX = aida.histogram1D("deltaX", 50, -50, 50); + IHistogram1D distY = aida.histogram1D("deltaY", 50, -50, 50); + + plotter4.region(0).plot(eVsP); + plotter4.region(1).plot(eOverP); + plotter4.region(2).plot(distX); + plotter4.region(3).plot(distY); + + + + plotter5 = fac.createPlotterFactory().create("HPS Hit Positions"); + plotter5.setTitle("Hit Positions"); + plotterFrame.addPlotter(plotter5); + IPlotterStyle style5 = plotter5.style(); + style5.setParameter("hist2DStyle", "colorMap"); + style5.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); + style5.dataStyle().fillStyle().setColor("yellow"); + style5.dataStyle().errorBarStyle().setVisible(false); + plotter5.createRegions(1, 2); + + IHistogram1D charge = aida.histogram1D("Charge", 3, -1, 1); + + IHistogram2D l1Pos = aida.histogram2D("Layer 1 HTH Position", 50, -55, 55, 55, -25, 25); + IHistogram2D l7Pos = aida.histogram2D("Layer 7 HTH Position", 50, -55, 55, 55, -25, 25); + + plotter5.region(0).plot(l1Pos); + plotter5.region(1).plot(l7Pos); + + + plotter6 = fac.createPlotterFactory().create("HPS ECAL Hit Positions"); + plotter6.setTitle("ECAL Positions"); + plotterFrame.addPlotter(plotter6); + IPlotterStyle style6 = plotter6.style(); + style6.setParameter("hist2DStyle", "colorMap"); + style6.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); + style6.dataStyle().fillStyle().setColor("yellow"); + style6.dataStyle().errorBarStyle().setVisible(false); + plotter6.createRegions(1, 2); + + + IHistogram2D topECal = aida.histogram2D("Top ECal Cluster Position", 50, -400, 400, 10, 0, 100); + IHistogram2D botECal = aida.histogram2D("Bottom ECal Cluster Position", 50, -400, 400, 10, -100, 0); + + plotter6.region(0).plot(topECal); + plotter6.region(1).plot(botECal); + + + + plotterFrame.pack(); + plotterFrame.setVisible(true); + +
} public TrackingReconstructionPlots() { }
+ public void setOutputPlots(String output) { + this.outputPlots = output; + } +
public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) { this.rawTrackerHitCollectionName = rawTrackerHitCollectionName; }
@@ -97,35 +248,168 @@
} public void process(EventHeader event) {
+ aida.tree().cd("/"); + if (!event.hasCollection(HelicalTrackHit.class, helicalTrackHitCollectionName)) { +// System.out.println(helicalTrackHitCollectionName + " does not exist; skipping event"); + return; + } + + + List<HelicalTrackHit> hthList = event.get(HelicalTrackHit.class, helicalTrackHitCollectionName); + for (HelicalTrackHit hth : hthList) { + HelicalTrackCross htc = (HelicalTrackCross) hth; + //These Helical Track Hits are in the JLAB frame + htc.resetTrackDirection(); + double x = htc.getPosition()[0]; + double y = htc.getPosition()[1]; + SiSensor sensor = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()); + if (HPSSVTDAQMaps.sensorToTopLayer.containsKey(sensor)) { + Hep3Vector sensorPos = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()).getGeometry().getPosition(); + if (htc.Layer() == 1) { +// System.out.println(sensorPos.toString()); +// System.out.println("Hit X = " + x + "; Hit Y = " + y); + + aida.histogram2D("Layer 1 HTH Position").fill(x - sensorPos.x(), y - sensorPos.y()); + } + if (htc.Layer() == 7) + aida.histogram2D("Layer 7 HTH Position").fill(x - sensorPos.x(), y - sensorPos.y()); + } + } +
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("Number Tracks/Event").fill(0);
return; }
+ +
List<Track> tracks = event.get(Track.class, trackCollectionName);
+ nTracks.fill(tracks.size()); + if (event.hasCollection(HPSEcalCluster.class, ecalCollectionName) && tracks.size() > 0) { + List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName); + for (HPSEcalCluster cluster : clusters) { +// System.out.println("cluser position = ("+cluster.getPosition()[0]+","+cluster.getPosition()[1]+") with energy = "+cluster.getEnergy()); + if (cluster.getEnergy() > 100) { + if (cluster.getPosition()[1] > 0) + aida.histogram2D("Top ECal Cluster Position").fill(cluster.getPosition()[0], cluster.getPosition()[1], cluster.getEnergy()); + if (cluster.getPosition()[1] < 0) + aida.histogram2D("Bottom ECal Cluster Position").fill(cluster.getPosition()[0], cluster.getPosition()[1], cluster.getEnergy()); + } + } + }
for (Track trk : tracks) { aida.histogram1D("Track Momentum (Px)").fill(trk.getPY()); aida.histogram1D("Track Momentum (Py)").fill(trk.getPZ()); aida.histogram1D("Track Momentum (Pz)").fill(trk.getPX()); aida.histogram1D("Track Chi2").fill(trk.getChi2());
- }
+ aida.histogram1D("Hits per Track").fill(trk.getTrackerHits().size());
+ SeedTrack stEle = (SeedTrack) trk; + SeedCandidate seedEle = stEle.getSeedCandidate(); + HelicalTrackFit ht = seedEle.getHelix(); + HelixConverter converter = new HelixConverter(0); + StraightLineTrack slt = converter.Convert(ht); + + aida.histogram1D("X (mm) @ Z=-60cm").fill(slt.getYZAtX(zAtConverter)[1]); //remember the tracker-->jlab + aida.histogram1D("Y (mm) @ Z=-60cm").fill(slt.getYZAtX(zAtConverter)[0]); //coordinate swap... + List<TrackerHit> hitsOnTrack = trk.getTrackerHits(); + for (TrackerHit hit : hitsOnTrack) { + HelicalTrackHit htc = (HelicalTrackHit) hit; + double sHit = ht.PathMap().get(htc); + Hep3Vector posonhelix = HelixUtils.PointOnHelix(ht, sHit); + double yTr = posonhelix.y(); + double zTr = posonhelix.z(); + int layer = htc.Layer(); + String modNum = "Module X "; + if (layer == 1) + modNum = "Module 1 "; + if (layer == 3) + modNum = "Module 2 "; + if (layer == 5) + modNum = "Module 3 "; + if (layer == 7) + modNum = "Module 4 "; + if (layer == 9) + modNum = "Module 5 "; + SymmetricMatrix cov = htc.getCorrectedCovMatrix(); +// System.out.println("errX = " + Math.sqrt(cov.e(1, 1)) + "; errY = " + Math.sqrt(cov.e(2, 2))); +// System.out.println("Measured X " + hit.getPosition()[1] + "; Track X = " + yTr); +// System.out.println("Measured Y " + hit.getPosition()[2] + "; Track Y = " + zTr); +// System.out.println(htc.getCorrectedCovMatrix().toString()); + + aida.histogram1D(modNum + "Residual X(mm)").fill(hit.getPosition()[1] - yTr);//these hits should be rotated track hits already + aida.histogram1D(modNum + "Residual Y(mm)").fill(hit.getPosition()[2] - zTr);//these hits should be rotated track hits already + } + List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName); +// System.out.println("Number of ECAL clusters=" + clusters.size()); + double sECAL = HelixUtils.PathToXPlane(ht, zEcal, 3000, 1).get(0); + Hep3Vector posonhelix = HelixUtils.PointOnHelix(ht, sECAL);//position in tracker coordinates! + HPSEcalCluster clust = findClosestCluster(posonhelix, clusters); + if (clust != null) { + aida.histogram2D("Energy Vs Momentum").fill(clust.getEnergy(), trk.getPX() * 1000.0); + aida.histogram1D("Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 1000.0)); + aida.histogram1D("deltaX").fill(clust.getPosition()[0] - posonhelix.y()); + aida.histogram1D("deltaY").fill(clust.getPosition()[1] - posonhelix.z()); + } + }
} public void endOfData() {
- if (plotter != null) { - plotter.hide();
+ if (outputPlots != null) + try { + aida.saveAs(outputPlots); + } catch (IOException ex) { + Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex); + } + plotterFrame.dispose(); + } + + private HPSEcalCluster findClosestCluster(Hep3Vector posonhelix, List<HPSEcalCluster> clusters) { + HPSEcalCluster closest = null; + double minDist = 9999; + for (HPSEcalCluster cluster : clusters) { + double[] clPos = cluster.getPosition(); + double clEne = cluster.getEnergy(); +// double dist = Math.sqrt(Math.pow(clPos[0] - posonhelix.y(), 2) + Math.pow(clPos[1] - posonhelix.z(), 2)); //coordinates!!! + double dist = Math.sqrt(Math.pow(clPos[1] - posonhelix.z(), 2)); //coordinates!!! + if (dist < minDist && clEne > 500) { + closest = cluster; + minDist = dist; + } +// if(cluster.getEnergy()/10>500)
}
+// System.out.println("Found a cluster..." + minDist);
+ return closest;
} @Override public void reset() {
- int ns = sensors.size(); - for (int i = 0; i < ns; i++) { - aida.histogram1D(sensors.get(i).getName() + "_timing").reset(); - }
+ aida.histogram1D("Track Momentum (Px)").reset(); + aida.histogram1D("Track Momentum (Py)").reset(); + aida.histogram1D("Track Momentum (Pz)").reset(); + aida.histogram1D("Track Chi2").reset(); + aida.histogram1D("Tracks per Event").reset(); + aida.histogram1D("X @ Z=-60cm").reset(); + aida.histogram1D("Y @ Z=-60cm").reset(); + aida.histogram1D("Hits per Track").reset(); + aida.histogram1D("Module 1 Residual X(mm)").reset(); + aida.histogram1D("Module 1 Residual Y(mm)").reset(); + aida.histogram1D("Module 2 Residual X(mm)").reset(); + aida.histogram1D("Module 2 Residual Y(mm)").reset(); + aida.histogram1D("Module 3 Residual X(mm)").reset(); + aida.histogram1D("Module 3 Residual Y(mm)").reset(); + aida.histogram1D("Module 4 Residual X(mm)").reset(); + aida.histogram1D("Module 4 Residual Y(mm)").reset(); + aida.histogram1D("Module 5 Residual X(mm)").reset(); + aida.histogram1D("Module 5 Residual Y(mm)").reset(); + + aida.histogram2D("Energy Vs Momentum").reset(); + aida.histogram1D("Energy Over Momentum").reset(); + aida.histogram1D("deltaX").reset(); + aida.histogram1D("deltaY").reset();
} }
diff -u -r1.1 -r1.2 --- StraightLineTrack.java 1 Jun 2011 17:10:13 -0000 1.1 +++ StraightLineTrack.java 8 May 2012 16:01:33 -0000 1.2 @@ -144,7 +144,11 @@
public double[] TargetYZ() { return _yzT; }
-
+ + public double[] getYZAtX(double xVal){ + return calculateYZAtX(xVal); + } +
/** * Return the covariance matrix. *
@@ -165,4 +169,13 @@
_yzT[0] = _y0 - _x0 * _dydx; _yzT[1] = _z0 - _x0 * _dzdx; }
+ + private double[] calculateYZAtX(double xVal) { + double[] yzAtX={-66,-66}; + if(xVal>_x0) //_x0 is where the field region starts...if xVal is bigger than this, need to get position on helix + return yzAtX; + yzAtX[0] = _y0 + (xVal-_x0) * _dydx; + yzAtX[1] = _z0 + (xVal-_x0) * _dzdx; + return yzAtX; + }
}
diff -u -r1.3 -r1.4 --- HPS-Test-4pt1.xml 5 May 2012 11:48:43 -0000 1.3 +++ HPS-Test-4pt1.xml 8 May 2012 16:01:33 -0000 1.4 @@ -9,8 +9,8 @@
<MinHits>4</MinHits> <MinConfirm>1</MinConfirm>
- <MaxDCA>25.0</MaxDCA> - <MaxZ0>45.0</MaxZ0>
+ <MaxDCA>90.0</MaxDCA> + <MaxZ0>90.0</MaxZ0>
<MaxChisq>25.0</MaxChisq> <BadHitChisq>10.0</BadHitChisq>
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1