Print

Print


Author: [log in to unmask]
Date: Wed Apr 29 17:10:23 2015
New Revision: 2863

Log:
Add a trigger filter.

Modified:
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java	Wed Apr 29 17:10:23 2015
@@ -23,9 +23,13 @@
 import org.lcsim.detector.tracker.silicon.SiStrips;
 import org.lcsim.detector.ITransform3D;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
+
+import org.hps.recon.ecal.triggerbank.AbstractIntData;
+import org.hps.recon.ecal.triggerbank.TIData;
 
 /**
  * This Driver makes plots of SVT sensor occupancies across a run.
@@ -57,6 +61,7 @@
 
     private static final String SUBDETECTOR_NAME = "Tracker";
     private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
+    private String triggerBankCollectionName = "TriggerBank"; 
     
     String rootFile = null;
 
@@ -68,6 +73,12 @@
     
     private boolean enablePositionPlots = false;
     private boolean enableMaxSamplePlots = false;
+    private boolean enableTriggerFilter = false;
+    private boolean filterPulserTriggers = false;
+    private boolean filterSingle0Triggers = false;
+    private boolean filterSingle1Triggers = false;
+    private boolean filterPair0Triggers = false;
+    private boolean filterPair1Triggers = false;
     
     public SensorOccupancyPlotsDriver() {
     }
@@ -87,7 +98,31 @@
     public void setEnableMaxSamplePlots(boolean enableMaxSamplePlots) { 
         this.enableMaxSamplePlots = enableMaxSamplePlots;
     }
-    
+   
+    public void setEnableTriggerFilter(boolean enableTriggerFilter) { 
+        this.enableTriggerFilter = enableTriggerFilter;
+    }
+    
+    public void setFilterPulserTriggers(boolean filterPulserTriggers) { 
+        this.filterPulserTriggers = filterPulserTriggers;
+    }
+
+    public void setFilterSingle0Triggers(boolean filterSingle0Triggers) { 
+        this.filterSingle0Triggers = filterSingle0Triggers;
+    }
+    
+    public void setFilterSingle1Triggers(boolean filterSingle1Triggers) { 
+        this.filterSingle1Triggers = filterSingle1Triggers;
+    }
+
+    public void setFilterPair0Triggers(boolean filterPair0Triggers) { 
+        this.filterPair0Triggers = filterPair0Triggers;
+    }
+
+    public void setFilterPair1Triggers(boolean filterPair1Triggers) { 
+        this.filterPair1Triggers = filterPair1Triggers;
+    }
+
     public void setMaxSamplePosition(int maxSamplePosition) { 
         this.maxSamplePosition = maxSamplePosition;
     }
@@ -316,12 +351,47 @@
         }
     }
 
+    private boolean passTriggerFilter(List<GenericObject> triggerBanks) { 
+		
+        // Loop through the collection of banks and get the TI banks.
+		for (GenericObject triggerBank : triggerBanks) {
+			   
+		    // If the bank contains TI data, process it
+		    if (AbstractIntData.getTag(triggerBank) == TIData.BANK_TAG) { 
+			        
+		        TIData tiData = new TIData(triggerBank);
+			      
+		        if (filterPulserTriggers && tiData.isPulserTrigger()) {
+		            return false;
+		        } else if (filterSingle0Triggers && tiData.isSingle0Trigger()) { 
+		            return false;
+		        } else if (filterSingle1Triggers && tiData.isSingle1Trigger()) { 
+		            return false;
+		        } else if (filterPair0Triggers && tiData.isPair0Trigger()) { 
+		            return false;
+		        } else if (filterPair1Triggers && tiData.isPair1Trigger()) { 
+		            return false;
+		        }
+		    }
+		}
+		return true;
+    }
+    
     public void process(EventHeader event) {
-
+        
         // Get the run number from the event and store it.  This will be used 
         // when writing the plots out to a ROOT file
         if (runNumber == -1) runNumber = event.getRunNumber();
        
+        if (enableTriggerFilter && event.hasCollection(GenericObject.class, triggerBankCollectionName)) { 
+           
+		    // Get the list of trigger banks from the event
+			List<GenericObject> triggerBanks = event.get(GenericObject.class, triggerBankCollectionName);
+			
+			// Apply the trigger filter
+			if (!passTriggerFilter(triggerBanks)) return;
+        }
+        
         // If the event doesn't have a collection of RawTrackerHit's, skip it.
         if (!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) return;
         // Get RawTrackerHit collection from event.