Commit in lcsim/src/org/lcsim/contrib/seedtracker/example on MAIN
AnalysisDriver.java+60-191.1 -> 1.2
MyStrategy.java+83-21.1 -> 1.2
+143-21
2 modified files
Add some additional strategies, plots

lcsim/src/org/lcsim/contrib/seedtracker/example
AnalysisDriver.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- AnalysisDriver.java	17 Jun 2008 00:39:16 -0000	1.1
+++ AnalysisDriver.java	22 Jun 2008 23:20:23 -0000	1.2
@@ -8,11 +8,16 @@
 package org.lcsim.contrib.seedtracker.example;
 
 import hep.aida.IHistogram1D;
+import hep.physics.vec.Hep3Vector;
 
 import java.util.List;
 import java.util.Map;
 import java.util.HashMap;
 
+import org.lcsim.constants.Constants;
+import org.lcsim.contrib.seedtracker.SeedTrack;
+import org.lcsim.contrib.seedtracker.SeedCandidate;
+import org.lcsim.fit.helicaltrack.HelicalTrackFit;
 import org.lcsim.event.TrackerHit;
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
 import org.lcsim.event.EventHeader;
@@ -49,26 +54,53 @@
         for (Track track : tracklist) {
             List<TrackerHit> hitlist = track.getTrackerHits();
             Map<MCParticle, Integer> mcmap = new HashMap<MCParticle, Integer>();
-            for (TrackerHit hit : hitlist) {
-                List<MCParticle> mclist = ((HelicalTrackHit) 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);
+            if (track instanceof SeedTrack) {
+                SeedCandidate seed = ((SeedTrack) track).getSeedCandidate();
+                for (HelicalTrackHit hit : seed.getHits()) {
+                    double x = hit.getCorrectedPosition().x();
+                    double y = hit.getCorrectedPosition().y();
+                    HelicalTrackFit helix = seed.getHelix();
+                    MCParticle particle = hit.getMCParticles().get(0);
+                    Hep3Vector p = particle.getMomentum();
+                    double phi = Math.atan2(p.y(), p.x());
+                    double R = Math.sqrt(p.x()*p.x() + p.y()*p.y()) / (5. * Constants.fieldConversion);
+                    double RS = R;
+                    if (particle.getCharge() < 0.) RS = -1. * RS;
+                    Hep3Vector start = particle.getOrigin();
+                    double xc = start.x() + RS * Math.sin(phi);
+                    double yc = start.y() - RS * Math.cos(phi);
+//                    double xc = helix.xc();
+//                    double yc = helix.yc();
+//                    double R = Math.abs(helix.R());
+                    double RHit = Math.sqrt((x-xc)*(x-xc) + (y-yc)*(y-yc));
+                    double drphi_ms = 0.;
+                    if (helix.ScatterMap().containsKey(hit)) drphi_ms = helix.ScatterMap().get(hit).drphi();
+                    double drphi_res = hit.drphi();
+                    double drphi = Math.sqrt(drphi_ms*drphi_ms + drphi_res*drphi_res);
+                    aida.cloud1D("r-phi residual for layer "+hit.getLayerIdentifier()).fill(RHit-R);
+                    aida.cloud1D("Pull for layer "+hit.getLayerIdentifier()).fill((RHit - R)/drphi);
+                    aida.cloud1D("Hit resolution for layer "+hit.getLayerIdentifier()).fill(drphi_res);
+                    aida.cloud2D("Hit MS resolution for layer "+hit.getLayerIdentifier()).fill(drphi_ms, helix.pT(5.));
+                    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();
+                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);
             }
-            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();
@@ -94,8 +126,17 @@
                 h1.fill(pt,wgt);
                 aida.histogram1D("MC pT", 100, 0., 50.).fill(pt);
             }
+            if (!trkmap.containsKey(mcp)) {
+                List<HelicalTrackHit> hits = event.get(HelicalTrackHit.class, "HelicalTrackHits");
+                if (hits.size() > 6) {
+                    System.out.println("Failed to find track.  Found "+hits.size()+" hits @ theta = "
+                            +180.*Math.acos(mcp.getMomentum().z() / mcp.getMomentum().magnitude())/Math.PI);
+                    for (HelicalTrackHit hit : hits) {
+                        System.out.println("Hit in "+hit.getLayerIdentifier()+" at x= "+hit.x()+" y= "+hit.y()+" z= "+hit.z());
+                    }
+                }
+            }
         }
         return;
     }
-    
-}
+}
\ No newline at end of file

lcsim/src/org/lcsim/contrib/seedtracker/example
MyStrategy.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- MyStrategy.java	17 Jun 2008 00:39:16 -0000	1.1
+++ MyStrategy.java	22 Jun 2008 23:20:23 -0000	1.2
@@ -155,13 +155,94 @@
             lyrlist7.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Seed));
             SeedStrategy outsideinendcap7 = new SeedStrategy("OutsideInEndcap7",lyrlist7);
             _strategylist.add(outsideinendcap7);
