StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | List of all members
StPmdClustering Class Reference

#include <StPmdClustering.h>

Inheritance diagram for StPmdClustering:

Public Member Functions

 StPmdClustering (StPmdDetector *pmd_det=0, StPmdDetector *cpv_det=0)
 constructor More...
virtual ~StPmdClustering ()
Bool_t findPmdClusters2 (StPmdDetector *)
 for Pmd clusters More...
Int_t MakeClusters (TClonesArray *)
Int_t MakeSuperClusters (Int_t, StPmdModule *, TClonesArray *)
Int_t GetLocalPeaks (Int_t *, TList *)
Bool_t BreakSuperCluster (Int_t, Int_t *, TList *)
Float_t BuildCluster (StPmdCluster *, Float_t *)
void Cell_eta_phi (Float_t, Float_t, Float_t &, Float_t &)
void findPmdClusters (StPmdDetector *)
 for Pmd clusters More...
Int_t crclust (Double_t, Double_t, Int_t, Int_t)
 crude clustering More...
void refclust (StPmdDetector *, Int_t, Int_t, Int_t, StPmdClusterCollection *)
 refined clustering More...
void order (Int_t)
 for ordering More...
void arrange (Int_t)
 ordering More...
Double_t Dist (Double_t, Double_t, Double_t, Double_t)
void printclust (Int_t, Int_t, StPmdCluster *)
 distance between two clusters More...
Int_t CentroidCal (Int_t, Int_t, Double_t &, Double_t &, Double_t &, Double_t &, Double_t &, Double_t &, Double_t &, Double_t &, Double_t &)
 for Calculating cluster properties, those clusters having more then two cells More...
void SetAdcCutOff (Double_t adccutoff)
void SetVertexPos (const StThreeVectorF &)
void Cluster_Eta_Phi (Float_t, Float_t, Float_t, Float_t &, Float_t &)
void SetOptCalibrate (Bool_t a=kTRUE)
void SetOptSimulate (Bool_t a=kFALSE)
void SetOptRefineCluster (Bool_t a=kFALSE)
StPmdHitGetHit (StPmdDetector *, Int_t, Double_t, Double_t)
 for getting hits of each cluster
- Public Member Functions inherited from StPmdAbsClustering
 StPmdAbsClustering (StPmdDetector *pmd_det=0, StPmdDetector *cpv_det=0)

Additional Inherited Members

- Protected Attributes inherited from StPmdAbsClustering
 pointer for detector Pmd
 pointer for detector Cpv

Detailed Description


Definition at line 54 of file StPmdClustering.h.

Constructor & Destructor Documentation

