StFms  0.0.0
FMS software in the STAR framework
FMSCluster::TowerClusterAssociation Class Reference
Inheritance diagram for FMSCluster::TowerClusterAssociation:
Collaboration diagram for FMSCluster::TowerClusterAssociation:

Public Member Functions

 TowerClusterAssociation (StFmsTower *tower)
 
StFmsTowertower ()
 
const StFmsTowertower () const
 
std::list< StFmsTowerCluster * > * clusters ()
 
double separation (const StFmsTower *tower)
 
double separation (const StFmsTowerCluster *cluster, const ETowerClusterDistance distance)
 
bool canAssociate (const StFmsTowerCluster *cluster)
 
bool add (StFmsTowerCluster *cluster, const ETowerClusterDistance distance)
 
StFmsTowerClusternearestCluster ()
 

Private Attributes

StFmsTowermTower
 Reference FMS tower. More...
 
std::list< StFmsTowerCluster * > mClusters
 Associable clusters. More...
 

Detailed Description

Association information between a tower and clusters.

This class is used in determining correct tower-cluster association. Stores an StFmsTower, and a list of StFmsTowerCluster with which it could potentially be associated. This information is used in determining the true cluster with which the tower is actually associated.

Inherits from TObject to allow it to be placed in a ROOT container.

Definition at line 158 of file StFmsClusterFinder.cxx.

Constructor & Destructor Documentation

FMSCluster::TowerClusterAssociation::TowerClusterAssociation ( StFmsTower tower)
inlineexplicit

Constructor.

Initialise with the StFmsTower of interest.

Definition at line 165 of file StFmsClusterFinder.cxx.

Member Function Documentation

bool FMSCluster::TowerClusterAssociation::add ( StFmsTowerCluster cluster,
const ETowerClusterDistance  distance 
)
inline

Attempt to add a potential associate cluster with this tower.

Add the cluster to the list of potential associates if this tower can associate with it (see canAssociate()). If there is already one or more clusters in the list:

  • if the new cluster is closer to the tower, replace the existing cluster(s).
  • if the new cluster if further away, do not add it.
  • if the new cluster is exactly the same separation as the existing cluster(s), add it to the list but keep the existing ones.

i.e. at any time there can only be clusters of the same (minimal) separation from the tower, but there can be multiple clusters of identical separation.

See separation(const StFmsTowerCluster*, const ETowerClusterDistance) for the meaning of the distance argument.

Returns true if the new cluster is added, false if not.

Todo:
I don't like using simple float comparison here, look into a more robust method

Definition at line 263 of file StFmsClusterFinder.cxx.

Here is the call graph for this function:

Here is the caller graph for this function:

bool FMSCluster::TowerClusterAssociation::canAssociate ( const StFmsTowerCluster cluster)
inline

Returns true if this tower can be associated with a cluster.

A tower is defined as associable with a cluster if it:

  • has energy less than that of the cluster's highest-energy tower.
  • is physically adjacent to at least one tower in the cluster, so long as...
  • its energy is less than minRatioPeakTower * adjacent tower energy i.e. this tower cannot fulfil the criterion for being a peak w.r.t. to the adjacent tower.

Note this is a "potential" association; a tower may pass the association test with more than one cluster, but it will eventually be assigned unambiguously to a single cluster.

Definition at line 219 of file StFmsClusterFinder.cxx.

Here is the call graph for this function:

Here is the caller graph for this function:

std::list<StFmsTowerCluster*>* FMSCluster::TowerClusterAssociation::clusters ( )
inline

Returns the list of potential associate clusters

Definition at line 171 of file StFmsClusterFinder.cxx.

Here is the caller graph for this function:

StFmsTowerCluster* FMSCluster::TowerClusterAssociation::nearestCluster ( )
inline

Calculate the nearest cluster out of the list of potential associates.

The distance is that between this tower and the cluster centre, (x0, y0), therefore StFmsTowerCluster::calculateClusterMoments() must have been called before doing this, in order to calculate x0 and y0 of the cluster.

Returns NULL if there are no clusters in the list.

Definition at line 301 of file StFmsClusterFinder.cxx.

Here is the call graph for this function:

Here is the caller graph for this function:

double FMSCluster::TowerClusterAssociation::separation ( const StFmsTower tower)
inline

Calculate the separation between this tower and another.

The separation is in row-column coordinates i.e. the distance is in the number of towers, not in cm. e.g. a tower at (column=1, row=1) would be a distance of 1 from a tower at (1, 2), and sqrt(2) from a tower at (2, 2).

Definition at line 179 of file StFmsClusterFinder.cxx.

Here is the call graph for this function:

Here is the caller graph for this function:

double FMSCluster::TowerClusterAssociation::separation ( const StFmsTowerCluster cluster,
const ETowerClusterDistance  distance 
)
inline

Calculate the separation between this tower and a cluster.

Distances can be calculated in different ways:

  • distance=kPeakTower: distance from this tower to the peak (highest-energy) tower in the cluster.
  • distance=kClusterCenter: distance from this tower to the cluster center, based on cluster moment calculation. See separation(const StFmsTower*) for the distance definition.

Definition at line 193 of file StFmsClusterFinder.cxx.

Here is the call graph for this function:

StFmsTower* FMSCluster::TowerClusterAssociation::tower ( )
inline

Returns this tower.

Definition at line 167 of file StFmsClusterFinder.cxx.

Here is the caller graph for this function:

const StFmsTower* FMSCluster::TowerClusterAssociation::tower ( ) const
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 169 of file StFmsClusterFinder.cxx.

Member Data Documentation

std::list<StFmsTowerCluster*> FMSCluster::TowerClusterAssociation::mClusters
private

Associable clusters.

Definition at line 318 of file StFmsClusterFinder.cxx.

StFmsTower* FMSCluster::TowerClusterAssociation::mTower
private

Reference FMS tower.

Definition at line 317 of file StFmsClusterFinder.cxx.


The documentation for this class was generated from the following file: