8 modified files
lcsim/src/org/lcsim/recon/tracking/seedtracker/strategybuilder
diff -u -r1.4 -r1.5
--- LayerWeight.java 22 Oct 2008 04:11:54 -0000 1.4
+++ LayerWeight.java 24 Oct 2008 19:33:50 -0000 1.5
@@ -33,7 +33,6 @@
public class LayerWeight {
private double default_weight = 1.0;
- private double adjacence_constant = 2.0;
private double adjacence_multiplier = 1.0;
private Map<DumbLayer, Double> weights;
private Map<String, Double> readout_efficiencies;
@@ -115,10 +114,6 @@
return ret;
}
- public double getAdjacenceConstant() {
- return adjacence_constant;
- }
-
public double getAdjacenceMultiplier() {
return adjacence_multiplier;
}
@@ -126,11 +121,6 @@
public void setAdjacenceMultiplier(double adjacence_multiplier) {
this.adjacence_multiplier = adjacence_multiplier;
}
-
- public void setAdjacenceConstant(double adjacence_constant) {
- this.adjacence_constant = adjacence_constant;
- }
-
public boolean isDivideByTwoInTrackerEndcap() {
return divideByTwoInTrackerEndcap;
@@ -251,7 +241,6 @@
lw.setDefaultWeight(Double.valueOf(root.getChildText("DefaultWeight")).doubleValue());
lw.setDefaultReadoutEfficiency(Double.valueOf(root.getChildText("DefaultReadoutEfficiency")));
try {lw.setAdjacenceMultiplier(Double.valueOf(root.getChildText("AdjacenceMultiplier")).doubleValue());} catch(NullPointerException npe){}
- try {lw.setAdjacenceConstant(Double.valueOf(root.getChildText("AdjacenceConstant")).doubleValue());} catch(NullPointerException npe){}
try {lw.setTargetDetector(root.getChildText("TargetDetector"));} catch(NullPointerException npe){}
try {lw.setDivideByTwoInTrackerEndcap(Boolean.valueOf(root.getChild("TargetDetector").getAttributeValue("divide_by_two_in_tracker_endcap")));} catch(NullPointerException npe){}
try {lw.setDivideByTwoInTrackerForward(Boolean.valueOf(root.getChild("TargetDetector").getAttributeValue("divide_by_two_in_tracker_forward")));} catch(NullPointerException npe){}
@@ -299,7 +288,6 @@
root.addContent(new Element("DefaultReadoutEfficiency").addContent(String.valueOf(defaultEfficiency)));
root.addContent(new Element("TargetDetector").addContent(String.valueOf(targetDetector)).setAttribute("divide_by_two_in_tracker_endcap", String.valueOf(divideByTwoInTrackerEndcap)));
root.addContent(new Element("TargetDetector").addContent(String.valueOf(targetDetector)).setAttribute("divide_by_two_in_tracker_forward", String.valueOf(divideByTwoInTrackerForward)));
- root.addContent(new Element("AdjacenceConstant").addContent(String.valueOf(adjacence_constant)));
root.addContent(new Element("AdjacenceMultiplier").addContent(String.valueOf(adjacence_multiplier)));
Element ro = new Element("ReadoutEfficiencies");
lcsim/src/org/lcsim/recon/tracking/seedtracker/strategybuilder
diff -u -r1.4 -r1.5
--- StrategyBuilder.java 22 Oct 2008 04:11:55 -0000 1.4
+++ StrategyBuilder.java 24 Oct 2008 19:33:50 -0000 1.5
@@ -130,7 +130,7 @@
//this will store all the working adjacent lists
LinkedList<List<DumbLayer>> tempAdjacentLayersList = new LinkedList<List<DumbLayer>>();
-
+ LinkedList<List<DumbLayer>> pendingAdjacentLayersList = new LinkedList<List<DumbLayer>>();
for (SimTrackerHit h : l) {
IDetectorElementContainer cont = DetectorElementStore.getInstance().find(h.getIdentifier());
if(cont.isEmpty()) continue;
@@ -143,7 +143,7 @@
if (weighter.isDivideByTwoInTrackerForward() && be.isEndcap() &&
(detname.indexOf("TrackerForward") > -1 || detname.indexOf("TkrForward") > -1) ) {
lyr/=2; // sid01/sid02 doubles up on layer numbering in the endcap.
- } else if (weighter.isDivideByTwoInTrackerForward() && be.isEndcap() &&
+ } else if (weighter.isDivideByTwoInTrackerEndcap() && be.isEndcap() &&
(detname.indexOf("TrackerEndcap") > -1 || detname.indexOf("TkrEndcap") > -1) ) {
lyr/=2; // sid01 doubles up on layer numbering in the forward.
}
@@ -166,15 +166,17 @@
List<DumbLayer> s = it.next();
if(!s.contains(dl)) s.add(dl); //otherwise we get doubled layers in the forward region of the tracker
if (s.size() == confirm_layers + seed_layers) {
- adjacentlist.add(s);
+ pendingAdjacentLayersList.add(s);
it.remove();
}
}
}
//Ensure layer set has minimum number of layers
- if (set.size() >= min_layers)
+ if (set.size() >= min_layers) {
setlist.add(set);
+ adjacentlist.addAll(pendingAdjacentLayersList);
+ }
}
}
@@ -196,15 +198,6 @@
}
if (verbose) System.out.println(startingStrategies.size()+" starting strategies defined.");
- //If any of the starting strategies can find a set, discard it.
-// Iterator<Set<DumbLayer>> iter = setlist.iterator();
-// while (iter.hasNext()){
-// Set<DumbLayer> this_set = iter.next();
-// if (startingCanFind(this_set)) {
-// iter.remove();
-// }
-// }
-
//Generate the scorer and assign its weighter
SubsetScorer scorer = new SubsetScorer(setlist,adjacentlist);
scorer.setLayerWeight(weighter);
lcsim/src/org/lcsim/recon/tracking/seedtracker/strategybuilder
diff -u -r1.3 -r1.4
--- SubsetScorer.java 22 Oct 2008 04:11:55 -0000 1.3
+++ SubsetScorer.java 24 Oct 2008 19:33:50 -0000 1.4
@@ -19,7 +19,7 @@
Map<Set<DumbLayer>,Integer> setmap = new HashMap<Set<DumbLayer>,Integer>();
LayerWeight weighter = new LayerWeight();
- Map<Set<DumbLayer>,Integer> adjacencemap = new HashMap<Set<DumbLayer>,Integer>();
+ Map<Set<DumbLayer>,Double> adjacencemap = new HashMap<Set<DumbLayer>,Double>();
public SubsetScorer(List<Set<DumbLayer>> setlist, List<List<DumbLayer>> adjacentSets) {
@@ -36,11 +36,19 @@
Set<DumbLayer> set = new HashSet<DumbLayer>(list.size());
set.addAll(list);
if(adjacencemap.containsKey(set)){
- adjacencemap.put(set,adjacencemap.get(set).intValue()+1);
+ adjacencemap.put(set,adjacencemap.get(set).doubleValue()+1.0);
} else {
- adjacencemap.put(set,1);
+ adjacencemap.put(set,1.0);
}
}
+
+ //Normalize adjacencies
+ for(Set<DumbLayer> s : adjacencemap.keySet()) {
+ double pct = adjacencemap.get(s) / getUnweightedScore(s);
+ if (pct>1.0) pct = 1.0; //Fix anomalous cases where the numerator is slightly (by no more than a few) bigger than the denominator
+// System.out.println(adjacencemap.get(s) + " , "+ getUnweightedScore(s) + ", " + s.toString());
+ adjacencemap.put(s, pct);
+ }
}
public void setLayerWeight(LayerWeight lw) {
@@ -55,12 +63,12 @@
}
- //s * Pi(w) * (a + b * ln (adjacence))
+ //s * Pi(w) * (1 + a*(adjacence))
//
public double getScore(Set<DumbLayer> testSet) {
return getUnweightedScore(testSet) * weighter.getWeight(testSet)
- * ( weighter.getAdjacenceConstant() +
- Math.log(getAdjacence(testSet))
+ * ( 1 +
+ (getAdjacence(testSet))
* weighter.getAdjacenceMultiplier()
);
}
@@ -76,7 +84,7 @@
return ret;
}
- public int getAdjacence(Set<DumbLayer> testSet){
+ public double getAdjacence(Set<DumbLayer> testSet){
if (adjacencemap.containsKey(testSet)){
return adjacencemap.get(testSet);
}
lcsim/src/org/lcsim/recon/tracking/seedtracker/strategybuilder
diff -u -r1.1 -r1.2
--- SubsetScore.java 10 Oct 2008 06:10:46 -0000 1.1
+++ SubsetScore.java 24 Oct 2008 19:33:51 -0000 1.2
@@ -13,9 +13,9 @@
private double score;
private int numTracks;
- private int adjacency;
+ private double adjacency;
- public SubsetScore(double score, int numTracks, int adjacency){
+ public SubsetScore(double score, int numTracks, double adjacency){
this.score =score;
this.numTracks = numTracks;
this.adjacency = adjacency;
lcsim/resources/org/lcsim/recon/tracking/seedtracker/strategybuilder/weights
diff -u -r1.3 -r1.4
--- default_weights_sid01.xml 22 Oct 2008 04:11:55 -0000 1.3
+++ default_weights_sid01.xml 24 Oct 2008 19:33:51 -0000 1.4
@@ -13,17 +13,14 @@
black magic...
Scoring formula:
- N*w*(c+m*ln(a))
+ N*w*(1+m*a)
N = Number of new tracks that could theoretically be found
w =Product of weights of subset layers
a = Adjacence, the number of times in the training event that the
subset layers are adjacent (i.e., they are hit consecutively by an
- MCParticle).
- c = AdjacenceConstant
+ MCParticle) divided by the number of times a particle goes through the 4 layers.
m = AdjacenceMultiplier
-
-
-->
@@ -35,8 +32,6 @@
<TargetDetector divide_by_two_in_tracker_endcap="true" divide_by_two_in_tracker_forward="true">sid01</TargetDetector>
- <!-- Adjacence modifiers (see above for formula)-->
- <AdjacenceConstant>2</AdjacenceConstant>
<AdjacenceMultiplier>1</AdjacenceMultiplier>
<Layers>
lcsim/resources/org/lcsim/recon/tracking/seedtracker/strategybuilder/weights
diff -u -r1.2 -r1.3
--- default_weights_sid02.xml 16 Oct 2008 21:40:29 -0000 1.2
+++ default_weights_sid02.xml 24 Oct 2008 19:33:51 -0000 1.3
@@ -5,25 +5,15 @@
<!--
By Cosmin Deaconu
- These weights were found to work satisfactorily with ngle
- muon events. They should certainly not be condered optimal...
-
- Unfortunately, coming up with good weights seems to be a little bit of
- black magic...
-
- Score is calculated with the following formula:
-
- N*w*(c+m*a^e)
+ Scoring formula:
+ N*w*(1+m*a)
N = Number of new tracks that could theoretically be found
- w = Average weight of subset layers
+ w =Product of weights of subset layers
a = Adjacence, the number of times in the training event that the
subset layers are adjacent (i.e., they are hit consecutively by an
- MCParticle).
- c = AdjacenceConstant
+ MCParticle) divided by the number of times a particle goes through the 4 layers.
m = AdjacenceMultiplier
- e = AdjacenceExponent
-
-->
<!--Default used for any not already defined-->
@@ -42,11 +32,8 @@
<DefaultWeight>1.0</DefaultWeight>
<TargetDetector divide_by_two_in_tracker_endcap="true">sid02</TargetDetector>
-
- <!-- Adjacence modifiers (see above for formula)-->
- <AdjacenceConstant>2</AdjacenceConstant>
- <AdjacenceMultiplier>1</AdjacenceMultiplier>
- <AdjacenceExponent>0.1</AdjacenceExponent>
+
+ <AdjacenceMultiplier>0.5</AdjacenceMultiplier>
<Layers>
@@ -59,8 +46,8 @@
<Layer layer_number="4" detector_name="VertexBarrel" be_flag="BARREL">0.504</Layer>
<Layer layer_number="3" detector_name="VertexBarrel" be_flag="BARREL">0.503</Layer>
<Layer layer_number="2" detector_name="VertexBarrel" be_flag="BARREL">0.502</Layer>
- <Layer layer_number="1" detector_name="VertexBarrel" be_flag="BARREL">0.501</Layer>
- <Layer layer_number="0" detector_name="VertexBarrel" be_flag="BARREL">0.500</Layer>
+ <Layer layer_number="1" detector_name="VertexBarrel" be_flag="BARREL">0</Layer>
+ <Layer layer_number="0" detector_name="VertexBarrel" be_flag="BARREL">0</Layer>
<!--North Endcap-->
<Layer layer_number="3" detector_name="TrackerEndcap" be_flag="ENDCAP_NORTH">1.011</Layer>
<Layer layer_number="2" detector_name="TrackerEndcap" be_flag="ENDCAP_NORTH">1.010</Layer>
lcsim/resources/org/lcsim/recon/tracking/seedtracker/strategybuilder/weights
diff -u -r1.3 -r1.4
--- default_weights_sid01_planar_tracker.xml 22 Oct 2008 04:11:55 -0000 1.3
+++ default_weights_sid01_planar_tracker.xml 24 Oct 2008 19:33:51 -0000 1.4
@@ -13,17 +13,15 @@
black magic...
Scoring formula:
- N*w*(c+m*ln(a))
+ N*w*(1+m*a)
N = Number of new tracks that could theoretically be found
w =Product of weights of subset layers
a = Adjacence, the number of times in the training event that the
subset layers are adjacent (i.e., they are hit consecutively by an
- MCParticle).
- c = AdjacenceConstant
+ MCParticle) divided by the number of times a particle goes through the 4 layers.
m = AdjacenceMultiplier
-
-->
@@ -33,8 +31,6 @@
<DefaultReadoutEfficiency>0.99</DefaultReadoutEfficiency>
<DefaultWeight>1.0</DefaultWeight>
<TargetDetector>sid01_planar_tracker</TargetDetector>
- <!-- Adjacence modifiers (see above for formula)-->
- <AdjacenceConstant>2</AdjacenceConstant>
<AdjacenceMultiplier>1</AdjacenceMultiplier>
lcsim/resources/org/lcsim/recon/tracking/seedtracker/strategybuilder
diff -u -r1.2 -r1.3
--- layerweights.xsd 22 Oct 2008 04:11:55 -0000 1.2
+++ layerweights.xsd 24 Oct 2008 19:33:51 -0000 1.3
@@ -7,7 +7,6 @@
<xsd:element name="TargetDetector" type="TargetDetectorType" minOccurs="0"/>
<xsd:element name="DivideByTwoInTrackerEndcap" type="xsd:boolean" minOccurs="0"/>
- <xsd:element name="AdjacenceConstant" type="xsd:double" minOccurs="0"/>
<xsd:element name="AdjacenceMultiplier" type="xsd:double" minOccurs="0"/>
<xsd:element name="DefaultWeight" type="xsd:double"/>
<xsd:element name="ReadoutEfficiencies" type="ReadoutEfficienciesType" minOccurs="0"/>
CVSspam 0.2.8