3 added + 2 removed + 1 modified, total 6 files
lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/cheat
diff -N IRecoDefinition.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ IRecoDefinition.java 24 Jan 2009 05:11:46 -0000 1.1
@@ -0,0 +1,25 @@
+package org.lcsim.contrib.onoprien.crux.cheat;
+
+import org.lcsim.event.MCParticle;
+
+/**
+ * Interface to be implemented by classes that define reconstructable MCParticle.
+ * Used by cheaters and performance analysis classes.
+ *
+ * @author D. Onoprienko
+ * @version $Id: IRecoDefinition.java,v 1.1 2009/01/24 05:11:46 onoprien Exp $
+ */
+public interface IRecoDefinition {
+
+ /**
+ * Returns the name of this definition.
+ */
+ String getName();
+
+ /**
+ * Returns <tt>true</tt> if the specified <tt>MCParticle</tt> produced a findable
+ * track, according to this definition.
+ */
+ boolean isTrackFindable(MCParticle mcParticle);
+
+}
lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/cheat
diff -N RecoDefinition.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ RecoDefinition.java 24 Jan 2009 05:11:46 -0000 1.1
@@ -0,0 +1,161 @@
+package org.lcsim.contrib.onoprien.crux.cheat;
+
+import java.util.*;
+
+import hep.physics.particle.properties.ParticleType;
+import hep.physics.vec.Hep3Vector;
+import org.lcsim.event.MCParticle;
+
+import org.lcsim.contrib.onoprien.util.NoSuchParameterException;
+
+/**
+ * Simple configurable implementation of {@link IRecoDefinition}.
+ * Used by track finder cheaters and tracking performance analysis classes.
+ * <p>
+ * This definition uses only <tt>MCParticle</tt> own parameters to make selection -
+ * no detector or hit information is accessible. See {@link RecoDefinitionExtended}
+ * if you need to cut on number of layer with hits, etc.
+ * <p>
+ * The definition can be customized either by setting parameters through the
+ * {@link #setCut setCut(String,Object)} method (by default, all cuts are
+ * disabled, so every particle is reconstructable) or by overriding some of
+ * the methods.
+ *
+ * @author D. Onoprienko
+ * @version $Id: RecoDefinition.java,v 1.1 2009/01/24 05:11:46 onoprien Exp $
+ */
+public class RecoDefinition implements IRecoDefinition {
+
+// -- Constructors : ----------------------------------------------------------
+
+ public RecoDefinition() {
+ this("");
+ }
+
+ public RecoDefinition(String name) {
+
+ _name = name;
+
+ _cut_Charged = 0;
+ _cut_Pt = 0.;
+ _cut_ThetaMin = 0.;
+ _cut_ThetaMax = Math.PI;
+ _cut_Types = null;
+ }
+
+
+// -- Setters : ---------------------------------------------------------------
+
+ /**
+ * Set cut parameters. Calling this method this a name of a cat but no values diables the cut.
+ * The following cuts can be configured with this method:
+ * <p><dl>
+ * <dt>"CHARGED"</dt> <dd>Boolean value: if <tt>true</tt>, only charged particles are selected.
+ * If <tt>false</tt>, only neutral particles are selected.</dd>
+ * <dt>"PT"</dt> <dd>Double value: minimum transverse momentum.</dd>
+ * <dt>"THETA"</dt> <dd>Two double values: mimimum and maximum theta. If only one value is specified,
+ * it is used as minimum, and symmetric theta range is selected.</dd>
+ * <dt>"PARTICLE_TYPES"</dt> <dd>One ore more <tt>ParticleType</tt> values: only particles
+ * of these types will be selected.</dd></dl>
+ *
+ * By default, all cuts are disabled.
+ *
+ * @param name Name of the cut. Case is ignored.
+ * @param values List of parameters to be used for configuring the cut.
+ * @throws NoSuchParameterException Thrown if the supplied parameter name is unknown.
+ * @throws IllegalArgumentException Thrown if incorrect number of values, or a value
+ * of incorrect type is supplied.
+ */
+ public void setCut(String name, Object... values) {
+ Object value = values.length == 0 ? null : values[0];
+ try {
+ if (name.equalsIgnoreCase("CHARGED")) {
+ if (values.length == 0) {
+ _cut_Charged = 0;
+ } else {
+ if ((Boolean)values[0]) {
+ _cut_Charged = 1;
+ } else {
+ _cut_Charged = 2;
+ }
+ }
+ } else if (name.equalsIgnoreCase("PT")) {
+ if (values.length == 0) _cut_Pt = 0.;
+ _cut_Pt = (Double) value;
+ } else if (name.equalsIgnoreCase("THETA")) {
+ if (values.length == 0) {
+ _cut_ThetaMin = 0.;
+ _cut_ThetaMax = Math.PI;
+ } else if (values.length == 1) {
+ _cut_ThetaMin = (Double) values[0];
+ _cut_ThetaMax = Math.PI - _cut_ThetaMin;
+ } else {
+ _cut_ThetaMin = (Double) values[0];
+ _cut_ThetaMax = (Double) values[1];
+ }
+ } else if (name.equalsIgnoreCase("PARTICLE_TYPES")) {
+ if (values.length == 0) {
+ _cut_Types = null;
+ } else {
+ _cut_Types = new HashSet<ParticleType>();
+ for (Object o : values) {
+ _cut_Types.add((ParticleType)o);
+ }
+ }
+ } else {
+ throw new NoSuchParameterException();
+ }
+ } catch (ClassCastException x) {
+ throw new IllegalArgumentException(x);
+ }
+ }
+
+
+// -- Implementing IRecoDefinition : ------------------------------------------
+
+ public String getName() {return _name;}
+
+
+// -- Methods defining "reconstructable" and "reconstructed" : ----------------
+
+ public boolean isTrackFindable(MCParticle mcParticle) {
+
+ // Charge cut
+
+ double charge = mcParticle.getCharge();
+ if (_cut_Charged == 1) {
+ if (Math.abs(charge) < .9) return false;
+ } else if (_cut_Charged == 2) {
+ if (Math.abs(charge) > .1) return false;
+ }
+
+ // Pt cut
+
+ Hep3Vector p = mcParticle.getMomentum();
+ double pT = Math.hypot(p.x(), p.y());
+ if (pT < _cut_Pt) return false;
+
+ // Theta cut
+
+ double theta = Math.acos(p.z()/p.magnitude());
+ if (theta < _cut_ThetaMin || theta > _cut_ThetaMax) return false;
+
+ // Particle type cut
+
+ if (_cut_Types != null && (! _cut_Types.contains(mcParticle.getType()))) return false;
+
+ // Passed all cuts !
+
+ return true;
+ }
+
+
+// -- Private parts : ---------------------------------------------------------
+
+ private String _name;
+
+ protected int _cut_Charged;
+ protected double _cut_Pt;
+ protected double _cut_ThetaMin, _cut_ThetaMax;
+ protected Set<ParticleType> _cut_Types;
+}
lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/cheat
diff -N RecoDefinitionExtended.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ RecoDefinitionExtended.java 24 Jan 2009 05:11:46 -0000 1.1
@@ -0,0 +1,204 @@
+package org.lcsim.contrib.onoprien.crux.cheat;
+
+import java.util.*;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.MCParticle;
+import org.lcsim.geometry.Subdetector;
+
+import org.lcsim.contrib.onoprien.util.NoSuchParameterException;
+
+import org.lcsim.contrib.onoprien.vsegment.hit.ITrackerHit;
+import org.lcsim.contrib.onoprien.vsegment.mctruth.MCTruthVS;
+
+/**
+ * Simple configurable implementation of {@link IRecoDefinition}.
+ * Used by track finder cheaters and tracking performance analysis classes.
+ * The definition can be customized either by setting parameters through the
+ * {@link #setCut setCut(String,Object)} method (by default, all cuts are
+ * disabled, so every particle is reconstructable) or by overriding some of
+ * the methods.
+ *
+ * @author D. Onoprienko
+ * @version $Id: RecoDefinitionExtended.java,v 1.1 2009/01/24 05:11:46 onoprien Exp $
+ */
+public class RecoDefinitionExtended extends RecoDefinition {
+
+// -- Constructors : ----------------------------------------------------------
+
+ public RecoDefinitionExtended() {
+ this("");
+ }
+
+ public RecoDefinitionExtended(String name) {
+
+ super(name);
+
+ _cut_MinTrackerSuperLayers = 0;
+ }
+
+
+// -- Setters : ---------------------------------------------------------------
+
+ /**
+ * Set cut parameters. Calling this method this a name of a cat but no values diables the cut.
+ * The following cuts can be configured with this method:
+ * <p><dl>
+ * <dt>"MIN_TRACK_HIT_LAYERS"</dt> <dd>Integer value: minimum number of tracker superlayers with hits.
+ * {@link #getNumTrackerSuperLayers getNumTrackerSuperLayers(MCParticle)} method must be implemented.</dd>
+ * </dl>
+ *
+ * By default, all cuts are disabled.
+ *
+ * @param name Name of the cut. Case is ignored.
+ * @param values List of parameters to be used for configuring the cut.
+ * @throws NoSuchParameterException Thrown if the supplied parameter name is unknown.
+ * @throws IllegalArgumentException Thrown if incorrect number of values, or a value
+ * of incorrect type is supplied.
+ */
+ public void setCut(String name, Object... values) {
+ Object value = values.length == 0 ? null : values[0];
+ try {
+ if (name.equalsIgnoreCase("MIN_TRACK_HIT_LAYERS")) {
+ if (values.length == 0) _cut_MinTrackerSuperLayers = 0;
+ _cut_MinTrackerSuperLayers = (Integer) value;
+ } else {
+ super.setCut(name, values);
+ }
+ } catch (ClassCastException x) {
+ throw new IllegalArgumentException(x);
+ }
+ }
+
+ /**
+ * Set parameters.
+ * The following parameters can be set with this method:
+ * <p><dl>
+ * <dt>"TRACKER_HIT_COLLECTIONS"</dt> <dd>Name of the tracker hit collection to be used by this
+ * definition for computing various parameters relevant to tracker-related cuts.<br>
+ * Default: <tt>null</tt> (tracker clusters are used).</dd>
+ * </dl>
+ *
+ * @param name Name of the parameter. Case is ignored.
+ * @param values List of parameters to be used for configuring the cut.
+ * @throws NoSuchParameterException Thrown if the supplied parameter name is unknown.
+ * @throws IllegalArgumentException Thrown if incorrect number of values, or a value
+ * of incorrect type is supplied.
+ */
+ public void set(String name, Object... values) {
+ try {
+ if (name.equalsIgnoreCase("TRACKER_HIT_COLLECTIONS")) {
+ if (values.length == 0) {
+ _trackerHitListNames = null;
+ } else {
+ _trackerHitListNames = new ArrayList<String>(values.length);
+ for (Object o : values) _trackerHitListNames.add((String)o);
+ }
+ } else {
+ throw new NoSuchParameterException();
+ }
+ } catch (ClassCastException x) {
+ throw new IllegalArgumentException(x);
+ }
+ }
+
+ /**
+ * Saves a reference to the event record to be used by this definition.
+ * If a driver calls this method, it has to call {@link #clearEvent()} once the event
+ * processing is finished.
+ */
+ public void setEvent(EventHeader event) {
+ _event = event;
+ try {
+ _mcTruthVS = (MCTruthVS) event.get(MCTruthVS.KEY);
+ } catch(IllegalArgumentException x) {
+ _mcTruthVS = null;
+ }
+ }
+
+ /**
+ * Clears all references to objects that belong to a particular event.
+ */
+ public void clearEvent() {
+ _event = null;
+ _mcTruthVS = null;
+ _mc2thList = null;
+ }
+
+
+// -- Methods defining "reconstructable" and "reconstructed" : ----------------
+
+ public boolean isTrackFindable(MCParticle mcParticle) {
+
+ if (! super.isTrackFindable(mcParticle)) return false;
+
+ // Minimum number of hit layers cut
+
+ if (_cut_MinTrackerSuperLayers > 0 && _cut_MinTrackerSuperLayers > getNumTrackerSuperLayers(mcParticle)) return false;
+
+ // Passed all cuts !
+
+ return true;
+ }
+
+
+// -- Helper methods: ---------------------------------------------------------
+
+ protected int getNumTrackerSuperLayers(MCParticle mc) {
+
+ List<? extends ITrackerHit> hits = Collections.emptyList();
+ if (_trackerHitListNames == null) {
+ hits = _mcTruthVS.getTrackerClusters(mc);
+ } else {
+ if (_mc2thList == null) {
+ _mc2thList = new HashMap<MCParticle, List<ITrackerHit>>();
+ for (String col : _trackerHitListNames) {
+ try {
+ List<ITrackerHit> hitList = (List<ITrackerHit>) _event.get(col);
+ for (ITrackerHit hit : hitList) {
+ List<MCParticle> mcList = _mcTruthVS.getMCParticles(hit);
+ for (MCParticle mcp : mcList) {
+ List<ITrackerHit> hList = _mc2thList.get(mcp);
+ if (hList == null) {
+ hList = new ArrayList<ITrackerHit>(10);
+ _mc2thList.put(mcp, hList);
+ }
+ hList.add(hit);
+ }
+ }
+ } catch (IllegalArgumentException x) {}
+ }
+ }
+ hits = _mc2thList.get(mc);
+ }
+
+ int nLayers = 0;
+ Subdetector sd = null;
+ int layer = -1;
+ for (ITrackerHit hit : hits) {
+ Subdetector sd1 = hit.getSubdetector();
+ int layer1 = hit.getLayer();
+ if (sd != sd1 || layer != layer1) {
+ sd = sd1;
+ layer = layer1;
+ if (hit.getType().nUnmeasured() == 0) {
+ nLayers += 2;
+ } else {
+ nLayers += 1;
+ }
+ }
+ }
+ nLayers /= 2;
+ return nLayers;
+ }
+
+// -- Private parts : ---------------------------------------------------------
+
+ protected int _cut_MinTrackerSuperLayers;
+
+ protected List<String> _trackerHitListNames;
+ protected HashMap<MCParticle, List<ITrackerHit>> _mc2thList;
+
+ protected EventHeader _event;
+ protected MCTruthVS _mcTruthVS;
+}
lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/cheat
diff -u -r1.1 -r1.2
--- CheatTrackFinderDriver.java 22 Jan 2009 21:12:42 -0000 1.1
+++ CheatTrackFinderDriver.java 24 Jan 2009 05:11:46 -0000 1.2
@@ -3,7 +3,6 @@
import java.util.*;
import hep.physics.vec.Hep3Vector;
-import org.lcsim.geometry.Subdetector;
import org.lcsim.event.EventHeader;
import org.lcsim.event.MCParticle;
import org.lcsim.event.SimTrackerHit;
@@ -26,7 +25,7 @@
* Driver that uses MC truth info to produce a list of tracks.
*
* @author D. Onoprienko
- * @version $Id: CheatTrackFinderDriver.java,v 1.1 2009/01/22 21:12:42 onoprien Exp $
+ * @version $Id: CheatTrackFinderDriver.java,v 1.2 2009/01/24 05:11:46 onoprien Exp $
*/
public class CheatTrackFinderDriver extends Driver implements JobEventListener {
@@ -58,7 +57,7 @@
* <br>No default, must be set explicitly.</dd>
* <dt>"TRACK_LIST"</dt> <dd>Name of output list of <tt>Tracks</tt>.
* <br>No default, must be set explicitly.</dd>
- * <dt>"DEFINITION"</dt> <dd>The value is an instance of {@link ICheatRecoDefinition} that will
+ * <dt>"DEFINITION"</dt> <dd>The value is an instance of {@link IRecoDefinition} that will
* be used to determine which MCParticles produce reconstructable tracks.
* <br>No default, must be either set explicitly or configured after getting.</dd></dl>
*
@@ -77,7 +76,7 @@
} else if (name.equalsIgnoreCase("TRACK_LIST")) {
_trackListName = (String) value;
} else if (name.equalsIgnoreCase("DEFINITION")) {
- _def = (ICheatRecoDefinition) value;
+ _def = (IRecoDefinition) value;
} else {
super.set(name, values);
}
@@ -86,41 +85,17 @@
}
}
+
// -- Getters : ---------------------------------------------------------------
/**
* Returns reconstructable particle definition used by this driver.
- * If the definition is not an instance of <tt>CheatRecoDefinition</tt>, returns <tt>null</tt>.
*/
- public CheatRecoDefinition getDefinition() {
- if (_def == null) {
- _def = new CheatRecoDefinition() {
- public int getNumTrackerSuperLayers(MCParticle mc) {
- List<ITrackerHit> hits = _mc2hit.get(mc);
- int nLayers = 0;
- Subdetector sd = null;
- int layer = -1;
- for (ITrackerHit hit : hits) {
- Subdetector sd1 = hit.getSubdetector();
- int layer1 = hit.getLayer();
- if (sd != sd1 || layer != layer1) {
- sd = sd1;
- layer = layer1;
- if (hit.getType().nUnmeasured() == 0) {
- nLayers +=2;
- } else {
- nLayers +=1;
- }
- }
- }
- nLayers /= 2;
- return nLayers;
- }
- };
- }
- return (_def instanceof CheatRecoDefinition) ? (CheatRecoDefinition)_def : null ;
+ public IRecoDefinition getDefinition() {
+ return _def;
}
-
+
+
// -- Event processing : ------------------------------------------------------
/** Called by the framework to process an event. */
@@ -244,7 +219,7 @@
private ArrayList<String> _hitMapNames;
private String _trackListName;
- private ICheatRecoDefinition _def;
+ private IRecoDefinition _def;
private MCTruthVS _mcTruth;
private BField _bField;
lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/cheat
diff -N CheatRecoDefinition.java
--- CheatRecoDefinition.java 22 Jan 2009 21:12:42 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,171 +0,0 @@
-package org.lcsim.contrib.onoprien.crux.cheat;
-
-import java.util.*;
-
-import hep.physics.particle.properties.ParticleType;
-import hep.physics.vec.Hep3Vector;
-import org.lcsim.event.MCParticle;
-
-import org.lcsim.contrib.onoprien.util.NoSuchParameterException;
-
-/**
- * Class that defines reconstructable MCParticle. Used by track finder cheaters and
- * tracking performance analysis classes. The definition can be customized either by
- * setting parameters through the {@link #setCut setCut(String,Object)} method (by default, all cuts are
- * disabled, so every particle is reconstructable) or by overriding {@link #isReconstructable(MCParticle)}.
- *
- * @author D. Onoprienko
- * @version $Id: CheatRecoDefinition.java,v 1.1 2009/01/22 21:12:42 onoprien Exp $
- */
-public class CheatRecoDefinition implements ICheatRecoDefinition {
-
-// -- Constructors : ----------------------------------------------------------
-
- public CheatRecoDefinition() {
- this("");
- }
-
- public CheatRecoDefinition(String name) {
-
- _name = name;
-
- _cut_Charged = 0;
- _cut_Pt = 0.;
- _cut_ThetaMin = 0.;
- _cut_ThetaMax = Math.PI;
- _cut_MinTrackerSuperLayers = 0;
- _cut_Types = null;
- }
-
-
-// -- Setters : ---------------------------------------------------------------
-
- /**
- * Set cut parameters. Calling this method this a name of a cat but no values diables the cut.
- * The following cuts can be configured with this method:
- * <p><dl>
- * <dt>"CHARGED"</dt> <dd>Boolean value: if <tt>true</tt>, only charged particles are selected.
- * If <tt>false</tt>, only neutral particles are selected.</dd>
- * <dt>"PT"</dt> <dd>Double value: minimum transverse momentum.</dd>
- * <dt>"THETA"</dt> <dd>Two double values: mimimum and maximum theta. If only one value is specified,
- * it is used as minimum, and symmetric theta range is selected.</dd>
- * <dt>"MIN_TRACK_HIT_LAYERS"</dt> <dd>Integer value: minimum number of tracker superlayers with hits.
- * {@link #getNumTrackerSuperLayers getNumTrackerSuperLayers(MCParticle)} method must be implemented.</dd>
- * <dt>"PARTICLE_TYPES"</dt> <dd>One ore more <tt>ParticleType</tt> values: only particles
- * of these types will be selected.</dd></dl>
- *
- * By default, all cuts are disabled.
- *
- * @param name Name of the cut. Case is ignored.
- * @param values List of parameters to be used for configuring the cut.
- * @throws NoSuchParameterException Thrown if the supplied parameter name is unknown.
- * @throws IllegalArgumentException Thrown if incorrect number of values, or a value
- * of incorrect type is supplied.
- */
- public void setCut(String name, Object... values) {
- Object value = values.length == 0 ? null : values[0];
- try {
- if (name.equalsIgnoreCase("CHARGED")) {
- if (values.length == 0) {
- _cut_Charged = 0;
- } else {
- if ((Boolean)values[0]) {
- _cut_Charged = 1;
- } else {
- _cut_Charged = 2;
- }
- }
- } else if (name.equalsIgnoreCase("PT")) {
- if (values.length == 0) _cut_Pt = 0.;
- _cut_Pt = (Double) value;
- } else if (name.equalsIgnoreCase("THETA")) {
- if (values.length == 0) {
- _cut_ThetaMin = 0.;
- _cut_ThetaMax = Math.PI;
- } else if (values.length == 1) {
- _cut_ThetaMin = (Double) values[0];
- _cut_ThetaMax = Math.PI - _cut_ThetaMin;
- } else {
- _cut_ThetaMin = (Double) values[0];
- _cut_ThetaMax = (Double) values[1];
- }
- } else if (name.equalsIgnoreCase("MIN_TRACK_HIT_LAYERS")) {
- if (values.length == 0) _cut_MinTrackerSuperLayers = 0;
- _cut_MinTrackerSuperLayers = (Integer) value;
- } else if (name.equalsIgnoreCase("PARTICLE_TYPES")) {
- if (values.length == 0) {
- _cut_Types = null;
- } else {
- _cut_Types = new HashSet<ParticleType>();
- for (Object o : values) {
- _cut_Types.add((ParticleType)o);
- }
- }
- } else {
- throw new NoSuchParameterException();
- }
- } catch (ClassCastException x) {
- throw new IllegalArgumentException(x);
- }
- }
-
-
-// -- Implementing ICheatRecoDefinition : ------------------------------------------
-
- public String getName() {return _name;}
-
-
-// -- Methods defining "reconstructable" and "reconstructed" : ----------------
-
- public boolean isTrackFindable(MCParticle mcParticle) {
-
- // Charge cut
-
- double charge = mcParticle.getCharge();
- if (_cut_Charged == 1) {
- if (Math.abs(charge) < .9) return false;
- } else if (_cut_Charged == 2) {
- if (Math.abs(charge) > .1) return false;
- }
-
- // Pt cut
-
- Hep3Vector p = mcParticle.getMomentum();
- double pT = Math.hypot(p.x(), p.y());
- if (pT < _cut_Pt) return false;
-
- // Theta cut
-
- double theta = Math.acos(p.z()/p.magnitude());
- if (theta < _cut_ThetaMin || theta > _cut_ThetaMax) return false;
-
- // Minimum number of hit layers cut
-
- if (_cut_MinTrackerSuperLayers > 0 && _cut_MinTrackerSuperLayers > getNumTrackerSuperLayers(mcParticle)) return false;
-
- // Particle type cut
-
- if (_cut_Types != null && (! _cut_Types.contains(mcParticle.getType()))) return false;
-
- // Passed all cuts !
-
- return true;
- }
-
-
-// -- Helper methods to be implemented by subclasses: -------------------------
-
- protected int getNumTrackerSuperLayers(MCParticle mc) {
- throw new UnsupportedOperationException();
- }
-
-// -- Private parts : ---------------------------------------------------------
-
- private String _name;
-
- protected int _cut_Charged;
- protected double _cut_Pt;
- protected double _cut_ThetaMin, _cut_ThetaMax;
- protected int _cut_MinTrackerSuperLayers;
- protected Set<ParticleType> _cut_Types;
-}
lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/cheat
diff -N ICheatRecoDefinition.java
--- ICheatRecoDefinition.java 22 Jan 2009 21:12:42 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,25 +0,0 @@
-package org.lcsim.contrib.onoprien.crux.cheat;
-
-import org.lcsim.event.MCParticle;
-
-/**
- * Interface to be implemented by classes that define reconstructable MCParticle.
- * Used by cheaters and performance analysis classes.
- *
- * @author D. Onoprienko
- * @version $Id: ICheatRecoDefinition.java,v 1.1 2009/01/22 21:12:42 onoprien Exp $
- */
-public interface ICheatRecoDefinition {
-
- /**
- * Returns the name of this definition.
- */
- String getName();
-
- /**
- * Returns <tt>true</tt> if the specified <tt>MCParticle</tt> produced a findable
- * track, according to this definition.
- */
- boolean isTrackFindable(MCParticle mcParticle);
-
-}
CVSspam 0.2.8