lcsim/src/org/lcsim/recon/cluster/clumpfinder
diff -u -r1.5 -r1.6
--- ClumpFinder.java 17 Dec 2007 22:40:21 -0000 1.5
+++ ClumpFinder.java 14 May 2008 21:11:56 -0000 1.6
@@ -29,7 +29,7 @@
* or more for each hit. This is hard-coded at the moment, but
* should become a user-definable in a later version.
*
- * @version $Id: ClumpFinder.java,v 1.5 2007/12/17 22:40:21 mcharles Exp $
+ * @version $Id: ClumpFinder.java,v 1.6 2008/05/14 21:11:56 mcharles Exp $
*/
public class ClumpFinder extends Driver implements Clusterer
@@ -41,6 +41,15 @@
protected DecisionMakerSingle<CalorimeterHit> m_seedDecision;
protected DecisionMakerSingle<Cluster> m_clumpDecision;
+ protected int m_minHitsIn333Grid = 6;
+ protected int m_minHitsIn553Grid = 18;
+
+ /** Set minimum numbers of hits in 3x3x3 or 5x5x3 grid to pass */
+ public void setDensityThresholds(int minIn333, int minIn553) {
+ m_minHitsIn333Grid = minIn333;
+ m_minHitsIn553Grid = minIn553;
+ }
+
/** Simple constructor. */
public ClumpFinder() {
m_hitDecision = new DummyDecisionMakerSingle<CalorimeterHit> (); // Default: All hits are valid
@@ -104,7 +113,9 @@
ListFilter<CalorimeterHit> hitFilter = new ListFilter<CalorimeterHit> (m_hitDecision);
List<CalorimeterHit> inputHits = hitFilter.filterList(hits);
// Filter these again, require high local density:
- ListFilter<CalorimeterHit> densityFilter = new ListFilter<CalorimeterHit> (new HighHitDensityDecision(inputHits));
+ HighHitDensityDecision densityDecision = new HighHitDensityDecision(inputHits);
+ densityDecision.setDensityThresholds(m_minHitsIn333Grid, m_minHitsIn553Grid);
+ ListFilter<CalorimeterHit> densityFilter = new ListFilter<CalorimeterHit> (densityDecision);
List<CalorimeterHit> unusedHits = densityFilter.filterList(inputHits);
// Apply some pre-filtering on these with a ListFilter to get a list of seeds
ListFilter<CalorimeterHit> seedFilter = new ListFilter<CalorimeterHit> (m_seedDecision);
lcsim/src/org/lcsim/recon/cluster/clumpfinder
diff -u -r1.2 -r1.3
--- HighHitDensityDecision.java 19 Nov 2007 21:53:31 -0000 1.2
+++ HighHitDensityDecision.java 14 May 2008 21:11:56 -0000 1.3
@@ -24,11 +24,20 @@
* Eventually this should be made more flexible and moved outside
* the "structural" package.
*
- * @version $Id: HighHitDensityDecision.java,v 1.2 2007/11/19 21:53:31 mcharles Exp $
+ * @version $Id: HighHitDensityDecision.java,v 1.3 2008/05/14 21:11:56 mcharles Exp $
*/
public class HighHitDensityDecision implements DecisionMakerSingle<CalorimeterHit>
{
+ protected int m_minHitsIn333Grid = 6;
+ protected int m_minHitsIn553Grid = 18;
+
+ /** Set minimum numbers of hits in 3x3x3 or 5x5x3 grid to pass */
+ public void setDensityThresholds(int minIn333, int minIn553) {
+ m_minHitsIn333Grid = minIn333;
+ m_minHitsIn553Grid = minIn553;
+ }
+
/**
* Constructor.
*
@@ -62,10 +71,10 @@
int deltaLayer = 1;
int deltaThetaWide = 2;
int deltaPhiWide = 2;
- int minNeighboursWide = 18;
+ int minNeighboursWide = m_minHitsIn553Grid;
int deltaThetaNarrow = 1;
int deltaPhiNarrow = 1;
- int minNeighboursNarrow = 6;
+ int minNeighboursNarrow = m_minHitsIn333Grid;
// Find all hits from [unusedHits] within range:
long[] wideWindowNeighbourIDs = idCAL.getNeighbourIDs(deltaLayer, deltaThetaWide, deltaPhiWide);
long[] narrowWindowNeighbourIDs = idCAL.getNeighbourIDs(deltaLayer, deltaThetaNarrow, deltaPhiNarrow);