Print

Print


Commit in lcsim/src/org/lcsim/contrib/seedtracker/analysis on MAIN
HistogramAnalysisDriver.java+144added 1.1
Driver for analysis utils

lcsim/src/org/lcsim/contrib/seedtracker/analysis
HistogramAnalysisDriver.java added at 1.1
diff -N HistogramAnalysisDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ HistogramAnalysisDriver.java	15 Aug 2008 22:25:56 -0000	1.1
@@ -0,0 +1,144 @@
+/*
+ * AnalysisDriver.java
+ *
+ * Created on February 11, 2008, 11:47 AM
+ *
+ */
+
+package org.lcsim.contrib.seedtracker.analysis;
+
+
+import org.lcsim.contrib.seedtracker.analysis.TrackHitHistograms;
+import org.lcsim.contrib.seedtracker.analysis.HelixParamHistograms;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.lcsim.contrib.seedtracker.SeedTrack;
+import org.lcsim.contrib.seedtracker.SeedCandidate;
+import org.lcsim.contrib.seedtracker.analysis.AnalysisUtils;
+import org.lcsim.contrib.seedtracker.analysis.EfficiencyHistograms;
+import org.lcsim.fit.helicaltrack.HelicalTrackFit;
+import org.lcsim.fit.helicaltrack.HelicalTrackHit;
+import org.lcsim.contrib.seedtracker.analysis.HelixParamCalculator;
+import org.lcsim.contrib.seedtracker.analysis.PurityHistograms;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.Track;
+import org.lcsim.event.MCParticle;
+import org.lcsim.util.aida.AIDA;
+import org.lcsim.util.Driver;
+
+
+/**
+ *
+ * @author Richard Partridge
+ * @version 1.0
+ */
+public class HistogramAnalysisDriver extends Driver {
+  private AIDA aida = AIDA.defaultInstance();
+  private double b=0,c=0,d=0;
+    /** Creates a new instance of AnalysisDriver */
+    public HistogramAnalysisDriver() {
+        
+    }       
+    
+    /**
+     * Process the current event
+     * @param event EventHeader for this event
+     */
+        PurityHistograms draw3 = new PurityHistograms();
+    EfficiencyHistograms draw4 = new EfficiencyHistograms();
+    public void process(EventHeader event){
+        
+       
+        List<Track> tracklist = event.getTracks();
+        Map<MCParticle, Track> trkmap = new HashMap<MCParticle, Track>();
+      
+        for (Track track : tracklist) {
+           Map<MCParticle, Integer> mcmap = new HashMap<MCParticle, Integer>();
+            if (track instanceof SeedTrack) {
+                SeedCandidate seed = ((SeedTrack) track).getSeedCandidate();
+                for (HelicalTrackHit hit : seed.getHits()) {
+                 
+                   
+                                  
+                   
+                    List<MCParticle> mclist = hit.getMCParticles();
+                    for (MCParticle mcp : mclist) {
+                        if (mcmap.containsKey(mcp)) {
+                            int entries = mcmap.get(mcp) + 1;
+                            mcmap.put(mcp, entries);
+                        } else
+                            mcmap.put(mcp, 1);
+                    }
+                }
+                MCParticle mcmatch = null;
+                int nmatch = 0;
+                for (Map.Entry<MCParticle, Integer> me : mcmap.entrySet()) {
+                    if (me.getValue() > nmatch) {
+                        nmatch = me.getValue();
+                        mcmatch = me.getKey();
+                    }
+                }
+                if (trkmap.containsKey(mcmatch)) System.out.println("more than one track associated with an MCParticle!!");
+                else trkmap.put(mcmatch, track);
+            }
+        }
+        List<MCParticle> mclist = event.getMCParticles();
+        
+        for (MCParticle mcp : mclist) {
+            if (mcp.getCharge() == 0) continue;
+            if (mcp.getGeneratorStatus() != mcp.FINAL_STATE) continue;
+ 
+            if (trkmap.containsKey(mcp)) {
+                Track trk = trkmap.get(mcp);
+                if (trk instanceof SeedTrack) {
+                    SeedTrack strk = (SeedTrack) trk;
+                    HelicalTrackFit fit = strk.getSeedCandidate().getHelix();
+                    
+                    //Class to draw histrogram
+                    HelixParamHistograms draw = new HelixParamHistograms(fit,mcp,event);
+                    HelixParamCalculator calc = new HelixParamCalculator(mcp, 5);
+                    AnalysisUtils util = new AnalysisUtils();
+                    
+            //---Helix Parameter Histrograms------------Helix Parameter Histrograms---\\
+            aida.histogram1D("p", 200, 0, 50).fill(calc.getMCMomentum());
+            if(mcp.getCharge()>0)
+            {
+                draw.DrawResidualPositive();
+                draw.DrawPullPositive();  
+            }
+            else
+            {
+                draw.DrawResidualNegative();
+                draw.DrawPullNegative();               
+            }
+            draw.DrawResidual();
+            draw.DrawPull();
+            
+            
+            TrackHitHistograms draw2 = new TrackHitHistograms(fit, mcp,event);
+            
+           //---MCParticle vs HelicalTrackFit----------------------------MCParticle vs HelicalTrackFit---
+            draw2.drawMCParticlevHelicalTrackHit();
+            
+            //---SimTracker vs HelicalTrackFit---------------------------SimTracker vs HelicalTrackFit---
+            draw2.drawSimTrackervHelicalTrack();
+             
+           //---Purity---------------------------Purity---
+            draw3.drawPurityHistograms(mcp, trk);
+            double a = util.FindTrackPurity(trk);
+            c++;
+            d += Math.sqrt((a*(1-a))/c);
+            if(a==1)b++;
+ 
+            
+            }             
+          }            
+            //--Efficiency---------------------------Efficiency---
+            draw4.drawEfficiencyHistograms(mcp,event);
+        }
+        System.out.println((b/c)*100+"+-"+(d/c)*100+"%");
+    }   
+}
+
CVSspam 0.2.8