java/trunk/hps-java/src/main/java/org/lcsim/hps/evio
--- java/trunk/hps-java/src/main/java/org/lcsim/hps/evio/TestRunTriggeredReconToLcio.java 2014-02-28 02:12:52 UTC (rev 269)
+++ java/trunk/hps-java/src/main/java/org/lcsim/hps/evio/TestRunTriggeredReconToLcio.java 2014-02-28 02:51:35 UTC (rev 270)
@@ -10,6 +10,7 @@
import java.util.Queue;
import org.lcsim.event.EventHeader;
+import org.lcsim.event.LCRelation;
import org.lcsim.event.MCParticle;
import org.lcsim.event.SimCalorimeterHit;
import org.lcsim.event.SimTrackerHit;
@@ -34,6 +35,9 @@
String outputFile = "TestRunData.slcio";
private int eventsWritten = 0;
private int eventNum = 0;
+ //interval for trigger candidates (tridents, A'), if used
+ private int triggerSpacing = 500;
+ private boolean rejectBackground = false;
// HPSEcalConditions ecalIDConverter = null;
ECalHitWriter ecalWriter = null;
SVTHitWriter svtWriter = null;
@@ -46,11 +50,12 @@
List<SimTrackerHit> trackerHits = null;
List<SimCalorimeterHit> ecalHits = null;
//MC collections from the last 500n'th event (trident or preselected trigger event)
- List<MCParticle> mcParticles500 = null;
- List<SimTrackerHit> trackerHits500 = null;
- List<SimCalorimeterHit> ecalHits500 = null;
+ List<MCParticle> triggerMCParticles = null;
+ List<SimTrackerHit> triggerTrackerHits = null;
+ List<SimCalorimeterHit> triggerECalHits = null;
static final String ecalCollectionName = "EcalHits";
static final String trackerCollectionName = "TrackerHits";
+ private String relationCollectionName = "SVTTrueHitRelations";
public TestRunTriggeredReconToLcio() {
}
@@ -69,6 +74,14 @@
this.outputFile = outputFile;
}
+ public void setTriggerSpacing(int triggerSpacing) {
+ this.triggerSpacing = triggerSpacing;
+ }
+
+ public void setRejectBackground(boolean rejectBackground) {
+ this.rejectBackground = rejectBackground;
+ }
+
public void setRawCalorimeterHitCollectionName(String rawCalorimeterHitCollectionName) {
this.rawCalorimeterHitCollectionName = rawCalorimeterHitCollectionName;
if (ecalWriter != null) {
@@ -116,15 +129,15 @@
ecalHits = event.getSimCalorimeterHits(ecalCollectionName);
trackerHits = event.getSimTrackerHits(trackerCollectionName);
}
- if (ClockSingleton.getClock() % 500 == 0) {
- if(event.hasCollection(MCParticle.class)) {
- mcParticles500 = event.getMCParticles();
- ecalHits500 = event.getSimCalorimeterHits(ecalCollectionName);
- trackerHits500 = event.getSimTrackerHits(trackerCollectionName);
+ if (ClockSingleton.getClock() % triggerSpacing == 0) {
+ if (event.hasCollection(MCParticle.class)) {
+ triggerMCParticles = event.getMCParticles();
+ triggerECalHits = event.getSimCalorimeterHits(ecalCollectionName);
+ triggerTrackerHits = event.getSimTrackerHits(trackerCollectionName);
} else {
- mcParticles500 = null;
- ecalHits500 = null;
- trackerHits500 = null;
+ triggerMCParticles = null;
+ triggerECalHits = null;
+ triggerTrackerHits = null;
}
}
@@ -133,16 +146,16 @@
EventHeader lcsimEvent = new QuietBaseLCSimEvent(CalibrationDriver.runNumber(), event.getEventNumber(), event.getDetectorName());
events.add(lcsimEvent);
System.out.println("Creating LCIO event " + eventNum);
- if (mcParticles500 == null || mcParticles500.isEmpty()) {
+ if (triggerMCParticles == null || triggerMCParticles.isEmpty()) {
lcsimEvent.put(MCEvent.MC_PARTICLES, mcParticles);
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");
} else {
- lcsimEvent.put(MCEvent.MC_PARTICLES, mcParticles500);
- lcsimEvent.put(ecalCollectionName, ecalHits500, SimCalorimeterHit.class, 0xe0000000);
- lcsimEvent.put(trackerCollectionName, trackerHits500, SimTrackerHit.class, 0xc0000000);
- System.out.println("Adding " + mcParticles500.size() + " MCParticles, " + ecalHits500.size() + " SimCalorimeterHits, " + trackerHits500.size() + " SimTrackerHits");
+ lcsimEvent.put(MCEvent.MC_PARTICLES, triggerMCParticles);
+ lcsimEvent.put(ecalCollectionName, triggerECalHits, SimCalorimeterHit.class, 0xe0000000);
+ lcsimEvent.put(trackerCollectionName, triggerTrackerHits, SimTrackerHit.class, 0xc0000000);
+ System.out.println("Adding " + triggerMCParticles.size() + " MCParticles, " + triggerECalHits.size() + " SimCalorimeterHits, " + triggerTrackerHits.size() + " SimTrackerHits");
}
lcsimEvent.put(ReadoutTimestamp.collectionName, event.get(ReadoutTimestamp.class, ReadoutTimestamp.collectionName));
++eventNum;
@@ -173,15 +186,35 @@
break eventLoop;
}
}
- System.out.println("writing filled LCIO event, event " + queuedEvent.getEventNumber());
events.poll();
- // Write this event.
- try {
- lcioWriter.write(queuedEvent);
- ++eventsWritten;
- } catch (IOException e) {
- throw new RuntimeException(e);
+
+
+ boolean writeThisEvent = true;
+
+ if (rejectBackground && queuedEvent.hasCollection(LCRelation.class, relationCollectionName)) {
+
+ writeThisEvent = false;
+ List<LCRelation> trueHitRelations = event.get(LCRelation.class, relationCollectionName);
+ List<SimTrackerHit> trueHits = event.getSimTrackerHits(trackerCollectionName);
+ for (LCRelation relation : trueHitRelations) {
+ if (trueHits.contains((SimTrackerHit) relation.getTo())) {
+ writeThisEvent = true;
+ break;
+ }
+ }
}
+ if (writeThisEvent) {
+ // Write this event.
+ System.out.println("writing filled LCIO event, event " + queuedEvent.getEventNumber());
+ try {
+ lcioWriter.write(queuedEvent);
+ ++eventsWritten;
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ } else {
+ System.out.println("rejecting filled LCIO event, event " + queuedEvent.getEventNumber() + " contains no SVT hits from truth particles");
+ }
}
}
}
\ No newline at end of file