]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PMD/AliPMDClusteringV1.h
Coding conventions, protection against division by 0 (Philippe)
[u/mrichter/AliRoot.git] / PMD / AliPMDClusteringV1.h
1 #ifndef ALIPMDCLUSTERINGV1_H
2 #define ALIPMDCLUSTERINGV1_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 : PMDClusteringV1.h, Version 00        //
8 //                                                     //
9 //  Date   : September 26 2002                         //
10 //                                                     //
11 //  clustering code for alice pmd                      //
12 //                                                     //
13 //-----------------------------------------------------//
14 // -- Author   : S.C. Phatak
15 // -- Modified : B.K. Nandi, Ajay Dash
16 //               S. Chattopadhyay
17 //
18 #include "Rtypes.h"
19 #include "AliPMDClustering.h"
20
21 class TNtuple;
22 class TObjArray;
23 class AliPMDcluster;
24 class AliPMDcludata;
25 class AliPMDClusteringV1: public AliPMDClustering
26 {
27  public:
28   AliPMDClusteringV1();
29   AliPMDClusteringV1(const AliPMDClusteringV1 &pmdclv1);
30   AliPMDClusteringV1 &operator=(const AliPMDClusteringV1 &pmdclv1);
31   virtual ~AliPMDClusteringV1();
32
33   void     DoClust(Int_t idet, Int_t ismn, Double_t celladc[][96],
34                    TObjArray *pmdcont);
35   Int_t    CrClust(Double_t ave, Double_t cutoff, Int_t nmx1,
36                    Int_t iord1[], Double_t edepcell[]);
37   void     RefClust(Int_t incr, Double_t edepcell[]);
38   void     GaussFit(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, Double_t &rc);
41   Double_t Distance(Double_t x1, Double_t y1,
42                     Double_t x2, Double_t y2);
43   void     SetEdepCut(Float_t decut);
44   
45  protected:
46   
47   TObjArray *fPMDclucont;    // carry cluster informations
48   
49   static const Double_t fgkSqroot3by2;  // fgkSqroot3by2 = sqrt(3.)/2.
50   
51   enum {
52     kNMX    = 11424,     // no. of cells in a module
53     kNDIMX  = 119,       // max no. of cells along x direction
54     kNDIMY  = 96         // max no. of cells along axis at 60 deg with x axis
55   };
56
57   //Variables for association
58   Int_t    fCellTrNo[kNDIMX][kNDIMY];  // id x-y value of cells
59   Int_t    fInfocl[2][kNDIMX][kNDIMY]; // cellwise information on the 
60                                        // cluster to which the cell
61   Int_t    fInfcl[3][kNMX];            // cluster information [0][i]
62                                        // -- cluster number
63   Double_t fCoord[2][kNDIMX][kNDIMY];
64
65   Float_t fCutoff; // Energy(ADC) cutoff per cell before clustering
66
67   ClassDef(AliPMDClusteringV1,4) // Does clustering for PMD
68 };
69 #endif