Commit in lcsim/src/org/lcsim/contrib/SODTracker on MAIN
History+81.6 -> 1.7
SODHit.java+27-161.3 -> 1.4
SODTrackFinder.java+611.5 -> 1.6
SODTrackFinderDriver.java+20-511.7 -> 1.8
+116-67
4 modified files
uses seedtracker as source of seed tracks

lcsim/src/org/lcsim/contrib/SODTracker
History 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- History	10 Mar 2007 00:04:58 -0000	1.6
+++ History	26 Apr 2007 21:33:07 -0000	1.7
@@ -3,6 +3,14 @@
 ## Please summarize changes to the SODTracker code here.
 ## Most recent first please.
 
+26 April Fred Blanc V01-01-04
+   - this version uses VertexDetector seed tracks from the
+     package 'org.lcsim.contrib.seedtracker'
+
+   - The interface between seedtracker and SODTracker is a list of 'BaseTrack',
+     which themselves are lists of 'BaseTrackerHitMC'
+
+
 09 March 2007 Fred Blanc V01-01-03
 
    - added 'SODMain.java' which can be used for running interactively on the

lcsim/src/org/lcsim/contrib/SODTracker
SODHit.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- SODHit.java	28 Jul 2006 20:21:41 -0000	1.3
+++ SODHit.java	26 Apr 2007 21:33:07 -0000	1.4
@@ -1,7 +1,8 @@
 package org.lcsim.contrib.SODTracker;
 
-import org.lcsim.event.TrackerHit;
 import org.lcsim.event.SimTrackerHit;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.event.base.BaseTrackerHitMC;
 import org.lcsim.event.MCParticle;
 import org.lcsim.util.step.TrkParams;
 import java.util.*;
@@ -21,25 +22,35 @@
   _is_foreground_hit=true;
 //jas2  double[] hitpos = h.getPoint();
   double[] hitpos = h.getPosition();
-  _hitx = hitpos[0];
-  _hity = hitpos[1];
-  _has_z_info = false;
+  _hitx = 0.1*hitpos[0];
+  _hity = 0.1*hitpos[1];
+  _hitz = 0.1*hitpos[2];
+  _has_z_info = true;
   _hitrad = Math.sqrt(_hitx*_hitx+_hity*_hity);
+
+  BaseTrackerHitMC hit = (BaseTrackerHitMC) h;
+  _trackerHit = hit.getSimHits().get(0);
+  _hitlay = _trackerHit.getLayer();
+  _hitlay--;
+
+  /*
   _hitlay=0; 
 // if _hitlay=0 it's not a SODHIT and other data may be invalid,
 // SO CHECK ON IT!!!  
-  if ((_hitrad>20.00)&&(_hitrad<20.10))_hitlay=1;
-  if ((_hitrad>46.25)&&(_hitrad<46.35))_hitlay=2;
-  if ((_hitrad>72.50)&&(_hitrad<72.60))_hitlay=3;
-  if ((_hitrad>98.75)&&(_hitrad<98.85))_hitlay=4;
-  if ((_hitrad>125.0)&&(_hitrad<125.1))_hitlay=5;
+  if ((_hitrad>21.50)&&(_hitrad<22.50))_hitlay=1;
+  if ((_hitrad>46.50)&&(_hitrad<47.50))_hitlay=2;
+  if ((_hitrad>71.50)&&(_hitrad<72.50))_hitlay=3;
+  if ((_hitrad>96.50)&&(_hitrad<97.50))_hitlay=4;
+  if ((_hitrad>121.5)&&(_hitrad<122.5))_hitlay=5;
 // not really true right now (let sit hits be SODHit's also and
 // protect "elsewhere")
-  if ((_hitrad>1.15)&&(_hitrad<1.25))_hitlay=1;
-  if ((_hitrad>2.35)&&(_hitrad<2.45))_hitlay=2;
-  if ((_hitrad>3.55)&&(_hitrad<3.65))_hitlay=3;
-  if ((_hitrad>4.75)&&(_hitrad<4.85))_hitlay=4;
-  if ((_hitrad>5.95)&&(_hitrad<6.05))_hitlay=5;
+  if ((_hitrad>1.36)&&(_hitrad<1.56))_hitlay=1;
+  if ((_hitrad>2.16)&&(_hitrad<2.36))_hitlay=2;
+  if ((_hitrad>3.44)&&(_hitrad<3.64))_hitlay=3;
+  if ((_hitrad>4.70)&&(_hitrad<4.90))_hitlay=4;
+  if ((_hitrad>5.94)&&(_hitrad<6.14))_hitlay=5;
+  */
+
   _hitphi = Math.atan2(_hity,_hitx);
 //  System.out.print("drawmetrk ");System.out.print(_hitx);
 //  System.out.print(" ");System.out.println(_hity);
