Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/cheat on MAIN
CheatTrackFinderDriver.java+62-311.6 -> 1.7
RecoDefinitionCrux.java+6-31.2 -> 1.3
+68-34
2 modified files
Minor changes / fixes

lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/cheat
CheatTrackFinderDriver.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- CheatTrackFinderDriver.java	13 Feb 2009 20:02:18 -0000	1.6
+++ CheatTrackFinderDriver.java	23 Feb 2009 03:44:17 -0000	1.7
@@ -1,14 +1,17 @@
 package org.lcsim.contrib.onoprien.crux.cheat;
 
 import java.util.*;
+import java.util.logging.Level;
 
 import hep.physics.vec.Hep3Vector;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.SimTrackerHit;
+import org.lcsim.util.aida.AIDA;
 
 import org.lcsim.contrib.onoprien.util.NoSuchParameterException;
 import org.lcsim.contrib.onoprien.util.ConstHep3Vector;
+import org.lcsim.contrib.onoprien.util.constants.Particles;
 import org.lcsim.contrib.onoprien.util.job.Driver;
 import org.lcsim.contrib.onoprien.util.job.JobEvent;
 import org.lcsim.contrib.onoprien.util.job.JobEventListener;
@@ -20,15 +23,29 @@
 import org.lcsim.contrib.onoprien.vsegment.mctruth.MCTruthVS;
 
 import org.lcsim.contrib.onoprien.crux.infrastructure.*;
