Commit in hps-java/src/main/java/org/lcsim/hps/util on MAIN | |||
PrintGeometryDriver.java | +90 | added 1.1 |
Print basic si sensor geom
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; + } + +} + + +
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