Print

Print


Commit in lcsim/src/org/lcsim/recon/tracking/seedtracker on MAIN
strategybuilder/SubsetScore.java+35added 1.1
               /StrategyBuilderUtils.java+6-21.1 -> 1.2
               /StrategyBuilder.java+19-71.2 -> 1.3
               /SubsetScorer.java+8-31.1 -> 1.2
StrategyXMLUtils.java+51.3 -> 1.4
StrategyXMLMetadata.java+5-21.1 -> 1.2
+78-14
1 added + 5 modified, total 6 files
CD - StrategyBuilder now outputs comments about scoring on generated strategies

lcsim/src/org/lcsim/recon/tracking/seedtracker/strategybuilder
SubsetScore.java added at 1.1
diff -N SubsetScore.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SubsetScore.java	10 Oct 2008 06:10:46 -0000	1.1
@@ -0,0 +1,35 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.lcsim.recon.tracking.seedtracker.strategybuilder;
+
+/**
+ *This is a not-very smart class to keep track of scores...
+ * @author cozzy
+ */
+public class SubsetScore {
+    
+    private double score; 
+    private int numTracks; 
+    private int adjacency; 
+    
+    public SubsetScore(double score, int numTracks, int adjacency){
+        this.score =score; 
+        this.numTracks = numTracks; 
+        this.adjacency = adjacency; 
+    }
+    
+    public double score() {
+        return score; 
+    }
+    
+    public int numTracks() {
+        return numTracks; 
+    }
+    
+    public double adjacency() {
+       return adjacency;  
+    }
+}

lcsim/src/org/lcsim/recon/tracking/seedtracker/strategybuilder
StrategyBuilderUtils.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- StrategyBuilderUtils.java	27 Aug 2008 17:55:49 -0000	1.1
+++ StrategyBuilderUtils.java	10 Oct 2008 06:10:46 -0000	1.2
@@ -15,13 +15,14 @@
 import org.lcsim.recon.tracking.seedtracker.SeedLayer.SeedType;
 import org.lcsim.recon.tracking.seedtracker.SeedStrategy;
 import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
