Jet finder based on deterministic annealing. (D. Perrino)
[u/mrichter/AliRoot.git] / JETAN / AliDAJetFinder.h
1 #ifndef ALIDAJETFINDER_H
2 #define ALIDAJETFINDER_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 //---------------------------------------------------------------------
8 //Jet finder based on Deterministic Annealing
9 //Author: Davide Perrino (davide.perrino@ba.infn.it)
10 //---------------------------------------------------------------------
11
12 #include <AliJetFinder.h>
13 #include <TMatrixD.h>
14 #include <TVectorD.h>
15 class AliDAJetHeader;
16
17 class AliDAJetFinder : public AliJetFinder
18 {
19 public:
20     AliDAJetFinder();
21     virtual  ~AliDAJetFinder();
22     
23     void FindJets      ();
24     void SetJetHeader  (AliDAJetHeader *h) {fHeader = h;}
25     
26  private:
27     void InitDetAnn    (Double_t &dEtSum);
28     void Annealing     (Int_t nk);
29     void NumCl         (Int_t &nc,Int_t &nk);
30     void ReduceClusters(Int_t **iSame,Int_t nc,Int_t &ncout,Int_t **cont,Int_t *nSameOut);
31     void DoubleClusters(Int_t nc,Int_t &nk);
32     void EndDetAnn     (Int_t &nk,Int_t *xx,Double_t etx);
33     void StoreJets     (Int_t nk,Int_t *xx);
34
35 protected:
36     AliDAJetFinder(const AliDAJetFinder &jf);
37     AliDAJetFinder& operator=(const AliDAJetFinder &jf);
38     Double_t   fAlpha;                                  // beta increment
39     Double_t   fDelta;                                  // perturbation proportional to Delta
40     Double_t   fAvDist;                                 // minimum distance to distinguish two clusters
41     Double_t   fEps;                                    // convergence criterium below max number of loops
42     Double_t   fEpsMax;                                 // convergence criterium above max number of loops
43     Int_t      fNloopMax;                               // maximum number of loops at a fixed beta
44     Double_t   fBeta;                                   // increasing multiplier of entropy
45     Int_t      fNclustMax;                              // maximum number of clusters to find
46     TMatrixD  *fPyx;                                    // conditional probability matrix
47     TMatrixD  *fY;                                      // clusters matrix
48     TVectorD  *fPx;                                     // input data weights
49     TVectorD  *fPy;                                     // clusters' probability
50     Double_t  *fXEta;                                   // input data eta coordinate
51     Double_t  *fXPhi;                                   // input data phi coordinate
52     Int_t      fNin;                                    // number of input data
53      
54     AliDAJetHeader *fHeader;                            // the header  
55     
56     ClassDef(AliDAJetFinder,1)
57 };// 
58 #endif