5 modified files
hps-java/src/main/resources/org/lcsim/hps/steering/users/meeg
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
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
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
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
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