Print

Print


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);
-	}
-}
+	}*/