Author: [log in to unmask] Date: Tue Aug 9 17:58:42 2016 New Revision: 4453 Log: Driver used to load calibrations onto the HPS SVT sensors. Added: java/branches/layer0-thin-branch/detector-model/src/main/java/org/hps/detector/svt/SvtTrackerSetup.java (with props) Added: java/branches/layer0-thin-branch/detector-model/src/main/java/org/hps/detector/svt/SvtTrackerSetup.java ============================================================================= --- java/branches/layer0-thin-branch/detector-model/src/main/java/org/hps/detector/svt/SvtTrackerSetup.java (added) +++ java/branches/layer0-thin-branch/detector-model/src/main/java/org/hps/detector/svt/SvtTrackerSetup.java Tue Aug 9 17:58:42 2016 @@ -0,0 +1,88 @@ +package org.hps.detector.svt; + +import java.util.List; +import java.util.logging.Logger; + +import org.lcsim.geometry.Detector; +import org.lcsim.util.Driver; +import org.lcsim.detector.tracker.silicon.ChargeCarrier; +import org.lcsim.detector.tracker.silicon.HpsSiSensor; + +/** + * Class used to load calibrations onto the HPS SVT sensors. + * + * @author <a href="mailto:[log in to unmask]">Omar Moreno</a> + */ +public class SvtTrackerSetup extends Driver { + + /** Initialize Logger */ + private static Logger LOGGER = Logger.getLogger(SvtTrackerSetup.class.getPackage().getName()); + + /** Name of the LDMX Tagger and Recoil subdetectors in the detector model. */ + private static final String _TRACKER_NAME = "Tracker"; + + /** Channel noise in ADC counts */ + private static final double[] CHANNEL_NOISE = new double[]{ 60, 60, 60, 60, 60, 60 }; + + /** Channel baseline */ + private static final double[] CHANNEL_BASELINE = new double[]{ 3000, 3000, 3000, 3000, 3000, 3000 }; + + /** Channel gain */ + private static final double CHANNEL_GAIN = 1; + + /** Channel offset */ + private static final double CHANNEL_OFFSET = 0; + + /** Channel t0 shift */ + private static final double CHANNEL_T0_SHIFT = 0; + + /** Shaper fit parameters */ + private static final double[] SHAPER_FIT_PARAMETERS = new double[]{2500, -10, 35, 10}; + + protected void detectorChanged(Detector detector) { + + final List<HpsSiSensor> taggerSensors + = detector.getSubdetector(_TRACKER_NAME).getDetectorElement().findDescendants(HpsSiSensor.class); + LOGGER.info("Setting up " + taggerSensors.size() + " tracker sensors"); + + this.setup(taggerSensors); + + } + + private void setup(List<HpsSiSensor> sensors) { + + // Loop over all of the sensors + for (final HpsSiSensor sensor : sensors) { + + System.out.println("Sensor: " + sensor.toString()); + + // Reset possible existing conditions data on sensor. + sensor.reset(); + + // Get the total number of readout strips that this sensor contains + double totalChannels = sensor.getReadoutElectrodes(ChargeCarrier.HOLE).getNCells(); + + System.out.println("Total channels: " + totalChannels); + + // Loop through all of the sensor channels and set some default + // conditions. + for (int channelNumber = 0; channelNumber < totalChannels; channelNumber++) { + + // Set the channel baseline and noise + sensor.setPedestal(channelNumber, CHANNEL_BASELINE); + sensor.setNoise(channelNumber, CHANNEL_NOISE); + + // Set the channel gain and offset + sensor.setGain(channelNumber, CHANNEL_GAIN); + sensor.setOffset(channelNumber, CHANNEL_OFFSET); + + // Set the t0 shift for the sensor + sensor.setT0Shift(CHANNEL_T0_SHIFT); + + // Set the shape fit parameters + sensor.setShapeFitParameters(channelNumber, SHAPER_FIT_PARAMETERS); + } + LOGGER.info(sensor.toString()); + } + } +}