8 modified files
lcsim/src/org/lcsim/contrib/seedtracker
diff -u -r1.3 -r1.4
--- ConfirmSeeds.java 7 Feb 2008 18:20:50 -0000 1.3
+++ ConfirmSeeds.java 12 Feb 2008 17:10:10 -0000 1.4
@@ -43,7 +43,7 @@
// Loop over the confirmation layers
for (SeedLayer lyr : confirmlyrs) {
-
+ int nconfirm = 0;
// Get the hits on this confirmation layer
List<HelicalTrackHit> hitlist = _hitmanager.getTrackerHits(lyr);
@@ -75,10 +75,12 @@
// If all fit tries for this layer are potentially bad hits, include the starting seed in the list
if (chisqbest - oldchisq > strategy.getBadHitChisq()) {
newlist.add(seedin);
- }
+ } else nconfirm++;
}
// Use the new list of seeds as input to the next layer search
seedlist = newlist;
+// System.out.println(" Number of confirmed seeds: "+nconfirm);
+// System.out.println(" Number of seed candidates: "+seedlist.size());
}
// Check for seeds with sufficient numbers of confirmed hits
lcsim/src/org/lcsim/contrib/seedtracker
diff -u -r1.6 -r1.7
--- DefaultStrategy.java 6 Feb 2008 02:33:25 -0000 1.6
+++ DefaultStrategy.java 12 Feb 2008 17:10:10 -0000 1.7
@@ -26,19 +26,33 @@
public DefaultStrategy() {
_strategylist = new ArrayList();
// Barrel only strategies
- List<SeedLayer> tv012layers = new ArrayList();
- tv012layers.add(new SeedLayer("VertexBarrel", 0, BarrelEndcapFlag.BARREL, SeedType.Seed));
- tv012layers.add(new SeedLayer("VertexBarrel", 1, BarrelEndcapFlag.BARREL, SeedType.Seed));
- tv012layers.add(new SeedLayer("VertexBarrel", 2, BarrelEndcapFlag.BARREL, SeedType.Seed));
- tv012layers.add(new SeedLayer("VertexBarrel", 3, BarrelEndcapFlag.BARREL, SeedType.Confirm));
- tv012layers.add(new SeedLayer("VertexBarrel", 4, BarrelEndcapFlag.BARREL, SeedType.Confirm));
- tv012layers.add(new SeedLayer("TrackerBarrel", 0, BarrelEndcapFlag.BARREL, SeedType.Extend));
- tv012layers.add(new SeedLayer("TrackerBarrel", 1, BarrelEndcapFlag.BARREL, SeedType.Extend));
- tv012layers.add(new SeedLayer("TrackerBarrel", 2, BarrelEndcapFlag.BARREL, SeedType.Extend));
- tv012layers.add(new SeedLayer("TrackerBarrel", 3, BarrelEndcapFlag.BARREL, SeedType.Extend));
- tv012layers.add(new SeedLayer("TrackerBarrel", 4, BarrelEndcapFlag.BARREL, SeedType.Extend));
+// List<SeedLayer> tv012layers = new ArrayList();
+// tv012layers.add(new SeedLayer("VertexBarrel", 0, BarrelEndcapFlag.BARREL, SeedType.Seed));
+// tv012layers.add(new SeedLayer("VertexBarrel", 1, BarrelEndcapFlag.BARREL, SeedType.Seed));
+// tv012layers.add(new SeedLayer("VertexBarrel", 2, BarrelEndcapFlag.BARREL, SeedType.Seed));
+// tv012layers.add(new SeedLayer("VertexBarrel", 3, BarrelEndcapFlag.BARREL, SeedType.Confirm));
+// tv012layers.add(new SeedLayer("VertexBarrel", 4, BarrelEndcapFlag.BARREL, SeedType.Confirm));
+// tv012layers.add(new SeedLayer("TrackerBarrel", 0, BarrelEndcapFlag.BARREL, SeedType.Extend));
+// tv012layers.add(new SeedLayer("TrackerBarrel", 1, BarrelEndcapFlag.BARREL, SeedType.Extend));
+// tv012layers.add(new SeedLayer("TrackerBarrel", 2, BarrelEndcapFlag.BARREL, SeedType.Extend));
+// tv012layers.add(new SeedLayer("TrackerBarrel", 3, BarrelEndcapFlag.BARREL, SeedType.Extend));
+// tv012layers.add(new SeedLayer("TrackerBarrel", 4, BarrelEndcapFlag.BARREL, SeedType.Extend));
- _strategylist.add(new SeedStrategy("TV012",tv012layers));
+// _strategylist.add(new SeedStrategy("TV012",tv012layers));
+
+ List<SeedLayer> tb345layers = new ArrayList();
+ tb345layers.add(new SeedLayer("VertexBarrel", 0, BarrelEndcapFlag.BARREL, SeedType.Extend));
+ tb345layers.add(new SeedLayer("VertexBarrel", 1, BarrelEndcapFlag.BARREL, SeedType.Extend));
+ tb345layers.add(new SeedLayer("VertexBarrel", 2, BarrelEndcapFlag.BARREL, SeedType.Extend));
+ tb345layers.add(new SeedLayer("VertexBarrel", 3, BarrelEndcapFlag.BARREL, SeedType.Extend));
+ tb345layers.add(new SeedLayer("VertexBarrel", 4, BarrelEndcapFlag.BARREL, SeedType.Extend));
+ tb345layers.add(new SeedLayer("TrackerBarrel", 0, BarrelEndcapFlag.BARREL, SeedType.Confirm));
+ tb345layers.add(new SeedLayer("TrackerBarrel", 1, BarrelEndcapFlag.BARREL, SeedType.Confirm));
+ tb345layers.add(new SeedLayer("TrackerBarrel", 2, BarrelEndcapFlag.BARREL, SeedType.Seed));
+ tb345layers.add(new SeedLayer("TrackerBarrel", 3, BarrelEndcapFlag.BARREL, SeedType.Seed));
+ tb345layers.add(new SeedLayer("TrackerBarrel", 4, BarrelEndcapFlag.BARREL, SeedType.Seed));
+
+ _strategylist.add(new SeedStrategy("TB345",tb345layers));
List<BarrelEndcapFlag> belist = new ArrayList();
belist.add(BarrelEndcapFlag.ENDCAP_NORTH);
lcsim/src/org/lcsim/contrib/seedtracker
diff -u -r1.2 -r1.3
--- ExtendSeeds.java 7 Feb 2008 18:20:50 -0000 1.2
+++ ExtendSeeds.java 12 Feb 2008 17:10:10 -0000 1.3
@@ -36,6 +36,7 @@
// Loop over the confirmed seeds
for (SeedCandidate seed : confirmed) {
+ int nextend = 0;
// Start a working seed list and add the input seed
List<SeedCandidate> seedlist = new ArrayList<SeedCandidate>();
@@ -76,10 +77,12 @@
// If all fit tries for this layer are potentially bad hits, include the starting seed in the list
if (chisqbest - oldchisq > strategy.getBadHitChisq()) {
newlist.add(seedin);
- }
+ } else nextend++;
}
// Use the new list of seeds as input to the next layer search
seedlist = newlist;
+// System.out.println(" Extended seeds: "+nextend);
+// System.out.println(" Extended seed candidates: "+seedlist.size());
}
// Check for seeds with sufficient numbers of confirmed hits
lcsim/src/org/lcsim/contrib/seedtracker
diff -u -r1.3 -r1.4
--- FindSeeds.java 7 Feb 2008 18:20:50 -0000 1.3
+++ FindSeeds.java 12 Feb 2008 17:10:10 -0000 1.4
@@ -30,51 +30,68 @@
_confirmseeds = new ConfirmSeeds(hitmanager, helixfitter);
}
- public boolean FindConfirmedSeeds(SeedStrategy strategy) {
+ public boolean FindConfirmedSeeds(SeedStrategy strategy, double bfield) {
// Get the SeedLayers for this strategy
List<SeedLayer> seedlayerlist = strategy.getLayers(SeedLayer.SeedType.Seed);
if (seedlayerlist.size() != 3) return false;
-
+
_confirmedseeds = new ArrayList<SeedCandidate>();
-// double RMin = strategy.getMinPT() / (0.0003 * _BField);
-// double dMax = strategy.getMaxDCA();
+ double RMin = strategy.getMinPT() / (0.0003 * bfield);
+ double dMax = strategy.getMaxDCA();
// Todo: add code to limit seeds to those that satisfy cuts
+ int nfit = 0;
+ int nseed = 0;
+ int nconfirm = 0;
+ int maxseeds = _hitmanager.getTrackerHits(seedlayerlist.get(0)).size() *
+ _hitmanager.getTrackerHits(seedlayerlist.get(1)).size() *
+ _hitmanager.getTrackerHits(seedlayerlist.get(2)).size();
+
for (HelicalTrackHit hit1 : _hitmanager.getTrackerHits(seedlayerlist.get(0))) {
-// double[] pos1 = s1.getPosition();
-// double r1 = Math.sqrt(pos1[0]*pos1[0] + pos1[1]*pos1[1]);
-// double phi1 = Math.atan2(pos1[1],pos1[0]);
-// double dphi1 = Math.asin((2*RMin*dMax - dMax*dMax-r1*r1)/(2*r1*(RMin-dMax)));
+ double r1 = hit1.r();
+ double phi1 = hit1.phi();
+ double dphi1mx = Math.asin((2*RMin*dMax - dMax*dMax-r1*r1)/(2*r1*(RMin-dMax)));
for (HelicalTrackHit hit2 : _hitmanager.getTrackerHits(seedlayerlist.get(1))) {
-// double[] pos2 = s2.getPosition();
-// double r2 = Math.sqrt(pos2[0]*pos2[0] + pos2[1]*pos2[1]);
-// double phi2 = Math.atan2(pos2[1],pos2[0]);
-// double dphi2 = Math.asin((2*RMin*dMax - dMax*dMax-r2*r2)/(2*r2*(RMin-dMax)));
-// if (Math.abs(phi2-phi1) > Math.abs(dphi2-dphi1)) continue;
+ double r2 = hit2.r();
+ double phi2 = hit2.phi();
+ double dphi2mx = Math.asin((2*RMin*dMax - dMax*dMax-r2*r2)/(2*r2*(RMin-dMax)));
+ double dphi2 = Math.abs(phi2 - phi1);
+ if (dphi2 > Math.PI) dphi2 = 2. * Math.PI - dphi2;
+ if (dphi2 > Math.abs(dphi2mx-dphi1mx)) continue;
for (HelicalTrackHit hit3 : _hitmanager.getTrackerHits(seedlayerlist.get(2))) {
-// double[] pos3 = s3.getPosition();
-// double r3 = Math.sqrt(pos3[0]*pos3[0] + pos3[1]*pos3[1]);
-// double phi3 = Math.atan2(pos3[1],pos3[0]);
-// double dphi3 = Math.asin((2*RMin*dMax - dMax*dMax-r3*r3)/(2*r3*(RMin-dMax)));
-// if (Math.abs(phi3-phi2) > Math.abs(dphi3-dphi2)) continue;
+ double r3 = hit3.r();
+ double phi3 = hit3.phi();
+ double dphi3mx = Math.asin((2*RMin*dMax - dMax*dMax-r3*r3)/(2*r3*(RMin-dMax)));
+ double dphi3 = phi3 - phi2;
+ if (dphi3 > Math.PI) dphi3 = 2. * Math.PI - dphi3;
+ if (dphi3 > Math.abs(dphi3mx-dphi2mx)) continue;
SeedCandidate seed = new SeedCandidate();
seed.addHit(hit1);
seed.addHit(hit2);
seed.addHit(hit3);
+ nseed++;
boolean success = _helixfitter.FitCandidate(seed, strategy);
if (!success) continue;
seed.setHelix(_helixfitter.getHelix());
+ nfit++;
success = _confirmseeds.Confirm(seed, strategy);
if (!success) continue;
_confirmedseeds.addAll(_confirmseeds.getConfirmedSeeds());
+ nconfirm++;
}
}
}
+ System.out.println("Possible seeds: "+maxseeds);
+ System.out.print(" Trial seeds: "+nseed);
+ System.out.println(" Fitted seeds: "+nfit);
+ System.out.println(" Confirmed seeds: "+nconfirm);
+ System.out.println(" Confirmed seed candidates: "+_confirmedseeds.size());
+
return true;
}
lcsim/src/org/lcsim/contrib/seedtracker
diff -u -r1.3 -r1.4
--- HelixFitter.java 7 Feb 2008 18:20:50 -0000 1.3
+++ HelixFitter.java 12 Feb 2008 17:10:10 -0000 1.4
@@ -106,7 +106,7 @@
double curvmax = 0.0003 * _bfield / strategy.getMinPT();
double curv = Math.abs(params[2]);
if (curv > curvmax) {
- chisq += Math.pow(curv - curvmax, 2) / helix.covariance().e(1, 1);
+ chisq += Math.pow(curv - curvmax, 2) / helix.covariance().e(2, 2);
}
// Inflate chisq if |DCA| is too large
lcsim/src/org/lcsim/contrib/seedtracker
diff -u -r1.4 -r1.5
--- SeedStrategy.java 7 Feb 2008 18:20:50 -0000 1.4
+++ SeedStrategy.java 12 Feb 2008 17:10:10 -0000 1.5
@@ -20,7 +20,7 @@
public class SeedStrategy {
private String _Name;
private List<SeedLayer> _LayerList = new ArrayList<SeedLayer>();
- private double _MinPT = 0.5;
+ private double _MinPT = 1.0;
private double _MaxDCA = 10.0;
private double _MaxZ0 = 10.0;
private double _MaxChisq = 100.;
lcsim/src/org/lcsim/contrib/seedtracker
diff -u -r1.8 -r1.9
--- SeedTracker.java 7 Feb 2008 18:20:50 -0000 1.8
+++ SeedTracker.java 12 Feb 2008 17:10:10 -0000 1.9
@@ -82,7 +82,7 @@
for (SeedStrategy strategy : _strategylist) {
// Find the confirmed seeds for this strategy
- boolean success = finder.FindConfirmedSeeds(strategy);
+ boolean success = finder.FindConfirmedSeeds(strategy, bfield);
if (!success) continue;
List<SeedCandidate> confirmed = finder.getConfirmedSeeds();
lcsim/src/org/lcsim/fit/helicaltrack
diff -u -r1.16 -r1.17
--- HelicalTrackFitter.java 7 Feb 2008 18:20:51 -0000 1.16
+++ HelicalTrackFitter.java 12 Feb 2008 17:10:11 -0000 1.17
@@ -4,7 +4,7 @@
*
* Created on March 25, 2006, 6:11 PM
*
- * $Id: HelicalTrackFitter.java,v 1.16 2008/02/07 18:20:51 partridge Exp $
+ * $Id: HelicalTrackFitter.java,v 1.17 2008/02/12 17:10:11 partridge Exp $
*/
import hep.physics.matrix.SymmetricMatrix;
@@ -214,7 +214,9 @@
double dz = Math.sqrt(Math.pow(hit.dz(),2)+Math.pow(dz_ms,2));
double zmin = hit.z() - dz;
double zmax = hit.z() + dz;
- strip_hits.add(new HelicalTrack2DHit(hit.x(), hit.y(), hit.z(), hit.drphi(), zmin, zmax));
+ HelicalTrack2DHit fakestriphit = new HelicalTrack2DHit(hit.x(), hit.y(), hit.z(), hit.drphi(), zmin, zmax);
+ strip_hits.add(fakestriphit);
+ smap.put(fakestriphit, smap.get(hit));
}
// Setup for the ZSegment fit
CVSspam 0.2.8