Author: [log in to unmask] Date: Thu Jul 30 11:41:30 2015 New Revision: 3309 Log: Simple Driver to strip events containing a single Full Energy Electron candidate. Added: java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripSingleFeeDriver.java Added: java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripSingleFeeDriver.java ============================================================================= --- java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripSingleFeeDriver.java (added) +++ java/trunk/analysis/src/main/java/org/hps/analysis/examples/StripSingleFeeDriver.java Thu Jul 30 11:41:30 2015 @@ -0,0 +1,67 @@ +package org.hps.analysis.examples; + +import java.util.List; +import org.lcsim.event.EventHeader; +import org.lcsim.event.ReconstructedParticle; +import org.lcsim.util.Driver; + +/** + * Simple Driver to select events containing only one Full Energy Electron + * (FEE). This is defined as one ReconstructedParticle which has been identified + * as an electron and has an energy equal to or greater than the energyCut + * (default is 0.85) and a track which has greater than or equal the + * numberOfHitsOnTrack (default is 6). + * + * @author Norman A Graf + * + * @version $Id: + */ +public class StripSingleFeeDriver extends Driver +{ + + private double _energyCut = 0.85; + private int _nHitsOnTrack = 6; + + /** + * + * @param event + */ + @Override + protected void process(EventHeader event) + { + boolean skipEvent = true; + List<ReconstructedParticle> rps = event.get(ReconstructedParticle.class, "FinalStateParticles"); + if (rps.size() == 1) { + ReconstructedParticle rp = rps.get(0); + double energy = rp.getEnergy(); + int pdgId = rp.getParticleIDUsed().getPDG(); + if (pdgId == 11) { + if (energy >= _energyCut && rp.getTracks().get(0).getTrackerHits().size() >= _nHitsOnTrack) // electron + { + skipEvent = false; + } + } + } + } + + /** + * Electrons having energy below the cut will be rejected. + * + * @param cut + */ + public void setEnergyCut(double cut) + { + _energyCut = cut; + } + + /** + * Tracks having fewer than the number of hits will be rejected. + * + * @param cut + */ + public void setNumberOfHitsOnTrack(int cut) + { + _nHitsOnTrack = cut; + } + +}