public class ReconClusterer extends AbstractClusterer
This class creates clusters from a CalorimeterHit input collection.
This clustering logic is based on that from the CLAS-Note-2005-001.
The analysis and position corrections are described in HPS Note 2014-001.
The algorithm sorts hits from highest to lowest energy and builds clusters around each local maximum/seed hit. Common hits are distributed between clusters when minimum between two clusters. There is a threshold cut for minimum hit energy, minimum cluster energy, and minimum seed hit energy. There is also a timing threshold with respect to the seed hit. All of these parameters are tunable and should be refined with more analysis. Energy corrections are applied separately.
AbstractClusterer
,
Clusterer
Modifier and Type | Field and Description |
---|---|
(package private) double |
clusterEnergyThreshold |
(package private) Map<Point,double[]> |
correctedPositionMap |
(package private) double |
hitEnergyThreshold |
(package private) double |
minTime |
(package private) List<org.lcsim.event.CalorimeterHit> |
rejectedHitList |
(package private) double |
seedEnergyThreshold |
(package private) double |
timeWindow |
(package private) boolean |
useTimeCut |
cuts, ecal, neighborMap
Constructor and Description |
---|
ReconClusterer() |
Modifier and Type | Method and Description |
---|---|
private void |
addToMap(org.lcsim.event.CalorimeterHit hit)
This constructs a mapping of a crystal to an x,y position at the face of the ecal.
|
private void |
calculatePosition(org.lcsim.event.base.BaseCluster cluster)
Calculates the position of each cluster with no correction for particle type as documented in
HPS Note 2014-001.
|
List<org.lcsim.event.Cluster> |
createClusters(org.lcsim.event.EventHeader event,
List<org.lcsim.event.CalorimeterHit> hitList)
This is the primary method for sub-classes to implement their clustering algorithm.
|
private boolean |
equalEnergies(org.lcsim.event.CalorimeterHit hit,
org.lcsim.event.CalorimeterHit neighbor)
Handles pathological case where multiple neighboring crystals have EXACTLY the same energy.
|
ClusterType |
getClusterType()
Get the type code for the clusters produced by this algorithm.
|
(package private) List<org.lcsim.event.CalorimeterHit> |
getRejectedHitList()
Get the list of rejected hits that was made from processing the last event.
|
void |
initialize()
By default nothing is done in this method, but start of job initialization can happen here like reading
cut settings into instance variables for convenience.
|
(package private) void |
setUseTimeCut(boolean useTimeCut) |
conditionsChanged, createBasicCluster, getClusterTypeEncoding, getCuts, getIdentifierHelper
double hitEnergyThreshold
double seedEnergyThreshold
double clusterEnergyThreshold
boolean useTimeCut
double minTime
double timeWindow
List<org.lcsim.event.CalorimeterHit> rejectedHitList
void setUseTimeCut(boolean useTimeCut)
public void initialize()
AbstractClusterer
startOfData
method of ClusterDriver
.initialize
in interface Clusterer
initialize
in class AbstractClusterer
List<org.lcsim.event.CalorimeterHit> getRejectedHitList()
public List<org.lcsim.event.Cluster> createClusters(org.lcsim.event.EventHeader event, List<org.lcsim.event.CalorimeterHit> hitList)
AbstractClusterer
createClusters
in interface Clusterer
createClusters
in class AbstractClusterer
event
- The current LCSim event.hitList
- the list of hitsprivate boolean equalEnergies(org.lcsim.event.CalorimeterHit hit, org.lcsim.event.CalorimeterHit neighbor)
hit
- neighbor
- Neighbor to hitprivate void calculatePosition(org.lcsim.event.base.BaseCluster cluster)
cluster
- private void addToMap(org.lcsim.event.CalorimeterHit hit)
hit
- public ClusterType getClusterType()
AbstractClusterer
getClusterType
in interface Clusterer
getClusterType
in class AbstractClusterer
Copyright © 2019. All rights reserved.