Print

Print


Commit in hps-java/src/main on MAIN
java/org/lcsim/hps/recon/tracking/SimpleSvtReadout.java+39-131.1 -> 1.2
java/org/lcsim/hps/evio/TestRunTriggeredReconToLcio.java+2-21.5 -> 1.6
                       /SVTHitWriter_RTH.java+29-91.1 -> 1.2
resources/org/lcsim/hps/steering/HPSTestRunReconToLcio.lcsim+1-81.2 -> 1.3
                                /SVTMonitoring.lcsim+7-51.2 -> 1.3
+78-37
5 modified files
updates to RawTrackerHit processing

hps-java/src/main/java/org/lcsim/hps/recon/tracking
SimpleSvtReadout.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- SimpleSvtReadout.java	16 Aug 2012 01:06:30 -0000	1.1
+++ SimpleSvtReadout.java	16 Aug 2012 22:01:30 -0000	1.2
@@ -10,6 +10,7 @@
 //--- lcsim ---//
 import org.lcsim.detector.tracker.silicon.ChargeCarrier;
 import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.base.BaseRawTrackerHit;
@@ -22,11 +23,12 @@
 import org.lcsim.recon.tracking.digitization.sisim.SiSensorSim;
 import org.lcsim.recon.tracking.digitization.sisim.config.SimTrackerHitReadoutDriver;
 import org.lcsim.util.Driver;
+import org.lcsim.util.lcio.LCIOConstants;
 
 /**
  * 
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id: SimpleSvtReadout.java,v 1.1 2012/08/16 01:06:30 meeg Exp $
+ * @version $Id: SimpleSvtReadout.java,v 1.2 2012/08/16 22:01:30 meeg Exp $
  */
 public class SimpleSvtReadout extends Driver {
 
@@ -39,6 +41,7 @@
     double readoutOffset = 0.0;
     private String readout = "TrackerHits";
     private SimTrackerHitReadoutDriver readoutDriver = new SimTrackerHitReadoutDriver();
+    private int readoutCycle = 0;
 
     public SimpleSvtReadout() {
         add(readoutDriver);
@@ -53,7 +56,7 @@
 
         String[] readouts = {readout};
         readoutDriver.setCollections(readouts);
-        
+
         pipelineMap.clear();
         for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
             pipelineMap.put(sensor, new APV25Pipeline[HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR]);
@@ -77,7 +80,7 @@
                     }
                 }
             }
-            Apv25Full.apv25ClockCycle++;
+            readoutCycle++;
         }
 
         for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
@@ -114,9 +117,11 @@
                         if (pipelines[channel] == null) {
                             pipelines[channel] = new APV25Pipeline();
                         }
-
+                        double resistorValue = 100;  // Ohms
+                        double inputStageGain = 1.5;
+                        double amplitude = (charge / Apv25Constants.MIP) * resistorValue * inputStageGain * Math.pow(2, 14) / 2000;
                         for (int i = 0; i < 20; i++) {
-                            pipelines[channel].addToCell(i, charge * pulseAmplitude((i + 1) * readoutPeriod + readoutTime() - ClockSingleton.getTime(), 50.0));
+                            pipelines[channel].addToCell(i, amplitude * pulseAmplitude((i + 1) * readoutPeriod + readoutTime() - ClockSingleton.getTime(), 50.0));
                         }
                     }
                 }
@@ -138,13 +143,14 @@
 
             for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
                 APV25Pipeline[] pipelines = pipelineMap.get(sensor);
-                for (int i = 0; i < pipelines.length; i++) {
-                    if (pipelines[i] != null) {
+                for (int channel = 0; channel < pipelines.length; channel++) {
+                    if (pipelines[channel] != null) {
                         short[] samples = new short[6];
                         for (int j = 0; j < 6; j++) {
-                            samples[j] = (short) pipelines[i].getValue(j);
+                            samples[j] = (short) (pipelines[channel].getValue(j) + HPSSVTCalibrationConstants.getPedestal(sensor, channel));
 //                            System.out.println(samples[j]);
                         }
+//                            System.out.println();
 
                         // Find the side number (is 1)
                         int sideNumber;
@@ -153,19 +159,39 @@
                         } else {
                             sideNumber = ChargeCarrier.ELECTRON.charge();
                         }
-                        long cell_id = sensor.makeStripId(i, sideNumber).getValue();
-
+                        long cell_id = sensor.makeStripId(channel, sideNumber).getValue();
 
                         RawTrackerHit hit = new BaseRawTrackerHit(0, cell_id, samples, null, sensor);
 //                        System.out.println("Making RTH");
-                        hits.add(hit);
+                        if (samplesAboveThreshold(hit)) {
+                            hits.add(hit);
+                        }
+                        SiTrackerIdentifierHelper _sid_helper = (SiTrackerIdentifierHelper) sensor.getIdentifierHelper();
+                        System.out.println(_sid_helper.getSideValue(hit.getIdentifier()));
+                        System.out.println(hit.getIdentifier());
                     }
                 }
             }
 
