Commit in hps-java/src/main on MAIN | |||
java/org/lcsim/hps/recon/ecal/HPSFADCTriggerDriver.java | +2 | -2 | 1.16 -> 1.17 |
java/org/lcsim/hps/evio/TestRunTriggeredReconToLcio.java | +2 | -2 | 1.9 -> 1.10 |
resources/org/lcsim/hps/steering/HPSTrackingDefaultsRecon.lcsim | +3 | 1.3 -> 1.4 | |
java/org/lcsim/hps/users/meeg/FilterMCBunches.java | +129 | -13 | 1.7 -> 1.8 |
+136 | -17 |
fix some flags; add more and more CLI options to FilterMCBunches
diff -u -r1.16 -r1.17 --- HPSFADCTriggerDriver.java 11 Dec 2012 19:56:51 -0000 1.16 +++ HPSFADCTriggerDriver.java 14 Dec 2012 01:29:31 -0000 1.17 @@ -21,7 +21,7 @@
* * @author Omar Moreno <[log in to unmask]> * @author Sho Uemura <[log in to unmask]>
- * @version $Id: HPSFADCTriggerDriver.java,v 1.16 2012/12/11 19:56:51 meeg Exp $
+ * @version $Id: HPSFADCTriggerDriver.java,v 1.17 2012/12/14 01:29:31 meeg Exp $
*/ public class HPSFADCTriggerDriver extends HPSTriggerDriver {
@@ -78,7 +78,7 @@
@Override public void detectorChanged(Detector detector) { clusterEnergy2D = aida.histogram2D(detector.getDetectorName() + " : " + clusterCollectionName + " : energy difference vs. sum", 100, 0.0, 2 * beamEnergy, 100, 0.0, beamEnergy);
- energyDistance2D = aida.histogram2D(detector.getDetectorName() + " : " + clusterCollectionName + " : distance vs. energy (less energetic cluster)", 100, 0.0, beamEnergy, 100, 0.0, 400.0);
+ energyDistance2D = aida.histogram2D(detector.getDetectorName() + " : " + clusterCollectionName + " : distance vs. energy (less energetic cluster)", 100, 0.0, 0.5*beamEnergy, 50, 0.0, 400.0);
clusterAngle2D = aida.histogram2D(detector.getDetectorName() + " : " + clusterCollectionName + " : cluster angle uncoplanarity vs. more energetic cluster angle", 100, -180.0, 180.0, 100, -180.0, 180.0); triggerBits1D = aida.histogram1D(detector.getDetectorName() + " : " + clusterCollectionName + " : trigger bits", 17, -1.5, 15.5); triggerTimes1D = aida.histogram1D(detector.getDetectorName() + " : " + clusterCollectionName + " : trigger times", 500, -0.5, 499.5);
diff -u -r1.9 -r1.10 --- TestRunTriggeredReconToLcio.java 11 Dec 2012 03:12:51 -0000 1.9 +++ TestRunTriggeredReconToLcio.java 14 Dec 2012 01:29:31 -0000 1.10 @@ -116,8 +116,8 @@
events.add(lcsimEvent); System.out.println("Creating LCIO event " + eventNum); lcsimEvent.put(MCEvent.MC_PARTICLES, mcParticles);
- lcsimEvent.put(ecalCollectionName, ecalHits); - lcsimEvent.put(trackerCollectionName, trackerHits);
+ lcsimEvent.put(ecalCollectionName, ecalHits, SimCalorimeterHit.class, 0xe0000000); + lcsimEvent.put(trackerCollectionName, trackerHits, SimTrackerHit.class, 0xc0000000);
System.out.println("Adding " + mcParticles.size() + " MCParticles, " + ecalHits.size() + " SimCalorimeterHits, " + trackerHits.size() + " SimTrackerHits"); ++eventNum; }
diff -u -r1.3 -r1.4 --- HPSTrackingDefaultsRecon.lcsim 26 Nov 2012 18:12:36 -0000 1.3 +++ HPSTrackingDefaultsRecon.lcsim 14 Dec 2012 01:29:32 -0000 1.4 @@ -10,6 +10,7 @@
<execute> <driver name="EventMarkerDriver"/> <driver name="HPSCalibrationDriver"/>
+ <driver name="RawTrackerHitSensorSetup"/>
<driver name="SVTBadChannelFilterDriver"/> <driver name="RawTrackerHitFitterDriver" /> <driver name="TrackerHitDriver" />
@@ -25,6 +26,8 @@
<!-- <runNumber>1351</runNumber> --> </driver>
+ <driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup"/> +
<driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver"> <eventInterval>1000</eventInterval>
diff -u -r1.7 -r1.8 --- FilterMCBunches.java 20 Sep 2012 18:41:35 -0000 1.7 +++ FilterMCBunches.java 14 Dec 2012 01:29:32 -0000 1.8 @@ -2,7 +2,9 @@
import java.io.*;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.HelpFormatter;
@@ -12,11 +14,15 @@
import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawCalorimeterHit; +import org.lcsim.event.RawTrackerHit;
import org.lcsim.event.SimCalorimeterHit; import org.lcsim.event.SimTrackerHit; import org.lcsim.event.base.BaseLCSimEvent;
+import org.lcsim.geometry.IDDecoder;
import org.lcsim.util.lcio.LCIOReader; import org.lcsim.util.lcio.LCIOWriter;
+import org.lcsim.util.loop.LCSimConditionsManagerImplementation;
/** * Selects LCIO events passing a cut; spaces out these events with blank events.
@@ -24,7 +30,7 @@
* Can also be used to chain multiple LCIO files together. * * @author Sho Uemura <[log in to unmask]>
- * @version $Id: FilterMCBunches.java,v 1.7 2012/09/20 18:41:35 phansson Exp $
+ * @version $Id: FilterMCBunches.java,v 1.8 2012/12/14 01:29:32 meeg Exp $
*/ public class FilterMCBunches {
@@ -40,6 +46,8 @@
//options.addOption(new Option("e", true, "Interval between non-empty events")); options.addOption(new Option("n", true, "Number of events to read")); options.addOption(new Option("a", true, "All events - no cuts"));
+ options.addOption(new Option("t", false, "Filter based on SimTrackerHits")); + options.addOption(new Option("r", false, "Filter based on RawTrackerHits"));
return options; }
@@ -74,6 +82,18 @@
throw new RuntimeException(e); }
+ EventTester tester = null; + if (!cl.hasOption("a")) { + tester = new EcalEventTester(); + } + if (cl.hasOption("t")) { + tester = new TrackerEventTester(); + } + if (cl.hasOption("r")) { + tester = new RTHEventTester(); + } + +
int nEmpty = 0; if (cl.hasOption("e")) { nEmpty = Integer.valueOf(cl.getOptionValue("e"));
@@ -119,7 +139,7 @@
detectorName = event.getDetectorName(); }
- if (cl.hasOption("a") || goodEvent(event)) {
+ if (tester == null || tester.goodEvent(event)) {
writtenEvents++; try { writer.write(event);
@@ -144,6 +164,10 @@
} System.out.format("Read %d events, wrote %d of them\n", readEvents, writtenEvents);
+ if (tester != null) { + tester.endOfRun(); + } +
try { writer.close(); } catch (IOException e) {
@@ -151,24 +175,116 @@
} }
- private static boolean goodEvent(EventHeader event) { - List<SimCalorimeterHit> ecalHits = event.getSimCalorimeterHits("EcalHits"); - List<SimTrackerHit> trackerHits = event.getSimTrackerHits("TrackerHits"); - - double maxE = 0; - double totalE = 0; - for (SimCalorimeterHit hit : ecalHits) { - totalE += hit.getRawEnergy(); - if (hit.getRawEnergy() > maxE) { - maxE = hit.getRawEnergy();
+ static int countPairs(Set<Integer> ints) { + int pairs = 0; + while (!ints.isEmpty()) { + Integer next = ints.iterator().next(); + ints.remove(next); + if (ints.remove(next ^ 1)) { + pairs++;
} }
+ return pairs; + } + + private static abstract class EventTester { + + abstract boolean goodEvent(EventHeader event); + + void endOfRun() { + } +// abstract boolean goodEvent(List<SimCalorimeterHit> ecalHits, List<SimTrackerHit> trackerHits); + } + + private static class RTHEventTester extends EventTester { + + int nEvents = 0; + int nEcal = 0; + int nRTH = 0; + + public RTHEventTester() { + LCSimConditionsManagerImplementation.register(); + } + + @Override + public boolean goodEvent(EventHeader event) { + nEvents++; + List<RawCalorimeterHit> ecalHits = event.get(RawCalorimeterHit.class, "EcalReadoutHits"); + List<RawTrackerHit> trackerHits = event.get(RawTrackerHit.class, "SVTRawTrackerHits"); + nEcal+=ecalHits.size(); + nRTH+=trackerHits.size(); + + Set<Integer> topLayers = new HashSet<Integer>(); + Set<Integer> botLayers = new HashSet<Integer>(); + for (RawTrackerHit hit : trackerHits) { + IDDecoder dec = hit.getIDDecoder(); + dec.setID(hit.getCellID()); + if (dec.getValue("module") % 2 == 0) { + topLayers.add(dec.getValue("layer")); + } else { + botLayers.add(dec.getValue("layer")); + } + } + +// System.out.format("%d SimCalorimeterHits, %d SimTrackerHits, %d top layers, %d bottom layers\n", ecalHits.size(), trackerHits.size(), topLayers.size(), botLayers.size()); + return (countPairs(topLayers) >= 4 && countPairs(botLayers) >= 4); + } + + void endOfRun() { + System.out.format("%d events, %f RawCalorimeterHits and %f RawTrackerHits on average\n", nEvents, ((double) nEcal) / nEvents, ((double) nRTH) / nEvents); + } + } + + private static class TrackerEventTester extends EventTester { + + public TrackerEventTester() { + LCSimConditionsManagerImplementation.register(); + } + + @Override + public boolean goodEvent(EventHeader event) { + List<SimCalorimeterHit> ecalHits = event.getSimCalorimeterHits("EcalHits"); + List<SimTrackerHit> trackerHits = event.getSimTrackerHits("TrackerHits"); + + Set<Integer> topLayers = new HashSet<Integer>(); + Set<Integer> botLayers = new HashSet<Integer>(); + for (SimTrackerHit hit : trackerHits) { + IDDecoder dec = hit.getIDDecoder(); + dec.setID(hit.getCellID()); + if (dec.getValue("module") % 2 == 0) { + topLayers.add(dec.getValue("layer")); + } else { + botLayers.add(dec.getValue("layer")); + } + } + +// System.out.format("%d SimCalorimeterHits, %d SimTrackerHits, %d top layers, %d bottom layers\n", ecalHits.size(), trackerHits.size(), topLayers.size(), botLayers.size()); + return (countPairs(topLayers) >= 4 && countPairs(botLayers) >= 4); + } + } + + private static class EcalEventTester extends EventTester { + + @Override + public boolean goodEvent(EventHeader event) { + List<SimCalorimeterHit> ecalHits = event.getSimCalorimeterHits("EcalHits"); + List<SimTrackerHit> trackerHits = event.getSimTrackerHits("TrackerHits"); + + double maxE = 0; + double totalE = 0; + for (SimCalorimeterHit hit : ecalHits) { + totalE += hit.getRawEnergy(); + if (hit.getRawEnergy() > maxE) { + maxE = hit.getRawEnergy(); + } + }
// System.out.format("%d SimCalorimeterHits, %d SimTrackerHits, maxE %f, totalE %f\n", ecalHits.size(), trackerHits.size(), maxE, totalE); // return (ecalHits.size() + trackerHits.size() != 0); // return (totalE > 0.05 || !trackerHits.isEmpty());
- return (totalE > 0.05);
+ return (totalE > 0.05);
+ }
} }
\ No newline at end of file
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