- Chosing optimal number of clusters
[u/mrichter/AliRoot.git] / JETAN / AliAnalysisTaskKMeans.h
1 #ifndef AliAnalysisTaskKMeans_cxx
2 #define AliAnalysisTaskKMeans_cxx
3  /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //-------------------------------------------------------------------------
9 //     Analysis Task that uses the Soft K-Means Algorithm to find clusters in
10 //     the eta-phi space of Minimum Bias. No pt information is used for the clustering.
11 //     
12 //
13 //     Author: Andreas Morsch (CERN)
14 //     andreas.morsch@cern.ch
15 //-------------------------------------------------------------------------
16
17 class TH1F;
18 class TH2F;
19 class TList;
20 class TProfile;
21 class AliESDEvent;
22 class AliESDtrack;
23 class AliESDtrackCuts;
24 class AliKMeansResult;
25
26 #include "AliAnalysisTaskSE.h"
27
28 class AliAnalysisTaskKMeans : public AliAnalysisTaskSE {
29  public:
30     AliAnalysisTaskKMeans();
31   AliAnalysisTaskKMeans(const char *name);
32   virtual ~AliAnalysisTaskKMeans() {}
33   virtual void     UserCreateOutputObjects();
34   virtual void     UserExec(Option_t *option);
35   virtual void     Terminate(Option_t *);
36   virtual void     SetCuts(AliESDtrackCuts* cuts) {fCuts = cuts;}
37   virtual Double_t DeltaPhi(Double_t phi1, Double_t phi2);
38   virtual Double_t DeltaR(Double_t phi1, Double_t eta1, Double_t phi2, Double_t eta2);
39   virtual void     SetK(Int_t k) {fK = k;} 
40   virtual void     SetMinimumMultiplicity(Int_t k) {fNMin = k;} 
41  private:
42   // Others
43   Int_t            fK;             // K                        
44   Int_t            fNMin;          // Minimum multipicity                         
45   TList*           fHists;         //! Histograms
46   TH1F*            fH1CEta;        //! Eta distribution of clusters
47   TH1F*            fH1CPhi;        //! Phi distribution of clusters  
48   TH1F*            fH1CEtaR;       //! Eta distribution of clusters for rndm evnt
49   TH2F*            fH2N1N2;        //! Cluster sizes 
50   TH1F*            fH1Pt;          //! pt outside clusters
51   TH1F*            fH1PtC;         //! pt outside clusters
52   TH1F*            fH1PtC1;        //! pt dr > 0.4
53   TH1F*            fH1PtC2;        //! pt dr > 0.2 
54   TH1F*            fH1PtAS;        //! away-side peak 
55   TH1F*            fH1PtR;         //! away-side peak 
56   TH1F*            fH1SPt;         //! sum pt
57   TH1F*            fH1SPtC;        //! sum pt
58   TH1F*            fH1DPhi;        //! Dphi wr to cluster
59   TH1F*            fH1DR;          //! DR   wr to cluster
60   TH1F*            fH1DRR;         //! DR   wr to cluster from rndm events   
61   TH2F*            fH2DPhiEta;     //! eta-phi wr to cluster
62   TH2F*            fH2DPhiEtaR;    //! eta-phi wr to cluster for rndm events 
63   TH2F*            fH2DPhiEtaL;    //! eta-phi of leading particle
64   TH2F*            fH2DPhiEtaLR;   //! eta-phi of leading particle
65   TH2F*            fH2DPhiEtaC;    //! eta-phi of Clusters
66   TH2F*            fH2DPhiEtaCR;   //! eta-phi of Clusters
67   TH1F*            fH1Resp;        //! responsibility
68   TH1F*            fH1RespR;       //! responsibility
69   TH2F*            fH2Sigma;       //! sigma
70   TH2F*            fH2SigmaR;      //! sigma random
71   TH1F*            fHDensity;      //! Particle density
72   TH1F*            fHCSize;        //! Cluster Size
73   TH1F*            fHNCluster;     //! Number of clusters
74   TH2F*            fHPtDensity;    //! Pt vs density
75   AliKMeansResult* fA[10];         //!
76   AliKMeansResult* fB[10];         //!
77   AliESDtrackCuts* fCuts;             // List of cuts
78   ClassDef(AliAnalysisTaskKMeans, 1); // A k-means clustering analysis
79 };
80
81 #endif