-            event.put(outputCollection, hits, RawTrackerHit.class, 0);
+            int flags = 1 << LCIOConstants.TRAWBIT_ID1;
+            event.put(outputCollection, hits, RawTrackerHit.class, flags, readout);
+        }
+    }
 
+    private boolean samplesAboveThreshold(RawTrackerHit hit) {
+        SiSensor sensor = (SiSensor) hit.getDetectorElement();
+        int channel = hit.getIdentifierFieldValue("strip");
+        HPSSVTCalibrationConstants.getChannelConstants(sensor, channel);
+        double pedestal = HPSSVTCalibrationConstants.getPedestal(sensor, channel);
+        double noise = HPSSVTCalibrationConstants.getNoise(sensor, channel);
+        int count = 0;
+        short[] samples = hit.getADCValues();
+        for (int i = 0; i < samples.length; i++) {
+            if (samples[i] - pedestal > noise * 3.0) {
+                count++;
+            }
         }
+        return count >= 3;
     }
 
     public class APV25Pipeline extends RingBuffer {
@@ -220,6 +246,6 @@
     }
 
     private double readoutTime() {
-        return Apv25Full.apv25ClockCycle * readoutPeriod + readoutOffset;
+        return readoutCycle * readoutPeriod + readoutOffset;
     }
 }

hps-java/src/main/java/org/lcsim/hps/evio
TestRunTriggeredReconToLcio.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- TestRunTriggeredReconToLcio.java	6 Aug 2012 21:15:21 -0000	1.5
+++ TestRunTriggeredReconToLcio.java	16 Aug 2012 22:01:30 -0000	1.6
@@ -29,7 +29,7 @@
     private int eventsWritten = 0;
 //    HPSEcalConditions ecalIDConverter = null;
     ECalHitWriter ecalWriter = null;
-    SVTHitWriter svtWriter = null;
+    SVTHitWriter_RTH svtWriter = null;
     TriggerDataWriter triggerWriter = null;
     List<HitWriter> writers = null;
     LCIOWriter lcioWriter = null;
@@ -70,7 +70,7 @@
         ecalWriter.setHitCollectionName(rawCalorimeterHitCollectionName);
         writers.add(ecalWriter);
 
-        svtWriter = new SVTHitWriter();
+        svtWriter = new SVTHitWriter_RTH();
         writers.add(svtWriter);
 
         triggerWriter = new TriggerDataWriter();

hps-java/src/main/java/org/lcsim/hps/evio
SVTHitWriter_RTH.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- SVTHitWriter_RTH.java	16 Aug 2012 01:06:30 -0000	1.1
+++ SVTHitWriter_RTH.java	16 Aug 2012 22:01:30 -0000	1.2
@@ -18,16 +18,20 @@
 import org.lcsim.hps.recon.tracking.HPSSVTConstants;
 import org.lcsim.hps.recon.tracking.HPSSVTData;
 import org.lcsim.hps.recon.tracking.SvtUtils;
+import org.lcsim.util.lcio.LCIOConstants;
+import org.lcsim.util.lcio.LCIOUtil;
 
 /**
  *
  * @author Sho Uemura <[log in to unmask]>
- * @version $Id: SVTHitWriter_RTH.java,v 1.1 2012/08/16 01:06:30 meeg Exp $
+ * @version $Id: SVTHitWriter_RTH.java,v 1.2 2012/08/16 22:01:30 meeg Exp $
  */
 public class SVTHitWriter_RTH implements HitWriter {
 
     boolean debug = false;
     private String hitCollectionName = "SVTRawTrackerHits";
+    private String fpgaDataCollectionName = "FPGAData";
+    String readoutName = "TrackerHits";
 
     public SVTHitWriter_RTH() {
     }
@@ -36,25 +40,36 @@
         this.hitCollectionName = hitCollectionName;
     }
 
+    @Override
     public boolean hasData(EventHeader event) {
         return event.hasCollection(RawTrackerHit.class, hitCollectionName);
     }
 
