X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PMD%2FAliPMDClusteringV1.h;h=4aef8c6b526badab2c9e091ec463ff1cdfe29dbf;hb=2ddbb96485d095efc9cfda46966d7a8e1e7c006d;hp=c20f1f4bf5a1f27a0fe0f68675bb1b12f7061b4b;hpb=01c4d84aade032222c95f9b2dfbb915c46b1a134;p=u%2Fmrichter%2FAliRoot.git diff --git a/PMD/AliPMDClusteringV1.h b/PMD/AliPMDClusteringV1.h index c20f1f4bf5a..4aef8c6b526 100644 --- a/PMD/AliPMDClusteringV1.h +++ b/PMD/AliPMDClusteringV1.h @@ -11,101 +11,63 @@ // clustering code for alice pmd // // // //-----------------------------------------------------// -/* -------------------------------------------------------------------- - Code developed by S. C. Phatak, Institute of Physics, - Bhubaneswar 751 005 ( phatak@iopb.res.in ) Given the energy deposited - ( or ADC value ) in each cell of supermodule ( pmd or cpv ), the code - builds up superclusters and breaks them into clusters. The input is - in array d[ndimx][ndimy] and cluster information is in array - clusters[5][5000]. integer clno gives total number of clusters in the - supermodule. - d, clno and clusters are the only global ( public ) variables. Others - are local ( private ) to the code. - At the moment, the data is read for whole detector ( all supermodules - and pmd as well as cpv. This will have to be modify later ) - LAST UPDATE : October 23, 2002 ------------------------------------------------------------------------*/ +// -- Author : S.C. Phatak +// -- Modified : B.K. Nandi, Ajay Dash +// T. Nayak, N. Sharma +// #include "Rtypes.h" #include "AliPMDClustering.h" class TNtuple; class TObjArray; class AliPMDcluster; +class AliPMDcludata; class AliPMDClusteringV1: public AliPMDClustering { - public: AliPMDClusteringV1(); + AliPMDClusteringV1(const AliPMDClusteringV1 &pmdclv1); + AliPMDClusteringV1 &operator=(const AliPMDClusteringV1 &pmdclv1); virtual ~AliPMDClusteringV1(); - void DoClust(Int_t idet, Int_t ismn, Double_t celladc[][96], + + void DoClust(Int_t idet, Int_t ismn, Int_t celltrack[][96], + Int_t cellpid[][96], Double_t celladc[][96], TObjArray *pmdcont); - void Order(); - - Int_t CrClust(Double_t ave, Double_t cutoff, Int_t nmx1); - void RefClust(Int_t incr); - void GaussFit(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 &rc); + + Int_t CrClust(Double_t ave, Double_t cutoff, Int_t nmx1, + Int_t iord1[], Double_t edepcell[]); + void RefClust(Int_t incr, Double_t edepcell[]); Double_t Distance(Double_t x1, Double_t y1, Double_t x2, Double_t y2); - Double_t Ranmar() const; + void SetEdepCut(Float_t decut); + void SetClusteringParam(Int_t cluspar); + protected: - + + TObjArray *fPMDclucont; // carry cluster informations + static const Double_t fgkSqroot3by2; // fgkSqroot3by2 = sqrt(3.)/2. enum { - kNMX = 11424, - kNDIMX = 119, - kNDIMY = 96 + kNMX = 11424, // no. of cells in a module + kNDIMX = 119, // max no. of cells along x direction + kNDIMY = 96 // max no. of cells along axis at 60 deg with x axis }; - - /* - kNMX : # of cells in a supermodule - kNDIMX : maximum number of cells along x direction (origin at one corner) - kNDIMY : maximum number of cells along axis at 60 degrees with x axis - */ - - Double_t fEdepCell[kNDIMX][kNDIMY]; //energy(ADC) in each cell - Double_t fClusters[5][5000]; // Cluster informations - Int_t fClno; // number of clusters in a supermodule - - /* - clusters[0][i] --- x position of the cluster center - clusters[1][i] --- y position of the cluster center - clusters[2][i] --- total energy in the cluster - clusters[3][i] --- number of cells forming the cluster - ( possibly fractional ) - clusters[4][i] --- cluster radius - */ //Variables for association - Int_t fCellTrNo[kNDIMX][kNDIMY]; //id x-y value of cells - Int_t fClTr[15][5000]; // 1d x-y cell info of attached cells - - Int_t fIord[2][kNMX]; // ordered list of i and j according - // to decreasing energy dep. - Int_t fInfocl[2][kNDIMX][kNDIMY]; // cellwise information on the cluster to which the cell + Int_t fInfocl[2][kNDIMX][kNDIMY]; // cellwise information on the + // cluster to which the cell Int_t fInfcl[3][kNMX]; // cluster information [0][i] // -- cluster number Double_t fCoord[2][kNDIMX][kNDIMY]; - /* - fIord --- ordered list of i and j according to decreasing energy dep. - fInfocl --- cellwise information on the cluster to which the cell - belongs and whether it has largest energy dep. or not - ( now redundant - probably ) - fInfcl --- cluster information [0][i] -- cluster number - [1][i] -- i of the cell - [2][i] -- j of the cell - coord --- x and y coordinates of center of each cell - */ - - Float_t fCutoff; // Energy(ADC) cutoff per cell before clustering + Float_t fCutoff; // Energy(ADC) cutoff per cell before clustering + Int_t fClusParam; // Parameter to decide the clustering - ClassDef(AliPMDClusteringV1,2) // Does clustering for PMD + ClassDef(AliPMDClusteringV1,9) // Does clustering for PMD }; #endif