Commit in hps-java/src/main/java/org/lcsim/hps/recon/tracking on MAIN | |||
HPSStripMaker.java | +23 | -7 | 1.5 -> 1.6 |
HPSHelicalTrackHitDriver.java | +1 | -1 | 1.14 -> 1.15 |
+24 | -8 |
Added Lorentz force correction by default to strip.
diff -u -r1.5 -r1.6 --- HPSStripMaker.java 29 Aug 2012 21:02:46 -0000 1.5 +++ HPSStripMaker.java 29 Sep 2012 00:19:41 -0000 1.6 @@ -32,8 +32,10 @@
int _max_noaverage_nstrips = 4; // Absolute maximum cluster size int _max_cluster_nstrips = 10;
+ // Sensor simulation needed to correct for Lorentz drift + SiSensorSim _simulation;
// Identifier helper (reset once per sensor)
- SiTrackerIdentifierHelper _sid_helper;
+ SiTrackerIdentifierHelper _sid_helper;
// Temporary map connecting hits to strip numbers for sake of speed (reset once per sensor) Map<HPSFittedRawTrackerHit, Integer> _strip_map = new HashMap<HPSFittedRawTrackerHit, Integer>(); double _oneClusterErr = 1 / Math.sqrt(12);
@@ -41,11 +43,16 @@
double _threeClusterErr = 1 / 3; double _fourClusterErr = 1 / 2; double _fiveClusterErr = 1;
-
+
public HPSStripMaker(HPSClusteringAlgorithm algo) { _clustering = algo; }
+ public HPSStripMaker(SiSensorSim simulation, HPSClusteringAlgorithm algo) { + _clustering = algo; + _simulation = simulation; + } +
public String getName() { return _NAME; }
@@ -181,6 +188,7 @@
} private Hep3Vector getPosition(List<HPSFittedRawTrackerHit> cluster, SiSensorElectrodes electrodes) {
+ boolean debug = false;
List<Double> signals = new ArrayList<Double>(); List<Hep3Vector> positions = new ArrayList<Hep3Vector>();
@@ -216,13 +224,21 @@
position = VecOp.add(position, VecOp.mult(signal, positions.get(istrip))); } position = VecOp.mult(1 / total_charge, position);
+ if(debug) System.out.println(this.getClass().getSimpleName() + " charge weighted position "+position.toString() + " (before trans)");
electrodes.getParentToLocal().inverse().transform(position);
- -// System.out.println("Position \n"+position); - -// System.out.println("Lorentz corrected position \n"+position); -
+ if(debug) System.out.println(this.getClass().getSimpleName() + " charge weighted position "+position.toString() + " (after trans)"); + + // Swim position back through lorentz drift direction to midpoint between bias surfaces + if(_simulation!=null) { + _simulation.setSensor((SiSensor) electrodes.getDetectorElement()); + _simulation.lorentzCorrect(position, electrodes.getChargeCarrier()); + if(debug) System.out.println(this.getClass().getSimpleName() + ": Position " + position.toString() + " ( after Lorentz)"); + } +
// return position in global coordinates
+ Hep3Vector newpos = ((SiSensor) electrodes.getDetectorElement()).getGeometry().getLocalToGlobal().transformed(position); + if(debug) System.out.println(this.getClass().getSimpleName() + " newpos "+newpos.toString()); +
return ((SiSensor) electrodes.getDetectorElement()).getGeometry().getLocalToGlobal().transformed(position); // return electrodes.getLocalToGlobal().transformed(position); }
diff -u -r1.14 -r1.15 --- HPSHelicalTrackHitDriver.java 28 Sep 2012 22:09:49 -0000 1.14 +++ HPSHelicalTrackHitDriver.java 29 Sep 2012 00:19:41 -0000 1.15 @@ -59,7 +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 boolean addAllStripsToEventForDebug = true;
private HPSTransformations _detToTrk; String subdetectorName = "Tracker";
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1