Author: [log in to unmask]
Date: Tue May 5 16:39:44 2015
New Revision: 2913
Log:
Clean up so it can be used with the current detector and data.
Modified:
java/trunk/users/src/main/java/org/hps/users/omoreno/SvtTrackAnalysis.java
Modified: java/trunk/users/src/main/java/org/hps/users/omoreno/SvtTrackAnalysis.java
=============================================================================
--- java/trunk/users/src/main/java/org/hps/users/omoreno/SvtTrackAnalysis.java (original)
+++ java/trunk/users/src/main/java/org/hps/users/omoreno/SvtTrackAnalysis.java Tue May 5 16:39:44 2015
@@ -1,42 +1,44 @@
package org.hps.users.omoreno;
-//--- java ---//
-//--- hep ---//
-import hep.aida.IPlotter;
-import hep.physics.vec.Hep3Vector;
-
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.hps.recon.tracking.TrackUtils;
-import org.lcsim.event.Cluster;
-//--- org.lcsim ---//
+import hep.aida.IAnalysisFactory;
+import hep.aida.IHistogramFactory;
+import hep.aida.IPlotterFactory;
+import hep.aida.IPlotter;
+import hep.aida.IHistogram1D;
+import hep.aida.ITree;
+
import org.lcsim.event.EventHeader;
-import org.lcsim.event.RawTrackerHit;
import org.lcsim.event.Track;
import org.lcsim.geometry.Detector;
-import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
-import org.lcsim.recon.tracking.seedtracker.SeedTrack;
import org.lcsim.util.Driver;
-import org.lcsim.util.aida.AIDA;
-//--- hps-java ---//
+
+import org.hps.recon.tracking.TrackUtils;
/**
*
- * @author Omar Moreno
- * @version $Id: SvtTrackAnalysis.java,v 1.7 2013/11/06 19:19:55 jeremy Exp $
+ * @author Omar Moreno <[log in to unmask]>
*
*/
-
public class SvtTrackAnalysis extends Driver {
-
+
+ // Use JFreeChart as the default plotting backend
+ static {
+ hep.aida.jfree.AnalysisFactory.register();
+ }
+
+ // Plotting
+ ITree tree;
+ IHistogramFactory histogramFactory;
+ IPlotterFactory plotterFactory = IAnalysisFactory.create().createPlotterFactory();
+ protected Map<String, IPlotter> plotters = new HashMap<String, IPlotter>();
+
+ private Map<String, IHistogram1D> trackParameterPlots = new HashMap<String, IHistogram1D>();
+
private String trackCollectionName = "MatchedTracks";
- private String stripHitCollectionName = "StripClusterer_SiTrackerHitStrip1D";
- private AIDA aida;
- private List<IPlotter> plotters = new ArrayList<IPlotter>();
-
int npositive = 0;
int nnegative = 0;
@@ -46,20 +48,43 @@
double nTwoTracks = 0;
double nevents = 0;
-
+
+ /**
+ * Default Constructor
+ */
public SvtTrackAnalysis(){
}
protected void detectorChanged(Detector detector){
-
- aida = AIDA.defaultInstance();
- aida.tree().cd("/");
-
- int nPlotters = 0;
-
+
+ tree = IAnalysisFactory.create().createTreeFactory().create();
+ histogramFactory = IAnalysisFactory.create().createHistogramFactory(tree);
+
+ plotters.put("Track Parameters", plotterFactory.create("Track Parameters"));
+ plotters.get("Track Parameters").createRegions(2, 3);
+
+ trackParameterPlots.put("DOCA", histogramFactory.createHistogram1D("DOCA", 80, -80, 80));
+ plotters.get("Track Parameters").region(0).plot(trackParameterPlots.get("DOCA"));
+
+ trackParameterPlots.put("Z0", histogramFactory.createHistogram1D("Z0", 30, -30, 30));
+ plotters.get("Track Parameters").region(1).plot(trackParameterPlots.get("Z0"));
+
+ trackParameterPlots.put("phi0", histogramFactory.createHistogram1D("phi0", 50, -0.5, 0.5));
+ plotters.get("Track Parameters").region(2).plot(trackParameterPlots.get("phi0"));
+
+ trackParameterPlots.put("Curvature", histogramFactory.createHistogram1D("Curvature", 200, -1, 1));
+ plotters.get("Track Parameters").region(3).plot(trackParameterPlots.get("Curvature"));
+
+ trackParameterPlots.put("Tan(Lambda)", histogramFactory.createHistogram1D("Tan(Lambda)", 100, -1, 1));
+ plotters.get("Track Parameters").region(4).plot(trackParameterPlots.get("Tan(Lambda)"));
+
+ trackParameterPlots.put("Chi2", histogramFactory.createHistogram1D("Chi2", 100, 0, 100));
+ plotters.get("Track Parameters").region(5).plot(trackParameterPlots.get("Chi2"));
+
+
//--- Track Extrapolation ---//
//---------------------------//
- plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Position at Ecal"));
+ /*plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Position at Ecal"));
plotters.get(nPlotters).region(0).plot(aida.histogram2D("Track Position at Ecal", 200, -350, 350, 200, -100, 100));
plotters.get(nPlotters).region(0).style().setParameter("hist2DStyle", "colorMap");
plotters.get(nPlotters).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
@@ -118,44 +143,6 @@
nPlotters++;
- //--- Track Parameters ---//
- //------------------------//
- plotters.add(aida.analysisFactory().createPlotterFactory().create("DOCA"));
- plotters.get(nPlotters).region(0).plot(aida.histogram1D("DOCA", 120, 0, 120));
- plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
- plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
- nPlotters++;
-
- plotters.add(aida.analysisFactory().createPlotterFactory().create("Z0"));
- plotters.get(nPlotters).region(0).plot(aida.histogram1D("Z0", 120, 0, 120));
- plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
- plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
- nPlotters++;
-
- plotters.add(aida.analysisFactory().createPlotterFactory().create("phi0"));
- plotters.get(nPlotters).region(0).plot(aida.histogram1D("phi0", 50, -Math.PI, Math.PI));
- plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
- plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
- nPlotters++;
-
- plotters.add(aida.analysisFactory().createPlotterFactory().create("Curvature"));
- plotters.get(nPlotters).region(0).plot(aida.histogram1D("R", 200, -10, 10));
- plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
- plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
- nPlotters++;
-
- plotters.add(aida.analysisFactory().createPlotterFactory().create("Tan(Lambda)"));
- plotters.get(nPlotters).region(0).plot(aida.histogram1D("Tan(Lambda)", 100, 0, 1));
- plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
- plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
- nPlotters++;
-
- plotters.add(aida.analysisFactory().createPlotterFactory().create("ChiSquared"));
- plotters.get(nPlotters).region(0).plot(aida.histogram1D("ChiSquared", 100, 0, 100));
- plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
- plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
- nPlotters++;
-
//--- Momentum ---//
//----------------//
plotters.add(aida.analysisFactory().createPlotterFactory().create("Px"));
@@ -239,13 +226,16 @@
plotters.get(nPlotters).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
nPlotters++;
-
- for(IPlotter plotter : plotters) plotter.show();
+ */
+ for (IPlotter plotter : plotters.values()) {
+ plotter.show();
+ }
}
public void process(EventHeader event){
nevents++;
-
+
+ /*
if(event.hasCollection(SiTrackerHitStrip1D.class, stripHitCollectionName)){
System.out.println("Found Strip Hits!");
@@ -258,17 +248,35 @@
}
}
}
- }
-
+ }*/
+
+ // If the event doesn't have any tracks, skip it
if(!event.hasCollection(Track.class, trackCollectionName)) return;
- List<SeedTrack> tracks = event.get(SeedTrack.class, trackCollectionName);
-
- Map<Hep3Vector,SeedTrack> trackToEcalPosition = new HashMap<Hep3Vector, SeedTrack>();
- Map<SeedTrack, Cluster> trackToCluster = new HashMap<SeedTrack, Cluster>();
+
+ // Get the collection of tracks from the event
+ List<Track> tracks = event.get(Track.class, trackCollectionName);
+
+ /*
+ Map<Hep3Vector,Track> trackToEcalPosition = new HashMap<Hep3Vector, Track>();
+ Map<Track, Cluster> trackToCluster = new HashMap<Track, Cluster>();
List<Hep3Vector> ecalPos = new ArrayList<Hep3Vector>();
-
- for(SeedTrack track : tracks){
- ntracks++;
+ */
+
+ for(Track track : tracks){
+
+ trackParameterPlots.get("DOCA").fill(TrackUtils.getDoca(track));
+ trackParameterPlots.get("Z0").fill(TrackUtils.getZ0(track));
+ trackParameterPlots.get("phi0").fill(TrackUtils.getPhi0(track));
+ trackParameterPlots.get("Curvature").fill(TrackUtils.getR(track));
+ trackParameterPlots.get("Tan(Lambda)").fill(TrackUtils.getTanLambda(track));
+ trackParameterPlots.get("Chi2").fill(track.getChi2());
+
+ }
+ }
+}
+
+ /*
+ ntracks++;
Hep3Vector positionEcal = TrackUtils.getTrackPositionAtEcal(track);
System.out.println("Position at Ecal: " + positionEcal);
Hep3Vector positionConverter = TrackUtils.extrapolateTrack(track,-700);
@@ -278,14 +286,10 @@
if(positionEcal.z() > 0 ) ntracksTop++;
else if(positionEcal.z() < 0) ntracksBottom++;
-
-
- aida.histogram1D("DOCA").fill(TrackUtils.getDoca(track));
- aida.histogram1D("Z0").fill(TrackUtils.getZ0(track));
- aida.histogram1D("phi0").fill(TrackUtils.getPhi0(track));
- aida.histogram1D("R").fill((1/TrackUtils.getR(track))*1000);
- aida.histogram1D("Tan(Lambda)").fill(TrackUtils.getTanLambda(track));
-
+ */
+
+
+ /*
aida.histogram1D("Px").fill(track.getTrackStates().get(0).getMomentum()[0]);
aida.histogram1D("Py").fill(track.getTrackStates().get(0).getMomentum()[1]);
aida.histogram1D("Pz").fill(track.getTrackStates().get(0).getMomentum()[2]);
@@ -338,9 +342,9 @@
aida.histogram2D("XY Difference between Ecal Cluster and Track Position").fill(xdiff, ydiff);
}
- for(Map.Entry<SeedTrack, Cluster> entry : trackToCluster.entrySet()){
+ for(Map.Entry<Track, Cluster> entry : trackToCluster.entrySet()){
double Energy = entry.getValue().getEnergy();
- SeedTrack track = entry.getKey();
+ Track track = entry.getKey();
double pTotal = Math.sqrt(track.getTrackStates().get(0).getMomentum()[0]*track.getTrackStates().get(0).getMomentum()[0] + track.getTrackStates().get(0).getMomentum()[1]*track.getTrackStates().get(0).getMomentum()[1] + track.getTrackStates().get(0).getMomentum()[2]*track.getTrackStates().get(0).getMomentum()[2]);
double ep = Energy/(pTotal*1000);
@@ -368,5 +372,4 @@
System.out.println("Number of top tracks per event: " + tracksTopRatio);
System.out.println("Number of bottom tracks per event: " + tracksBottomRatio);
System.out.println("Number of two track events: " + twoTrackRatio);
- }
-}
+ }*/
|