Print

Print


Author: [log in to unmask]
Date: Fri Sep 18 18:01:17 2015
New Revision: 3645

Log:
update filters

Added:
    java/trunk/recon/src/main/java/org/hps/recon/filtering/EventFlagFilter.java
      - copied, changed from r3619, java/trunk/recon/src/main/java/org/hps/recon/filtering/TriggerTypeFilter.java
    java/trunk/recon/src/main/java/org/hps/recon/filtering/SingleTrackFilter.java
      - copied, changed from r3260, java/trunk/recon/src/main/java/org/hps/recon/filtering/MinimumHitsFilter.java
Modified:
    java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalSinglesFilter.java
    java/trunk/steering-files/src/main/resources/org/hps/steering/users/meeg/PairsSkimmer.lcsim

Modified: java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalSinglesFilter.java
 =============================================================================
--- java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalSinglesFilter.java	(original)
+++ java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalSinglesFilter.java	Fri Sep 18 18:01:17 2015
@@ -21,7 +21,7 @@
     private int minSize = 3;
     private int maxSize = 7;
     private double minT = 42.0;
-    private double maxT = 59.0;
+    private double maxT = 49.0;
     private double minE = 0.7;
     private double maxE = 1.05;
 

Copied: java/trunk/recon/src/main/java/org/hps/recon/filtering/EventFlagFilter.java (from r3619, java/trunk/recon/src/main/java/org/hps/recon/filtering/TriggerTypeFilter.java)
 =============================================================================
--- java/trunk/recon/src/main/java/org/hps/recon/filtering/TriggerTypeFilter.java	(original)
+++ java/trunk/recon/src/main/java/org/hps/recon/filtering/EventFlagFilter.java	Fri Sep 18 18:01:17 2015
@@ -1,62 +1,32 @@
 package org.hps.recon.filtering;
 
-import org.hps.record.triggerbank.AbstractIntData;
-import org.hps.record.triggerbank.TIData;
 import org.lcsim.event.EventHeader;
-import org.lcsim.event.GenericObject;
 
 /**
- * Accept events with the desired trigger bit.
+ * Accept only events where all of the specified flags have a value of 1.
  *
  * @author Sho Uemura <[log in to unmask]>
  * @version $Id: $
  */