+            
+            //  Create an inside out for the forward region
+            List<SeedLayer> lyrlist8 = new ArrayList<SeedLayer>();
+            lyrlist8.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend));
+            lyrlist8.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend));
+            lyrlist8.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Seed));
+            lyrlist8.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Seed));
+            lyrlist8.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Seed));
+            lyrlist8.add(new SeedLayer("VertexEndcap",3,endcap,SeedType.Confirm));
+            lyrlist8.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Extend));
+            lyrlist8.add(new SeedLayer("TrackerForward",1,endcap,SeedType.Extend));
+            lyrlist8.add(new SeedLayer("TrackerForward",2,endcap,SeedType.Extend));
+            lyrlist8.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Extend));
+            lyrlist8.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Extend));
+            SeedStrategy outsideinendcap8 = new SeedStrategy("InsideOutEndcap1",lyrlist8);
+            _strategylist.add(outsideinendcap8);
+            
+            //  Create an inside out for the forward region
+            List<SeedLayer> lyrlist9 = new ArrayList<SeedLayer>();
+            lyrlist9.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend));
+            lyrlist9.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend));
+            lyrlist9.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Seed));
+            lyrlist9.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Seed));
+            lyrlist9.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Seed));
+            lyrlist9.add(new SeedLayer("VertexEndcap",3,endcap,SeedType.Extend));
+            lyrlist9.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Confirm));
+            lyrlist9.add(new SeedLayer("TrackerForward",1,endcap,SeedType.Extend));
+            lyrlist9.add(new SeedLayer("TrackerForward",2,endcap,SeedType.Extend));
+            lyrlist9.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Extend));
+            lyrlist9.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Extend));
+            SeedStrategy outsideinendcap9 = new SeedStrategy("InsideOutEndcap2",lyrlist9);
+            _strategylist.add(outsideinendcap9);
+            
+            //  Create an inside out for the forward region
+            List<SeedLayer> lyrlist10 = new ArrayList<SeedLayer>();
+            lyrlist10.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Seed));
+            lyrlist10.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Seed));
+            lyrlist10.add(new SeedLayer("VertexBarrel",2,barrel,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("VertexBarrel",3,barrel,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("VertexBarrel",4,barrel,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("TrackerBarrel",0,barrel,SeedType.Seed));
+            lyrlist10.add(new SeedLayer("TrackerBarrel",1,barrel,SeedType.Confirm));
+            lyrlist10.add(new SeedLayer("TrackerBarrel",2,barrel,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("TrackerBarrel",3,barrel,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("TrackerBarrel",4,barrel,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("VertexEndcap",3,endcap,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("TrackerForward",1,endcap,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("TrackerForward",2,endcap,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Extend));
+            lyrlist10.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Extend));
+            SeedStrategy outsideinendcap10 = new SeedStrategy("InsideOutEndcap3",lyrlist10);
+            _strategylist.add(outsideinendcap10);
+            
+            //  Create an inside out for the forward region
+            List<SeedLayer> lyrlist11 = new ArrayList<SeedLayer>();
+            lyrlist11.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("VertexBarrel",2,barrel,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("VertexBarrel",3,barrel,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("VertexBarrel",4,barrel,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("TrackerBarrel",0,barrel,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("TrackerBarrel",1,barrel,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("TrackerBarrel",2,barrel,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("TrackerBarrel",3,barrel,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("TrackerBarrel",4,barrel,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Seed));
+            lyrlist11.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Seed));
+            lyrlist11.add(new SeedLayer("VertexEndcap",3,endcap,SeedType.Seed));
+            lyrlist11.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Confirm));
+            lyrlist11.add(new SeedLayer("TrackerForward",1,endcap,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("TrackerForward",2,endcap,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Extend));
+            lyrlist11.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Extend));
+            SeedStrategy outsideinendcap11 = new SeedStrategy("InsideOutEndcap4",lyrlist11);
+            _strategylist.add(outsideinendcap11);
+            
         }
         
         for (SeedStrategy strategy : _strategylist) {
             //  Set parameters for this strategy
             strategy.putMinPT(1.0);        //  Set minimum pT at 1 GeV
-            strategy.putMaxDCA(1.0);       //  Set maximum d0 at 1 mm
-            strategy.putMaxZ0(1.0);        //  Set maximum z0 at 1 mm
+            strategy.putMaxDCA(10.0);       //  Set maximum d0 at 1 mm
+            strategy.putMaxZ0(10.0);        //  Set maximum z0 at 1 mm
             strategy.putMinConfirm(1);     //  Require at least 1 confirm hit
             strategy.putMinHits(7);        //  Require at least 7 total hits
             strategy.putMaxChisq(50.);     //  Set maximum chi^2 at 50
CVSspam 0.2.8