lcsim/src/org/lcsim/recon/tracking/digitization/sistripsim
diff -u -r1.1 -r1.2
--- RawTrackerHitMaker.java 9 Dec 2008 22:22:34 -0000 1.1
+++ RawTrackerHitMaker.java 22 Apr 2009 23:18:24 -0000 1.2
@@ -55,7 +55,7 @@
{
List<RawTrackerHit> raw_hits = new ArrayList<RawTrackerHit>();
List<SiSensor> sensors = detector.findDescendants(SiSensor.class);
-
+
// Loop over all sensors
for (SiSensor sensor : sensors)
{
@@ -84,20 +84,26 @@
// Perform charge deposition simulation
_si_simulation.setSensor(sensor);
Map<ChargeCarrier,SiElectrodeDataCollection> electrode_data = _si_simulation.computeElectrodeData();
-
+
// Loop over electrodes and digitize with readout chip
for (ChargeCarrier carrier : ChargeCarrier.values())
{
if (sensor.hasElectrodesOnSide(carrier))
{
SortedMap<Integer,List<Integer>> digitized_hits = _readout_chip.readout(electrode_data.get(carrier),sensor.getReadoutElectrodes(carrier));
-
+
// Make RawTrackerHits
for (Integer readout_cell : digitized_hits.keySet())
{
int time = 0;
long cell_id = sensor.makeStripId(readout_cell,carrier.charge()).getValue();
- short[] adc_values = {digitized_hits.get(readout_cell).get(0).shortValue(),digitized_hits.get(readout_cell).get(1).shortValue()};
+
+ // Retrieve the list of integer data from the readout chip and store as an array of shorts
+ List<Integer> readout_data = digitized_hits.get(readout_cell);
+ short[] adc_values = new short[readout_data.size()];
+ for (int i=0; i<readout_data.size(); i++) {
+ adc_values[i] = readout_data.get(i).shortValue();
+ }
Set<SimTrackerHit> simulated_hits = electrode_data.get(carrier).get(readout_cell).getSimulatedHits();
IDetectorElement detector_element = sensor;