+import org.lcsim.recon.tracking.seedtracker.StrategyXMLMetadata;
 
 /**
  * StrategyBuilder was getting too bloated, so some of the code has been moved here
  * @author cozzy
  */
 public class StrategyBuilderUtils {
-    
+     
     private static final BarrelEndcapFlag[] beArray = 
             new BarrelEndcapFlag[]{BarrelEndcapFlag.ENDCAP_NORTH, BarrelEndcapFlag.ENDCAP_SOUTH}; 
     
@@ -35,7 +36,7 @@
      * 
      * @param strat_list
      */
-    static void symmetrizeStrategies (List<SeedStrategy> strat_list) {
+    static void symmetrizeStrategies (List<SeedStrategy> strat_list, StrategyXMLMetadata meta) {
         
         /**
          * There are 3 interesting cases here:
@@ -75,7 +76,10 @@
                     for (BarrelEndcapFlag be : beArray) {
                         SeedStrategy newstrat = makeMirroredLayer(next, be);
                         symmetrized.add(newstrat); 
+                        meta.strategyComments.put(newstrat, meta.strategyComments.get(next)+
+                                "\n\t\t\tNOTE: These layers are combined for both endcaps of this symmetrized strategy\n\t\t"); 
                     }
+                    meta.strategyComments.remove(next); 
                     extendOnlyFlag = false; 
                     break; 
 

lcsim/src/org/lcsim/recon/tracking/seedtracker/strategybuilder
StrategyBuilder.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- StrategyBuilder.java	26 Sep 2008 23:36:07 -0000	1.2
+++ StrategyBuilder.java	10 Oct 2008 06:10:46 -0000	1.3
@@ -226,31 +226,34 @@
         if (verbose) System.out.println("Layer set has "+setset.size()+" entries.");
         //map from a final_set to all other associated layers to generate extension layers
         Map<Set<DumbLayer>, Set<DumbLayer>> extendmap = new HashMap<Set<DumbLayer>,Set<DumbLayer>>();
+        Map<Set<DumbLayer>,SubsetScore> scoremap = new HashMap<Set<DumbLayer>,SubsetScore>(); 
         
+        
+        SubsetScore score = new SubsetScore(0,0,0); 
         //Figure out a "good" set of four-layer combinations by brute force...
         //We have a scoring algorithm and we find the maximal scoring one. 
         while (true){
             if (usedSets.size() == setset.size()) break; //if we've used all sets, then we're done! 
             
             Set<DumbLayer> max = all_subsets.get(0); 
-            double maxScore = 0; 
+            SubsetScore maxScore = new SubsetScore(0,0,0); 
             
             //get the highest scoring strategy...
             for (Set<DumbLayer> trial : all_subsets){
-                double score = scorer.getScore(trial); 
-                if (score > maxScore) {
+                score = scorer.getScoreObject(trial); 
+                if (score.score() > maxScore.score()) {
                     maxScore = score; 
                     max = trial; 
                 }
             }
             
             //ignore anything that has too few occurrences... 
-            if (scorer.getUnweightedScore(max) <= minUnweightedScore) break; 
+            if (maxScore.numTracks() <= minUnweightedScore) break; 
             
             scorer.markUsed(max);
             final_sets.add(max); 
             extendmap.put(max, new HashSet<DumbLayer>()); 
-            
+            scoremap.put(max,maxScore); 
             for (Set<DumbLayer> this_set : setset) {
                 if (this_set.containsAll(max)) { //If this set contains all the layers in max, it should be findable! 
                     
@@ -279,6 +282,8 @@
         strat_list.addAll(startingStrategies); 
         
         
+        StrategyXMLMetadata meta = new StrategyXMLMetadata(); 
+        
         //create Strategies from final_sets... this part is klunky right now. 
         for (Set<DumbLayer> s : final_sets) {
 
@@ -372,9 +377,16 @@
             SeedStrategy stgy = new SeedStrategy(name,lyrlst);
             stgy.copyCutoffsFromStrategy(prototype); 
             strat_list.add(stgy); 
+            
+            //Write in scoring information about each strategy  
+            score = scoremap.get(s);
+            String comment = "AUTOGEN STATISTICS: \n\t\t\tScore: "+score.score() + "\n";
+            comment += "\t\t\tUnweighted Score (num new tracks): "+score.numTracks() + "\n"; 
+            comment += "\t\t\tAdjacency: "+score.adjacency() +"\n\t\t"; 
+            meta.strategyComments.put(stgy, comment); 
         }
         
-        StrategyXMLMetadata meta = new StrategyXMLMetadata(); 
+
         String comment = "Strategy list Autogenerated by Strategy Builder on "+new Date()+".";
         meta.targetDetector =  detectorName; 
         meta.comment = comment;
@@ -382,7 +394,7 @@
         //If symmetrizing, make Endcap Layers for both north and south
         if (symmetrize) {
             if (verbose) System.out.println("Symmetrizing..."); 
-            StrategyBuilderUtils.symmetrizeStrategies(strat_list);
+            StrategyBuilderUtils.symmetrizeStrategies(strat_list, meta);
         }
         
         StrategyXMLUtils.writeStrategyListToFile(strat_list, new File(outputFile), meta);

lcsim/src/org/lcsim/recon/tracking/seedtracker/strategybuilder
SubsetScorer.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- SubsetScorer.java	27 Aug 2008 17:55:49 -0000	1.1
+++ SubsetScorer.java	10 Oct 2008 06:10:46 -0000	1.2
@@ -41,8 +41,6 @@
                     adjacencemap.put(set,1); 
                 }
             }
-           
-//           System.out.println(adjacencemap.toString());
         }
         
         public void setLayerWeight(LayerWeight lw) {
@@ -50,6 +48,13 @@
         }
         
        
+        public SubsetScore getScoreObject(Set<DumbLayer> testset) {
+            
+            return new SubsetScore(getScore(testset), getUnweightedScore(testset), getAdjacence(testset)); 
+            
+        }
+        
+        
         //s * w * (a + b * adjacence ^ c)
         //
         public double getScore(Set<DumbLayer> testSet) {
@@ -63,7 +68,7 @@
          
         }
         
-        public double getUnweightedScore(Set<DumbLayer> testSet){
+        public int getUnweightedScore(Set<DumbLayer> testSet){
             
             int ret = 0; 
             for (Set<DumbLayer> s : setmap.keySet()){

lcsim/src/org/lcsim/recon/tracking/seedtracker
StrategyXMLUtils.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- StrategyXMLUtils.java	27 Aug 2008 19:28:50 -0000	1.3
+++ StrategyXMLUtils.java	10 Oct 2008 06:10:47 -0000	1.4
@@ -192,6 +192,11 @@
         for (SeedStrategy strat : strategyList){
             
             Element strategy = new Element("Strategy");
+            
+            if (meta.strategyComments.containsKey(strat)){
+                strategy.addContent(new Comment(meta.strategyComments.get(strat))); 
+            }
+            
             strategy.setAttribute("name",strat.getName()); 
             strategy.addContent(new Comment("Cutoffs"));
             strategy.addContent(new Element("MinPT").addContent(String.valueOf(strat.getMinPT()))); 

lcsim/src/org/lcsim/recon/tracking/seedtracker
StrategyXMLMetadata.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- StrategyXMLMetadata.java	27 Aug 2008 17:59:02 -0000	1.1
+++ StrategyXMLMetadata.java	10 Oct 2008 06:10:47 -0000	1.2
@@ -5,13 +5,16 @@
 
 package org.lcsim.recon.tracking.seedtracker;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
- * 
+ * A not very smart data object... 
  * @author cozzy
  */
 public class StrategyXMLMetadata {
 
     public String comment = null; 
     public String targetDetector = null; 
-    
+    public Map<SeedStrategy, String> strategyComments = new HashMap<SeedStrategy, String>(); 
 }
CVSspam 0.2.8