-    public void writeData(EventHeader event, EventBuilder builder) {
+    //make some dummy FpgaData to use in case there isn't any real FpgaData
+    private static List<FpgaData> makeFpgaData() {
         double[] temps = new double[HPSSVTConstants.TOTAL_HYBRIDS_PER_FPGA * HPSSVTConstants.TOTAL_TEMPS_PER_HYBRID];
         for (int i = 0; i < HPSSVTConstants.TOTAL_HYBRIDS_PER_FPGA * HPSSVTConstants.TOTAL_TEMPS_PER_HYBRID; i++) {
             temps[i] = 23.0;
         }
+        List<FpgaData> fpgaData = new ArrayList<FpgaData>();
+        for (int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++) {
+            fpgaData.add(new FpgaData(fpgaNumber, temps, 0));
+        }
+
+        return fpgaData;
+    }
+
+    public void writeData(EventHeader event, EventBuilder builder) {
 
         List<RawTrackerHit> hits = event.get(RawTrackerHit.class, hitCollectionName);
-        List<FpgaData> fpgaData = new ArrayList<FpgaData>();
+        List<FpgaData> fpgaData = makeFpgaData();
 
         System.out.println("Writing " + hits.size() + " SVT hits");
+        System.out.println("Writing " + fpgaData.size() + " FPGA data");
 
         List<List<int[]>> fpgaHits = new ArrayList<List<int[]>>();
         for (int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++) {
             fpgaHits.add(new ArrayList<int[]>());
-            fpgaData.add(new FpgaData(fpgaNumber, temps, 0));
         }
 
         for (RawTrackerHit hit : hits) {
@@ -113,10 +128,6 @@
                 builder.addChild(svtBank, frameBank);
                 // Add the SVT data to the FPGA bank
                 frameBank.appendIntData(dataBuffer);
-                builder.getEvent().setAllHeaderLengths();
-                System.out.println(frameBank.getTotalBytes());
-                System.out.println(svtBank.getTotalBytes());
-                System.out.println(builder.getEvent().getTotalBytes());
             } catch (EvioException e) {
                 throw new RuntimeException(e);
             }
@@ -132,7 +143,16 @@
     @Override
     public void writeData(EventHeader event, EventHeader toEvent) {
         List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, hitCollectionName);
+
+
+
         System.out.println("Writing " + rawTrackerHits.size() + " SVT hits");
-        toEvent.put(hitCollectionName, rawTrackerHits, RawTrackerHit.class, 0);
+        int flags = 1 << LCIOConstants.TRAWBIT_ID1;
+        toEvent.put(hitCollectionName, rawTrackerHits, RawTrackerHit.class, flags, readoutName);
+
+        List<FpgaData> fpgaData = makeFpgaData();
+        System.out.println("Writing " + fpgaData.size() + " FPGA data");
+
+        toEvent.put(fpgaDataCollectionName, fpgaData, FpgaData.class, 0);
     }
 }

hps-java/src/main/resources/org/lcsim/hps/steering
HPSTestRunReconToLcio.lcsim 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- HPSTestRunReconToLcio.lcsim	3 Aug 2012 23:14:39 -0000	1.2
+++ HPSTestRunReconToLcio.lcsim	16 Aug 2012 22:01:30 -0000	1.3
@@ -15,7 +15,6 @@
         <driver name="EcalConverter"/>
         <driver name="EcalClusterer"/>
         <driver name="EcalTrigger"/>
-        <driver name="SVTSensorSetup"/>
         <driver name="SVTReadout"/>
         <driver name="ClockDriver"/>
         <driver name="TestRunReconToLcio"/>
@@ -61,13 +60,7 @@
             <deadTime>10</deadTime>
         </driver>	
 
-        <driver name="SVTSensorSetup"
-                        type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup">
-        </driver>
-		
-        <driver name="SVTReadout"
-                        type="org.lcsim.hps.recon.tracking.apv25.HPSSiSensorReadout">
-                            <addNoise>true</addNoise>
+        <driver name="SVTReadout" type="org.lcsim.hps.recon.tracking.SimpleSvtReadout">
         </driver>
 
         <driver name="ClockDriver"

hps-java/src/main/resources/org/lcsim/hps/steering
SVTMonitoring.lcsim 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- SVTMonitoring.lcsim	14 Aug 2012 00:58:03 -0000	1.2
+++ SVTMonitoring.lcsim	16 Aug 2012 22:01:30 -0000	1.3
@@ -6,21 +6,22 @@
         <driver name="SVTPulsePlots"/>
         
         <driver name="RawTrackerHitFitterDriver" />
-        <driver name="SVTPulseFitPlots"/>
-        <driver name="SVTMonitoringPlots"/>
+<!--        <driver name="SVTPulseFitPlots"/>
+        <driver name="SVTMonitoringPlots"/>-->
 
         <driver name="TrackerHitDriver" />
-        <driver name="SVTHitRecoPlots"/>
+<!--        <driver name="SVTHitRecoPlots"/>-->
 
-        <driver name="TrackerReconDriver" />
+<!--        <driver name="TrackerReconDriver" />
         <driver name="SVTSimpleEventDisplay"/>
         <driver name="TrackTimePlots"/>
         
         <driver name="EcalRawConverter" />
         <driver name="EcalClusterer" />
-        <driver name="TrackingReconstructionPlots" />
+        <driver name="TrackingReconstructionPlots" />-->
         
         <driver name="CleanupDriver" />
+        <driver name="LoadCalibrationsDriver"/>
     </execute>
     <drivers>
         <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
@@ -72,5 +73,6 @@
         <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver">
             <collectionNames>TrackerHits</collectionNames>
         </driver>  
+        <driver name="LoadCalibrationsDriver" type="org.lcsim.hps.recon.tracking.LoadCalibrationsDriver"/>
     </drivers>
 </lcsim>
\ No newline at end of file
CVSspam 0.2.12


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