+import org.lcsim.contrib.onoprien.crux.infrastructure.ITrack.Point;
 
 /**
  * Driver that uses MC truth info to produce a list of tracks.
  *
  * @author D. Onoprienko
- * @version $Id: CheatTrackFinderDriver.java,v 1.6 2009/02/13 20:02:18 onoprien Exp $
+ * @version $Id: CheatTrackFinderDriver.java,v 1.7 2009/02/23 03:44:17 onoprien Exp $
  */
 public class CheatTrackFinderDriver extends Driver implements JobEventListener {
-  
+
+// -- Private parts :  ---------------------------------------------------------
+
+  private ArrayList<String> _hitMapNames;
+  private String _trackListName;
+
+  private IRecoDefinition _def;
+
+  private MCTruthVS _mcTruth;
+  private BField _bField;
+
+  private HashMap<MCParticle,List<ITrackerHit>> _mc2hit;
+
+
 // -- Constructors and initialization :  ---------------------------------------
   
   public CheatTrackFinderDriver() {
@@ -102,7 +119,9 @@
   public void process(EventHeader event) {
     
     super.process(event);
-    
+
+      //_aida.clearAll();
+
     // Initialize event-specific data
     
     _mcTruth = (MCTruthVS) event.get(MCTruthVS.KEY);
@@ -123,7 +142,11 @@
     for (MCParticle mc : mcList) {
       if (_def.isFindable(RecType.TRACK, mc)) {
         CruxTrack track = makeTrack(mc);
-        trackList.add(track);
+        if (track == null) {
+          log("Failed to create track for findable MCParticle "+ mc.getType().getName() +" with energy "+ mc.getEnergy(), Level.INFO);
+        } else {
+          trackList.add(track);
+        }
       }
     }
     
@@ -133,22 +156,29 @@
     _mcTruth = null;
     _mc2hit = null;
     _def.endEvent();
+
+    for (ITrack track : trackList) {
+      Helix helix = track.getTrajectory(Point.START);
+      ArrayList<Hep3Vector> pList = new ArrayList<Hep3Vector>();
+      for (double s=0; s<5000.; s+=10.) {
+        pList.add(helix.getPosition(s));
+      }
+      event.put(track.getMCParticle().getType().getName(), pList);
+    }
+
+  
   }
 
 
 // -- Helper methods :  --------------------------------------------------------
   
   
-  /**
-   * Create <tt>CruxTrack</tt> object for the given <tt>MCParticle</tt>, and set its parameters.
-   * Default implementation only sets <tt>MCParticle</tt> associated with the track - 
-   * subclasses can override.
-   */
   private CruxTrack makeTrack(MCParticle mcParticle) {
 
     // Get hits produced by MCParticle
 
     List<ITrackerHit> hits = _mc2hit.get(mcParticle);
+    if (hits == null) hits = Collections.emptyList();
     
     // Wrap hits into anchors :
     
@@ -174,35 +204,36 @@
     nodes.add(startNode);
     
     // Create node at last hit position :
-    
-    SimTrackerHit simHit = _mcTruth.getSimTrackerHits(hits.get(hits.size()-1)).get(0);
-    pos = new ConstHep3Vector(simHit.getPoint());
-    momentum = new ConstHep3Vector(simHit.getMomentum());
-    helix = _bField.makeHelix(pos, momentum, charge);
-    helix.setReferencePoint(ConstHep3Vector.V000);
-    CruxTrackNode lastHitNode = new CruxTrackNode(helix);
-    
-    nodes.add(lastHitNode);
+
+    CruxTrackNode lastHitNode = null;
+    if (! hits.isEmpty()) {
+      SimTrackerHit simHit = _mcTruth.getSimTrackerHits(hits.get(hits.size() - 1)).get(0);
+      pos = new ConstHep3Vector(simHit.getPoint());
+      momentum = new ConstHep3Vector(simHit.getMomentum());
+      helix = _bField.makeHelix(pos, momentum, charge);
+      helix.setReferencePoint(ConstHep3Vector.V000);
+      lastHitNode = new CruxTrackNode(helix);
+      nodes.add(lastHitNode);
+    }
     
     // Create track
     
     CruxTrack track = new CruxTrack(anchors, nodes, charge);
     track.setMCParticle(mcParticle);
     track.setFunctionalPoint(ITrack.Point.START, startNode, 0.);
-    track.setFunctionalPoint(ITrack.Point.LAST_HIT, lastHitNode, 0.);
-    
+    track.setFunctionalPoint(ITrack.Point.LAST_HIT, (lastHitNode == null) ? startNode : lastHitNode , 0.);
+
+//      System.out.println("");
+//      System.out.println(mcParticle.getType().getName() +" energy "+ mcParticle.getEnergy()+" momentum "+ mcParticle.getMomentum().magnitude());
+//      System.out.println("Origin"+ mcParticle.getOrigin() +" Momentum "+ mcParticle.getMomentum());
+//      System.out.println("");
+//      helix = track.getTrajectory(Point.START);
+//      System.out.println("Track helix "+ helix);
+//      System.out.println("Track origin "+ track.getPosition(Point.START) +" Momentum "+ track.getMomentum(Point.START));
+//      System.out.println("Track charge "+ track.getCharge());
+//      System.out.println("Track pars "+ helix.getParameters(Helix.CRep.class));
+
     return track;
   }
-  
-// -- Private parts :  ---------------------------------------------------------
-  
-  private ArrayList<String> _hitMapNames;
-  private String _trackListName;
 
-  private IRecoDefinition _def;
-  
-  private MCTruthVS _mcTruth;
-  private BField _bField;
-
-  private HashMap<MCParticle,List<ITrackerHit>> _mc2hit;
 }

lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/cheat
RecoDefinitionCrux.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- RecoDefinitionCrux.java	18 Feb 2009 03:29:06 -0000	1.2
+++ RecoDefinitionCrux.java	23 Feb 2009 03:44:17 -0000	1.3
@@ -9,6 +9,7 @@
 
 import org.lcsim.contrib.onoprien.util.NoSuchParameterException;
 import org.lcsim.contrib.onoprien.util.WeightedTable;
+import org.lcsim.contrib.onoprien.util.constants.Particles;
 import org.lcsim.contrib.onoprien.util.job.JobManager;
 
 import org.lcsim.contrib.onoprien.vsegment.geom.SegmentationManager;
@@ -30,7 +31,7 @@
  * <tt>endEvent()</tt> to clean it up once the event is processed.
  *
  * @author D. Onoprienko
- * @version $Id: RecoDefinitionCrux.java,v 1.2 2009/02/18 03:29:06 onoprien Exp $
+ * @version $Id: RecoDefinitionCrux.java,v 1.3 2009/02/23 03:44:17 onoprien Exp $
  */
 public class RecoDefinitionCrux extends RecoDefinition {
 
@@ -199,7 +200,6 @@
         cutSet.cut_MinTrackerSuperLayers > getNumTrackerSuperLayers(mcParticle)) return false;
     
     // Passed all cuts !
-    
     return true;
   }
 
@@ -258,19 +258,22 @@
         sd = sd1;
         layer = layer1;
         ITrackerHit.Type hitType;
+        boolean isBarrel;
         if (ob instanceof ITrackerHit) {
           ITrackerHit hit = (ITrackerHit) ob;
           hitType = hit.getType();
+          isBarrel = hit.getBarrelEndcapFlag().isBarrel();
         } else {
           SimTrackerHit hit = (SimTrackerHit) ob;
           List<Sensor> sensors = segMan.getSensor(hit);
+          isBarrel = hit.getSubdetector().isBarrel();
           if (sensors.isEmpty()) {
             hitType = ITrackerHit.Type.UNKNOWN;
           } else {
             hitType = sensors.get(0).getType().getHitType();
           }
         }
-        if (hitType.nUnmeasured() == 0) {
+        if (hitType.nUnmeasured() == 0 || isBarrel) {
           nLayers += 2;
         } else {
           nLayers += 1;
CVSspam 0.2.8