Print

Print


Commit in hps-java/src/main on MAIN
resources/org/lcsim/hps/steering/users/meeg/EcalGainDriverSim.lcsim+12-81.2 -> 1.3
                                           /EcalGainDriver.lcsim+12-131.3 -> 1.4
java/org/lcsim/hps/recon/ecal/EcalEdepToTriggerConverterDriver.java+29-91.1 -> 1.2
java/org/lcsim/hps/readout/ecal/FADCEcalReadoutDriver.java+2-21.3 -> 1.4
java/org/lcsim/hps/users/phansson/ECalGainDriver.java+5-51.15 -> 1.16
+60-37
5 modified files
update gain cal code to reflect changes in units

hps-java/src/main/resources/org/lcsim/hps/steering/users/meeg
EcalGainDriverSim.lcsim 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- EcalGainDriverSim.lcsim	13 Jul 2013 00:28:12 -0000	1.2
+++ EcalGainDriverSim.lcsim	31 Oct 2013 00:11:02 -0000	1.3
@@ -12,13 +12,15 @@
         <driver name="EcalClusterer"/>
         <driver name="EcalTriggerFilter"/>
         <driver name="EcalTriggerClusterer"/>
-<!--        <driver name="TrackerDigiDriver"/>-->
-<!--        <driver name="HelicalTrackHitDriver"/>-->
-<!--        <driver name="TrackerReconDriver"/>-->
+
+<!--        <driver name="TrackerDigiDriver"/>
+        <driver name="HelicalTrackHitDriver"/>
+        <driver name="TrackerReconDriver"/>
+        <driver name="LCIOWriter"/>-->
+
         <driver name="EcalGainDriver"/>    
-<!--
-        <driver name="LCIOWriter"/>
--->
+
+
     </execute>    
     <drivers>
         <driver name="EcalGainDriver"
@@ -30,9 +32,11 @@
             <simTrigger>true</simTrigger>
         </driver>
 
-        <driver name="CalibrationDriver" type="org.lcsim.hps.monitoring.CalibrationDriver">
+        <driver name="CalibrationDriver" type="org.lcsim.hps.conditions.CalibrationDriver">
+            <runNumber>1351</runNumber>    
         </driver>
         <driver name="EcalRawConverter" type="org.lcsim.hps.recon.ecal.EcalEdepToTriggerConverterDriver">
+            <addNoise>true</addNoise>
         </driver>
         <driver name="EcalTriggerFilter" type="org.lcsim.hps.recon.ecal.EcalTriggerFilterDriver">
             <inputCollection>EcalTriggerHits</inputCollection>
@@ -69,7 +73,7 @@
         </driver>    
         <driver name="LCIOWriter"
                 type="org.lcsim.util.loop.LCIODriver">
-            <outputFilePath>/Users/phansson/work/HPS/software/reco/run/hps_recon.slcio</outputFilePath>
+            <outputFilePath>recon_sim.slcio</outputFilePath>
         </driver>
     </drivers>
 </lcsim>

hps-java/src/main/resources/org/lcsim/hps/steering/users/meeg
EcalGainDriver.lcsim 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- EcalGainDriver.lcsim	13 Jul 2013 00:28:12 -0000	1.3
+++ EcalGainDriver.lcsim	31 Oct 2013 00:11:02 -0000	1.4
@@ -8,20 +8,19 @@
     <execute>
         <driver name="EventMarkerDriver"/>
         <driver name="CalibrationDriver"/>
-<!--        <driver name="SVTBadChannelFilterDriver"/>-->
         <driver name="EcalRawConverter"/>
         <driver name="EcalClusterer"/>
-<!--        <driver name="RawTrackerHitFitterDriver"/>  -->
-<!--        <driver name="TrackerHitDriver"/> -->
-<!--        <driver name="HelicalTrackHitDriver"/> -->
-<!--        <driver name="TrackerReconDriver"/>-->
+        
+<!--        <driver name="SVTBadChannelFilterDriver"/>
+        <driver name="RawTrackerHitFitterDriver"/>  
+        <driver name="TrackerHitDriver"/> 
+        <driver name="HelicalTrackHitDriver"/> 
+        <driver name="TrackerReconDriver"/>
+        <driver name="LCIOWriter"/>-->
 
         <driver name="EcalGainDriver"/>    
-        
-<!--        <driver name="CleanupDriver"/>-->
-<!--
-        <driver name="LCIOWriter"/>
--->
+        <driver name="CleanupDriver"/>
+
     </execute>    
     <drivers>
 
@@ -35,8 +34,8 @@
             <ecalGainFileName>clusterlist.txt</ecalGainFileName>
         </driver>
 
-        <driver name="CalibrationDriver" type="org.lcsim.hps.monitoring.CalibrationDriver">
-            <runNumber>1351</runNumber>    
+        <driver name="CalibrationDriver" type="org.lcsim.hps.conditions.CalibrationDriver">
+            <runNumber>1351</runNumber>
         </driver>
         <driver name="EcalRawConverter" 
                 type="org.lcsim.hps.recon.ecal.EcalRawConverterDriver">
