hps-java/src/main/resources/org/lcsim/hps/steering
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>
hps-java/src/main/java/org/lcsim/hps/monitoring/svt
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();
}
}