Protections for coverity: DIVIDE_BY_ZERO
[u/mrichter/AliRoot.git] / JETAN / AliAnalysisTaskKMeans.h
1 #ifndef ALIANALYSISTASKKMEANS_H
2 #define ALIANALYSISTASKKMEANS_H
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   AliAnalysisTaskKMeans(const AliAnalysisTaskKMeans &res);
33   AliAnalysisTaskKMeans& operator=(const AliAnalysisTaskKMeans& trclass);
34   virtual ~AliAnalysisTaskKMeans() {}
35   virtual void     UserCreateOutputObjects();
36   virtual void     UserExec(Option_t *option);
37   virtual void     Terminate(Option_t *);
38   virtual void     SetCuts(AliESDtrackCuts* cuts) {fCuts = cuts;}
39   virtual Double_t DeltaPhi(Double_t phi1, Double_t phi2);
40   virtual Double_t DeltaR(Double_t phi1, Double_t eta1, Double_t phi2, Double_t eta2);
41   virtual void     SetK(Int_t k) {fK = k;} 
42   virtual void     SetMinimumMultiplicity(Int_t k) {fNMin = k;} 
43   virtual void     SetEtaPhi(TH2F* h2) {fH2REtaPhi = h2;}
44  private:
45   // Others
46   Int_t            fK;             // K                        
47   Int_t            fNMin;          // Minimum multipicity                         
48   TList*           fHists;         //! Histograms
49   TH1F*            fH1CEta;        //! Eta distribution of clusters
50   TH1F*            fH1CPhi;        //! Phi distribution of clusters  
51   TH1F*            fH1CEtaR;       //! Eta distribution of clusters for rndm evnt
52   TH2F*            fH2N1N2;        //! Cluster sizes 
53   TH1F*            fH1Pt;          //! pt outside clusters
54   TH1F*            fH1PtC;         //! pt outside clusters
55   TH1F*            fH1PtC1;        //! pt dr > 0.4
56   TH1F*            fH1PtC2;        //! pt dr > 0.2 
57   TH1F*            fH1PtAS;        //! away-side peak 
58   TH1F*            fH1PtR;         //! away-side peak 
59   TH1F*            fH1SPt;         //! sum pt
60   TH1F*            fH1SPtC;        //! sum pt
61   TH1F*            fH1DPhi;        //! Dphi wr to cluster
62   TH1F*            fH1DR;          //! DR   wr to cluster
63   TH1F*            fH1DRR;         //! DR   wr to cluster from rndm events   
64   TH2F*            fH2DPhiEta;     //! eta-phi wr to cluster
65   TH2F*            fH2DPhiEtaR;    //! eta-phi wr to cluster for rndm events 
66   TH2F*            fH2DPhiEtaL;    //! eta-phi of leading particle
67   TH2F*            fH2DPhiEtaLR;   //! eta-phi of leading particle
68   TH2F*            fH2DPhiEtaC;    //! eta-phi of Clusters
69   TH2F*            fH2DPhiEtaCR;   //! eta-phi of Clusters
70   TH1F*            fH1Resp;        //! responsibility
71   TH1F*            fH1RespR;       //! responsibility
72   TH2F*            fH2Sigma;       //! sigma
73   TH2F*            fH2SigmaR;      //! sigma random
74   TH1F*            fHDensity;      //! Particle density
75   TH1F*            fHCSize;        //! Cluster Size
76   TH1F*            fHNCluster;     //! Number of clusters
77   TH2F*            fHPtDensity;    //! Pt vs density
78   TH1F*            fHDPhi;         //! Phi Correlation 
79   TH2F*            fH2EtaPhi;      //! eta phi 
80   TH2F*            fH2REtaPhi;     //  eta phi 
81   AliKMeansResult* fA[10];         //! Array of results
82   AliKMeansResult* fB[10];         //! Array of results
83   AliESDtrackCuts* fCuts;          // List of cuts
84   ClassDef(AliAnalysisTaskKMeans, 1); // A k-means clustering analysis
85 };
86
87 #endif