@@ -78,7 +77,7 @@
         </driver>   
         <driver name="LCIOWriter"
                 type="org.lcsim.util.loop.LCIODriver">
-            <outputFilePath>/Users/phansson/work/HPS/software/reco/run/hps_recon.slcio</outputFilePath>
+            <outputFilePath>recon.slcio</outputFilePath>
         </driver>
     </drivers>
 </lcsim>

hps-java/src/main/java/org/lcsim/hps/recon/ecal
EcalEdepToTriggerConverterDriver.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- EcalEdepToTriggerConverterDriver.java	25 Feb 2013 22:39:24 -0000	1.1
+++ EcalEdepToTriggerConverterDriver.java	31 Oct 2013 00:11:02 -0000	1.2
@@ -5,6 +5,7 @@
 import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.EventHeader;
 import org.lcsim.geometry.Detector;
+import org.lcsim.hps.util.RandomGaussian;
 import org.lcsim.util.Driver;
 
 /**
@@ -27,6 +28,8 @@
     private double pulseIntegral = tp * Math.E / readoutPeriod;
     private double gainScale = 1.0; //gain miscalibration factor
     private double _gain = -1.0; //constant gain, activated if >0
+    private boolean addNoise = false;
+    private double pePerMeV = 2.0; //photoelectrons per MeV, used to calculate noise
 
     public EcalEdepToTriggerConverterDriver() {
     }
@@ -35,6 +38,10 @@
         this.tp = tp;
     }
 
+    public void setAddNoise(boolean addNoise) {
+        this.addNoise = addNoise;
+    }
+
     public void setReadoutCollection(String readoutCollection) {
         this.readoutCollection = readoutCollection;
     }
@@ -86,13 +93,16 @@
                 if (applyBadCrystalMap && isBadCrystal(hit)) {
                     continue;
                 }
-                CalorimeterHit triggerHit = makeTriggerHit(hit);
+                double amplitude = hitAmplitude(hit);
+                CalorimeterHit triggerHit = makeTriggerHit(hit, amplitude);
                 if (triggerHit != null) {
                     triggerHits.add(triggerHit);
+//                    System.out.format("trigger hit: %f %f\n", amplitude, triggerHit.getRawEnergy());
                 }
-                CalorimeterHit readoutHit = makeReadoutHit(hit);
+                CalorimeterHit readoutHit = makeReadoutHit(hit, amplitude);
                 if (readoutHit != null) {
                     readoutHits.add(readoutHit);
+//                    System.out.format("readout hit: %f %f\n", amplitude, readoutHit.getRawEnergy());
                 }
             }
         }
@@ -101,8 +111,7 @@
         event.put(readoutCollection, readoutHits, CalorimeterHit.class, flags, ecalReadoutName);
     }
 
-    public CalorimeterHit makeTriggerHit(CalorimeterHit hit) {
-        double amplitude = hitAmplitude(hit);
+    public CalorimeterHit makeTriggerHit(CalorimeterHit hit, double amplitude) {
 
 //        double time = readoutPeriod * (Math.random() - 1);
         double time = 0 - hit.getTime();
@@ -126,7 +135,7 @@
             }
         }
 
-//        System.out.format("%f %f %f\n", readoutIntegral, amplitude, triggerIntegral);
+//        System.out.format("trigger: %f %f\n", amplitude, triggerIntegral);
 
         int truncatedIntegral = (int) Math.floor(triggerIntegral / truncateScale);
         if (truncatedIntegral > 0) {
@@ -135,12 +144,14 @@
         return null;
     }
 
-    public CalorimeterHit makeReadoutHit(CalorimeterHit hit) {
-        double amplitude = hitAmplitude(hit);
+    public CalorimeterHit makeReadoutHit(CalorimeterHit hit, double amplitude) {
         if (amplitude < readoutThreshold) {
             return null;
         }
-        double integral = hit.getRawEnergy()/ECalUtils.GeV * gainScale;
+
+//        double integral = hit.getRawEnergy()/ECalUtils.GeV * gainScale;
+        double gain = _gain > 0 ? _gain : EcalConditions.physicalToGain(hit.getCellID());
+        double integral = amplitude * gain * pulseIntegral * gainScale * ECalUtils.MeV / ECalUtils.GeV;
 
 //        double thresholdCrossingTime = 0 - hit.getTime();
 //        while (true) {
@@ -162,13 +173,22 @@
 ////        double integral = readoutIntegral * HPSEcalConditions.physicalToGain(id);
 //        System.out.format("dumb: %f, full: %f\n",hit.getRawEnergy() * 1000.0,readoutIntegral * HPSEcalConditions.physicalToGain(id));
 
+//        System.out.format("readout: %f %f\n", amplitude, integral);
         CalorimeterHit h = new HPSCalorimeterHit(integral, hit.getTime(), hit.getCellID(), 0);
         return h;
     }
 
     private double hitAmplitude(CalorimeterHit hit) {
+        double energyAmplitude = hit.getRawEnergy();
+        if (addNoise) {
+            //add preamp noise and photoelectron Poisson noise in quadrature
+            double noise = Math.sqrt(Math.pow(EcalConditions.physicalToNoise(hit.getCellID()) * EcalConditions.physicalToGain(hit.getCellID()) * ECalUtils.MeV, 2) + hit.getRawEnergy() * ECalUtils.MeV / pePerMeV);
+            energyAmplitude += RandomGaussian.getGaussian(0, noise);
+        }
+
         double gain = _gain > 0 ? _gain : EcalConditions.physicalToGain(hit.getCellID());
-        return (hit.getRawEnergy() /ECalUtils.MeV) / (gain * pulseIntegral);
+//        System.out.format("amplitude: %f %f %f %f\n", hit.getRawEnergy(), energyAmplitude, gain, (energyAmplitude / ECalUtils.MeV) / (gain * pulseIntegral));
+        return (energyAmplitude / ECalUtils.MeV) / (gain * pulseIntegral);
     }
 
     private double pulseAmplitude(double time) {

hps-java/src/main/java/org/lcsim/hps/readout/ecal
FADCEcalReadoutDriver.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- FADCEcalReadoutDriver.java	24 Oct 2013 20:01:54 -0000	1.3
+++ FADCEcalReadoutDriver.java	31 Oct 2013 00:11:02 -0000	1.4
@@ -31,7 +31,7 @@
  * pulse.
  *
  * @author Sho Uemura <[log in to unmask]>
- * @version $Id: FADCEcalReadoutDriver.java,v 1.3 2013/10/24 20:01:54 meeg Exp $
+ * @version $Id: FADCEcalReadoutDriver.java,v 1.4 2013/10/31 00:11:02 meeg Exp $
  */
 public class FADCEcalReadoutDriver extends EcalReadoutDriver<RawCalorimeterHit> {
 
@@ -385,7 +385,7 @@
             double energyAmplitude = hit.getRawEnergy();
             if (addNoise) {
                 //add preamp noise and photoelectron Poisson noise in quadrature
-                double noise = Math.sqrt(Math.pow(EcalConditions.physicalToNoise(hit.getCellID()) * EcalConditions.physicalToGain(hit.getCellID()), 2) + hit.getRawEnergy() * ECalUtils.MeV / pePerMeV);
+                double noise = Math.sqrt(Math.pow(EcalConditions.physicalToNoise(hit.getCellID()) * EcalConditions.physicalToGain(hit.getCellID()) * ECalUtils.MeV, 2) + hit.getRawEnergy() * ECalUtils.MeV / pePerMeV);
                 energyAmplitude += RandomGaussian.getGaussian(0, noise);
             }
             for (int i = 0; i < bufferLength; i++) {

hps-java/src/main/java/org/lcsim/hps/users/phansson
ECalGainDriver.java 1.15 -> 1.16
diff -u -r1.15 -r1.16
--- ECalGainDriver.java	25 Oct 2013 19:45:01 -0000	1.15
+++ ECalGainDriver.java	31 Oct 2013 00:11:02 -0000	1.16
@@ -228,7 +228,7 @@
     public void process(EventHeader event) {
         List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalClusterCollectionName);
 
-        List<Track> tracks = null;
+        List<Track> tracks;
         if (event.hasCollection(Track.class, trackCollectionName)) {
             tracks = event.get(Track.class, trackCollectionName);
         } else {
@@ -374,8 +374,8 @@
             matchBot++;
         }
 
-        double P = bestTrk.getTrackStates().get(0).getMomentum()[0] * 1000;
-        double E = bestCl.getEnergy();
+        double P = bestTrk.getTrackStates().get(0).getMomentum()[0] * 1000.0;
+        double E = bestCl.getEnergy() * 1000.0;
         double Eoverp = E / P;
         double PoverE = P / E;
 
@@ -399,7 +399,7 @@
 //            
 //            if(Eseed/ErawSum<0.6) continue;
 //            
-        int ebin = -1;
+        int ebin;
         if (P > 500 && P <= 700) {
             ebin = 1;
         } else if (P > 700 && P <= 900) {
@@ -427,7 +427,7 @@
 
         gainWriter.print(event.getEventNumber() + " " + P + " " + E + " " + pos[0] + " " + pos[1]);
         for (CalorimeterHit hit : bestCl.getCalorimeterHits()) {
-            gainWriter.print(" " + hit.getIdentifierFieldValue("ix") + " " + hit.getIdentifierFieldValue("iy") + " " + hit.getRawEnergy() + " " + EcalConditions.physicalToGain(hit.getCellID()));
+            gainWriter.print(" " + hit.getIdentifierFieldValue("ix") + " " + hit.getIdentifierFieldValue("iy") + " " + hit.getRawEnergy() * 1000.0 + " " + EcalConditions.physicalToGain(hit.getCellID()));
         }
         gainWriter.println("");
     }
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