Commit in hps-java/src/main on MAIN | |||
resources/org/lcsim/hps/steering/users/meeg/EcalGainDriverSim.lcsim | +12 | -8 | 1.2 -> 1.3 |
/EcalGainDriver.lcsim | +12 | -13 | 1.3 -> 1.4 |
java/org/lcsim/hps/recon/ecal/EcalEdepToTriggerConverterDriver.java | +29 | -9 | 1.1 -> 1.2 |
java/org/lcsim/hps/readout/ecal/FADCEcalReadoutDriver.java | +2 | -2 | 1.3 -> 1.4 |
java/org/lcsim/hps/users/phansson/ECalGainDriver.java | +5 | -5 | 1.15 -> 1.16 |
+60 | -37 |
update gain cal code to reflect changes in units
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>
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>
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) {
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++) {
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(""); }
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