@@ -270,8 +281,8 @@
        double res = sodres; if (_hitrad<10.0){res = vtxres;}
     return res;
    }
-   public boolean IsForegroundHit(){return _is_foreground_hit;}
-   public MCParticle getMCParticle(){return _mcParticle;}
+    public boolean IsForegroundHit(){return _is_foreground_hit;}
+    public MCParticle getMCParticle(){return _mcParticle;}
     public SimTrackerHit getHit(){return _trackerHit;}
  private int _hitlay;
  private double _hitx;

lcsim/src/org/lcsim/contrib/SODTracker
SODTrackFinder.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- SODTrackFinder.java	3 Jan 2007 21:45:09 -0000	1.5
+++ SODTrackFinder.java	26 Apr 2007 21:33:07 -0000	1.6
@@ -3,6 +3,9 @@
 import java.util.*;
 import org.lcsim.event.MCParticle;
 import org.lcsim.util.aida.AIDA;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.event.base.BaseTrackerHitMC;
+import org.lcsim.event.base.BaseTrack;
 
 public class SODTrackFinder
 {
@@ -12,6 +15,64 @@
 	_trklist = new java.util.LinkedList();
     }
 
+    public SODTrackFinder(List<BaseTrack> seedTrackList) {
+	// setup here the _tracklist from seed tracks
+	_trklist = new java.util.LinkedList();
+
+	for ( BaseTrack baseTrk : seedTrackList ) {
+	    SODHit sh1 = new SODHit();
+	    SODHit sh2 = new SODHit();
+	    SODHit sh3 = new SODHit();
+	    SODHit sh4 = new SODHit();
+	    SODHit sh5 = new SODHit();
+	    // extract hits from seed track and fill in sh1, sh2, etc...
+	    List<TrackerHit> seedTrackHits = (List<TrackerHit>) baseTrk.getTrackerHits();
+	    for (TrackerHit hit : seedTrackHits) {
+
+		BaseTrackerHitMC baseHit = (BaseTrackerHitMC) hit;
+		int layer = baseHit.getSimHits().get(0).getLayer();
+
+		double[] coord = hit.getPosition();
+		//System.out.println("Hit position = " + coord[0] + " " + coord[1] + " " + coord[2]);
+		SODHit sh=new SODHit();
+		sh.make_hit(hit);
+		//System.out.println("SODHit pos.  = " + sh.x() + " " + sh.y() + " " + sh.z());
+		if(layer==0) {sh1=(SODHit) sh;}
+		if(layer==1) {sh2=(SODHit) sh;}
+		if(layer==2) {sh3=(SODHit) sh;}
+		if(layer==3) {sh4=(SODHit) sh;}
+		if(layer==4) {sh5=(SODHit) sh;}
+	    }
+
+	    System.out.println("layers for 5 hits: "
+			       + sh1.layer() + " "
+			       + sh2.layer() + " "
+			       + sh3.layer() + " "
+			       + sh4.layer() + " "
+			       + sh5.layer());
+
+	    SODHel test_helix = new SODHel();
+	    test_helix = make_test_helix(sh2,sh3,sh4);
+				    
+	    java.util.LinkedList shitlist = new java.util.LinkedList();
+	    shitlist.add(sh1);shitlist.add(sh2);shitlist.add(sh3);
+	    shitlist.add(sh4);shitlist.add(sh5);
+	    SODFittedHel fit_real_helix = new SODFittedHel();
+	    fit_real_helix.make_fitted_hel(shitlist,test_helix);
+	    SODHel real_helix = (SODHel)fit_real_helix;
+	    SODFittedCir fit_helix = new SODFittedCir();
+	    aida.cloud1D("stubpt").fill(real_helix.Pt());
+	    fit_helix.make_fitted_cir(fit_real_helix.hitlist(),real_helix);
+	    boolean sflag=false;
+	    if (0==fit_helix.Fail())sflag=_trklist.add(fit_helix);
+	    //
+	    if (0==fit_helix.Fail()){
+		sh1.SetUsedOnHel(1);sh2.SetUsedOnHel(1);sh3.SetUsedOnHel(1);
+		sh4.SetUsedOnHel(1);sh5.SetUsedOnHel(1);
+	    }
+	}
+    }
+
     public SODTrackFinder(java.util.LinkedList l1shlist,java.util.LinkedList l2shlist,
 			  java.util.LinkedList l3shlist,java.util.LinkedList l4shlist,
 			  java.util.LinkedList l5shlist,boolean useMCTruth)    {

lcsim/src/org/lcsim/contrib/SODTracker
SODTrackFinderDriver.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- SODTrackFinderDriver.java	10 Mar 2007 00:04:58 -0000	1.7
+++ SODTrackFinderDriver.java	26 Apr 2007 21:33:07 -0000	1.8
@@ -5,10 +5,16 @@
 import org.lcsim.util.Driver;
 import org.lcsim.event.EventHeader.LCMetaData;
 import org.lcsim.event.SimTrackerHit;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.event.base.BaseTrackerHitMC;
 import org.lcsim.event.MCParticle;
+import org.lcsim.event.base.BaseTrack;
 //import org.lcsim.geometry.TrackerIDDecoder;
 import org.lcsim.geometry.Subdetector;
 
+import org.lcsim.contrib.seedtracker.SmearMCHits;
+import org.lcsim.contrib.seedtracker.SeedTrackerDriver;
+
 public class SODTrackFinderDriver extends Driver
 {
     public SODTrackFinderDriver()
@@ -24,11 +30,17 @@
 		x.printStackTrace();
 	    }
 	}//end dooutfile
