Commit in lcsim/src/org/lcsim/contrib/seedtracker on MAIN
strategybuilder/IParticleFilter.java+12-11.1 -> 1.2
               /StrategyBasedFilter.java+11-41.2 -> 1.3
               /RunStrategyBuilder.java+37-71.3 -> 1.4
               /StrategyBuilder.java+13-131.3 -> 1.4
               /AllPassFilter.java+41.1 -> 1.2
digiexample/DigiSeedTrackerDriver.java+1-11.3 -> 1.4
+78-26
6 modified files
CD - fix typo in driver + add alternative driver capability for StrategyBuilder + filter improvements

lcsim/src/org/lcsim/contrib/seedtracker/strategybuilder
IParticleFilter.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- IParticleFilter.java	17 Jul 2008 00:52:39 -0000	1.1
+++ IParticleFilter.java	17 Jul 2008 19:52:01 -0000	1.2
@@ -5,6 +5,7 @@
 
 package org.lcsim.contrib.seedtracker.strategybuilder;
 
+import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 
 /**
@@ -20,6 +21,16 @@
  */
 public interface IParticleFilter {
     
+    /**
+     * Returns true if the MCParticle passes the filter, false otherwise
+     * @param p The test MCParticle
+     * @return
+     */
     public boolean passes(MCParticle p); 
-
+    
+    /**
+     * This method is called for each event by StrategyBuilder.  
+     * @param event
+     */
+    public void setEvent(EventHeader event);  
 }

lcsim/src/org/lcsim/contrib/seedtracker/strategybuilder
StrategyBasedFilter.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- StrategyBasedFilter.java	17 Jul 2008 17:55:27 -0000	1.2
+++ StrategyBasedFilter.java	17 Jul 2008 19:52:01 -0000	1.3
@@ -5,7 +5,10 @@
 
 package org.lcsim.contrib.seedtracker.strategybuilder;
 
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
 import org.lcsim.contrib.seedtracker.SeedStrategy;
+import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.fit.helicaltrack.HelixParamCalculator;
 
@@ -18,7 +21,9 @@
     double pt; 
     double dca; 
     double z0; 
-    double b = 5.0; 
+    double b;        
+    Hep3Vector ip = new BasicHep3Vector(0., 0., 0.); 
+    
     public StrategyBasedFilter(SeedStrategy strategy){
         pt = strategy.getMinPT();
         dca = strategy.getMaxDCA(); 
@@ -26,9 +31,7 @@
         
     }
     
-    public void setBField(double b_field){
-        b = b_field; 
-    }
+   
     public boolean passes(MCParticle p) {
         HelixParamCalculator calc = new HelixParamCalculator(p, b); 
         return (
@@ -37,5 +40,9 @@
                 calc.getMCTransverseMomentum() > pt
                 );
     }
+    
+    public void setEvent(EventHeader event){
+        b = event.getDetector().getFieldMap().getField(ip).z();
+    }
 
 }

lcsim/src/org/lcsim/contrib/seedtracker/strategybuilder
RunStrategyBuilder.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- RunStrategyBuilder.java	17 Jul 2008 17:55:27 -0000	1.3
+++ RunStrategyBuilder.java	17 Jul 2008 19:52:01 -0000	1.4
@@ -7,6 +7,7 @@
 
 import java.io.File;
 import org.lcsim.contrib.seedtracker.StrategyXMLUtils;
