hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -u -r1.13 -r1.14
--- HPSHelicalTrackHitDriver.java 6 Sep 2012 18:08:08 -0000 1.13
+++ HPSHelicalTrackHitDriver.java 28 Sep 2012 22:09:49 -0000 1.14
@@ -10,13 +10,7 @@
import hep.physics.vec.BasicHep3Vector;
import hep.physics.vec.Hep3Vector;
import hep.physics.vec.VecOp;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
+import java.util.*;
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.ITransform3D;
import org.lcsim.detector.tracker.silicon.SiTrackerModule;
@@ -25,13 +19,7 @@
import org.lcsim.event.LCRelation;
import org.lcsim.event.MCParticle;
import org.lcsim.event.RawTrackerHit;
-import org.lcsim.fit.helicaltrack.HelicalTrack2DHit;
-import org.lcsim.fit.helicaltrack.HelicalTrack3DHit;
-import org.lcsim.fit.helicaltrack.HelicalTrackCross;
-import org.lcsim.fit.helicaltrack.HelicalTrackHit;
-import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
-import org.lcsim.fit.helicaltrack.HitIdentifier;
-import org.lcsim.fit.helicaltrack.StereoHitMaker;
+import org.lcsim.fit.helicaltrack.*;
import org.lcsim.geometry.Detector;
import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
import org.lcsim.hps.event.HPSTransformations;
@@ -71,6 +59,7 @@
private Map<String, String> _stereomap = new HashMap<String, String>();
private Hep3Vector _orgloc = new BasicHep3Vector(0., 0., 0.);
private boolean _doTranformToTracking = true;
+ private boolean addAllStripsToEventForDebug = false;
private HPSTransformations _detToTrk;
String subdetectorName = "Tracker";
@@ -129,6 +118,8 @@
List<LCRelation> hitrelations = new ArrayList<LCRelation>();
List<HelicalTrackCross> stereoCrosses = new ArrayList<HelicalTrackCross>();
+
+ List<HelicalTrackStrip> allstrips = new ArrayList<HelicalTrackStrip>();
for (String _colname : _colnames) {
@@ -176,6 +167,8 @@
// Map a reference back to the hit needed to create the stereo hit LC relations
stripmap.put(strip, h);
+
+ if( addAllStripsToEventForDebug ) allstrips.add(strip);
} else {
@@ -199,6 +192,9 @@
String ident = entry.getKey();
List<HelicalTrackStrip> hts = entry.getValue();
System.out.println(this.getClass().getSimpleName() + ": Total number of HelicalTrackStrips: " + ident + ": " + hts.size());
+ for(HelicalTrackStrip strip : hts) {
+ System.out.println(this.getClass().getSimpleName() + ": strip at origin " + strip.origin().toString());
+ }
}
}
@@ -206,7 +202,7 @@
// Create a list of stereo hits
List<HelicalTrackCross> stereohits = new ArrayList<HelicalTrackCross>();
if (_debug) {
- System.out.println("Map size = " + striplistmap.size());
+ System.out.println(this.getClass().getSimpleName() + ": Map size = " + striplistmap.size());
}
// Loop over the stereo layer pairs
for (String id1 : _stereomap.keySet()) {
@@ -219,7 +215,7 @@
}
if (_debug) {
- System.out.println("Number of stereo hits = " + stereohits.size());
+ System.out.println(this.getClass().getSimpleName() + ":Number of stereo hits = " + stereohits.size());
}
// Add the stereo hits to our list of HelicalTrackHits
@@ -231,15 +227,20 @@
hitrelations.add(new MyLCRelation(cross, stripmap.get(strip)));
}
if (_debug)
- System.out.println("Found HTC in Layer : " + cross.Layer());
+ System.out.println(this.getClass().getSimpleName() + ": Found HTC in Layer : " + cross.Layer());
}
}
//mg...6/24/11 add new set of helical track hits that are rotated to from jlab to tracking frame
if (_doTranformToTracking) {
addRotatedHitsToEvent(event, stereoCrosses);
+
}
+
+ if( addAllStripsToEventForDebug ) addStripsToEvent(event,allstrips);
+
+
// Create the LCRelations between HelicalTrackHits and MC particles
List<LCRelation> mcrelations = new ArrayList<LCRelation>();
for (HelicalTrackHit hit : helhits) {
@@ -251,7 +252,7 @@
// Put the HelicalTrackHits back into the event
event.put(_outname, helhits, HelicalTrackHit.class, 0);
if (_debug) {
- System.out.println("The HelicalTrackHit collection " + _outname + " has " + helhits.size() + " hits.");
+ System.out.println(this.getClass().getSimpleName() + ":The HelicalTrackHit collection " + _outname + " has " + helhits.size() + " hits.");
}
event.put(_hitrelname, hitrelations, LCRelation.class, 0);
event.put(_mcrelname, mcrelations, LCRelation.class, 0);
@@ -356,20 +357,45 @@
}
private HelicalTrackStrip makeDigiStrip(SiTrackerHitStrip1D h) {
-
+
+ if(_debug) {
+ System.out.println(this.getClass().getSimpleName() + ": makeDigiStrip--");
+ System.out.println(this.getClass().getSimpleName() + ": SiTrackerHitStrip1D at " + h.getPositionAsVector().toString());
+ }
+
SiTrackerHitStrip1D local = h.getTransformedHit(CoordinateSystem.SENSOR);
SiTrackerHitStrip1D global = h.getTransformedHit(CoordinateSystem.GLOBAL);
-
+
+ if(_debug) {
+ System.out.println(this.getClass().getSimpleName() + ": local at " + local.getPositionAsVector().toString());
+ System.out.println(this.getClass().getSimpleName() + ": global at " + global.getPositionAsVector().toString());
+ }
+
ITransform3D trans = local.getLocalToGlobal();
Hep3Vector org = trans.transformed(_orgloc);
Hep3Vector u = global.getMeasuredCoordinate();
Hep3Vector v = global.getUnmeasuredCoordinate();
+ if(_debug) {
+ System.out.println(this.getClass().getSimpleName() + ": local to global using transform:");
+ System.out.println(this.getClass().getSimpleName() + ": rotation:");
+ System.out.println(trans.getRotation().getRotationMatrix().toString());
+ System.out.println(this.getClass().getSimpleName() + ": translation:");
+ System.out.println(trans.getTranslation().getTranslationVector().toString());
+ }
+
double umeas = local.getPosition()[0];
double vmin = VecOp.dot(local.getUnmeasuredCoordinate(), local.getHitSegment().getStartPoint());
double vmax = VecOp.dot(local.getUnmeasuredCoordinate(), local.getHitSegment().getEndPoint());
double du = Math.sqrt(local.getCovarianceAsMatrix().diagonal(0));
+ if(_debug) {
+ System.out.println(this.getClass().getSimpleName() + ": resulting org " + org.toString());
+ System.out.println(this.getClass().getSimpleName() + ": resulting u " + u.toString());
+ System.out.println(this.getClass().getSimpleName() + ": resulting v " + v.toString());
+ System.out.println(this.getClass().getSimpleName() + ": resulting umeas " + umeas);
+ }
+
IDetectorElement de = h.getSensor();
String det = _ID.getName(de);
int lyr = _ID.getLayer(de);
@@ -390,6 +416,9 @@
} catch (RuntimeException e) {
// Okay when MC info not present.
}
+
+ if(_debug) System.out.println(this.getClass().getSimpleName() + ": produce final strip at " + strip.origin().toString());
+
return strip;
}
@@ -444,6 +473,10 @@
// Create the LCRelations between HelicalTrackHits and MC particles
}
+
+ private void addStripsToEvent(EventHeader event, List<HelicalTrackStrip> strips) {
+ event.put("HelicalTrackStrips", strips, HelicalTrackStrip.class,0);
+ }
private Hep3Vector getPosTrkSystem(Hep3Vector pos) {
return _detToTrk.transformVectorToTracking(pos);