ROOT logo
#ifndef ALIANALYSISTASKKMEANS_H
#define ALIANALYSISTASKKMEANS_H
 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

//-------------------------------------------------------------------------
//     Analysis Task that uses the Soft K-Means Algorithm to find clusters in
//     the eta-phi space of Minimum Bias. No pt information is used for the clustering.
//     
//
//     Author: Andreas Morsch (CERN)
//     andreas.morsch@cern.ch
//-------------------------------------------------------------------------

class TH1F;
class TH2F;
class TList;
class TProfile;
class AliESDEvent;
class AliESDtrack;
class AliESDtrackCuts;
class AliKMeansResult;

#include "AliAnalysisTaskSE.h"

class AliAnalysisTaskKMeans : public AliAnalysisTaskSE {
 public:
  AliAnalysisTaskKMeans();
  AliAnalysisTaskKMeans(const char *name);
  AliAnalysisTaskKMeans(const AliAnalysisTaskKMeans &res);
  AliAnalysisTaskKMeans& operator=(const AliAnalysisTaskKMeans& trclass);
  virtual ~AliAnalysisTaskKMeans() {}
  virtual void     UserCreateOutputObjects();
  virtual void     UserExec(Option_t *option);
  virtual void     Terminate(Option_t *);
  virtual void     SetCuts(AliESDtrackCuts* cuts) {fCuts = cuts;}
  virtual Double_t DeltaPhi(Double_t phi1, Double_t phi2);
  virtual Double_t DeltaR(Double_t phi1, Double_t eta1, Double_t phi2, Double_t eta2);
  virtual void     SetK(Int_t k) {fK = k;} 
  virtual void     SetMinimumMultiplicity(Int_t k) {fNMin = k;} 
  virtual void     SetEtaPhi(TH2F* h2) {fH2REtaPhi = h2;}
 private:
  // Others
  Int_t            fK;             // K                        
  Int_t            fNMin;          // Minimum multipicity                         
  TList*           fHists;         //! Histograms
  TH1F*            fH1CEta;        //! Eta distribution of clusters
  TH1F*            fH1CPhi;        //! Phi distribution of clusters  
  TH1F*            fH1CEtaR;       //! Eta distribution of clusters for rndm evnt
  TH2F*            fH2N1N2;        //! Cluster sizes 
  TH1F*            fH1Pt;          //! pt outside clusters
  TH1F*            fH1PtC;         //! pt outside clusters
  TH1F*            fH1PtC1;        //! pt dr > 0.4
  TH1F*            fH1PtC2;        //! pt dr > 0.2 
  TH1F*            fH1PtAS;        //! away-side peak 
  TH1F*            fH1PtR;         //! away-side peak 
  TH1F*            fH1SPt;         //! sum pt
  TH1F*            fH1SPtC;        //! sum pt
  TH1F*            fH1DPhi;        //! Dphi wr to cluster
  TH1F*            fH1DR;          //! DR   wr to cluster
  TH1F*            fH1DRR;         //! DR   wr to cluster from rndm events   
  TH2F*            fH2DPhiEta;     //! eta-phi wr to cluster
  TH2F*            fH2DPhiEtaR;    //! eta-phi wr to cluster for rndm events 
  TH2F*            fH2DPhiEtaL;    //! eta-phi of leading particle
  TH2F*            fH2DPhiEtaLR;   //! eta-phi of leading particle
  TH2F*            fH2DPhiEtaC;    //! eta-phi of Clusters
  TH2F*            fH2DPhiEtaCR;   //! eta-phi of Clusters
  TH1F*            fH1Resp;        //! responsibility
  TH1F*            fH1RespR;       //! responsibility
  TH2F*            fH2Sigma;       //! sigma
  TH2F*            fH2SigmaR;      //! sigma random
  TH1F*            fHDensity;      //! Particle density
  TH1F*            fHCSize;        //! Cluster Size
  TH1F*            fHNCluster;     //! Number of clusters
  TH2F*            fHPtDensity;    //! Pt vs density
  TH1F*            fHDPhi;         //! Phi Correlation 
  TH2F*            fH2EtaPhi;      //! eta phi 
  TH2F*            fH2REtaPhi;     //  eta phi 
  AliKMeansResult* fA[10];         //! Array of results
  AliKMeansResult* fB[10];         //! Array of results
  AliESDtrackCuts* fCuts;          // List of cuts
  ClassDef(AliAnalysisTaskKMeans, 1); // A k-means clustering analysis
};