+import org.lcsim.util.Driver;
 import org.lcsim.util.loop.LCSimLoop;
 
 /**
@@ -36,6 +37,7 @@
         String lwfn = ""; 
         int mintrks = 3;
         String filterClassName = ""; 
+        String altDriver = ""; 
         //parse arguments.. if error print usage
         try{
             int no_flag_counter = 0; 
@@ -65,6 +67,8 @@
                     mintrks = Integer.valueOf(args[++i]);
                 } else if (arg.equals("-f")) {
                     filterClassName = args[++i]; 
+                } else if (arg.equals("-a")) {
+                    altDriver =args[++i]; 
                 } else if (arg.startsWith("-")){
                     throw new Exception(); 
                 } else {
@@ -79,7 +83,30 @@
             printUsage();
             System.exit(1); 
         }
-        StrategyBuilder builder = new StrategyBuilder(); // prevent compiler from complaining that driver might not have been initialized. 
+        IStrategyBuilder builder = new StrategyBuilder(); 
+        
+        if (altDriver.length() > 0) {
+            try {
+                builder = (IStrategyBuilder) Class.forName(altDriver).newInstance();
+            }  catch (ClassNotFoundException cfne) {
+                System.out.println("Class "+altDriver+ " not found :'( Exiting."); 
+                System.exit(3); 
+            } catch (InstantiationException ie){
+                System.out.println("Class "+altDriver+ " could not be instantiated. Does the constructor take arguments? Exiting.");
+                System.exit(4); 
+            } catch (IllegalAccessException iae){
+                System.out.println("IllegalAccessException? WTF does that mean? Exiting."); 
+                System.exit(5); 
+            } catch (ClassCastException cce){
+                System.out.println("Unable to cast "+altDriver+ " as a IStrategyBuilder. Exiting"); 
+                System.exit(6); 
+            }
+            
+            if (!(builder instanceof Driver)) {
+                System.out.println("Alternative driver must extend Driver. Exiting"); 
+                System.exit(14123); 
+            }
+        } 
         
         builder.setVerbose(verbose);
         builder.setDivideByTwoFlag(flag);
@@ -102,23 +129,23 @@
                 builder.setParticleFilter((IParticleFilter) Class.forName(filterClassName).newInstance());
             } catch (ClassNotFoundException cfne) {
                 System.out.println("Class "+filterClassName+ " not found :'( Exiting."); 
-                System.exit(3); 
+                System.exit(123); 
             } catch (InstantiationException ie){
                 System.out.println("Class "+filterClassName+ " could not be instantiated. Does the constructor take arguments? Exiting.");
-                System.exit(4); 
+                System.exit(234); 
             } catch (IllegalAccessException iae){
                 System.out.println("IllegalAccessException? WTF does that mean? Exiting."); 
-                System.exit(5); 
+                System.exit(345); 
             } catch (ClassCastException cce){
                 System.out.println("Unable to cast "+filterClassName+ " as a IParticleFilter. Exiting"); 
-                System.exit(6); 
+                System.exit(456); 
             }
         }
         
         File file = new File(filename);
         if (!file.exists()) {
             System.out.println("Cannot find data file "+file.toString()+". Exiting. "); 
-            System.exit(7); 
+            System.exit(7);
         }
         
         
@@ -130,7 +157,7 @@
 
             LCSimLoop loop = new LCSimLoop(); 
             loop.setLCIORecordSource(file); 
-            loop.add( builder  ); 
+            loop.add( (Driver) builder ); 
             loop.loop(numEvents, null); 
             loop.dispose(); 
         } catch (Exception e){
@@ -156,6 +183,9 @@
         System.out.println(" -f FILTER_CLASS\t\tSpecify an MCParticle filter by naming a " +
                 "\n\t\t\t\t fully qualified (i.e. org.lcsim.etc) class. \n\t\t\t\t By default, " +
                 "a filter based on the prototype \n\t\t\t\t strategy cutoffs is used.");
+        System.out.println(" -a ALTERNATIVE_DRIVER\t\tUse an alternative driver instead of \n\t\t\t\t the default StrategyBuilder. " +
+                "Must implement\n\t\t\t\t IStrategyBuilder and extend Driver. UNTESTED.\n\t\t\t\t " +
+                "Fully qualified class name must be used \n\t\t\t\t (i.e. org.lcsim.etc)"); 
     }
     
 }

lcsim/src/org/lcsim/contrib/seedtracker/strategybuilder
StrategyBuilder.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- StrategyBuilder.java	17 Jul 2008 17:55:27 -0000	1.3
+++ StrategyBuilder.java	17 Jul 2008 19:52:01 -0000	1.4
@@ -5,8 +5,6 @@
 
 package org.lcsim.contrib.seedtracker.strategybuilder;
 
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.Hep3Vector;
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -35,7 +33,10 @@
 import org.lcsim.util.Driver;
 
 /**
- * StrategyBuilder generatew
+ * StrategyBuilder automatically generates strategies for a detector by
+ * seeing what layers MCParticles tend to go through. 
+ * 
+ * See interface for public method doc. 
  * 
  * @author cozzy
  */
@@ -60,18 +61,25 @@
     private List<Set<DumbLayer>> setlist = new ArrayList<Set<DumbLayer>>();
     private String detectorName; 
     private IParticleFilter filter; 
-    private Hep3Vector ip = new BasicHep3Vector(0.,0.,0.);
     
     
+    @Override 
+    protected void startOfData(){
+      //Use default filter if none is specified
+        if (filter==null){
+            filter = new StrategyBasedFilter(prototype); 
+        }
+    }
     
     @Override
     protected void process(EventHeader event){
 
         super.process(event);
-
         
         if (verbose) System.out.println("Processing event "+event.getEventNumber());
         
+        filter.setEvent(event);
+        
         //Build MC Map from SimTrackerHits
         Map<MCParticle, List<SimTrackerHit>> mcmap = new HashMap<MCParticle, List<SimTrackerHit>>(); 
         
@@ -295,14 +303,6 @@
     @Override
     protected void detectorChanged(Detector detector){
         detectorName = detector.getDetectorName(); 
-        
-        //if no filter defined, use StrategyBasedFilter
-        if (filter==null){
-            filter = new StrategyBasedFilter(prototype); 
-            double b = detector.getFieldMap().getField(ip).z();
-            ((StrategyBasedFilter) filter).setBField(b);
-        }
-        
     }
     
     

lcsim/src/org/lcsim/contrib/seedtracker/strategybuilder
AllPassFilter.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- AllPassFilter.java	17 Jul 2008 00:52:39 -0000	1.1
+++ AllPassFilter.java	17 Jul 2008 19:52:01 -0000	1.2
@@ -5,6 +5,7 @@
 
 package org.lcsim.contrib.seedtracker.strategybuilder;
 
+import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 
 /**
@@ -17,4 +18,7 @@
         return true; 
     }
 
+    public void setEvent(EventHeader event){
+        return; 
+    }
 }

lcsim/src/org/lcsim/contrib/seedtracker/digiexample
DigiSeedTrackerDriver.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- DigiSeedTrackerDriver.java	17 Jul 2008 00:52:39 -0000	1.3
+++ DigiSeedTrackerDriver.java	17 Jul 2008 19:52:01 -0000	1.4
@@ -19,7 +19,7 @@
  */
 public class DigiSeedTrackerDriver extends Driver{
     
-    private static final String strategy_file = "resources/org/lcsim/contrib/seedtracker/seedstrategy" +
+    private static final String strategy_file = "resources/org/lcsim/contrib/seedtracker/strategybuilder" +
             "/strategies/autogen_100GeV_singleMuon_sid01_planar_tracker.xml";
     
     public DigiSeedTrackerDriver() {
CVSspam 0.2.8