]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PMD/AliPMDClusteringV2.h
ATO-98 - Connecting distortion trees - selection as an argument
[u/mrichter/AliRoot.git] / PMD / AliPMDClusteringV2.h
1 #ifndef ALIPMDCLUSTERINGV2_H
2 #define ALIPMDCLUSTERINGV2_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5 //-----------------------------------------------------//
6 //                                                     //
7 //  Header File : PMDClusteringV2.h,                   //
8 //                                                     //
9 //  clustering code for alice pmd                      //
10 //                                                     //
11 //-----------------------------------------------------//
12 // Author      : S.C. Phatak
13 // Modified by : B.K. Nandi, Ajay Dash
14 //
15 #include "Rtypes.h"
16 #include "AliPMDClustering.h"
17
18 class TObjArray;
19 class TArrayI;
20 class AliPMDcluster;
21 class AliPMDcludata;
22 class AliPMDClusteringV2 : public AliPMDClustering
23 {
24   
25  public:
26   AliPMDClusteringV2();
27   AliPMDClusteringV2(const AliPMDClusteringV2 &pmdclv2);
28   AliPMDClusteringV2 &operator=(const AliPMDClusteringV2 &pmdclv2);
29   virtual ~AliPMDClusteringV2();
30   
31   void     DoClust(Int_t idet, Int_t ismn, Int_t celltrack[][96],
32                    Int_t cellpid[][96], Double_t celladc[][96],
33                    TObjArray *pmdcont);
34   Int_t    CrClust(Double_t ave, Double_t cutoff, Int_t nmx1,
35                    Int_t iord1[], Double_t edepcell[]);
36   void     RefClust(Int_t incr, Double_t edepcell[]);
37         
38   void     ClustDetails(Int_t ncell, Int_t nclust, Double_t x[],
39                         Double_t y[], Double_t z[], Double_t xc[],
40                         Double_t yc[], Double_t zc[],
41                         Double_t rcl[], Double_t rcs[], Double_t cells[],
42                         TArrayI &testncl, TArrayI &testindex);
43   Double_t Distance(Double_t x1, Double_t y1, Double_t x2, Double_t y2);
44
45   void     SetEdepCut(Float_t decut);
46   void     SetClusteringParam(Int_t cluspar);
47   
48  protected:
49   
50   TObjArray *fPMDclucont;
51   
52   static const Double_t fgkSqroot3by2;  // fgkSqroot3by2 = sqrt(3.)/2.
53   enum {
54     kNMX    = 11424, // no. of cells in a module
55     kNDIMX  = 119,   // max no. of cells along x direction
56     kNDIMY  = 96     // max no. of cells along axis at 60 deg with x axis
57   };
58   Int_t    fInfocl[2][kNDIMX][kNDIMY]; // cellwise information on the 
59                                        // cluster to which the cell
60   Int_t    fInfcl[3][kNMX];            // cluster information [0][i]
61                                        // -- cluster number
62   Double_t fCoord[2][kNDIMX][kNDIMY];
63
64   Float_t fCutoff;    // Energy(ADC) cutoff per cell before clustering
65   Float_t fClusParam; // paramater to decide clustering
66   
67   ClassDef(AliPMDClusteringV2,8) // Does clustering for PMD
68 };
69 #endif
70