#endif
 AliAnalysisTaskKMeans.h:1
 AliAnalysisTaskKMeans.h:2
 AliAnalysisTaskKMeans.h:3
 AliAnalysisTaskKMeans.h:4
 AliAnalysisTaskKMeans.h:5
 AliAnalysisTaskKMeans.h:6
 AliAnalysisTaskKMeans.h:7
 AliAnalysisTaskKMeans.h:8
 AliAnalysisTaskKMeans.h:9
 AliAnalysisTaskKMeans.h:10
 AliAnalysisTaskKMeans.h:11
 AliAnalysisTaskKMeans.h:12
 AliAnalysisTaskKMeans.h:13
 AliAnalysisTaskKMeans.h:14
 AliAnalysisTaskKMeans.h:15
 AliAnalysisTaskKMeans.h:16
 AliAnalysisTaskKMeans.h:17
 AliAnalysisTaskKMeans.h:18
 AliAnalysisTaskKMeans.h:19
 AliAnalysisTaskKMeans.h:20
 AliAnalysisTaskKMeans.h:21
 AliAnalysisTaskKMeans.h:22
 AliAnalysisTaskKMeans.h:23
 AliAnalysisTaskKMeans.h:24
 AliAnalysisTaskKMeans.h:25
 AliAnalysisTaskKMeans.h:26
 AliAnalysisTaskKMeans.h:27
 AliAnalysisTaskKMeans.h:28
 AliAnalysisTaskKMeans.h:29
 AliAnalysisTaskKMeans.h:30
 AliAnalysisTaskKMeans.h:31
 AliAnalysisTaskKMeans.h:32
 AliAnalysisTaskKMeans.h:33
 AliAnalysisTaskKMeans.h:34
 AliAnalysisTaskKMeans.h:35
 AliAnalysisTaskKMeans.h:36
 AliAnalysisTaskKMeans.h:37
 AliAnalysisTaskKMeans.h:38
 AliAnalysisTaskKMeans.h:39
 AliAnalysisTaskKMeans.h:40
 AliAnalysisTaskKMeans.h:41
 AliAnalysisTaskKMeans.h:42
 AliAnalysisTaskKMeans.h:43
 AliAnalysisTaskKMeans.h:44
 AliAnalysisTaskKMeans.h:45
 AliAnalysisTaskKMeans.h:46
 AliAnalysisTaskKMeans.h:47
 AliAnalysisTaskKMeans.h:48
 AliAnalysisTaskKMeans.h:49
 AliAnalysisTaskKMeans.h:50
 AliAnalysisTaskKMeans.h:51
 AliAnalysisTaskKMeans.h:52
 AliAnalysisTaskKMeans.h:53
 AliAnalysisTaskKMeans.h:54
 AliAnalysisTaskKMeans.h:55
 AliAnalysisTaskKMeans.h:56
 AliAnalysisTaskKMeans.h:57
 AliAnalysisTaskKMeans.h:58
 AliAnalysisTaskKMeans.h:59
 AliAnalysisTaskKMeans.h:60
 AliAnalysisTaskKMeans.h:61
 AliAnalysisTaskKMeans.h:62
 AliAnalysisTaskKMeans.h:63
 AliAnalysisTaskKMeans.h:64
 AliAnalysisTaskKMeans.h:65
 AliAnalysisTaskKMeans.h:66
 AliAnalysisTaskKMeans.h:67
 AliAnalysisTaskKMeans.h:68
 AliAnalysisTaskKMeans.h:69
 AliAnalysisTaskKMeans.h:70
 AliAnalysisTaskKMeans.h:71
 AliAnalysisTaskKMeans.h:72
 AliAnalysisTaskKMeans.h:73
 AliAnalysisTaskKMeans.h:74
 AliAnalysisTaskKMeans.h:75
 AliAnalysisTaskKMeans.h:76
 AliAnalysisTaskKMeans.h:77
 AliAnalysisTaskKMeans.h:78
 AliAnalysisTaskKMeans.h:79
 AliAnalysisTaskKMeans.h:80
 AliAnalysisTaskKMeans.h:81
 AliAnalysisTaskKMeans.h:82
 AliAnalysisTaskKMeans.h:83
 AliAnalysisTaskKMeans.h:84
 AliAnalysisTaskKMeans.h:85
 AliAnalysisTaskKMeans.h:86
 AliAnalysisTaskKMeans.h:87