Author: [log in to unmask] Date: Wed Nov 25 14:41:41 2015 New Revision: 3990 Log: move cluster cuts to tight constraint Modified: java/trunk/recon/src/main/java/org/hps/recon/filtering/V0CandidateFilter.java Modified: java/trunk/recon/src/main/java/org/hps/recon/filtering/V0CandidateFilter.java ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/filtering/V0CandidateFilter.java (original) +++ java/trunk/recon/src/main/java/org/hps/recon/filtering/V0CandidateFilter.java Wed Nov 25 14:41:41 2015 @@ -2,15 +2,17 @@ import static java.lang.Math.abs; import java.util.List; +import org.hps.recon.ecal.cluster.ClusterUtilities; +import org.hps.recon.particle.ReconParticleDriver; import org.hps.record.epics.EpicsData; import org.lcsim.event.EventHeader; import org.lcsim.event.ReconstructedParticle; /** - * Class to strip off trident candidates. Currently defined as: e+ e- events with - * tracks matched to clusters. Neither electron can be a full-energy candidate - * (momentum less than _fullEnergyCut [0.85GeV]). The Ecal cluster times must be - * within _timingCut [2.5ns] of each other. + * Class to strip off trident candidates. Currently defined as: e+ e- events + * with tracks. If the tight constraint is enabled, tracks must be matched to + * clusters and the Ecal cluster times must be within _timingCut [2.5ns] of each + * other. * * @author Norman A Graf * @@ -23,7 +25,6 @@ private boolean _tight = false; private boolean _keepEpicsDataEvents = false; - @Override protected void process(EventHeader event) { @@ -40,7 +41,7 @@ skipEvent(); } List<ReconstructedParticle> V0Candidates = event.get(ReconstructedParticle.class, _V0CandidateCollectionName); - if (V0Candidates.size() == 0) { + if (V0Candidates.isEmpty()) { skipEvent(); } @@ -49,34 +50,33 @@ if (V0Candidates.size() != 2) { skipEvent(); } - } + for (ReconstructedParticle rp : V0Candidates) { - for (ReconstructedParticle rp : V0Candidates) { + ReconstructedParticle electron; + ReconstructedParticle positron; - ReconstructedParticle e1 = null; - ReconstructedParticle e2 = null; + List<ReconstructedParticle> fsParticles = rp.getParticles(); + if (fsParticles.size() != 2) { + skipEvent(); + } + // require both electrons to be associated with an ECal cluster + electron = fsParticles.get(ReconParticleDriver.ELECTRON); + if (electron.getClusters().isEmpty()) { + skipEvent(); + } + positron = fsParticles.get(ReconParticleDriver.POSITRON); + if (positron.getClusters().isEmpty()) { + skipEvent(); + } - List<ReconstructedParticle> electrons = rp.getParticles(); - if (electrons.size() != 2) { - skipEvent(); - } - // require both electrons to be associated with an ECal cluster - e1 = electrons.get(0); - if (e1.getClusters().size() == 0) { - skipEvent(); - } - e2 = electrons.get(1); - if (e2.getClusters().size() == 0) { - skipEvent(); - } + // calorimeter cluster timing cut + // first CalorimeterHit in the list is the seed crystal + double t1 = ClusterUtilities.getSeedHitTime(electron.getClusters().get(0)); + double t2 = ClusterUtilities.getSeedHitTime(positron.getClusters().get(0)); - // calorimeter cluster timing cut - // first CalorimeterHit in the list is the seed crystal - double t1 = e1.getClusters().get(0).getCalorimeterHits().get(0).getTime(); - double t2 = e2.getClusters().get(0).getCalorimeterHits().get(0).getTime(); - - if (abs(t1 - t2) > _clusterTimingCut) { - skipEvent(); + if (abs(t1 - t2) > _clusterTimingCut) { + skipEvent(); + } } } incrementEventPassed(); @@ -109,14 +109,13 @@ public void setTightConstraint(boolean b) { _tight = b; } - + /** * Setting this true keeps ALL events containing EPICS data * * @param b */ - public void setKeepEpicsDataEvents(boolean b) - { + public void setKeepEpicsDataEvents(boolean b) { _keepEpicsDataEvents = b; } }