-public class TriggerTypeFilter extends EventReconFilter {
+public class EventFlagFilter extends EventReconFilter {
 
-    TriggerType triggerType = TriggerType.all;
+    String[] flagNames = null;
 
-    public enum TriggerType {
-
-        all, singles0, singles1, pairs0, pairs1
-    }
-
-    public void setTriggerType(String triggerType) {
-        this.triggerType = TriggerType.valueOf(triggerType);
+    public void setFlagNames(String[] flagNames) {
+        this.flagNames = flagNames;
     }
 
     @Override
     public void process(EventHeader event) {
         incrementEventProcessed();
-        if (event.hasCollection(GenericObject.class, "TriggerBank")) {
-            for (GenericObject data : event.get(GenericObject.class, "TriggerBank")) {
-                if (AbstractIntData.getTag(data) == TIData.BANK_TAG) {
-                    TIData triggerData = new TIData(data);
-                    if (!matchTriggerType(triggerData))//only process singles0 triggers...
-                    {
-                        skipEvent();
-                    }
+        if (flagNames != null) {
+            for (int i = 0; i < flagNames.length; i++) {
+                int[] flag = event.getIntegerParameters().get(flagNames[i]);
+                if (flag == null || flag[0] == 0) {
+                    skipEvent();
                 }
             }
-        } else {
-            skipEvent();
         }
         incrementEventPassed();
     }
-
-    public boolean matchTriggerType(TIData triggerData) {
-        switch (triggerType) {
-            case all:
-                return true;
-            case singles0:
-                return triggerData.isSingle0Trigger();
-            case singles1:
-                return triggerData.isSingle1Trigger();
-            case pairs0:
-                return triggerData.isPair0Trigger();
-            case pairs1:
-                return triggerData.isPair1Trigger();
-            default:
-                return false;
-        }
-    }
 }

Copied: java/trunk/recon/src/main/java/org/hps/recon/filtering/SingleTrackFilter.java (from r3260, java/trunk/recon/src/main/java/org/hps/recon/filtering/MinimumHitsFilter.java)
 =============================================================================
--- java/trunk/recon/src/main/java/org/hps/recon/filtering/MinimumHitsFilter.java	(original)
+++ java/trunk/recon/src/main/java/org/hps/recon/filtering/SingleTrackFilter.java	Fri Sep 18 18:01:17 2015
@@ -2,74 +2,60 @@
 
 import java.util.List;
 
-
 //===> import org.hps.conditions.deprecated.SvtUtils;
-import org.lcsim.detector.identifier.IIdentifier;
-import org.lcsim.detector.tracker.silicon.ChargeCarrier;
-import org.lcsim.detector.tracker.silicon.HpsSiSensor;
-import org.lcsim.detector.tracker.silicon.SiSensor;
-import org.lcsim.detector.tracker.silicon.SiSensorElectrodes;
-import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.TrackerHit;
 
 /**
- *
- * @author mgraham
+ * 
+ * @author meeg
  */
-public class MinimumHitsFilter extends EventReconFilter{
-  
-    private int minSiLayers=10;    
-    private String rawTrackerHitCollectionName="SVTRawTrackerHits";
-   
+public class SingleTrackFilter extends EventReconFilter {
+
+    private String helicalTrackHitCollectionName = "HelicalTrackHits";
+
     @Override
-    public void process(EventHeader event){
+    public void process(EventHeader event) {
         incrementEventProcessed();
-        if(!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName))
-            skipEvent();
-
-        List<RawTrackerHit> rawHits=event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
-
-        int totalTopHit=0;
-        int totalBotHit=0;
-
-        int nlayersTopHit=0;
-        int nlayersBotHit=0;
-        int[] layersTop={0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0};
-        int[] layersBot={0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0};
-
-        for(RawTrackerHit hit : rawHits){
-            int layerNumber=hit.getLayerNumber();
-            boolean isTop=isHitOnTop(hit);
-            if(isTop){
-                totalTopHit++;
-                layersTop[layerNumber-1]++;
-            } else{
-                totalBotHit++;
-                layersBot[layerNumber-1]++;
-            }
-
-        }
-        //require hits in the first minSiLayers for both top and bottom planes
-        for(int i=0;i<minSiLayers;i++){
-            if(layersTop[i]==0)skipEvent(); 
-            if(layersBot[i]==0)skipEvent(); 
+        if (!event.hasCollection(TrackerHit.class, helicalTrackHitCollectionName)) {
+            return;
         }
 
+        int[] topHits = {0, 0, 0, 0, 0, 0};
+        int[] botHits = {0, 0, 0, 0, 0, 0};
+        List<TrackerHit> hth = event.get(TrackerHit.class, helicalTrackHitCollectionName);
+        for (TrackerHit hit : hth) {
+            int layer = ((RawTrackerHit) hit.getRawHits().get(0)).getLayerNumber();
+            int module = layer / 2 + 1;
+            if (hit.getPosition()[1] > 0) {
+                topHits[module - 1]++;
+            } else {
+                botHits[module - 1]++;
+            }
+        }
+
+        boolean topOne = true, topNone = true;
+        boolean botOne = true, botNone = true;
+
+        for (int i = 0; i < 6; i++) {
+            if (topHits[i] != 0) {
+                topNone = false;
+            }
+            if (topHits[i] != 1) {
+                topOne = false;
+            }
+            if (botHits[i] != 0) {
+                botNone = false;
+            }
+            if (botHits[i] != 1) {
+                botOne = false;
+            }
+        }
+
+        if (!((topOne && botNone) || (botOne && topNone))) {
+            skipEvent();
+        }
         incrementEventPassed();
     }
-
-
-    private boolean isHitOnTop(RawTrackerHit hit){
-    	HpsSiSensor sensor=(HpsSiSensor) hit.getDetectorElement();
-        IIdentifier id=hit.getIdentifier();
-        SiTrackerIdentifierHelper _sid_helper=(SiTrackerIdentifierHelper) sensor.getIdentifierHelper();
-
-        ChargeCarrier carrier=ChargeCarrier.getCarrier(_sid_helper.getSideValue(id));
-        SiSensorElectrodes electrodes=((SiSensor) hit.getDetectorElement()).getReadoutElectrodes(carrier);
-        //===> if(!SvtUtils.getInstance().isTopLayer(sensor))
-        if(!sensor.isTopLayer())
-            return false;
-        return true;
-    }
 }

Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/users/meeg/PairsSkimmer.lcsim
 =============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/users/meeg/PairsSkimmer.lcsim	(original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/users/meeg/PairsSkimmer.lcsim	Fri Sep 18 18:01:17 2015
@@ -11,8 +11,8 @@
         
         <driver name="ReconParticleCleanupDriver"/>   
         
-        <driver name="SVTSmallHitsFilter"/>   
-        <driver name="EcalPairsFilter"/>   
+        <driver name="EventFlagFilter"/>   
+        <!--<driver name="EcalPairsFilter"/>-->   
         <driver name="CollectionSizeFilter"/>   
 
         <driver name="LCIOWriter"/>
@@ -26,9 +26,13 @@
             <readoutCollections>SVTRawTrackerHits</readoutCollections>
         </driver>
 
-        <driver name="ReconParticleCleanupDriver" type="org.hps.users.meeg.ReconParticleCleanupDriver"/>
+        <driver name="ReconParticleCleanupDriver" type="org.hps.users.meeg.ReconParticleCleanupDriver">
+            <maxTrackDt>5.0</maxTrackDt>
+        </driver>
 
-        <driver name="SVTSmallHitsFilter" type="org.hps.recon.filtering.SVTSmallHitsFilter"/>
+        <driver name="EventFlagFilter" type="org.hps.recon.filtering.EventFlagFilter">
+            <flagNames>svt_bias_good svt_position_good svt_burstmode_noise_good</flagNames>
+        </driver>
         <driver name="EcalPairsFilter" type="org.hps.recon.filtering.EcalPairsFilter"/>
         <driver name="CollectionSizeFilter" type="org.hps.recon.filtering.CollectionSizeFilter">
             <collectionName>UnconstrainedV0Candidates</collectionName>