Adding the possibility not to follow particle mothers during StepManager (default...
[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 /* $Id$ */
8
9 //---------------------------------------------------------------------
10 //Jet finder based on Deterministic Annealing
11 //Author: Davide Perrino (davide.perrino@ba.infn.it)
12 //        magali.estienne@subatech.in2p3.fr &
13 //        alexandre.shabetai@cern.ch (Modification of the input object (reader/finder splitting))
14 // ** 2011
15 // Modified accordingly to reader/finder splitting and new handling of neutral information
16 //---------------------------------------------------------------------
17
18 #include "AliJetFinder.h"
19
20 #include <TMatrixD.h>
21 #include <TVectorD.h>
22
23 class AliDAJetFinder : public AliJetFinder
24 {
25  public:
26   AliDAJetFinder();
27   virtual  ~AliDAJetFinder();
28
29   void     FindJets      ();
30
31  protected:
32   Double_t fAlpha;           // beta increment
33   Double_t fDelta;           // perturbation proportional to Delta
34   Double_t fAvDist;          // minimum distance to distinguish two clusters
35   Double_t fEps;             // convergence criterium below max number of loops
36   Double_t fEpsMax;          // convergence criterium above max number of loops
37   Int_t    fNloopMax;        // maximum number of loops at a fixed beta
38   Double_t fBeta;            // increasing multiplier of entropy
39   Int_t    fNclustMax;       // maximum number of clusters to find
40   Int_t    fNin;             // number of input data
41   Int_t    fNeff;            // total input data, including fakes
42
43  private:
44   void     InitDetAnn    (Double_t &dEtSum, Double_t **xData, TVectorD *px, TVectorD *py, TMatrixD *pyx, TMatrixD *y);
45   void     Annealing     (Int_t nk, Double_t **xData, const TVectorD *vPx, TVectorD *vPy, TMatrixD *mPyx, TMatrixD *mY);
46   void     NumCl         (Int_t &nc, Int_t &nk, TVectorD *vPy, TMatrixD *mPyx, TMatrixD *mY);
47   void     ReduceClusters(Int_t **iSame, Int_t nc, Int_t &ncout, Int_t **cont, Int_t *nSameOut) const;
48   void     DoubleClusters(Int_t nc, Int_t &nk, TVectorD *vPy, TMatrixD *mY) const;
49   void     EndDetAnn     (Int_t &nk, Double_t **xData, Int_t *xx, Double_t etx, const TVectorD *px, TVectorD *py, TMatrixD *pyx, TMatrixD *y);
50   void     StoreJets     (Int_t nk, Double_t **xData, const Int_t *xx, const TMatrixD *mY);
51
52   ClassDef(AliDAJetFinder,4) // DA Jet finder
53
54 };
55
56 #endif