Print

Print


Commit in hps-java/src/main/java/org/lcsim/hps/users/omoreno on MAIN
SvtTrackAnalysis.java+342-381.1 -> 1.2
End of day check in

hps-java/src/main/java/org/lcsim/hps/users/omoreno
SvtTrackAnalysis.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- SvtTrackAnalysis.java	11 May 2012 13:08:54 -0000	1.1
+++ SvtTrackAnalysis.java	16 May 2012 04:40:17 -0000	1.2
@@ -2,14 +2,16 @@
 
 //--- java ---//
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 //--- org.lcsim ---//
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.Track;
 import org.lcsim.geometry.Detector;
-import org.lcsim.hps.monitoring.Resettable;
-import org.lcsim.hps.recon.ecal.HPSEcalCluster;
+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;
@@ -18,23 +20,39 @@
 import hep.aida.IPlotter;
 import hep.physics.vec.Hep3Vector;
 
+//--- hps-java ---//
+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.SvtTrackExtrapolator;
+import org.lcsim.hps.recon.tracking.TrackUtils;
+
 /**
  * 
  * @author Omar Moreno
- * @version $Id: SvtTrackAnalysis.java,v 1.1 2012/05/11 13:08:54 omoreno Exp $
+ * @version $Id: SvtTrackAnalysis.java,v 1.2 2012/05/16 04:40:17 omoreno Exp $
  *
  */
 
 public class SvtTrackAnalysis extends Driver implements Resettable {
 	
     private String trackCollectionName = "MatchedTracks";
+    private String stripHitCollectionName = "StripClusterer_SiTrackerHitStrip1D";
 	private AIDA aida;
+	private List<AIDAFrame> frames = new ArrayList<AIDAFrame>();
 	private List<IPlotter> plotters = new ArrayList<IPlotter>();
     
-    ExtendTrack trackExtender;
+	private static final double HARP_POSITION = -674.062;
+	
+	int npositive = 0;
+	int nnegative = 0;
+	
+	
+    SvtTrackExtrapolator extrapolator;
 	
 	public SvtTrackAnalysis(){
-		trackExtender = new ExtendTrack();
+		extrapolator = new SvtTrackExtrapolator();
 	}
 
 	protected void detectorChanged(Detector detector){
@@ -42,58 +60,344 @@
 		aida = AIDA.defaultInstance();
 		aida.tree().cd("/");
 		
+		for(int index = 0; index < 4; index++) frames.add(new AIDAFrame());
+
+		frames.get(0).setTitle("Track Position");
+		frames.get(1).setTitle("Track Parameters");
+		frames.get(2).setTitle("Track Momentum");
+		frames.get(3).setTitle("Cluster Matching");
+		
+		int nPlotters = 0;
+		
+		//--- Track Extrapolation ---//
+		//---------------------------//	
 		plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Position at Ecal"));
-		plotters.get(0).region(0).plot(aida.histogram2D("Track Position at Ecal", 200, -350, 350, 100, -20, 100));
-		plotters.get(0).region(0).style().setParameter("hist2DStyle", "colorMap");
-    	plotters.get(0).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        plotters.get(0).style().statisticsBoxStyle().setVisible(false);
-        
-        /*
-        plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Parameters"));
-        plotters.get(1).createRegions();
-        */
-        
-        plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Position at Converter"));
-        plotters.get(1).region(0).plot(aida.histogram2D("Track Position at Converter", 200, -350, 350, 100, -50, 50));
-		plotters.get(1).region(0).style().setParameter("hist2DStyle", "colorMap");
-    	plotters.get(1).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        plotters.get(1).style().statisticsBoxStyle().setVisible(false);
-        
-        /*
-		plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Position at Collimator"));
-		plotters.get(0).region(0).plot(aida.histogram2D("Track Position at Ecal", 200, -350, 350, 30, -20, 20));
-		plotters.get(0).region(0).style().setParameter("hist2DStyle", "colorMap");
-    	plotters.get(0).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        plotters.get(0).style().statisticsBoxStyle().setVisible(false);
-        */
-	
-        for(IPlotter plotter : plotters){
-        	plotter.show();
+		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");
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style();
+        frames.get(0).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+        
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Position at Harp"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram2D("Track Position at Harp", 200, -200, 200, 100, -50, 50));
+		plotters.get(nPlotters).region(0).style().setParameter("hist2DStyle", "colorMap");
+    	plotters.get(nPlotters).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        frames.get(0).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Position at Ecal: Curvature < 0"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram2D("Track Position at Ecal: Curvature < 0",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");
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        frames.get(0).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+		
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Position at Harp: Curvature < 0"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram2D("Track Position at Harp: Curvature < 0", 200, -200, 200, 100, -50, 50));
+		plotters.get(nPlotters).region(0).style().setParameter("hist2DStyle", "colorMap");
+    	plotters.get(nPlotters).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        frames.get(0).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+		
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Position at Ecal: Curvature > 0"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram2D("Track Position at Ecal: Curvature > 0", 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");
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        frames.get(0).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+		
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Position at Harp: Curvature > 0"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram2D("Track Position at Harp: Curvature > 0", 200, -200, 200, 100, -50, 50));
+		plotters.get(nPlotters).region(0).style().setParameter("hist2DStyle", "colorMap");
+    	plotters.get(nPlotters).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        frames.get(0).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+		
+		plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Position at Ecal: Two Tracks"));
+		plotters.get(nPlotters).region(0).plot(aida.histogram2D("Track Position at Ecal: Two Tracks", 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");
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style();
+        frames.get(0).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+        
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Track Position at Harp: Two Tracks"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram2D("Track Position at Harp: Two Tracks", 200, -200, 200, 100, -50, 50));
+		plotters.get(nPlotters).region(0).style().setParameter("hist2DStyle", "colorMap");
+    	plotters.get(nPlotters).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        frames.get(0).addPlotter(plotters.get(nPlotters));
+		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);
+        frames.get(1).addPlotter(plotters.get(nPlotters));
+		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);
+        frames.get(1).addPlotter(plotters.get(nPlotters));
+		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);
+        frames.get(1).addPlotter(plotters.get(nPlotters));
+		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);
+        frames.get(1).addPlotter(plotters.get(nPlotters));
+		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);
+        frames.get(1).addPlotter(plotters.get(nPlotters));
+		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);
+        frames.get(1).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+		
+        //--- Momentum ---//
+        //----------------//
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Px"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram1D("Px", 100, 0, 5));
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
+        frames.get(2).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+        
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Py"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram1D("Py", 100, 0, 5));
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
+        frames.get(2).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+        
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Pz"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram1D("Pz", 100, 0, 5));
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
+        frames.get(2).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+		
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Px: C > 0"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram1D("Px: C > 0", 100, 0, 5));
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
+        frames.get(2).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+        
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Py: C > 0"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram1D("Py: C > 0", 100, 0, 5));
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
+        frames.get(2).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+        
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Pz: C > 0"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram1D("Pz: C > 0", 100, 0, 5));
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
+        frames.get(2).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+		
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Px: C < 0"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram1D("Px: C < 0", 100, 0, 5));
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
+        frames.get(2).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+        
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Py: C < 0"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram1D("Py: C < 0", 100, 0, 5));
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
+        frames.get(2).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+        
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Pz: C < 0"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram1D("Pz: C < 0", 100, 0, 5));
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
+        frames.get(2).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+		
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("Px: Two Tracks"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram1D("Px: Two Tracks", 100, 0, 5));
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
+        frames.get(2).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+        
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("E over P"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram1D("E over P", 100, 0, 5));
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        plotters.get(nPlotters).style().dataStyle().errorBarStyle().setVisible(false);
+        frames.get(2).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+		   
+		plotters.add(aida.analysisFactory().createPlotterFactory().create("E versus P"));
+	    plotters.get(nPlotters).region(0).plot(aida.histogram2D("E versus P", 100, 0, 1500, 100, 0, 4000));
+	    plotters.get(nPlotters).region(0).style().setParameter("hist2DStyle", "colorMap");
+	    plotters.get(nPlotters).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+	    plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+	    frames.get(2).addPlotter(plotters.get(nPlotters));
+	    nPlotters++;
+        
+        //--- Cluster Matching ---//
+        //------------------------//        
+        plotters.add(aida.analysisFactory().createPlotterFactory().create("XY Difference between Ecal Cluster and Track Position"));
+        plotters.get(nPlotters).region(0).plot(aida.histogram2D("XY Difference between Ecal Cluster and Track Position", 200, -200, 200, 100, -50, 50));
+		plotters.get(nPlotters).region(0).style().setParameter("hist2DStyle", "colorMap");
+    	plotters.get(nPlotters).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+        plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false);
+        frames.get(3).addPlotter(plotters.get(nPlotters));
+		nPlotters++;
+		
+        for(AIDAFrame frame : frames){
+        	frame.pack();
+        	frame.setVisible(true);
         }
 	}
 	
 	public void process(EventHeader event){
+		
+		
+		if(event.hasCollection(SiTrackerHitStrip1D.class, stripHitCollectionName)){
+			
+			System.out.println("Found Strip Hits!");
+			List<SiTrackerHitStrip1D> stripHits = event.get(SiTrackerHitStrip1D.class, stripHitCollectionName);
+			short[] samples = new short[6];
+			for(SiTrackerHitStrip1D stripHit : stripHits){
+				for(RawTrackerHit rawHit : stripHit.getRawHits()){
+					for(int index = 0; index < samples.length; index++){
+						samples[index] += rawHit.getADCValues()[index];
+					}
+				}
+			}
+		}
+				
 		if(!event.hasCollection(Track.class, trackCollectionName)) return;
     	List<SeedTrack> tracks = event.get(SeedTrack.class, trackCollectionName);
-	
+    	TrackUtils trackUtil = new TrackUtils();
+    	
+    	Map<Hep3Vector,SeedTrack> trackToEcalPosition = new HashMap<Hep3Vector, SeedTrack>();
+     	Map<SeedTrack, HPSEcalCluster> trackToCluster = new HashMap<SeedTrack, HPSEcalCluster>();
+    	List<Hep3Vector> ecalPos = new ArrayList<Hep3Vector>();
+    	
     	for(SeedTrack track : tracks){
-    		trackExtender.setTrack(track);
-    		trackExtender.printTrackParameters();
-    		Hep3Vector positionEcal = trackExtender.positionAtEcal();
-    		Hep3Vector positionConverter = trackExtender.extrapolateTrack(-300);
+    		extrapolator.setTrack(track);
+    		trackUtil.setTrack(track);
+    		Hep3Vector positionEcal = extrapolator.getTrackPositionAtEcal();
+    		System.out.println("Position at Ecal: " + positionEcal);
+    		Hep3Vector positionConverter = extrapolator.extrapolateTrack(-700);
     	
     		aida.histogram2D("Track Position at Ecal").fill(positionEcal.y(), positionEcal.z());
-    		aida.histogram2D("Track Position at Converter").fill(positionConverter.y(), positionConverter.z());
+    		aida.histogram2D("Track Position at Harp").fill(positionConverter.y(), positionConverter.z());
+
+    		aida.histogram1D("DOCA").fill(trackUtil.getDoca());
+    		aida.histogram1D("Z0").fill(trackUtil.getZ0());
+    		aida.histogram1D("phi0").fill(trackUtil.getPhi0());
+    		aida.histogram1D("R").fill((1/trackUtil.getR())*1000);
+    		aida.histogram1D("Tan(Lambda)").fill(trackUtil.getTanLambda());
+    		
+    		aida.histogram1D("Px").fill(track.getPX());
+    		aida.histogram1D("Py").fill(track.getPY());
+    		aida.histogram1D("Pz").fill(track.getPZ());
+    		aida.histogram1D("ChiSquared").fill(track.getChi2());
+    		
+    		if(Math.signum(trackUtil.getR()) < 0){
+    			aida.histogram2D("Track Position at Ecal: Curvature < 0").fill(positionEcal.y(), positionEcal.z());
+    			aida.histogram2D("Track Position at Harp: Curvature < 0").fill(positionConverter.y(), positionConverter.z());
+        		aida.histogram1D("Px: C < 0").fill(track.getPX());
+        		aida.histogram1D("Py: C < 0").fill(track.getPY());
+        		aida.histogram1D("Pz: C < 0").fill(track.getPZ());
+        		nnegative++;
+    		} else if(Math.signum(trackUtil.getR()) > 0){
+    			aida.histogram2D("Track Position at Ecal: Curvature > 0").fill(positionEcal.y(), positionEcal.z());
+    			aida.histogram2D("Track Position at Harp: Curvature > 0").fill(positionConverter.y(), positionConverter.z());
+        		aida.histogram1D("Px: C > 0").fill(track.getPX());
+        		aida.histogram1D("Px: C > 0").fill(track.getPY());
+        		aida.histogram1D("Px: C > 0").fill(track.getPZ());
+        		npositive++;
+    		}
+    		
+    		if(tracks.size() > 1){
+    			aida.histogram2D("Track Position at Ecal: Two Tracks").fill(positionEcal.y(), positionEcal.z());
+    			aida.histogram2D("Track Position at Harp: Two Tracks").fill(positionConverter.y(), positionConverter.z()); 
+    			aida.histogram1D("Px: Two Tracks").fill(track.getPX());
+    		}
+    		
+    		trackToEcalPosition.put(positionEcal, track);
+    		ecalPos.add(positionEcal);  		
     	}
     	
     	if(!event.hasCollection(HPSEcalCluster.class, "EcalClusters")) return;
     	List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, "EcalClusters");
     	