+
+	add(new SmearMCHits());
+	add(new SeedTrackerDriver());
 	generator = new java.util.Random(10101);
     }
 
     protected void process(EventHeader event)
     {
+
+	super.process(event); // this takes care that the child Drivers are loaded and processed.
+
 	int ntrk=0,prtflg=0,clnflg=0;
 	java.util.LinkedList l1shlist = new java.util.LinkedList();
 	java.util.LinkedList l2shlist = new java.util.LinkedList();
@@ -40,7 +52,7 @@
 	java.util.LinkedList l3vhlist = new java.util.LinkedList();
 	java.util.LinkedList l4vhlist = new java.util.LinkedList();
 	java.util.LinkedList l5vhlist = new java.util.LinkedList();
-	int collection=0;
+	//int collection=0;
 
 	List<SimTrackerHit> vtxBarrSimTrackerHits = event.get(SimTrackerHit.class,"VtxBarrHits");
 	int listSize = vtxBarrSimTrackerHits.size();
@@ -84,6 +96,7 @@
 	lay[4] = 0;
 
 	for (SimTrackerHit hit : trkBarrSimTrackerHits) {
+
 	    int layer = hit.getLayer();
 	    MCParticle mcp = hit.getMCParticle();
 	    double[] pos = hit.getPoint();
@@ -111,54 +124,6 @@
 
 	}
 
-	/*
-	List<List<SimTrackerHit>> simTrackerHitCollections = event.get(SimTrackerHit.class);
-	for ( List<SimTrackerHit> simTrackerHits : simTrackerHitCollections ) {
-	    collection++;
-	    //LCMetaData meta = event.getMetaData(simTrackerHits);
-	    //TrackerIDDecoder decoder = (TrackerIDDecoder) meta.getIDDecoder();
-	    for (SimTrackerHit trackerHit : simTrackerHits) {
-		//decoder.setID(trackerHit.getCellID() );
-		//int layer = decoder.getLayer();
-		int layer = trackerHit.getLayer();
-		double[] pos = trackerHit.getPoint();
-		// get the MC particle corresponding to this hit
-		MCParticle mcp = trackerHit.getMCParticle();
-		double rgauss = generator.nextGaussian();
-		SODHit sh=new SODHit();
-		//if (decoder.getSubdetector().getName().equals("VertexBarrel")){
-		if (trackerHit.getSubdetector().getName().equals("VertexBarrel")) {
-		    // the second collection corresponds to the barrel vertex tracker
-		    //		    sh.make_hit(layer,pos[0],pos[1],rgauss,trackerHit,mcp);
-                    double rg2=generator.nextGaussian();
-		    sh.make_hit(layer,pos[0],pos[1],pos[2],rgauss,rg2,trackerHit,mcp);
-		} else {
-		    sh.make_hit(layer,pos[0],pos[1],rgauss,trackerHit);
-		}
-		double res=-(0.1*pos[0]-sh.x())*Math.sin(sh.phi())
-		    +(0.1*pos[1]-sh.y())*Math.cos(sh.phi());
-		//if (decoder.getSubdetector().getName().equals("VertexBarrel")){
-		if (trackerHit.getSubdetector().getName().equals("VertexBarrel")) {
-		    if (layer==0){boolean success=l1vhlist.add(sh);}
-		    if (layer==1){boolean success=l2vhlist.add(sh);}
-		    if (layer==2){boolean success=l3vhlist.add(sh);}
-		    if (layer==3){boolean success=l4vhlist.add(sh);}
-		    if (layer==4){boolean success=l5vhlist.add(sh);}
-		}
-		//if (decoder.getSubdetector().getName().equals("TrackerBarrel")){
-		if (trackerHit.getSubdetector().getName().equals("TrackerBarrel")) {
-		    if (layer==0){boolean success=l1shlist.add(sh);}
-		    if (layer==1){boolean success=l2shlist.add(sh);}
-		    if (layer==2){boolean success=l3shlist.add(sh);}
-		    if (layer==3){boolean success=l4shlist.add(sh);}
-		    if (layer==4){boolean success=l5shlist.add(sh);}
-		}
-		clnflg=1;
-		// if ((l1vhlist.size()!=1)||(l2vhlist.size()!=1)||(l3vhlist.size()!=1)||(l4vhlist.size()!=1)||(l5vhlist.size()!=1))clnflg=0;
-	    }
-	}
-	*/
-
 	//        SODNoiseMaker nrdr = new SODNoiseMaker(l1shlist,l2shlist,l3shlist,l4shlist,l5shlist);
 	//
 	//c  no SOD tracking this version; find probe trk (and maybe bgtrk) in vtx and SODHitAdder
@@ -170,8 +135,12 @@
 
 	//    if (clnflg==1){
 	boolean useMCTruth = true;
-	SODTrackFinder sodtf = new SODTrackFinder(l1vhlist,l2vhlist,l3vhlist,
-						  l4vhlist,l5vhlist,useMCTruth);
+	//SODTrackFinder sodtf = new SODTrackFinder(l1vhlist,l2vhlist,l3vhlist,
+	//					  l4vhlist,l5vhlist,useMCTruth);
+
+	// Extract list of seed tracks ("Tracks") from event
+	List<BaseTrack> seedTrackList = (List<BaseTrack>) event.get("Tracks");
+	SODTrackFinder sodtf = new SODTrackFinder(seedTrackList);
 
 	// get list of tracks found in vertexer by SODTrackFinder
 	mytrkl = sodtf.trklist();
CVSspam 0.2.8