4 modified files
lcsim/src/org/lcsim/contrib/SODTracker
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
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
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
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