+
+    	for(Hep3Vector ecalP : ecalPos){
+        	double xdiff = 1000; 
+        	double ydiff = 1000;
+    		for(HPSEcalCluster cluster : clusters){
+    			double xd = ecalP.y() - cluster.getPosition()[0];
+    			double yd = ecalP.z() - cluster.getPosition()[1];  
+    			if(yd < ydiff){
+    				xdiff = xd;
+    				ydiff = yd;
+    				trackToCluster.put(trackToEcalPosition.get(ecalP),cluster);
+    			}
+    		}
+    		clusters.remove(trackToCluster.get(trackToEcalPosition.get(ecalP)));
+    		aida.histogram2D("XY Difference between Ecal Cluster and Track Position").fill(xdiff, ydiff);
+    	}
+    	
+    	for(Map.Entry<SeedTrack, HPSEcalCluster> entry : trackToCluster.entrySet()){
+    		double Energy = entry.getValue().getEnergy();
+    		SeedTrack track = entry.getKey();
+    		double pTotal = Math.sqrt(track.getPX()*track.getPX() + track.getPY()*track.getPY() + track.getPZ()*track.getPZ());
+    		
+    		double ep = Energy/(pTotal*1000);
+    		
+    		System.out.println("Energy: " + Energy + "P: " + pTotal + " E over P: " + ep);
+    		
+    		aida.histogram1D("E over P").fill(ep);
+    		aida.histogram2D("E versus P").fill(Energy, pTotal*1000);
+    	}
+    	
     	for(HPSEcalCluster cluster : clusters){
     		double[] clusterPosition = cluster.getPosition();
-  //  		System.out.println("Cluster Position: [" + clusterPosition[0] + ", " + clusterPosition[1] + ", " + clusterPosition[2]+ "]");
+    		
+    		System.out.println("Cluster Position: [" + clusterPosition[0] + ", " + clusterPosition[1] + ", " + clusterPosition[2]+ "]");
     	}
     	
+    	double ratio = nnegative/npositive;
+    	System.out.println("Ratio of Negative to Position Tracks: " + ratio);
 	}
 
 	@Override
CVSspam 0.2.12


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