hps-java/src/main/java/org/lcsim/hps/util
diff -N PrintGeometryDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ PrintGeometryDriver.java 26 Jun 2013 21:51:47 -0000 1.1
@@ -0,0 +1,90 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.lcsim.hps.util;
+
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+import java.util.ArrayList;
+import java.util.List;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.ITransform3D;
+import org.lcsim.detector.Transform3D;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.Identifier;
+import org.lcsim.detector.tracker.silicon.ChargeCarrier;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.SiSensorElectrodes;
+import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.event.base.BaseRawTrackerHit;
+import org.lcsim.geometry.Detector;
+import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType;
+import org.lcsim.util.Driver;
+
+/**
+ *
+ * @author phansson
+ */
+public class PrintGeometryDriver extends Driver {
+
+ @Override
+ protected void detectorChanged(Detector detector) {
+ System.out.printf("%s: ################# Print geometry ##########################\n",this.getClass().getSimpleName());
+ IDetectorElement detectorElement = detector.getDetectorElement();
+ List<SiSensor> sensors = detectorElement.findDescendants(SiSensor.class);
+ System.out.printf("%s: %5s %40s %40s\n",this.getClass().getSimpleName(),"ID","Pos","u");
+ for (SiSensor sensor: sensors) {
+ Hep3Vector position = sensor.getGeometry().getPosition();
+ Hep3Vector u = this.getMeasuredCoordinate(sensor);
+ System.out.printf("%s: %5d %40s %40s\n",this.getClass().getSimpleName(),sensor.getSensorID(),position.toString(),u.toString());
+ }
+ System.out.printf("%s: ###########################################################\n",this.getClass().getSimpleName());
+ }
+
+
+ private Hep3Vector getMeasuredCoordinate(SiSensor sensor)
+ {
+
+ Hep3Vector u = new BasicHep3Vector(-99,-99,-99);
+
+ // Loop over electrodes and digitize with readout chip
+ for (ChargeCarrier carrier : ChargeCarrier.values()) {
+ if (sensor.hasElectrodesOnSide(carrier)) {
+
+ //if(debug) System.out.println(this.getClass().getSimpleName() + ": creating a dummy hit for sensor " + sensor.getName());
+ //SortedMap<Integer,List<Integer>> digitized_hits = _readout_chip.readout(electrode_data.get(carrier),sensor.getReadoutElectrodes(carrier));
+ //if(debug) System.out.println(this.getClass().getSimpleName() + ": creating a dummy hit for sensor " + sensor.getName());
+ int channel = 1;
+ int time = 0;
+ long cell_id = sensor.makeStripId(channel, carrier.charge()).getValue();
+ IIdentifier id = new Identifier(cell_id);
+
+ short[] adc_values = new short[6];
+ for (Integer i = 0; i < 6; ++i) {
+ Integer adc = 50;
+ adc_values[i] = adc.shortValue(); //ADC counts
+ }
+ IDetectorElement detector_element = sensor;
+ RawTrackerHit raw_hit = new BaseRawTrackerHit(time, cell_id, adc_values, new ArrayList<SimTrackerHit>(), detector_element);
+ SiSensorElectrodes electrodes = ((SiSensor) raw_hit.getDetectorElement()).getReadoutElectrodes(carrier);
+ SiTrackerIdentifierHelper _sid_helper = (SiTrackerIdentifierHelper) sensor.getIdentifierHelper();
+ //ChargeCarrier carrier = ChargeCarrier.getCarrier(_sid_helper.getSideValue(id));
+ //SiSensorElectrodes electrodes = sensor.getReadoutElectrodes(carrier);
+
+ ITransform3D local_to_global = new Transform3D();// sensor.getGeometry().getLocalToGlobal();
+ ITransform3D electrodes_to_global = electrodes.getLocalToGlobal();
+ ITransform3D global_to_hit = local_to_global.inverse();
+ ITransform3D electrodes_to_hit = Transform3D.multiply(global_to_hit, electrodes_to_global);
+ u = electrodes_to_hit.rotated(electrodes.getMeasuredCoordinate(0));
+ }
+ }
+ return u;
+ }
+
+}
+
+
+