StPmdClustering::StPmdClustering ( StPmdDetector pmd_det = 0,
StPmdDetector cpv_det = 0 


utility class

constructor for getting PMD and CPV detectors

Definition at line 152 of file StPmdClustering.cxx.

Member Function Documentation

void StPmdClustering::arrange ( Int_t  incr)


arrange cells in each supercluster

Definition at line 371 of file StPmdClustering.cxx.

Referenced by findPmdClusters().

Int_t StPmdClustering::CentroidCal ( Int_t  ncell,
Int_t  nclust,
Double_t &  x,
Double_t &  y,
Double_t &  z,
Double_t &  xc,
Double_t &  yc,
Double_t &  zc,
Double_t &  rcl,
Double_t &  rcs,
Double_t &  cells 

for Calculating cluster properties, those clusters having more then two cells

Assignment(definition) part is over

Definition at line 717 of file StPmdClustering.cxx.

References Dist(), kStOK, and kStWarn.

Referenced by refclust().

Int_t StPmdClustering::crclust ( Double_t  ave,
Double_t  cutoff,
Int_t  nmx1,
Int_t  idet 

crude clustering

Super clusters are constructed by using crclust function and complete algorithm for clustering has been adopted

constants used for calculating coordinate of neighbouring cells

initialize infocl[2][96][72]

crude clustering begins. Start with cell having largest adc count and loop over the cells in descending order of adc count

icl –cluster #, numcell – # of cells in a cluster, clust – stores coordinates of the cells in a cluster, infocl[0][i1][i2] is 1 for primary and 2 for secondary cells, infocl[1][i1][i2] stores cluster #

check for adc count in neighbouring cells. If ne 0 include them in this clust

Definition at line 974 of file StPmdClustering.cxx.

Referenced by findPmdClusters().

Double_t StPmdClustering::Dist ( Double_t  x1,
Double_t  y1,
Double_t  x2,
Double_t  y2 

distance between centre of two clusters

Definition at line 966 of file StPmdClustering.cxx.

Referenced by CentroidCal(), and refclust().

void StPmdClustering::findPmdClusters ( StPmdDetector mdet)

for Pmd clusters

finding Pmd and Cpv clusters

loop for supermodule

id has to be 1 to 12, not 0 to 11

getting module(id)

total no.of hits in the supermodule in PMD plane

pointer for hits

row of the hit = 1 - 72

column of the hit = 1 - 96

supermodule = 1 - 12

detector(= 1) for Pmd and (=2) for CPV


SmChain Gain


edep added for each cell

order the data according to edep ( largest to smallest )

compare cutoff with the average energy deposited. Has no use in calc.

arrange cells in each supercluster

resolve superclusters into clusters //new

Definition at line 169 of file StPmdClustering.cxx.

References arrange(), crclust(), StPmdDetector::module(), StPmdDetector::module_hit(), order(), refclust(), and StPmdDetector::setCluster().

Bool_t StPmdClustering::findPmdClusters2 ( StPmdDetector mdet)

for Pmd clusters

finding Pmd and Cpv clusters

Definition at line 1088 of file StPmdClustering.cxx.

References kStOK, StPmdDetector::module(), StPmdDetector::module_hit(), StPmdClusterCollection::Nclusters(), and StPmdDetector::setCluster().

Referenced by StPmdClusterMaker::Make().

void StPmdClustering::order ( Int_t  idet)

for ordering

order the data according to edep ( largest to smallest )

Definition at line 336 of file StPmdClustering.cxx.

Referenced by findPmdClusters().

void StPmdClustering::printclust ( Int_t  i,
Int_t  m,
StPmdCluster pclust 

distance between two clusters

for parametrization : not used any more printing clusters

for printing cluster details ( position ( x and y ), and strength info about # of cells in a cluster to be added.

cluster position

cluster strength

number of cells in the cluster as Float

spread(sigma) of the cluster along large axis

spread(sigma) of the cluster along small axis

filling 'X' position of Cluster

filling 'Y' position of Cluster

filling cluster SM #

filling cluster edep

filling cluster eta

filling cluster phi

filling cluster sigma along large axis

filling cluster sigma along small axis

filling # of cells (Float)

Definition at line 281 of file StPmdClustering.cxx.

References StPmdCluster::setModule().

Referenced by refclust().

void StPmdClustering::refclust ( StPmdDetector m_pmd_det0,
Int_t  incr,
Int_t  supmod,
Int_t  idet,
StPmdClusterCollection pmdclus 

refined clustering

Breaking of super clusters into smaller clusters, Cluster positions,strengths,and widths has has been calculated by adopting minimization process.

clno counts the final clusters nsupcl = # of superclusters; ncl[i]= # of cells in supercluster i

Super cluster having 'Single' cell

Single cell super-clusters –> single cluster

Calculate the Cluster properties for two cell SuperCluster In two cell cluster SigmaS wil be Zero


compute the number of Gaussians and their centers ( first guess )

Assign the cluster properties for SuperCluster having more than Two cells

Definition at line 405 of file StPmdClustering.cxx.

References CentroidCal(), Dist(), GetHit(), kStOK, and printclust().

Referenced by findPmdClusters().

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